From 302e7b19da6c80022cee7b1466f88ee94b4fec67 Mon Sep 17 00:00:00 2001 From: kaiyou Date: Sun, 7 Oct 2018 15:04:38 +0200 Subject: (docker) search and import settings env variables (#1210) --- .../config/custom-environment-variables.yaml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/support/docker/production/config/custom-environment-variables.yaml b/support/docker/production/config/custom-environment-variables.yaml index daf885813..1f7fbf849 100644 --- a/support/docker/production/config/custom-environment-variables.yaml +++ b/support/docker/production/config/custom-environment-variables.yaml @@ -56,6 +56,26 @@ signup: __name: "PEERTUBE_SIGNUP_LIMIT" __format: "json" +search: + remote_uri: + users: + __name: "PEERTUBE_SEARCH_REMOTEURI_USERS" + __format: "json" + anonymous: + __name: "PEERTUBE_SEARCH_REMOTEURI_ANONYMOUS" + __format: "json" + +import: + videos: + http: + enabled: + __name: "PEERTUBE_IMPORT_VIDEOS_HTTP" + __format: "json" + torrent: + enabled: + __name: "PEERTUBE_IMPORT_VIDEOS_TORRENT" + __format: "json" + transcoding: enabled: __name: "PEERTUBE_TRANSCODING_ENABLED" -- cgit v1.2.3 From 211239ed949da6b1cd4e554b374fd875e2bfb5e4 Mon Sep 17 00:00:00 2001 From: Micah Elizabeth Scott Date: Sun, 7 Oct 2018 13:07:14 -0700 Subject: remove confirm modal for asset injection in edit-custom-config (#1219) --- .../edit-custom-config.component.ts | 24 ---------------------- 1 file changed, 24 deletions(-) diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts index 4983b0425..25b303f44 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts @@ -1,6 +1,5 @@ import { Component, OnInit } from '@angular/core' import { ConfigService } from '@app/+admin/config/shared/config.service' -import { ConfirmService } from '@app/core' import { ServerService } from '@app/core/server/server.service' import { CustomConfigValidatorsService, FormReactive, UserValidatorsService } from '@app/shared' import { NotificationsService } from 'angular2-notifications' @@ -29,7 +28,6 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { private notificationsService: NotificationsService, private configService: ConfigService, private serverService: ServerService, - private confirmService: ConfirmService, private i18n: I18n ) { super() @@ -124,28 +122,6 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { } async formValidated () { - const newCustomizationJavascript = this.form.value['customizationJavascript'] - const newCustomizationCSS = this.form.value['customizationCSS'] - - const customizations = [] - if (newCustomizationJavascript && newCustomizationJavascript !== this.oldCustomJavascript) customizations.push('JavaScript') - if (newCustomizationCSS && newCustomizationCSS !== this.oldCustomCSS) customizations.push('CSS') - - if (customizations.length !== 0) { - const customizationsText = customizations.join('/') - - // FIXME: i18n service does not support string concatenation - const message = this.i18n('You set custom {{customizationsText}}. ', { customizationsText }) + - this.i18n('This could lead to security issues or bugs if you do not understand it. ') + - this.i18n('Are you sure you want to update the configuration?') - - const label = this.i18n('Please type') + ` "I understand the ${customizationsText} I set" ` + this.i18n('to confirm.') - const expectedInputValue = `I understand the ${customizationsText} I set` - - const confirmRes = await this.confirmService.confirmWithInput(message, label, expectedInputValue) - if (confirmRes === false) return - } - const data: CustomConfig = { instance: { name: this.form.value['instanceName'], -- cgit v1.2.3 From 505319061e28da647c2e9af6e65721d6b8f9da1b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 8 Oct 2018 10:37:08 +0200 Subject: Fix avatar update --- server/lib/avatar.ts | 3 ++- server/models/avatar/avatar.ts | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/lib/avatar.ts b/server/lib/avatar.ts index 4b6bc3185..021426a1a 100644 --- a/server/lib/avatar.ts +++ b/server/lib/avatar.ts @@ -7,10 +7,11 @@ import { AccountModel } from '../models/account/account' import { VideoChannelModel } from '../models/video/video-channel' import { extname, join } from 'path' import { retryTransactionWrapper } from '../helpers/database-utils' +import * as uuidv4 from 'uuid/v4' async function updateActorAvatarFile (avatarPhysicalFile: Express.Multer.File, accountOrChannel: AccountModel | VideoChannelModel) { const extension = extname(avatarPhysicalFile.filename) - const avatarName = accountOrChannel.Actor.uuid + extension + const avatarName = uuidv4() + extension const destination = join(CONFIG.STORAGE.AVATARS_DIR, avatarName) await processImage(avatarPhysicalFile, destination, AVATARS_SIZE) diff --git a/server/models/avatar/avatar.ts b/server/models/avatar/avatar.ts index 5d73e24fa..303aebcc2 100644 --- a/server/models/avatar/avatar.ts +++ b/server/models/avatar/avatar.ts @@ -23,7 +23,10 @@ export class AvatarModel extends Model { @AfterDestroy static removeFilesAndSendDelete (instance: AvatarModel) { logger.info('Removing avatar file %s.', instance.filename) - return instance.removeAvatar() + + // Don't block the transaction + instance.removeAvatar() + .catch(err => logger.error('Cannot remove avatar file %s.', instance.filename, err)) } toFormattedJSON (): Avatar { -- cgit v1.2.3 From ecf3f060ef8e40846ee41c9dcdf288065f4c461d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 8 Oct 2018 10:37:08 +0200 Subject: Fix avatar update --- server/lib/avatar.ts | 3 ++- server/models/avatar/avatar.ts | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/lib/avatar.ts b/server/lib/avatar.ts index 4b6bc3185..021426a1a 100644 --- a/server/lib/avatar.ts +++ b/server/lib/avatar.ts @@ -7,10 +7,11 @@ import { AccountModel } from '../models/account/account' import { VideoChannelModel } from '../models/video/video-channel' import { extname, join } from 'path' import { retryTransactionWrapper } from '../helpers/database-utils' +import * as uuidv4 from 'uuid/v4' async function updateActorAvatarFile (avatarPhysicalFile: Express.Multer.File, accountOrChannel: AccountModel | VideoChannelModel) { const extension = extname(avatarPhysicalFile.filename) - const avatarName = accountOrChannel.Actor.uuid + extension + const avatarName = uuidv4() + extension const destination = join(CONFIG.STORAGE.AVATARS_DIR, avatarName) await processImage(avatarPhysicalFile, destination, AVATARS_SIZE) diff --git a/server/models/avatar/avatar.ts b/server/models/avatar/avatar.ts index 5d73e24fa..303aebcc2 100644 --- a/server/models/avatar/avatar.ts +++ b/server/models/avatar/avatar.ts @@ -23,7 +23,10 @@ export class AvatarModel extends Model { @AfterDestroy static removeFilesAndSendDelete (instance: AvatarModel) { logger.info('Removing avatar file %s.', instance.filename) - return instance.removeAvatar() + + // Don't block the transaction + instance.removeAvatar() + .catch(err => logger.error('Cannot remove avatar file %s.', instance.filename, err)) } toFormattedJSON (): Avatar { -- cgit v1.2.3 From 87bc58e159e305ecada996368deb87376c50647e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 8 Oct 2018 10:56:05 +0200 Subject: Fix test configuration --- config/test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/test.yaml b/config/test.yaml index 04c999966..9c051fabc 100644 --- a/config/test.yaml +++ b/config/test.yaml @@ -1,5 +1,5 @@ listen: - listen: '0.0.0.0' + hostname: '0.0.0.0' port: 9000 webserver: -- cgit v1.2.3 From 6321cbc3e7a43257b03b3285ab69b7977fd7f616 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 8 Oct 2018 11:58:18 +0200 Subject: Avoid old issue regarding duplicated hosts in db --- server/initializers/migrations/0275-video-file-unique.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/initializers/migrations/0275-video-file-unique.ts b/server/initializers/migrations/0275-video-file-unique.ts index fd89188c0..e321ecb04 100644 --- a/server/initializers/migrations/0275-video-file-unique.ts +++ b/server/initializers/migrations/0275-video-file-unique.ts @@ -5,6 +5,12 @@ async function up (utils: { queryInterface: Sequelize.QueryInterface sequelize: Sequelize.Sequelize }): Promise { + // Delete duplicated keys + { + const query = 'DELETE FROM "server" s1 USING "server" s2 WHERE s1.id < s2.id AND s1."host" = s2."host"' + await utils.sequelize.query(query) + } + { const query = 'DELETE FROM "videoFile" vf1 USING "videoFile" vf2 WHERE vf1.id < vf2.id ' + 'AND vf1."videoId" = vf2."videoId" AND vf1.resolution = vf2.resolution AND vf1.fps IS NULL' -- cgit v1.2.3 From 80c7336a896d9eb1e71b7c89a72285f914259457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Brizard?= Date: Mon, 8 Oct 2018 13:25:41 +0200 Subject: (doc) explain common watcher inotify error in CONTRIBUTING.md (#1223) --- .github/CONTRIBUTING.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4b352922e..a25368cdb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -122,6 +122,18 @@ and the web server is automatically restarted. $ npm run dev ``` +Depending on your OS, you may face the following error : +``` +$ [nodemon] Internal watch failed: ENOSPC: no space left on device, watch '/PeerTube/dist' +``` + +This is due to your system's limit on the number of files you can monitor for live-checking changes. For example, Ubuntu uses inotify and this limit is set to 8192. Then you need to change this limit : +``` +echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p +``` + +See more information here : https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers + ### Federation Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user. -- cgit v1.2.3 From 791645e620fb98c6e7c32271d91d91ff7e41b892 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 8 Oct 2018 15:15:11 +0200 Subject: Add bulk actions in users table --- .../users/user-list/user-list.component.html | 31 +++++++- .../users/user-list/user-list.component.scss | 11 +++ .../+admin/users/user-list/user-list.component.ts | 93 +++++++++++++++++++++- client/src/app/header/header.component.html | 4 +- .../shared/buttons/action-dropdown.component.html | 8 +- .../shared/buttons/action-dropdown.component.scss | 14 +++- .../shared/buttons/action-dropdown.component.ts | 4 +- .../moderation/user-ban-modal.component.html | 2 +- .../shared/moderation/user-ban-modal.component.ts | 23 +++--- .../user-moderation-dropdown.component.html | 2 +- .../user-moderation-dropdown.component.ts | 9 +-- client/src/app/shared/users/user.service.ts | 39 ++++++--- client/src/sass/primeng-custom.scss | 38 ++++++++- 13 files changed, 233 insertions(+), 45 deletions(-) diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html index cca057ba1..9d1f2e34a 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.html +++ b/client/src/app/+admin/users/user-list/user-list.component.html @@ -10,10 +10,31 @@ + +
+
+ + +
+ +
+ +
+
+
+ + + Username Email Video quota @@ -25,12 +46,17 @@ - + + + + + + {{ user.username }} (banned) @@ -40,7 +66,7 @@ {{ user.roleLabel }} {{ user.createdAt }} - + @@ -56,3 +82,4 @@
+ diff --git a/client/src/app/+admin/users/user-list/user-list.component.scss b/client/src/app/+admin/users/user-list/user-list.component.scss index 47291918d..01f43dfe1 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.scss +++ b/client/src/app/+admin/users/user-list/user-list.component.scss @@ -15,4 +15,15 @@ tr.banned { .ban-reason-label { font-weight: $font-semibold; +} + +.caption { + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + + input { + @include peertube-input-text(250px); + } } \ No newline at end of file diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index dee3ed643..f3e7e0ead 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -1,10 +1,12 @@ -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, ViewChild } from '@angular/core' import { NotificationsService } from 'angular2-notifications' import { SortMeta } from 'primeng/components/common/sortmeta' import { ConfirmService } from '../../../core' import { RestPagination, RestTable, UserService } from '../../../shared' import { I18n } from '@ngx-translate/i18n-polyfill' import { User } from '../../../../../../shared' +import { UserBanModalComponent } from '@app/shared/moderation' +import { DropdownAction } from '@app/shared/buttons/action-dropdown.component' @Component({ selector: 'my-user-list', @@ -12,12 +14,17 @@ import { User } from '../../../../../../shared' styleUrls: [ './user-list.component.scss' ] }) export class UserListComponent extends RestTable implements OnInit { + @ViewChild('userBanModal') userBanModal: UserBanModalComponent + users: User[] = [] totalRecords = 0 rowsPerPage = 10 sort: SortMeta = { field: 'createdAt', order: 1 } pagination: RestPagination = { count: this.rowsPerPage, start: 0 } + selectedUsers: User[] = [] + bulkUserActions: DropdownAction[] = [] + constructor ( private notificationsService: NotificationsService, private confirmService: ConfirmService, @@ -29,13 +36,28 @@ export class UserListComponent extends RestTable implements OnInit { ngOnInit () { this.loadSort() - } - onUserChanged () { - this.loadData() + this.bulkUserActions = [ + { + label: this.i18n('Delete'), + handler: users => this.removeUsers(users) + }, + { + label: this.i18n('Ban'), + handler: users => this.openBanUserModal(users), + isDisplayed: users => users.every(u => u.blocked === false) + }, + { + label: this.i18n('Unban'), + handler: users => this.unbanUsers(users), + isDisplayed: users => users.every(u => u.blocked === true) + } + ] } protected loadData () { + this.selectedUsers = [] + this.userService.getUsers(this.pagination, this.sort) .subscribe( resultList => { @@ -46,4 +68,67 @@ export class UserListComponent extends RestTable implements OnInit { err => this.notificationsService.error(this.i18n('Error'), err.message) ) } + + openBanUserModal (users: User[]) { + for (const user of users) { + if (user.username === 'root') { + this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot ban root.')) + return + } + } + + this.userBanModal.openModal(users) + } + + onUsersBanned () { + this.loadData() + } + + async unbanUsers (users: User[]) { + const message = this.i18n('Do you really want to unban {{num}} users?', { num: users.length }) + + const res = await this.confirmService.confirm(message, this.i18n('Unban')) + if (res === false) return + + this.userService.unbanUsers(users) + .subscribe( + () => { + const message = this.i18n('{{num}} users unbanned.', { num: users.length }) + + this.notificationsService.success(this.i18n('Success'), message) + this.loadData() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + async removeUsers (users: User[]) { + for (const user of users) { + if (user.username === 'root') { + this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot delete root.')) + return + } + } + + const message = this.i18n('If you remove these users, you will not be able to create others with the same username!') + const res = await this.confirmService.confirm(message, this.i18n('Delete')) + if (res === false) return + + this.userService.removeUser(users).subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('{{num}} users deleted.', { num: users.length }) + ) + this.loadData() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + isInSelectionMode () { + return this.selectedUsers.length !== 0 + } } diff --git a/client/src/app/header/header.component.html b/client/src/app/header/header.component.html index a04354db5..c23e0c55d 100644 --- a/client/src/app/header/header.component.html +++ b/client/src/app/header/header.component.html @@ -1,6 +1,6 @@ diff --git a/client/src/app/shared/buttons/action-dropdown.component.html b/client/src/app/shared/buttons/action-dropdown.component.html index 8110e2515..111627424 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.html +++ b/client/src/app/shared/buttons/action-dropdown.component.html @@ -1,6 +1,10 @@ diff --git a/client/src/sass/primeng-custom.scss b/client/src/sass/primeng-custom.scss index 4a19e0275..0568de4e2 100644 --- a/client/src/sass/primeng-custom.scss +++ b/client/src/sass/primeng-custom.scss @@ -16,6 +16,12 @@ p-table { .ui-table-caption { border: none; + + .caption { + height: 40px; + display: flex; + align-items: center; + } } td { diff --git a/server/controllers/api/server/follows.ts b/server/controllers/api/server/follows.ts index d62400e42..9fa6c34ba 100644 --- a/server/controllers/api/server/follows.ts +++ b/server/controllers/api/server/follows.ts @@ -61,14 +61,26 @@ export { async function listFollowing (req: express.Request, res: express.Response, next: express.NextFunction) { const serverActor = await getServerActor() - const resultList = await ActorFollowModel.listFollowingForApi(serverActor.id, req.query.start, req.query.count, req.query.sort) + const resultList = await ActorFollowModel.listFollowingForApi( + serverActor.id, + req.query.start, + req.query.count, + req.query.sort, + req.query.search + ) return res.json(getFormattedObjects(resultList.data, resultList.total)) } async function listFollowers (req: express.Request, res: express.Response, next: express.NextFunction) { const serverActor = await getServerActor() - const resultList = await ActorFollowModel.listFollowersForApi(serverActor.id, req.query.start, req.query.count, req.query.sort) + const resultList = await ActorFollowModel.listFollowersForApi( + serverActor.id, + req.query.start, + req.query.count, + req.query.sort, + req.query.search + ) return res.json(getFormattedObjects(resultList.data, resultList.total)) } diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index 27bb43dae..3373355ef 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -280,7 +280,7 @@ export class ActorFollowModel extends Model { return ActorFollowModel.findAll(query) } - static listFollowingForApi (id: number, start: number, count: number, sort: string) { + static listFollowingForApi (id: number, start: number, count: number, sort: string, search?: string) { const query = { distinct: true, offset: start, @@ -299,7 +299,17 @@ export class ActorFollowModel extends Model { model: ActorModel, as: 'ActorFollowing', required: true, - include: [ ServerModel ] + include: [ + { + model: ServerModel, + required: true, + where: search ? { + host: { + [Sequelize.Op.iLike]: '%' + search + '%' + } + } : undefined + } + ] } ] } @@ -313,6 +323,49 @@ export class ActorFollowModel extends Model { }) } + static listFollowersForApi (id: number, start: number, count: number, sort: string, search?: string) { + const query = { + distinct: true, + offset: start, + limit: count, + order: getSort(sort), + include: [ + { + model: ActorModel, + required: true, + as: 'ActorFollower', + include: [ + { + model: ServerModel, + required: true, + where: search ? { + host: { + [ Sequelize.Op.iLike ]: '%' + search + '%' + } + } : undefined + } + ] + }, + { + model: ActorModel, + as: 'ActorFollowing', + required: true, + where: { + id + } + } + ] + } + + return ActorFollowModel.findAndCountAll(query) + .then(({ rows, count }) => { + return { + data: rows, + total: count + } + }) + } + static listSubscriptionsForApi (id: number, start: number, count: number, sort: string) { const query = { attributes: [], @@ -370,39 +423,6 @@ export class ActorFollowModel extends Model { }) } - static listFollowersForApi (id: number, start: number, count: number, sort: string) { - const query = { - distinct: true, - offset: start, - limit: count, - order: getSort(sort), - include: [ - { - model: ActorModel, - required: true, - as: 'ActorFollower', - include: [ ServerModel ] - }, - { - model: ActorModel, - as: 'ActorFollowing', - required: true, - where: { - id - } - } - ] - } - - return ActorFollowModel.findAndCountAll(query) - .then(({ rows, count }) => { - return { - data: rows, - total: count - } - }) - } - static listAcceptedFollowerUrlsForApi (actorIds: number[], t: Sequelize.Transaction, start?: number, count?: number) { return ActorFollowModel.createListAcceptedFollowForApiQuery('followers', actorIds, t, start, count) } diff --git a/server/tests/api/server/follows.ts b/server/tests/api/server/follows.ts index 310c291bf..e80e93e7f 100644 --- a/server/tests/api/server/follows.ts +++ b/server/tests/api/server/follows.ts @@ -93,7 +93,26 @@ describe('Test follows', function () { expect(server3Follow.state).to.equal('accepted') }) - it('Should have 0 followings on server 1 and 2', async function () { + it('Should search followings on server 1', async function () { + { + const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 1, 'createdAt', ':9002') + const follows = res.body.data + + expect(res.body.total).to.equal(1) + expect(follows.length).to.equal(1) + expect(follows[ 0 ].following.host).to.equal('localhost:9002') + } + + { + const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 1, 'createdAt', 'bla') + const follows = res.body.data + + expect(res.body.total).to.equal(0) + expect(follows.length).to.equal(0) + } + }) + + it('Should have 0 followings on server 2 and 3', async function () { for (const server of [ servers[1], servers[2] ]) { const res = await getFollowingListPaginationAndSort(server.url, 0, 5, 'createdAt') const follows = res.body.data @@ -116,6 +135,25 @@ describe('Test follows', function () { } }) + it('Should search followers on server 2', async function () { + { + const res = await getFollowersListPaginationAndSort(servers[ 2 ].url, 0, 5, 'createdAt', '9001') + const follows = res.body.data + + expect(res.body.total).to.equal(1) + expect(follows.length).to.equal(1) + expect(follows[ 0 ].following.host).to.equal('localhost:9003') + } + + { + const res = await getFollowersListPaginationAndSort(servers[ 2 ].url, 0, 5, 'createdAt', 'bla') + const follows = res.body.data + + expect(res.body.total).to.equal(0) + expect(follows.length).to.equal(0) + } + }) + it('Should have 0 followers on server 1', async function () { const res = await getFollowersListPaginationAndSort(servers[0].url, 0, 5, 'createdAt') const follows = res.body.data diff --git a/server/tests/utils/server/follows.ts b/server/tests/utils/server/follows.ts index 8a65a958b..7741757a6 100644 --- a/server/tests/utils/server/follows.ts +++ b/server/tests/utils/server/follows.ts @@ -2,7 +2,7 @@ import * as request from 'supertest' import { ServerInfo } from './servers' import { waitJobs } from './jobs' -function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string) { +function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string, search?: string) { const path = '/api/v1/server/followers' return request(url) @@ -10,12 +10,13 @@ function getFollowersListPaginationAndSort (url: string, start: number, count: n .query({ start }) .query({ count }) .query({ sort }) + .query({ search }) .set('Accept', 'application/json') .expect(200) .expect('Content-Type', /json/) } -function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string) { +function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string, search?: string) { const path = '/api/v1/server/following' return request(url) @@ -23,6 +24,7 @@ function getFollowingListPaginationAndSort (url: string, start: number, count: n .query({ start }) .query({ count }) .query({ sort }) + .query({ search }) .set('Accept', 'application/json') .expect(200) .expect('Content-Type', /json/) -- cgit v1.2.3 From 1cd3facc3de899ac864e979cd6d6a704b712cce3 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 10 Oct 2018 11:46:50 +0200 Subject: Add ability to list all local videos Including private/unlisted for moderators/admins --- server/controllers/api/accounts.ts | 4 +- server/controllers/api/search.ts | 1 + server/controllers/api/video-channel.ts | 4 +- server/controllers/feeds.ts | 10 +- server/helpers/custom-validators/videos.ts | 9 +- server/helpers/express-utils.ts | 3 +- server/middlewares/validators/search.ts | 38 +------ server/middlewares/validators/videos/videos.ts | 54 ++++++++- server/models/video/video.ts | 26 ++++- server/tests/api/check-params/index.ts | 1 + server/tests/api/check-params/videos-filter.ts | 127 +++++++++++++++++++++ server/tests/api/videos/index.ts | 1 + server/tests/api/videos/videos-filter.ts | 130 ++++++++++++++++++++++ shared/models/search/videos-search-query.model.ts | 3 + shared/models/users/user-right.enum.ts | 1 + shared/models/users/user-role.ts | 3 +- shared/models/videos/video-query.type.ts | 2 +- 17 files changed, 363 insertions(+), 54 deletions(-) create mode 100644 server/tests/api/check-params/videos-filter.ts create mode 100644 server/tests/api/videos/videos-filter.ts diff --git a/server/controllers/api/accounts.ts b/server/controllers/api/accounts.ts index b7691ccba..8e3f60010 100644 --- a/server/controllers/api/accounts.ts +++ b/server/controllers/api/accounts.ts @@ -86,9 +86,11 @@ async function listAccountVideos (req: express.Request, res: express.Response, n languageOneOf: req.query.languageOneOf, tagsOneOf: req.query.tagsOneOf, tagsAllOf: req.query.tagsAllOf, + filter: req.query.filter, nsfw: buildNSFWFilter(res, req.query.nsfw), withFiles: false, - accountId: account.id + accountId: account.id, + userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined }) return res.json(getFormattedObjects(resultList.data, resultList.total)) diff --git a/server/controllers/api/search.ts b/server/controllers/api/search.ts index 4be2b5ef7..a8a6cfb08 100644 --- a/server/controllers/api/search.ts +++ b/server/controllers/api/search.ts @@ -118,6 +118,7 @@ async function searchVideosDB (query: VideosSearchQuery, res: express.Response) const options = Object.assign(query, { includeLocalVideos: true, nsfw: buildNSFWFilter(res, query.nsfw), + filter: query.filter, userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined }) const resultList = await VideoModel.searchAndPopulateAccountAndServer(options) diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index 1fa842d9c..c84d1be58 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts @@ -215,9 +215,11 @@ async function listVideoChannelVideos (req: express.Request, res: express.Respon languageOneOf: req.query.languageOneOf, tagsOneOf: req.query.tagsOneOf, tagsAllOf: req.query.tagsAllOf, + filter: req.query.filter, nsfw: buildNSFWFilter(res, req.query.nsfw), withFiles: false, - videoChannelId: videoChannelInstance.id + videoChannelId: videoChannelInstance.id, + userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined }) return res.json(getFormattedObjects(resultList.data, resultList.total)) diff --git a/server/controllers/feeds.ts b/server/controllers/feeds.ts index b30ad8e8d..ccb9b6029 100644 --- a/server/controllers/feeds.ts +++ b/server/controllers/feeds.ts @@ -1,7 +1,14 @@ import * as express from 'express' import { CONFIG, FEEDS, ROUTE_CACHE_LIFETIME } from '../initializers/constants' import { THUMBNAILS_SIZE } from '../initializers' -import { asyncMiddleware, setDefaultSort, videoCommentsFeedsValidator, videoFeedsValidator, videosSortValidator } from '../middlewares' +import { + asyncMiddleware, + commonVideosFiltersValidator, + setDefaultSort, + videoCommentsFeedsValidator, + videoFeedsValidator, + videosSortValidator +} from '../middlewares' import { VideoModel } from '../models/video/video' import * as Feed from 'pfeed' import { AccountModel } from '../models/account/account' @@ -22,6 +29,7 @@ feedsRouter.get('/feeds/videos.:format', videosSortValidator, setDefaultSort, asyncMiddleware(cacheRoute(ROUTE_CACHE_LIFETIME.FEEDS)), + commonVideosFiltersValidator, asyncMiddleware(videoFeedsValidator), asyncMiddleware(generateVideoFeed) ) diff --git a/server/helpers/custom-validators/videos.ts b/server/helpers/custom-validators/videos.ts index 714f7ac95..a13b09ac8 100644 --- a/server/helpers/custom-validators/videos.ts +++ b/server/helpers/custom-validators/videos.ts @@ -3,7 +3,7 @@ import 'express-validator' import { values } from 'lodash' import 'multer' import * as validator from 'validator' -import { UserRight, VideoPrivacy, VideoRateType } from '../../../shared' +import { UserRight, VideoFilter, VideoPrivacy, VideoRateType } from '../../../shared' import { CONSTRAINTS_FIELDS, VIDEO_CATEGORIES, @@ -22,6 +22,10 @@ import { fetchVideo, VideoFetchType } from '../video' const VIDEOS_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEOS +function isVideoFilterValid (filter: VideoFilter) { + return filter === 'local' || filter === 'all-local' +} + function isVideoCategoryValid (value: any) { return value === null || VIDEO_CATEGORIES[ value ] !== undefined } @@ -225,5 +229,6 @@ export { isVideoExist, isVideoImage, isVideoChannelOfAccountExist, - isVideoSupportValid + isVideoSupportValid, + isVideoFilterValid } diff --git a/server/helpers/express-utils.ts b/server/helpers/express-utils.ts index 8a9cee8c5..162fe2244 100644 --- a/server/helpers/express-utils.ts +++ b/server/helpers/express-utils.ts @@ -2,7 +2,6 @@ import * as express from 'express' import * as multer from 'multer' import { CONFIG, REMOTE_SCHEME } from '../initializers' import { logger } from './logger' -import { User } from '../../shared/models/users' import { deleteFileAsync, generateRandomString } from './utils' import { extname } from 'path' import { isArray } from './custom-validators/misc' @@ -101,7 +100,7 @@ function createReqFiles ( } function isUserAbleToSearchRemoteURI (res: express.Response) { - const user: User = res.locals.oauth ? res.locals.oauth.token.User : undefined + const user: UserModel = res.locals.oauth ? res.locals.oauth.token.User : undefined return CONFIG.SEARCH.REMOTE_URI.ANONYMOUS === true || (CONFIG.SEARCH.REMOTE_URI.USERS === true && user !== undefined) diff --git a/server/middlewares/validators/search.ts b/server/middlewares/validators/search.ts index 8baf643a5..6a95d6095 100644 --- a/server/middlewares/validators/search.ts +++ b/server/middlewares/validators/search.ts @@ -2,8 +2,7 @@ import * as express from 'express' import { areValidationErrors } from './utils' import { logger } from '../../helpers/logger' import { query } from 'express-validator/check' -import { isNumberArray, isStringArray, isNSFWQueryValid } from '../../helpers/custom-validators/search' -import { isBooleanValid, isDateValid, toArray } from '../../helpers/custom-validators/misc' +import { isDateValid } from '../../helpers/custom-validators/misc' const videosSearchValidator = [ query('search').optional().not().isEmpty().withMessage('Should have a valid search'), @@ -35,44 +34,9 @@ const videoChannelsSearchValidator = [ } ] -const commonVideosFiltersValidator = [ - query('categoryOneOf') - .optional() - .customSanitizer(toArray) - .custom(isNumberArray).withMessage('Should have a valid one of category array'), - query('licenceOneOf') - .optional() - .customSanitizer(toArray) - .custom(isNumberArray).withMessage('Should have a valid one of licence array'), - query('languageOneOf') - .optional() - .customSanitizer(toArray) - .custom(isStringArray).withMessage('Should have a valid one of language array'), - query('tagsOneOf') - .optional() - .customSanitizer(toArray) - .custom(isStringArray).withMessage('Should have a valid one of tags array'), - query('tagsAllOf') - .optional() - .customSanitizer(toArray) - .custom(isStringArray).withMessage('Should have a valid all of tags array'), - query('nsfw') - .optional() - .custom(isNSFWQueryValid).withMessage('Should have a valid NSFW attribute'), - - (req: express.Request, res: express.Response, next: express.NextFunction) => { - logger.debug('Checking commons video filters query', { parameters: req.query }) - - if (areValidationErrors(req, res)) return - - return next() - } -] - // --------------------------------------------------------------------------- export { - commonVideosFiltersValidator, videoChannelsSearchValidator, videosSearchValidator } diff --git a/server/middlewares/validators/videos/videos.ts b/server/middlewares/validators/videos/videos.ts index 1d0a64bb1..9dc52a134 100644 --- a/server/middlewares/validators/videos/videos.ts +++ b/server/middlewares/validators/videos/videos.ts @@ -1,6 +1,6 @@ import * as express from 'express' import 'express-validator' -import { body, param, ValidationChain } from 'express-validator/check' +import { body, param, query, ValidationChain } from 'express-validator/check' import { UserRight, VideoChangeOwnershipStatus, VideoPrivacy } from '../../../../shared' import { isBooleanValid, @@ -8,6 +8,7 @@ import { isIdOrUUIDValid, isIdValid, isUUIDValid, + toArray, toIntOrNull, toValueOrNull } from '../../../helpers/custom-validators/misc' @@ -19,6 +20,7 @@ import { isVideoDescriptionValid, isVideoExist, isVideoFile, + isVideoFilterValid, isVideoImage, isVideoLanguageValid, isVideoLicenceValid, @@ -42,6 +44,7 @@ import { VideoChangeOwnershipAccept } from '../../../../shared/models/videos/vid import { VideoChangeOwnershipModel } from '../../../models/video/video-change-ownership' import { AccountModel } from '../../../models/account/account' import { VideoFetchType } from '../../../helpers/video' +import { isNSFWQueryValid, isNumberArray, isStringArray } from '../../../helpers/custom-validators/search' const videosAddValidator = getCommonVideoAttributes().concat([ body('videofile') @@ -359,6 +362,51 @@ function getCommonVideoAttributes () { ] as (ValidationChain | express.Handler)[] } +const commonVideosFiltersValidator = [ + query('categoryOneOf') + .optional() + .customSanitizer(toArray) + .custom(isNumberArray).withMessage('Should have a valid one of category array'), + query('licenceOneOf') + .optional() + .customSanitizer(toArray) + .custom(isNumberArray).withMessage('Should have a valid one of licence array'), + query('languageOneOf') + .optional() + .customSanitizer(toArray) + .custom(isStringArray).withMessage('Should have a valid one of language array'), + query('tagsOneOf') + .optional() + .customSanitizer(toArray) + .custom(isStringArray).withMessage('Should have a valid one of tags array'), + query('tagsAllOf') + .optional() + .customSanitizer(toArray) + .custom(isStringArray).withMessage('Should have a valid all of tags array'), + query('nsfw') + .optional() + .custom(isNSFWQueryValid).withMessage('Should have a valid NSFW attribute'), + query('filter') + .optional() + .custom(isVideoFilterValid).withMessage('Should have a valid filter attribute'), + + (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking commons video filters query', { parameters: req.query }) + + if (areValidationErrors(req, res)) return + + const user: UserModel = res.locals.oauth ? res.locals.oauth.token.User : undefined + if (req.query.filter === 'all-local' && (!user || user.hasRight(UserRight.SEE_ALL_VIDEOS) === false)) { + res.status(401) + .json({ error: 'You are not allowed to see all local videos.' }) + + return + } + + return next() + } +] + // --------------------------------------------------------------------------- export { @@ -375,7 +423,9 @@ export { videosTerminateChangeOwnershipValidator, videosAcceptChangeOwnershipValidator, - getCommonVideoAttributes + getCommonVideoAttributes, + + commonVideosFiltersValidator } // --------------------------------------------------------------------------- diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 070ac7623..4f3f75613 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -235,7 +235,14 @@ type AvailableForListIDsOptions = { ) } ] - }, + } + }, + include: [] + } + + // Only list public/published videos + if (!options.filter || options.filter !== 'all-local') { + const privacyWhere = { // Always list public videos privacy: VideoPrivacy.PUBLIC, // Always list published videos, or videos that are being transcoded but on which we don't want to wait for transcoding @@ -250,8 +257,9 @@ type AvailableForListIDsOptions = { } } ] - }, - include: [] + } + + Object.assign(query.where, privacyWhere) } if (options.filter || options.accountId || options.videoChannelId) { @@ -969,6 +977,10 @@ export class VideoModel extends Model { trendingDays?: number, userId?: number }, countVideos = true) { + if (options.filter && options.filter === 'all-local' && !options.userId) { + throw new Error('Try to filter all-local but no userId is provided') + } + const query: IFindOptions = { offset: options.start, limit: options.count, @@ -1021,7 +1033,8 @@ export class VideoModel extends Model { tagsAllOf?: string[] durationMin?: number // seconds durationMax?: number // seconds - userId?: number + userId?: number, + filter?: VideoFilter }) { const whereAnd = [] @@ -1098,7 +1111,8 @@ export class VideoModel extends Model { languageOneOf: options.languageOneOf, tagsOneOf: options.tagsOneOf, tagsAllOf: options.tagsAllOf, - userId: options.userId + userId: options.userId, + filter: options.filter } return VideoModel.getAvailableForApi(query, queryOptions) @@ -1262,7 +1276,7 @@ export class VideoModel extends Model { } private static buildActorWhereWithFilter (filter?: VideoFilter) { - if (filter && filter === 'local') { + if (filter && (filter === 'local' || filter === 'all-local')) { return { serverId: null } diff --git a/server/tests/api/check-params/index.ts b/server/tests/api/check-params/index.ts index 71a217649..bfc550ae5 100644 --- a/server/tests/api/check-params/index.ts +++ b/server/tests/api/check-params/index.ts @@ -15,4 +15,5 @@ import './video-channels' import './video-comments' import './video-imports' import './videos' +import './videos-filter' import './videos-history' diff --git a/server/tests/api/check-params/videos-filter.ts b/server/tests/api/check-params/videos-filter.ts new file mode 100644 index 000000000..784cd8ba1 --- /dev/null +++ b/server/tests/api/check-params/videos-filter.ts @@ -0,0 +1,127 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { + createUser, + flushTests, + killallServers, + makeGetRequest, + runServer, + ServerInfo, + setAccessTokensToServers, + userLogin +} from '../../utils' +import { UserRole } from '../../../../shared/models/users' + +const expect = chai.expect + +async function testEndpoints (server: ServerInfo, token: string, filter: string, statusCodeExpected: number) { + const paths = [ + '/api/v1/video-channels/root_channel/videos', + '/api/v1/accounts/root/videos', + '/api/v1/videos', + '/api/v1/search/videos' + ] + + for (const path of paths) { + await makeGetRequest({ + url: server.url, + path, + token, + query: { + filter + }, + statusCodeExpected + }) + } +} + +describe('Test videos filters', function () { + let server: ServerInfo + let userAccessToken: string + let moderatorAccessToken: string + + // --------------------------------------------------------------- + + before(async function () { + this.timeout(30000) + + await flushTests() + + server = await runServer(1) + + await setAccessTokensToServers([ server ]) + + const user = { username: 'user1', password: 'my super password' } + await createUser(server.url, server.accessToken, user.username, user.password) + userAccessToken = await userLogin(server, user) + + const moderator = { username: 'moderator', password: 'my super password' } + await createUser( + server.url, + server.accessToken, + moderator.username, + moderator.password, + undefined, + undefined, + UserRole.MODERATOR + ) + moderatorAccessToken = await userLogin(server, moderator) + }) + + describe('When setting a video filter', function () { + + it('Should fail with a bad filter', async function () { + await testEndpoints(server, server.accessToken, 'bad-filter', 400) + }) + + it('Should succeed with a good filter', async function () { + await testEndpoints(server, server.accessToken,'local', 200) + }) + + it('Should fail to list all-local with a simple user', async function () { + await testEndpoints(server, userAccessToken, 'all-local', 401) + }) + + it('Should succeed to list all-local with a moderator', async function () { + await testEndpoints(server, moderatorAccessToken, 'all-local', 200) + }) + + it('Should succeed to list all-local with an admin', async function () { + await testEndpoints(server, server.accessToken, 'all-local', 200) + }) + + // Because we cannot authenticate the user on the RSS endpoint + it('Should fail on the feeds endpoint with the all-local filter', async function () { + await makeGetRequest({ + url: server.url, + path: '/feeds/videos.json', + statusCodeExpected: 401, + query: { + filter: 'all-local' + } + }) + }) + + it('Should succed on the feeds endpoint with the local filter', async function () { + await makeGetRequest({ + url: server.url, + path: '/feeds/videos.json', + statusCodeExpected: 200, + query: { + filter: 'local' + } + }) + }) + }) + + after(async function () { + killallServers([ server ]) + + // Keep the logs if the test failed + if (this['ok']) { + await flushTests() + } + }) +}) diff --git a/server/tests/api/videos/index.ts b/server/tests/api/videos/index.ts index 09bb62a8d..9bdb78491 100644 --- a/server/tests/api/videos/index.ts +++ b/server/tests/api/videos/index.ts @@ -14,5 +14,6 @@ import './video-nsfw' import './video-privacy' import './video-schedule-update' import './video-transcoder' +import './videos-filter' import './videos-history' import './videos-overview' diff --git a/server/tests/api/videos/videos-filter.ts b/server/tests/api/videos/videos-filter.ts new file mode 100644 index 000000000..a7588129f --- /dev/null +++ b/server/tests/api/videos/videos-filter.ts @@ -0,0 +1,130 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { + createUser, + doubleFollow, + flushAndRunMultipleServers, + flushTests, + killallServers, + makeGetRequest, + ServerInfo, + setAccessTokensToServers, + uploadVideo, + userLogin +} from '../../utils' +import { Video, VideoPrivacy } from '../../../../shared/models/videos' +import { UserRole } from '../../../../shared/models/users' + +const expect = chai.expect + +async function getVideosNames (server: ServerInfo, token: string, filter: string, statusCodeExpected = 200) { + const paths = [ + '/api/v1/video-channels/root_channel/videos', + '/api/v1/accounts/root/videos', + '/api/v1/videos', + '/api/v1/search/videos' + ] + + const videosResults: Video[][] = [] + + for (const path of paths) { + const res = await makeGetRequest({ + url: server.url, + path, + token, + query: { + sort: 'createdAt', + filter + }, + statusCodeExpected + }) + + videosResults.push(res.body.data.map(v => v.name)) + } + + return videosResults +} + +describe('Test videos filter validator', function () { + let servers: ServerInfo[] + + // --------------------------------------------------------------- + + before(async function () { + this.timeout(120000) + + await flushTests() + + servers = await flushAndRunMultipleServers(2) + + await setAccessTokensToServers(servers) + + for (const server of servers) { + const moderator = { username: 'moderator', password: 'my super password' } + await createUser( + server.url, + server.accessToken, + moderator.username, + moderator.password, + undefined, + undefined, + UserRole.MODERATOR + ) + server['moderatorAccessToken'] = await userLogin(server, moderator) + + await uploadVideo(server.url, server.accessToken, { name: 'public ' + server.serverNumber }) + + { + const attributes = { name: 'unlisted ' + server.serverNumber, privacy: VideoPrivacy.UNLISTED } + await uploadVideo(server.url, server.accessToken, attributes) + } + + { + const attributes = { name: 'private ' + server.serverNumber, privacy: VideoPrivacy.PRIVATE } + await uploadVideo(server.url, server.accessToken, attributes) + } + } + + await doubleFollow(servers[0], servers[1]) + }) + + describe('Check videos filter', function () { + + it('Should display local videos', async function () { + for (const server of servers) { + const namesResults = await getVideosNames(server, server.accessToken, 'local') + for (const names of namesResults) { + expect(names).to.have.lengthOf(1) + expect(names[ 0 ]).to.equal('public ' + server.serverNumber) + } + } + }) + + it('Should display all local videos by the admin or the moderator', async function () { + for (const server of servers) { + for (const token of [ server.accessToken, server['moderatorAccessToken'] ]) { + + const namesResults = await getVideosNames(server, token, 'all-local') + for (const names of namesResults) { + expect(names).to.have.lengthOf(3) + + expect(names[ 0 ]).to.equal('public ' + server.serverNumber) + expect(names[ 1 ]).to.equal('unlisted ' + server.serverNumber) + expect(names[ 2 ]).to.equal('private ' + server.serverNumber) + } + } + } + }) + }) + + after(async function () { + killallServers(servers) + + // Keep the logs if the test failed + if (this['ok']) { + await flushTests() + } + }) +}) diff --git a/shared/models/search/videos-search-query.model.ts b/shared/models/search/videos-search-query.model.ts index 29aa5c100..0db220758 100644 --- a/shared/models/search/videos-search-query.model.ts +++ b/shared/models/search/videos-search-query.model.ts @@ -1,4 +1,5 @@ import { NSFWQuery } from './nsfw-query.model' +import { VideoFilter } from '../videos' export interface VideosSearchQuery { search?: string @@ -23,4 +24,6 @@ export interface VideosSearchQuery { durationMin?: number // seconds durationMax?: number // seconds + + filter?: VideoFilter } diff --git a/shared/models/users/user-right.enum.ts b/shared/models/users/user-right.enum.ts index c4ccd632f..ed2c536ce 100644 --- a/shared/models/users/user-right.enum.ts +++ b/shared/models/users/user-right.enum.ts @@ -14,5 +14,6 @@ export enum UserRight { REMOVE_ANY_VIDEO_CHANNEL, REMOVE_ANY_VIDEO_COMMENT, UPDATE_ANY_VIDEO, + SEE_ALL_VIDEOS, CHANGE_VIDEO_OWNERSHIP } diff --git a/shared/models/users/user-role.ts b/shared/models/users/user-role.ts index 552aad999..d7020c0f2 100644 --- a/shared/models/users/user-role.ts +++ b/shared/models/users/user-role.ts @@ -26,7 +26,8 @@ const userRoleRights: { [ id: number ]: UserRight[] } = { UserRight.REMOVE_ANY_VIDEO, UserRight.REMOVE_ANY_VIDEO_CHANNEL, UserRight.REMOVE_ANY_VIDEO_COMMENT, - UserRight.UPDATE_ANY_VIDEO + UserRight.UPDATE_ANY_VIDEO, + UserRight.SEE_ALL_VIDEOS ], [UserRole.USER]: [] diff --git a/shared/models/videos/video-query.type.ts b/shared/models/videos/video-query.type.ts index ff0f527f3..f76a91aad 100644 --- a/shared/models/videos/video-query.type.ts +++ b/shared/models/videos/video-query.type.ts @@ -1 +1 @@ -export type VideoFilter = 'local' +export type VideoFilter = 'local' | 'all-local' -- cgit v1.2.3 From 017c3dcadf71aef4c1a854e4867b77931747f06e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 10 Oct 2018 14:35:55 +0200 Subject: Add ability to list all local videos on client --- .../following-list/following-list.component.scss | 11 ---------- .../shared/forms/peertube-checkbox.component.html | 2 +- .../shared/forms/peertube-checkbox.component.scss | 6 +++++- .../src/app/shared/video/abstract-video-list.html | 16 +++++++++++--- .../src/app/shared/video/abstract-video-list.scss | 25 +++++++++++++++++----- client/src/app/shared/video/abstract-video-list.ts | 5 +++++ .../shared/video/video-miniature.component.html | 3 +++ .../app/shared/video/video-miniature.component.ts | 9 ++++++++ .../+video-edit/shared/video-edit.component.scss | 5 +++++ .../app/videos/video-list/video-local.component.ts | 12 +++++++++++ client/src/sass/include/_mixins.scss | 2 +- 11 files changed, 74 insertions(+), 22 deletions(-) diff --git a/client/src/app/+admin/follows/following-list/following-list.component.scss b/client/src/app/+admin/follows/following-list/following-list.component.scss index b3bb7f5f8..a6f0656b8 100644 --- a/client/src/app/+admin/follows/following-list/following-list.component.scss +++ b/client/src/app/+admin/follows/following-list/following-list.component.scss @@ -1,17 +1,6 @@ @import '_variables'; @import '_mixins'; -my-redundancy-checkbox /deep/ my-peertube-checkbox { - .form-group { - margin-bottom: 0; - align-items: center; - } - - label { - margin: 0; - } -} - .caption { justify-content: flex-end; diff --git a/client/src/app/shared/forms/peertube-checkbox.component.html b/client/src/app/shared/forms/peertube-checkbox.component.html index 38691f050..fb3006b53 100644 --- a/client/src/app/shared/forms/peertube-checkbox.component.html +++ b/client/src/app/shared/forms/peertube-checkbox.component.html @@ -1,4 +1,4 @@ -
+
-
- {{ titlePage }} +
+
+ {{ titlePage }} +
+ + +
+ + +
-
No results.
{{ video.name }} + + Unlisted + Private {{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views diff --git a/client/src/app/shared/video/video-miniature.component.ts b/client/src/app/shared/video/video-miniature.component.ts index 7e8692b0b..2f951a1f1 100644 --- a/client/src/app/shared/video/video-miniature.component.ts +++ b/client/src/app/shared/video/video-miniature.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core import { User } from '../users' import { Video } from './video.model' import { ServerService } from '@app/core' +import { VideoPrivacy } from '../../../../../shared' export type OwnerDisplayType = 'account' | 'videoChannel' | 'auto' @@ -49,4 +50,12 @@ export class VideoMiniatureComponent implements OnInit { displayOwnerVideoChannel () { return this.ownerDisplayTypeChosen === 'videoChannel' } + + isUnlistedVideo () { + return this.video.privacy.id === VideoPrivacy.UNLISTED + } + + isPrivateVideo () { + return this.video.privacy.id === VideoPrivacy.PRIVATE + } } diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.scss b/client/src/app/videos/+video-edit/shared/video-edit.component.scss index b039d7ad4..25db8e8ed 100644 --- a/client/src/app/videos/+video-edit/shared/video-edit.component.scss +++ b/client/src/app/videos/+video-edit/shared/video-edit.component.scss @@ -5,6 +5,11 @@ @include peertube-select-container(auto); } +my-peertube-checkbox { + display: block; + margin-bottom: 1rem; +} + .video-edit { height: 100%; min-height: 300px; 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 c91c639ca..9d000cf2e 100644 --- a/client/src/app/videos/video-list/video-local.component.ts +++ b/client/src/app/videos/video-list/video-local.component.ts @@ -10,6 +10,7 @@ import { VideoService } from '../../shared/video/video.service' import { VideoFilter } from '../../../../../shared/models/videos/video-query.type' import { I18n } from '@ngx-translate/i18n-polyfill' import { ScreenService } from '@app/shared/misc/screen.service' +import { UserRight } from '../../../../../shared/models/users' @Component({ selector: 'my-videos-local', @@ -40,6 +41,11 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On ngOnInit () { super.ngOnInit() + if (this.authService.isLoggedIn()) { + const user = this.authService.getUser() + this.displayModerationBlock = user.hasRight(UserRight.SEE_ALL_VIDEOS) + } + this.generateSyndicationList() } @@ -56,4 +62,10 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On generateSyndicationList () { this.syndicationItems = this.videoService.getVideoFeedUrls(this.sort, this.filter, this.categoryOneOf) } + + toggleModerationDisplay () { + this.filter = this.filter === 'local' ? 'all-local' as 'all-local' : 'local' as 'local' + + this.reloadVideos() + } } diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index 2efd6a1d3..b25d7ae0f 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -29,7 +29,7 @@ display: block; /* Fallback for non-webkit */ display: -webkit-box; - max-height: $font-size*$line-height*$lines-to-show; + max-height: $font-size*$line-height*$lines-to-show + 0.2; /* Fallback for non-webkit */ font-size: $font-size; line-height: $line-height; -- cgit v1.2.3 From cc1903ad2a16adf14eaa4f5429e35c455cf93bea Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 10 Oct 2018 15:09:16 +0200 Subject: Fix angular build --- client/src/app/shared/video/video-miniature.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/app/shared/video/video-miniature.component.html b/client/src/app/shared/video/video-miniature.component.html index 41ba20d00..277a0cf35 100644 --- a/client/src/app/shared/video/video-miniature.component.html +++ b/client/src/app/shared/video/video-miniature.component.html @@ -9,8 +9,8 @@ > {{ video.name }} - Unlisted - Private + Unlisted + Private {{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views -- cgit v1.2.3 From a21b1e00ddc46cfc2eae7fcec22b21d9b0781774 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 11 Oct 2018 08:39:46 +0200 Subject: Bump changelog --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea6007b4c..6716c7bc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## v1.0.0 + +Announcement scheduled for october 15 + +### Bug fixes + + * Check video exists before extending expiration + * Correctly delete redundancy files + * Fix account URI in remote comment modal ([@rigelk](https://github.com/rigelk)) + * Fix avatar update + * Avoid old issue regarding duplicated hosts in database + + ## v1.0.0-rc.2 ### Bug fixes -- cgit v1.2.3 From 107c5fcda423faef9b9ec0804d6b8dd23fe848ce Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 11 Oct 2018 08:47:59 +0200 Subject: Fix release script --- scripts/release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release.sh b/scripts/release.sh index 7b577ef35..3a8643b5a 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -27,7 +27,7 @@ fi maintainer_public_key=${MAINTAINER_GPG:-"583A612D890159BE"} branch=$(git symbolic-ref --short -q HEAD) -if [ "$branch" != "develop" ] && [[ "$branch" != feature/* ]]; then +if [ "$branch" != "develop" ] && [[ "$branch" != release/* ]]; then echo "Need to be on develop or release branch." exit -1 fi -- cgit v1.2.3 From 333210d862fdba4bb114b756d4f964789f480196 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 11 Oct 2018 09:06:16 +0200 Subject: Bumped to version v1.0.0 --- client/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index 76a4eedad..a1dd94b76 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "peertube-client", - "version": "1.0.0-rc.2", + "version": "1.0.0", "private": true, "licence": "GPLv3", "author": { diff --git a/package.json b/package.json index 80d5a04ac..5aaaa32a7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube", "description": "Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.", - "version": "1.0.0-rc.2", + "version": "1.0.0", "private": true, "licence": "AGPLv3", "engines": { -- cgit v1.2.3 From d9d1989b62bed7eeed987d6def0ac8ccd6032c5e Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Thu, 11 Oct 2018 10:34:44 +0200 Subject: Use DB informations from config/production.yaml in upgrade script Avoid hardcoded values in upgrade script. Avoid asking for DB password. Uses python (usually installed on your system, even with minimal installations) and some of its standard lib modules. --- scripts/upgrade.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh index b29615fb1..c70b3b42a 100755 --- a/scripts/upgrade.sh +++ b/scripts/upgrade.sh @@ -23,8 +23,13 @@ fi # Backup database SQL_BACKUP_PATH="$PEERTUBE_PATH/backup/sql-peertube_prod-$(date +"%Y%m%d-%H%M").bak" +DB_USER=$(node -e "console.log(require('js-yaml').safeLoad(fs.readFileSync('$PEERTUBE_PATH/config/production.yaml', 'utf8'))['database']['username'])") +DB_PASS=$(node -e "console.log(require('js-yaml').safeLoad(fs.readFileSync('$PEERTUBE_PATH/config/production.yaml', 'utf8'))['database']['password'])") +DB_HOST=$(node -e "console.log(require('js-yaml').safeLoad(fs.readFileSync('$PEERTUBE_PATH/config/production.yaml', 'utf8'))['database']['hostname'])") +DB_SUFFIX=$(node -e "console.log(require('js-yaml').safeLoad(fs.readFileSync('$PEERTUBE_PATH/config/production.yaml', 'utf8'))['database']['suffix'])") mkdir -p $PEERTUBE_PATH/backup -pg_dump -U peertube -W -h localhost -F c peertube_prod -f "$SQL_BACKUP_PATH" + +PGPASSWORD=$DB_PASS pg_dump -U $DB_USER -h $DB_HOST -F c "peertube${DB_SUFFIX}" -f "$SQL_BACKUP_PATH" # If there is a pre-release, give the user a choice which one to install. RELEASE_VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) -- cgit v1.2.3 From 669121a684f2654558a59023eb0fa937af5daa83 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 12 Oct 2018 10:14:03 +0200 Subject: correct first landing videos in README --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c3a39eb1d..1aa7ce28f 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ directly in the web browser with

- + screenshot

@@ -109,11 +109,8 @@ Want to see it in action? * [peertube.cpy.re](https://peertube.cpy.re) * [peertube2.cpy.re](https://peertube2.cpy.re) * [peertube3.cpy.re](https://peertube3.cpy.re) - * [Video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) What is PeerTube? - * [Video](https://peertube.cpy.re/videos/watch/f78a97f8-a142-4ce1-a5bd-154bf9386504) - to see what the "decentralization feature" looks like - * [Video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) to see - the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) + * [Video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) explaining what is PeerTube + * [Video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) showing the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) :question: Motivation ---------------------------------------------------------------- -- cgit v1.2.3 From 6e5a785b20230ff5457632361a893d814b53c95e Mon Sep 17 00:00:00 2001 From: Pierre-Alain TORET Date: Fri, 12 Oct 2018 10:17:51 +0200 Subject: README.md : Fix link to admin server tools --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1aa7ce28f..b06b9c002 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ See the more general [admin documentation](https://docs.joinpeertube.org/lang/en * [Import videos (YouTube, Dailymotion, Vimeo...)](/support/doc/tools.md) * [Upload videos from the CLI](/support/doc/tools.md) - * [Admin server tools (create transcoding jobs, prune storage...)](/develop/support/doc/tools.md#server-tools) + * [Admin server tools (create transcoding jobs, prune storage...)](/support/doc/tools.md#server-tools) ### Technical documentation -- cgit v1.2.3 From 0e5ff97f6fdf9a4cebe5a15f5a390380465803ad Mon Sep 17 00:00:00 2001 From: BRAINS YUM <43896676+McFlat@users.noreply.github.com> Date: Sat, 13 Oct 2018 01:43:55 -0500 Subject: add parseBytes utility function and tests (#1239) * add parseBytes utility function and tests make it parse TB MB fix parseBytes; * 1024 test bytes too, and make parseByte to parse quotas add test in travis.sh in misc * fix parseBytes and test to pass linting --- scripts/travis.sh | 7 ++++-- server/helpers/core-utils.ts | 48 ++++++++++++++++++++++++++++++++++++++ server/initializers/constants.ts | 6 ++--- server/tests/helpers/core-utils.ts | 48 ++++++++++++++++++++++++++++++++++++++ server/tests/helpers/index.ts | 1 + 5 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 server/tests/helpers/core-utils.ts create mode 100644 server/tests/helpers/index.ts diff --git a/scripts/travis.sh b/scripts/travis.sh index 5d195f902..628039ab7 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -11,8 +11,11 @@ killall -q peertube || true if [ "$1" = "misc" ]; then npm run build -- --light-fr - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/client.ts server/tests/activitypub.ts \ - server/tests/feeds/index.ts server/tests/misc-endpoints.ts + mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/client.ts \ + server/tests/activitypub.ts \ + server/tests/feeds/index.ts \ + server/tests/misc-endpoints.ts \ + server/tests/helpers/index.ts elif [ "$1" = "api" ]; then npm run build:server mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index.ts diff --git a/server/helpers/core-utils.ts b/server/helpers/core-utils.ts index 224e4fe92..84e33c0e9 100644 --- a/server/helpers/core-utils.ts +++ b/server/helpers/core-utils.ts @@ -21,6 +21,7 @@ const timeTable = { week: 3600000 * 24 * 7, month: 3600000 * 24 * 30 } + export function parseDuration (duration: number | string): number { if (typeof duration === 'number') return duration @@ -41,6 +42,53 @@ export function parseDuration (duration: number | string): number { throw new Error('Duration could not be properly parsed') } +export function parseBytes (value: string | number): number { + if (typeof value === 'number') return value + + const tgm = /^(\d+)\s*TB\s*(\d+)\s*GB\s*(\d+)\s*MB$/ + const tg = /^(\d+)\s*TB\s*(\d+)\s*GB$/ + const tm = /^(\d+)\s*TB\s*(\d+)\s*MB$/ + const gm = /^(\d+)\s*GB\s*(\d+)\s*MB$/ + const t = /^(\d+)\s*TB$/ + const g = /^(\d+)\s*GB$/ + const m = /^(\d+)\s*MB$/ + const b = /^(\d+)\s*B$/ + let match + + if (value.match(tgm)) { + match = value.match(tgm) + return parseInt(match[1], 10) * 1024 * 1024 * 1024 * 1024 + + parseInt(match[2], 10) * 1024 * 1024 * 1024 + + parseInt(match[3], 10) * 1024 * 1024 + } else if (value.match(tg)) { + match = value.match(tg) + return parseInt(match[1], 10) * 1024 * 1024 * 1024 * 1024 + + parseInt(match[2], 10) * 1024 * 1024 * 1024 + } else if (value.match(tm)) { + match = value.match(tm) + return parseInt(match[1], 10) * 1024 * 1024 * 1024 * 1024 + + parseInt(match[2], 10) * 1024 * 1024 + } else if (value.match(gm)) { + match = value.match(gm) + return parseInt(match[1], 10) * 1024 * 1024 * 1024 + + parseInt(match[2], 10) * 1024 * 1024 + } else if (value.match(t)) { + match = value.match(t) + return parseInt(match[1], 10) * 1024 * 1024 * 1024 * 1024 + } else if (value.match(g)) { + match = value.match(g) + return parseInt(match[1], 10) * 1024 * 1024 * 1024 + } else if (value.match(m)) { + match = value.match(m) + return parseInt(match[1], 10) * 1024 * 1024 + } else if (value.match(b)) { + match = value.match(b) + return parseInt(match[1], 10) * 1024 + } else { + return parseInt(value, 10) + } +} + function sanitizeUrl (url: string) { const urlObject = new URL(url) diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index a3e5f5dd2..e08fd75cd 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -5,7 +5,7 @@ import { ActivityPubActorType } from '../../shared/models/activitypub' import { FollowState } from '../../shared/models/actors' import { VideoAbuseState, VideoImportState, VideoPrivacy, VideoTranscodingFPS } from '../../shared/models/videos' // Do not use barrels, remain constants as independent as possible -import { buildPath, isTestInstance, parseDuration, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils' +import { buildPath, isTestInstance, parseDuration, parseBytes, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils' import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type' import { invert } from 'lodash' import { CronRepeatOptions, EveryRepeatOptions } from 'bull' @@ -232,8 +232,8 @@ const CONFIG = { } }, USER: { - get VIDEO_QUOTA () { return config.get('user.video_quota') }, - get VIDEO_QUOTA_DAILY () { return config.get('user.video_quota_daily') } + get VIDEO_QUOTA () { return parseBytes(config.get('user.video_quota')) }, + get VIDEO_QUOTA_DAILY () { return parseBytes(config.get('user.video_quota_daily')) } }, TRANSCODING: { get ENABLED () { return config.get('transcoding.enabled') }, diff --git a/server/tests/helpers/core-utils.ts b/server/tests/helpers/core-utils.ts new file mode 100644 index 000000000..a6d829a9f --- /dev/null +++ b/server/tests/helpers/core-utils.ts @@ -0,0 +1,48 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { + parseBytes +} from '../../helpers/core-utils' + +const expect = chai.expect + +describe('Parse Bytes', function () { + it('Should pass when given valid value', async function () { + // just return it + expect(parseBytes(1024)).to.be.eq(1024) + expect(parseBytes(1048576)).to.be.eq(1048576) + expect(parseBytes('1024')).to.be.eq(1024) + expect(parseBytes('1048576')).to.be.eq(1048576) + + // sizes + expect(parseBytes('1B')).to.be.eq(1024) + expect(parseBytes('1MB')).to.be.eq(1048576) + expect(parseBytes('1GB')).to.be.eq(1073741824) + expect(parseBytes('1TB')).to.be.eq(1099511627776) + + expect(parseBytes('5GB')).to.be.eq(5368709120) + expect(parseBytes('5TB')).to.be.eq(5497558138880) + + expect(parseBytes('1024B')).to.be.eq(1048576) + expect(parseBytes('1024MB')).to.be.eq(1073741824) + expect(parseBytes('1024GB')).to.be.eq(1099511627776) + expect(parseBytes('1024TB')).to.be.eq(1125899906842624) + + // with whitespace + expect(parseBytes('1 GB')).to.be.eq(1073741824) + expect(parseBytes('1\tGB')).to.be.eq(1073741824) + + // sum value + expect(parseBytes('1TB 1024MB')).to.be.eq(1100585369600) + expect(parseBytes('4GB 1024MB')).to.be.eq(5368709120) + expect(parseBytes('4TB 1024GB')).to.be.eq(5497558138880) + expect(parseBytes('4TB 1024GB 0MB')).to.be.eq(5497558138880) + expect(parseBytes('1024TB 1024GB 1024MB')).to.be.eq(1127000492212224) + }) + + it('Should be invalid when given invalid value', async function () { + expect(parseBytes('6GB 1GB')).to.be.eq(6) + }) +}) diff --git a/server/tests/helpers/index.ts b/server/tests/helpers/index.ts new file mode 100644 index 000000000..40c7dc70e --- /dev/null +++ b/server/tests/helpers/index.ts @@ -0,0 +1 @@ +import './core-utils' -- cgit v1.2.3 From 64cc5e8575fda47b281ae20abf0020e27fc8ce7c Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 5 Oct 2018 15:17:34 +0200 Subject: add webtorrent opt-out settings - add a key in localstorage to remember the opt-out - add a user setting --- .../my-account-video-settings.component.html | 12 ++++++++++ .../my-account-video-settings.component.ts | 4 ++++ client/src/app/core/auth/auth-user.model.ts | 5 +++++ client/src/app/shared/users/user.model.ts | 4 ++++ .../assets/player/peertube-player-local-storage.ts | 10 +++++++++ .../src/assets/player/peertube-videojs-plugin.ts | 6 ++++- server/controllers/api/users/me.ts | 1 + server/helpers/custom-validators/users.ts | 8 ++++++- server/initializers/constants.ts | 10 ++++++++- .../migrations/0280-webtorrent-policy-user.ts | 26 ++++++++++++++++++++++ server/models/account/user.ts | 12 ++++++++-- shared/models/users/user-update-me.model.ts | 4 +++- shared/models/users/user-webtorrent-policy.type.ts | 1 + 13 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 server/initializers/migrations/0280-webtorrent-policy-user.ts create mode 100644 shared/models/users/user-webtorrent-policy.type.ts diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html index 96629940f..adbb97f00 100644 --- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html +++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html @@ -15,6 +15,18 @@
+
+ + +
+ +
+
+ { this.form.patchValue({ nsfwPolicy: this.user.nsfwPolicy, + webTorrentPolicy: this.user.webTorrentPolicy, autoPlayVideo: this.user.autoPlayVideo === true }) }) @@ -42,9 +44,11 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI updateDetails () { const nsfwPolicy = this.form.value['nsfwPolicy'] + const webTorrentPolicy = this.form.value['webTorrentPolicy'] const autoPlayVideo = this.form.value['autoPlayVideo'] const details: UserUpdateMe = { nsfwPolicy, + webTorrentPolicy, autoPlayVideo } diff --git a/client/src/app/core/auth/auth-user.model.ts b/client/src/app/core/auth/auth-user.model.ts index 74ed1c580..97acf7bfe 100644 --- a/client/src/app/core/auth/auth-user.model.ts +++ b/client/src/app/core/auth/auth-user.model.ts @@ -4,6 +4,7 @@ import { UserRight } from '../../../../../shared/models/users/user-right.enum' import { hasUserRight, UserRole } from '../../../../../shared/models/users/user-role' import { User, UserConstructorHash } from '../../shared/users/user.model' import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' +import { WebTorrentPolicyType } from '../../../../../shared/models/users/user-webtorrent-policy.type' export type TokenOptions = { accessToken: string @@ -72,6 +73,7 @@ export class AuthUser extends User { EMAIL: 'email', USERNAME: 'username', NSFW_POLICY: 'nsfw_policy', + WEBTORRENT_POLICY: 'peertube-videojs-' + 'webtorrent_policy', AUTO_PLAY_VIDEO: 'auto_play_video' } @@ -87,6 +89,7 @@ export class AuthUser extends User { email: peertubeLocalStorage.getItem(this.KEYS.EMAIL), role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole, nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType, + webTorrentPolicy: peertubeLocalStorage.getItem(this.KEYS.WEBTORRENT_POLICY) as WebTorrentPolicyType, autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true' }, Tokens.load() @@ -101,6 +104,7 @@ export class AuthUser extends User { peertubeLocalStorage.removeItem(this.KEYS.ID) peertubeLocalStorage.removeItem(this.KEYS.ROLE) peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY) + peertubeLocalStorage.removeItem(this.KEYS.WEBTORRENT_POLICY) peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO) peertubeLocalStorage.removeItem(this.KEYS.EMAIL) Tokens.flush() @@ -138,6 +142,7 @@ export class AuthUser extends User { peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email) peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString()) peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString()) + peertubeLocalStorage.setItem(AuthUser.KEYS.WEBTORRENT_POLICY, this.webTorrentPolicy.toString()) peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo)) this.tokens.save() } diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index 877f1bf3a..240c7aacf 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -9,6 +9,7 @@ import { import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' import { Account } from '@app/shared/account/account.model' import { Avatar } from '../../../../../shared/models/avatars/avatar.model' +import { WebTorrentPolicyType } from '../../../../../shared/models/users/user-webtorrent-policy.type' export type UserConstructorHash = { id: number, @@ -18,6 +19,7 @@ export type UserConstructorHash = { videoQuota?: number, videoQuotaDaily?: number, nsfwPolicy?: NSFWPolicyType, + webTorrentPolicy?: WebTorrentPolicyType, autoPlayVideo?: boolean, createdAt?: Date, account?: AccountServerModel, @@ -32,6 +34,7 @@ export class User implements UserServerModel { email: string role: UserRole nsfwPolicy: NSFWPolicyType + webTorrentPolicy: WebTorrentPolicyType autoPlayVideo: boolean videoQuota: number videoQuotaDaily: number @@ -52,6 +55,7 @@ export class User implements UserServerModel { this.videoQuota = hash.videoQuota this.videoQuotaDaily = hash.videoQuotaDaily this.nsfwPolicy = hash.nsfwPolicy + this.webTorrentPolicy = hash.webTorrentPolicy this.autoPlayVideo = hash.autoPlayVideo this.createdAt = hash.createdAt this.blocked = hash.blocked diff --git a/client/src/assets/player/peertube-player-local-storage.ts b/client/src/assets/player/peertube-player-local-storage.ts index dac54c5a4..c3d8b71bc 100644 --- a/client/src/assets/player/peertube-player-local-storage.ts +++ b/client/src/assets/player/peertube-player-local-storage.ts @@ -10,6 +10,15 @@ function getStoredVolume () { return undefined } +function getStoredWebTorrentPolicy () { + const value = getLocalStorage('webtorrent_policy') + if (value !== null && value !== undefined) { + if (value.toString() === 'disable') return true + } + + return undefined +} + function getStoredMute () { const value = getLocalStorage('mute') if (value !== null && value !== undefined) return value === 'true' @@ -56,6 +65,7 @@ function getAverageBandwidthInStore () { export { getStoredVolume, + getStoredWebTorrentPolicy, getStoredMute, getStoredTheater, saveVolumeInStore, diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 2330f476f..90ca8f9fa 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts @@ -8,6 +8,7 @@ import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution import * as CacheChunkStore from 'cache-chunk-store' import { PeertubeChunkStore } from './peertube-chunk-store' import { + getStoredWebTorrentPolicy, getAverageBandwidthInStore, getStoredMute, getStoredVolume, @@ -64,6 +65,7 @@ class PeerTubePlugin extends Plugin { private autoResolution = true private forbidAutoResolution = false private isAutoResolutionObservation = false + private playerRefusedP2P = false private videoViewInterval private torrentInfoInterval @@ -97,6 +99,7 @@ class PeerTubePlugin extends Plugin { if (volume !== undefined) this.player.volume(volume) const muted = getStoredMute() if (muted !== undefined) this.player.muted(muted) + this.playerRefusedP2P = getStoredWebTorrentPolicy() || false this.initializePlayer() this.runTorrentInfoScheduler() @@ -288,7 +291,8 @@ class PeerTubePlugin extends Plugin { renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => { this.renderer = renderer - if (err) return this.fallbackToHttp(done) + console.log('value this.playerRefusedP2P', this.playerRefusedP2P) + if (err || this.playerRefusedP2P) return this.fallbackToHttp(done) return this.tryToPlay(err => { if (err) return done(err) diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index 591ec6b25..f78294f17 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts @@ -327,6 +327,7 @@ async function updateMe (req: express.Request, res: express.Response, next: expr if (body.password !== undefined) user.password = body.password if (body.email !== undefined) user.email = body.email if (body.nsfwPolicy !== undefined) user.nsfwPolicy = body.nsfwPolicy + if (body.webTorrentPolicy !== undefined) user.webTorrentPolicy = body.webTorrentPolicy if (body.autoPlayVideo !== undefined) user.autoPlayVideo = body.autoPlayVideo await sequelizeTypescript.transaction(async t => { diff --git a/server/helpers/custom-validators/users.ts b/server/helpers/custom-validators/users.ts index 90fc74a48..2024d4a22 100644 --- a/server/helpers/custom-validators/users.ts +++ b/server/helpers/custom-validators/users.ts @@ -1,7 +1,7 @@ import 'express-validator' import * as validator from 'validator' import { UserRole } from '../../../shared' -import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers' +import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES, WEBTORRENT_POLICY_TYPES } from '../../initializers' import { exists, isFileValid, isBooleanValid } from './misc' import { values } from 'lodash' @@ -42,6 +42,11 @@ function isUserNSFWPolicyValid (value: any) { return exists(value) && nsfwPolicies.indexOf(value) !== -1 } +const webTorrentPolicies = values(WEBTORRENT_POLICY_TYPES) +function isUserWebTorrentPolicyValid (value: any) { + return exists(value) && webTorrentPolicies.indexOf(value) !== -1 +} + function isUserAutoPlayVideoValid (value: any) { return isBooleanValid(value) } @@ -78,6 +83,7 @@ export { isUserUsernameValid, isUserEmailVerifiedValid, isUserNSFWPolicyValid, + isUserWebTorrentPolicyValid, isUserAutoPlayVideoValid, isUserDisplayNameValid, isUserDescriptionValid, diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index e08fd75cd..f56763a16 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -7,6 +7,7 @@ import { VideoAbuseState, VideoImportState, VideoPrivacy, VideoTranscodingFPS } // Do not use barrels, remain constants as independent as possible import { buildPath, isTestInstance, parseDuration, parseBytes, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils' import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type' +import { WebTorrentPolicyType } from '../../shared/models/users/user-webtorrent-policy.type' import { invert } from 'lodash' import { CronRepeatOptions, EveryRepeatOptions } from 'bull' import * as bytes from 'bytes' @@ -16,7 +17,7 @@ let config: IConfig = require('config') // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 275 +const LAST_MIGRATION_VERSION = 280 // --------------------------------------------------------------------------- @@ -546,6 +547,12 @@ const NSFW_POLICY_TYPES: { [ id: string]: NSFWPolicyType } = { DISPLAY: 'display' } +const WEBTORRENT_POLICY_TYPES: { [ id: string]: WebTorrentPolicyType } = { + ENABLE: 'enable', + DISABLE: 'disable', + DISABLE_ON_MOBILE: 'disable_on_mobile' +} + // --------------------------------------------------------------------------- // Express static paths (router) @@ -698,6 +705,7 @@ export { FEEDS, JOB_TTL, NSFW_POLICY_TYPES, + WEBTORRENT_POLICY_TYPES, TORRENT_MIMETYPE_EXT, STATIC_MAX_AGE, STATIC_PATHS, diff --git a/server/initializers/migrations/0280-webtorrent-policy-user.ts b/server/initializers/migrations/0280-webtorrent-policy-user.ts new file mode 100644 index 000000000..d24f6709e --- /dev/null +++ b/server/initializers/migrations/0280-webtorrent-policy-user.ts @@ -0,0 +1,26 @@ +import * as Sequelize from 'sequelize' +import { values } from 'lodash' +import { WEBTORRENT_POLICY_TYPES } from '../constants' + +async function up (utils: { + transaction: Sequelize.Transaction + queryInterface: Sequelize.QueryInterface + sequelize: Sequelize.Sequelize +}): Promise { + { + const data = { + type: Sequelize.ENUM(values(WEBTORRENT_POLICY_TYPES)), + allowNull: false, + defaultValue: 'enable' + } + + await utils.queryInterface.addColumn('user', 'webTorrentPolicy', data) + } + +} + +function down (options) { + throw new Error('Not implemented.') +} + +export { up, down } diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 39654cfcf..5fe7d7e7d 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -31,7 +31,8 @@ import { isUserRoleValid, isUserUsernameValid, isUserVideoQuotaDailyValid, - isUserVideoQuotaValid + isUserVideoQuotaValid, + isUserWebTorrentPolicyValid } from '../../helpers/custom-validators/users' import { comparePassword, cryptPassword } from '../../helpers/peertube-crypto' import { OAuthTokenModel } from '../oauth/oauth-token' @@ -39,8 +40,9 @@ import { getSort, throwIfNotValid } from '../utils' import { VideoChannelModel } from '../video/video-channel' import { AccountModel } from './account' import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type' +import { WebTorrentPolicyType } from '../../../shared/models/users/user-webtorrent-policy.type' import { values } from 'lodash' -import { NSFW_POLICY_TYPES } from '../../initializers' +import { NSFW_POLICY_TYPES, WEBTORRENT_POLICY_TYPES } from '../../initializers' import { clearCacheByUserId } from '../../lib/oauth-model' enum ScopeNames { @@ -107,6 +109,11 @@ export class UserModel extends Model { @Column(DataType.ENUM(values(NSFW_POLICY_TYPES))) nsfwPolicy: NSFWPolicyType + @AllowNull(false) + @Is('UserWebTorrentPolicy', value => throwIfNotValid(value, isUserWebTorrentPolicyValid, 'WebTorrent policy')) + @Column(DataType.ENUM(values(WEBTORRENT_POLICY_TYPES))) + webTorrentPolicy: WebTorrentPolicyType + @AllowNull(false) @Default(true) @Is('UserAutoPlayVideo', value => throwIfNotValid(value, isUserAutoPlayVideoValid, 'auto play video boolean')) @@ -355,6 +362,7 @@ export class UserModel extends Model { email: this.email, emailVerified: this.emailVerified, nsfwPolicy: this.nsfwPolicy, + webTorrentPolicy: this.webTorrentPolicy, autoPlayVideo: this.autoPlayVideo, role: this.role, roleLabel: USER_ROLE_LABELS[ this.role ], diff --git a/shared/models/users/user-update-me.model.ts b/shared/models/users/user-update-me.model.ts index bbffe1487..81790377e 100644 --- a/shared/models/users/user-update-me.model.ts +++ b/shared/models/users/user-update-me.model.ts @@ -1,9 +1,11 @@ import { NSFWPolicyType } from '../videos/nsfw-policy.type' +import { WebTorrentPolicyType } from './user-webtorrent-policy.type' export interface UserUpdateMe { displayName?: string description?: string - nsfwPolicy?: NSFWPolicyType + nsfwPolicy?: NSFWPolicyType, + webTorrentPolicy?: WebTorrentPolicyType, autoPlayVideo?: boolean email?: string currentPassword?: string diff --git a/shared/models/users/user-webtorrent-policy.type.ts b/shared/models/users/user-webtorrent-policy.type.ts new file mode 100644 index 000000000..e293f761d --- /dev/null +++ b/shared/models/users/user-webtorrent-policy.type.ts @@ -0,0 +1 @@ +export type WebTorrentPolicyType = 'enable' | 'disable' | 'disable_on_mobile' -- cgit v1.2.3 From ed638e5325096ef580da20f370ac61c59cd48cf7 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 12 Oct 2018 18:12:39 +0200 Subject: move to boolean switch --- .../my-account-video-settings.component.html | 12 ++++++++---- .../my-account-video-settings.component.ts | 8 ++++---- client/src/app/core/auth/auth-user.model.ts | 9 ++++----- client/src/app/shared/users/user.model.ts | 7 +++---- .../src/assets/player/peertube-player-local-storage.ts | 12 +++++------- client/src/assets/player/peertube-videojs-plugin.ts | 5 ++--- server/controllers/api/users/me.ts | 2 +- server/helpers/custom-validators/users.ts | 9 ++++----- server/initializers/constants.ts | 8 -------- .../migrations/0280-webtorrent-policy-user.ts | 16 +++++++++------- server/models/account/user.ts | 13 ++++++------- shared/models/users/user-update-me.model.ts | 3 +-- shared/models/users/user-webtorrent-policy.type.ts | 1 - 13 files changed, 47 insertions(+), 58 deletions(-) delete mode 100644 shared/models/users/user-webtorrent-policy.type.ts diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html index adbb97f00..50f798c79 100644 --- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html +++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html @@ -16,17 +16,21 @@
- +
- - - +
+ + { this.form.patchValue({ nsfwPolicy: this.user.nsfwPolicy, - webTorrentPolicy: this.user.webTorrentPolicy, + webTorrentEnabled: this.user.webTorrentEnabled, autoPlayVideo: this.user.autoPlayVideo === true }) }) @@ -44,11 +44,11 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI updateDetails () { const nsfwPolicy = this.form.value['nsfwPolicy'] - const webTorrentPolicy = this.form.value['webTorrentPolicy'] + const webTorrentEnabled = this.form.value['webTorrentEnabled'] const autoPlayVideo = this.form.value['autoPlayVideo'] const details: UserUpdateMe = { nsfwPolicy, - webTorrentPolicy, + webTorrentEnabled, autoPlayVideo } diff --git a/client/src/app/core/auth/auth-user.model.ts b/client/src/app/core/auth/auth-user.model.ts index 97acf7bfe..acd13d9c5 100644 --- a/client/src/app/core/auth/auth-user.model.ts +++ b/client/src/app/core/auth/auth-user.model.ts @@ -4,7 +4,6 @@ import { UserRight } from '../../../../../shared/models/users/user-right.enum' import { hasUserRight, UserRole } from '../../../../../shared/models/users/user-role' import { User, UserConstructorHash } from '../../shared/users/user.model' import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' -import { WebTorrentPolicyType } from '../../../../../shared/models/users/user-webtorrent-policy.type' export type TokenOptions = { accessToken: string @@ -73,7 +72,7 @@ export class AuthUser extends User { EMAIL: 'email', USERNAME: 'username', NSFW_POLICY: 'nsfw_policy', - WEBTORRENT_POLICY: 'peertube-videojs-' + 'webtorrent_policy', + WEBTORRENT_ENABLED: 'peertube-videojs-' + 'webtorrent_enabled', AUTO_PLAY_VIDEO: 'auto_play_video' } @@ -89,7 +88,7 @@ export class AuthUser extends User { email: peertubeLocalStorage.getItem(this.KEYS.EMAIL), role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole, nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType, - webTorrentPolicy: peertubeLocalStorage.getItem(this.KEYS.WEBTORRENT_POLICY) as WebTorrentPolicyType, + webTorrentEnabled: peertubeLocalStorage.getItem(this.KEYS.WEBTORRENT_ENABLED) === 'true', autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true' }, Tokens.load() @@ -104,7 +103,7 @@ export class AuthUser extends User { peertubeLocalStorage.removeItem(this.KEYS.ID) peertubeLocalStorage.removeItem(this.KEYS.ROLE) peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY) - peertubeLocalStorage.removeItem(this.KEYS.WEBTORRENT_POLICY) + peertubeLocalStorage.removeItem(this.KEYS.WEBTORRENT_ENABLED) peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO) peertubeLocalStorage.removeItem(this.KEYS.EMAIL) Tokens.flush() @@ -142,7 +141,7 @@ export class AuthUser extends User { peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email) peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString()) peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString()) - peertubeLocalStorage.setItem(AuthUser.KEYS.WEBTORRENT_POLICY, this.webTorrentPolicy.toString()) + peertubeLocalStorage.setItem(AuthUser.KEYS.WEBTORRENT_ENABLED, JSON.stringify(this.webTorrentEnabled)) peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo)) this.tokens.save() } diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index 240c7aacf..7c840ffa7 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -9,7 +9,6 @@ import { import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' import { Account } from '@app/shared/account/account.model' import { Avatar } from '../../../../../shared/models/avatars/avatar.model' -import { WebTorrentPolicyType } from '../../../../../shared/models/users/user-webtorrent-policy.type' export type UserConstructorHash = { id: number, @@ -19,7 +18,7 @@ export type UserConstructorHash = { videoQuota?: number, videoQuotaDaily?: number, nsfwPolicy?: NSFWPolicyType, - webTorrentPolicy?: WebTorrentPolicyType, + webTorrentEnabled?: boolean, autoPlayVideo?: boolean, createdAt?: Date, account?: AccountServerModel, @@ -34,7 +33,7 @@ export class User implements UserServerModel { email: string role: UserRole nsfwPolicy: NSFWPolicyType - webTorrentPolicy: WebTorrentPolicyType + webTorrentEnabled: boolean autoPlayVideo: boolean videoQuota: number videoQuotaDaily: number @@ -55,7 +54,7 @@ export class User implements UserServerModel { this.videoQuota = hash.videoQuota this.videoQuotaDaily = hash.videoQuotaDaily this.nsfwPolicy = hash.nsfwPolicy - this.webTorrentPolicy = hash.webTorrentPolicy + this.webTorrentEnabled = hash.webTorrentEnabled this.autoPlayVideo = hash.autoPlayVideo this.createdAt = hash.createdAt this.blocked = hash.blocked diff --git a/client/src/assets/player/peertube-player-local-storage.ts b/client/src/assets/player/peertube-player-local-storage.ts index c3d8b71bc..3ac5fe58a 100644 --- a/client/src/assets/player/peertube-player-local-storage.ts +++ b/client/src/assets/player/peertube-player-local-storage.ts @@ -10,13 +10,11 @@ function getStoredVolume () { return undefined } -function getStoredWebTorrentPolicy () { - const value = getLocalStorage('webtorrent_policy') - if (value !== null && value !== undefined) { - if (value.toString() === 'disable') return true - } +function getStoredWebTorrentEnabled (): boolean { + const value = getLocalStorage('webtorrent_enabled') + if (value !== null && value !== undefined) return value === 'true' - return undefined + return false } function getStoredMute () { @@ -65,7 +63,7 @@ function getAverageBandwidthInStore () { export { getStoredVolume, - getStoredWebTorrentPolicy, + getStoredWebTorrentEnabled, getStoredMute, getStoredTheater, saveVolumeInStore, diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 90ca8f9fa..a53a2cc69 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts @@ -8,7 +8,7 @@ import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution import * as CacheChunkStore from 'cache-chunk-store' import { PeertubeChunkStore } from './peertube-chunk-store' import { - getStoredWebTorrentPolicy, + getStoredWebTorrentEnabled, getAverageBandwidthInStore, getStoredMute, getStoredVolume, @@ -82,6 +82,7 @@ class PeerTubePlugin extends Plugin { // Disable auto play on iOS this.autoplay = options.autoplay && this.isIOS() === false + this.playerRefusedP2P = !getStoredWebTorrentEnabled() this.startTime = timeToInt(options.startTime) this.videoFiles = options.videoFiles @@ -99,7 +100,6 @@ class PeerTubePlugin extends Plugin { if (volume !== undefined) this.player.volume(volume) const muted = getStoredMute() if (muted !== undefined) this.player.muted(muted) - this.playerRefusedP2P = getStoredWebTorrentPolicy() || false this.initializePlayer() this.runTorrentInfoScheduler() @@ -291,7 +291,6 @@ class PeerTubePlugin extends Plugin { renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => { this.renderer = renderer - console.log('value this.playerRefusedP2P', this.playerRefusedP2P) if (err || this.playerRefusedP2P) return this.fallbackToHttp(done) return this.tryToPlay(err => { diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index f78294f17..3c511dc70 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts @@ -327,7 +327,7 @@ async function updateMe (req: express.Request, res: express.Response, next: expr if (body.password !== undefined) user.password = body.password if (body.email !== undefined) user.email = body.email if (body.nsfwPolicy !== undefined) user.nsfwPolicy = body.nsfwPolicy - if (body.webTorrentPolicy !== undefined) user.webTorrentPolicy = body.webTorrentPolicy + if (body.webTorrentEnabled !== undefined) user.webTorrentEnabled = body.webTorrentEnabled if (body.autoPlayVideo !== undefined) user.autoPlayVideo = body.autoPlayVideo await sequelizeTypescript.transaction(async t => { diff --git a/server/helpers/custom-validators/users.ts b/server/helpers/custom-validators/users.ts index 2024d4a22..1cb5e5b0f 100644 --- a/server/helpers/custom-validators/users.ts +++ b/server/helpers/custom-validators/users.ts @@ -1,7 +1,7 @@ import 'express-validator' import * as validator from 'validator' import { UserRole } from '../../../shared' -import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES, WEBTORRENT_POLICY_TYPES } from '../../initializers' +import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers' import { exists, isFileValid, isBooleanValid } from './misc' import { values } from 'lodash' @@ -42,9 +42,8 @@ function isUserNSFWPolicyValid (value: any) { return exists(value) && nsfwPolicies.indexOf(value) !== -1 } -const webTorrentPolicies = values(WEBTORRENT_POLICY_TYPES) -function isUserWebTorrentPolicyValid (value: any) { - return exists(value) && webTorrentPolicies.indexOf(value) !== -1 +function isUserWebTorrentEnabledValid (value: any) { + return isBooleanValid(value) } function isUserAutoPlayVideoValid (value: any) { @@ -83,7 +82,7 @@ export { isUserUsernameValid, isUserEmailVerifiedValid, isUserNSFWPolicyValid, - isUserWebTorrentPolicyValid, + isUserWebTorrentEnabledValid, isUserAutoPlayVideoValid, isUserDisplayNameValid, isUserDescriptionValid, diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index f56763a16..c3e4fcede 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -7,7 +7,6 @@ import { VideoAbuseState, VideoImportState, VideoPrivacy, VideoTranscodingFPS } // Do not use barrels, remain constants as independent as possible import { buildPath, isTestInstance, parseDuration, parseBytes, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils' import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type' -import { WebTorrentPolicyType } from '../../shared/models/users/user-webtorrent-policy.type' import { invert } from 'lodash' import { CronRepeatOptions, EveryRepeatOptions } from 'bull' import * as bytes from 'bytes' @@ -547,12 +546,6 @@ const NSFW_POLICY_TYPES: { [ id: string]: NSFWPolicyType } = { DISPLAY: 'display' } -const WEBTORRENT_POLICY_TYPES: { [ id: string]: WebTorrentPolicyType } = { - ENABLE: 'enable', - DISABLE: 'disable', - DISABLE_ON_MOBILE: 'disable_on_mobile' -} - // --------------------------------------------------------------------------- // Express static paths (router) @@ -705,7 +698,6 @@ export { FEEDS, JOB_TTL, NSFW_POLICY_TYPES, - WEBTORRENT_POLICY_TYPES, TORRENT_MIMETYPE_EXT, STATIC_MAX_AGE, STATIC_PATHS, diff --git a/server/initializers/migrations/0280-webtorrent-policy-user.ts b/server/initializers/migrations/0280-webtorrent-policy-user.ts index d24f6709e..e6488356a 100644 --- a/server/initializers/migrations/0280-webtorrent-policy-user.ts +++ b/server/initializers/migrations/0280-webtorrent-policy-user.ts @@ -1,6 +1,4 @@ import * as Sequelize from 'sequelize' -import { values } from 'lodash' -import { WEBTORRENT_POLICY_TYPES } from '../constants' async function up (utils: { transaction: Sequelize.Transaction @@ -9,18 +7,22 @@ async function up (utils: { }): Promise { { const data = { - type: Sequelize.ENUM(values(WEBTORRENT_POLICY_TYPES)), + type: Sequelize.BOOLEAN, allowNull: false, - defaultValue: 'enable' + defaultValue: true } - await utils.queryInterface.addColumn('user', 'webTorrentPolicy', data) + await utils.queryInterface.addColumn('user', 'webTorrentEnabled', data) } } -function down (options) { - throw new Error('Not implemented.') +async function down (utils: { + transaction: Sequelize.Transaction + queryInterface: Sequelize.QueryInterface + sequelize: Sequelize.Sequelize +}): Promise { + await utils.queryInterface.removeColumn('user', 'webTorrentEnabled') } export { up, down } diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 5fe7d7e7d..4b4a562fa 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -32,7 +32,7 @@ import { isUserUsernameValid, isUserVideoQuotaDailyValid, isUserVideoQuotaValid, - isUserWebTorrentPolicyValid + isUserWebTorrentEnabledValid } from '../../helpers/custom-validators/users' import { comparePassword, cryptPassword } from '../../helpers/peertube-crypto' import { OAuthTokenModel } from '../oauth/oauth-token' @@ -40,9 +40,8 @@ import { getSort, throwIfNotValid } from '../utils' import { VideoChannelModel } from '../video/video-channel' import { AccountModel } from './account' import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type' -import { WebTorrentPolicyType } from '../../../shared/models/users/user-webtorrent-policy.type' import { values } from 'lodash' -import { NSFW_POLICY_TYPES, WEBTORRENT_POLICY_TYPES } from '../../initializers' +import { NSFW_POLICY_TYPES } from '../../initializers' import { clearCacheByUserId } from '../../lib/oauth-model' enum ScopeNames { @@ -110,9 +109,9 @@ export class UserModel extends Model { nsfwPolicy: NSFWPolicyType @AllowNull(false) - @Is('UserWebTorrentPolicy', value => throwIfNotValid(value, isUserWebTorrentPolicyValid, 'WebTorrent policy')) - @Column(DataType.ENUM(values(WEBTORRENT_POLICY_TYPES))) - webTorrentPolicy: WebTorrentPolicyType + @Is('UserWebTorrentEnabled', value => throwIfNotValid(value, isUserWebTorrentEnabledValid, 'WebTorrent enabled')) + @Column + webTorrentEnabled: boolean @AllowNull(false) @Default(true) @@ -362,7 +361,7 @@ export class UserModel extends Model { email: this.email, emailVerified: this.emailVerified, nsfwPolicy: this.nsfwPolicy, - webTorrentPolicy: this.webTorrentPolicy, + webTorrentEnabled: this.webTorrentEnabled, autoPlayVideo: this.autoPlayVideo, role: this.role, roleLabel: USER_ROLE_LABELS[ this.role ], diff --git a/shared/models/users/user-update-me.model.ts b/shared/models/users/user-update-me.model.ts index 81790377e..10edeee2e 100644 --- a/shared/models/users/user-update-me.model.ts +++ b/shared/models/users/user-update-me.model.ts @@ -1,11 +1,10 @@ import { NSFWPolicyType } from '../videos/nsfw-policy.type' -import { WebTorrentPolicyType } from './user-webtorrent-policy.type' export interface UserUpdateMe { displayName?: string description?: string nsfwPolicy?: NSFWPolicyType, - webTorrentPolicy?: WebTorrentPolicyType, + webTorrentEnabled?: boolean, autoPlayVideo?: boolean email?: string currentPassword?: string diff --git a/shared/models/users/user-webtorrent-policy.type.ts b/shared/models/users/user-webtorrent-policy.type.ts deleted file mode 100644 index e293f761d..000000000 --- a/shared/models/users/user-webtorrent-policy.type.ts +++ /dev/null @@ -1 +0,0 @@ -export type WebTorrentPolicyType = 'enable' | 'disable' | 'disable_on_mobile' -- cgit v1.2.3 From 6f2ae7a1aa1b4a8b5605fc4c57c0c1d1fbe2a16e Mon Sep 17 00:00:00 2001 From: Adnane Belmadiaf Date: Sun, 14 Oct 2018 19:43:17 +0200 Subject: rename News category into News & Politics (#1261) --- server/initializers/constants.ts | 2 +- server/tests/api/videos/single-server.ts | 2 +- server/tests/api/videos/video-imports.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index e08fd75cd..49ee13c10 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -421,7 +421,7 @@ const VIDEO_CATEGORIES = { 8: 'People', 9: 'Comedy', 10: 'Entertainment', - 11: 'News', + 11: 'News & Politics', 12: 'How To', 13: 'Education', 14: 'Activism', diff --git a/server/tests/api/videos/single-server.ts b/server/tests/api/videos/single-server.ts index e3d62b7a0..089c3df25 100644 --- a/server/tests/api/videos/single-server.ts +++ b/server/tests/api/videos/single-server.ts @@ -118,7 +118,7 @@ describe('Test a single server', function () { const categories = res.body expect(Object.keys(categories)).to.have.length.above(10) - expect(categories[11]).to.equal('News') + expect(categories[11]).to.equal('News & Politics') }) it('Should list video licences', async function () { diff --git a/server/tests/api/videos/video-imports.ts b/server/tests/api/videos/video-imports.ts index b7866d529..aaee79a4a 100644 --- a/server/tests/api/videos/video-imports.ts +++ b/server/tests/api/videos/video-imports.ts @@ -30,7 +30,7 @@ describe('Test video imports', function () { const videoHttp: VideoDetails = resHttp.body expect(videoHttp.name).to.equal('small video - youtube') - expect(videoHttp.category.label).to.equal('News') + expect(videoHttp.category.label).to.equal('News & Politics') expect(videoHttp.licence.label).to.equal('Attribution') expect(videoHttp.language.label).to.equal('Unknown') expect(videoHttp.nsfw).to.be.false -- cgit v1.2.3 From 1e59ca3bace6e9fbe53b1c9354cecb7604ce285b Mon Sep 17 00:00:00 2001 From: BRAINS YUM <43896676+McFlat@users.noreply.github.com> Date: Sun, 14 Oct 2018 12:48:08 -0500 Subject: add REPL in server/tools/repl.ts (#1248) --- server/tools/repl.ts | 79 +++++++++++++++++++++++++++++++ support/doc/tools.md | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 210 insertions(+) create mode 100644 server/tools/repl.ts diff --git a/server/tools/repl.ts b/server/tools/repl.ts new file mode 100644 index 000000000..6800ff8ab --- /dev/null +++ b/server/tools/repl.ts @@ -0,0 +1,79 @@ +import * as repl from 'repl' +import * as path from 'path' +import * as _ from 'lodash' +import * as uuidv1 from 'uuid/v1' +import * as uuidv3 from 'uuid/v3' +import * as uuidv4 from 'uuid/v4' +import * as uuidv5 from 'uuid/v5' +import * as Sequelize from 'sequelize' +import * as YoutubeDL from 'youtube-dl' + +import { initDatabaseModels, sequelizeTypescript } from '../initializers' +import * as cli from '../tools/cli' +import { logger } from '../helpers/logger' +import * as constants from '../initializers/constants' +import * as modelsUtils from '../models/utils' +import * as coreUtils from '../helpers/core-utils' +import * as ffmpegUtils from '../helpers/ffmpeg-utils' +import * as peertubeCryptoUtils from '../helpers/peertube-crypto' +import * as signupUtils from '../helpers/signup' +import * as utils from '../helpers/utils' +import * as YoutubeDLUtils from '../helpers/youtube-dl' + +let versionCommitHash + +const start = async () => { + await initDatabaseModels(true) + + await utils.getVersion().then((data) => { + versionCommitHash = data + }) + + const initContext = (replServer) => { + return (context) => { + const properties = { + context, repl: replServer, env: process.env, + lodash: _, path, + uuidv1, uuidv3, uuidv4, uuidv5, + cli, logger, constants, + Sequelize, sequelizeTypescript, modelsUtils, + models: sequelizeTypescript.models, transaction: sequelizeTypescript.transaction, + query: sequelizeTypescript.query, queryInterface: sequelizeTypescript.getQueryInterface(), + YoutubeDL, + coreUtils, ffmpegUtils, peertubeCryptoUtils, signupUtils, utils, YoutubeDLUtils + } + + for (let prop in properties) { + Object.defineProperty(context, prop, { + configurable: false, + enumerable: true, + value: properties[prop] + }) + } + } + } + + const replServer = repl.start({ + prompt: `PeerTube [${cli.version}] (${versionCommitHash})> ` + }) + + initContext(replServer)(replServer.context) + replServer.on('reset', initContext(replServer)) + + const resetCommand = { + help: 'Reset REPL', + action () { + this.write('.clear\n') + this.displayPrompt() + } + } + replServer.defineCommand('reset', resetCommand) + replServer.defineCommand('r', resetCommand) + +} + +start().then((data) => { + // do nothing +}).catch((err) => { + console.error(err) +}) diff --git a/support/doc/tools.md b/support/doc/tools.md index 8efb0c13d..0df8c9f6c 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -206,3 +206,134 @@ To fix this, you have to run: ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host ``` + +### REPL ([Read Eval Print Loop](https://nodejs.org/docs/latest-v8.x/api/repl.html)) + +If you want to interact with the application libraries and objects, there is a REPL for that. + +usage: `node ./dist/server/tools/repl.js` + +"The default evaluator will, by default, assign the result of the most recently evaluated expression to the special variable `_` (underscore). Explicitly setting `_` to a value will disable this behavior." + +- type `.help` to list commands available in the repl, notice it starts with a dot +- type `.exit` to exit, note that you still have to press CTRL-C to actually exit, or press CTRL-C (3 times) without typing `.exit` to exit +- type `context` to list all available objects and libraries in the context, note: `Promise` is also available but it's not listed in the context, in case you need promises for something +- type `env` to see the loaded environment variables +- type `path` to access path library +- type `lodash` to access lodash library +- type `uuidv1` to access uuid/v1 library +- type `uuidv3` to access uuid/v3 library +- type `uuidv4` to access uuid/v4 library +- type `uuidv5` to access uuid/v5 library +- type `YoutubeDL` to access youtube-dl library +- type `cli` to access the cli helpers object +- type `logger` to access the logger; if you log to it, it will write to stdout and to the peertube.log file +- type `constants` to access the constants loaded by the server +- type `coreUtils` to access the core-utils helpers object +- type `ffmpegUtils` to access the ffmpeg-utils helpers object +- type `peertubeCryptoUtils` to access the peertube-crypto helpers object +- type `signupUtils` to access the signup helpers object +- type `utils` to access the utils helpers object +- type `YoutubeDLUtils` to access the youtube-dl helpers object +- type `sequelizeTypescript` to access sequelizeTypescript +- type `modelsUtils` to access the models/utils +- type `models` to access the shortcut to sequelizeTypescript.models +- type `transaction` to access the shortcut to sequelizeTypescript.transaction +- type `query` to access the shortcut to sequelizeTypescript.query +- type `queryInterface` to access the shortcut to sequelizeTypescript.queryInterface + +#### .help + +``` +PeerTube [1.0.0] (b10eb595)> .help +.break Sometimes you get stuck, this gets you out +.clear Break, and also clear the local context +.editor Enter editor mode +.exit Exit the repl +.help Print this help message +.load Load JS from a file into the REPL session +.r Reset REPL +.reset Reset REPL +.save Save all evaluated commands in this REPL session to a file +PeerTube [1.0.0] (b10eb595)> +``` + +#### Lodash example + +``` +PeerTube [1.0.0] (b10eb595)> lodash.keys(context) +[ 'global', + 'console', + 'DTRACE_NET_SERVER_CONNECTION', + 'DTRACE_NET_STREAM_END', + 'DTRACE_HTTP_SERVER_REQUEST', + 'DTRACE_HTTP_SERVER_RESPONSE', + 'DTRACE_HTTP_CLIENT_REQUEST', + 'DTRACE_HTTP_CLIENT_RESPONSE', + 'process', + 'Buffer', + 'clearImmediate', + 'clearInterval', + 'clearTimeout', + 'setImmediate', + 'setInterval', + 'setTimeout', + 'XMLHttpRequest', + 'compact2string', + 'module', + 'require', + 'path', + 'repl', + 'context', + 'env', + 'lodash', + 'uuidv1', + 'uuidv3', + 'uuidv4', + 'uuidv5', + 'cli', + 'logger', + 'constants', + 'Sequelize', + 'sequelizeTypescript', + 'modelsUtils', + 'models', + 'transaction', + 'query', + 'queryInterface', + 'YoutubeDL', + 'coreUtils', + 'ffmpegUtils', + 'peertubeCryptoUtils', + 'signupUtils', + 'utils', + 'YoutubeDLUtils' ] +PeerTube [1.0.0] (b10eb595)> +``` + +#### YoutubeDL example +``` +YoutubeDL.getInfo('https://www.youtube.com/watch?v=I5ZN289jjDo', function(err, data) {console.log(err, data)}) +``` + +#### Models examples +``` +PeerTube [1.0.0] (b10eb595)> new models.ActorModel({id: 3}).getVideoChannel().then(function(data){console.log(data.dataValues.name)}) +Promise { + _bitField: 0, + _fulfillmentHandler0: undefined, + _rejectionHandler0: undefined, + _promise0: undefined, + _receiver0: undefined } +PeerTube [1.0.0] (b10eb595)> Main root channel +PeerTube [1.0.0] (b10eb595)> let out; new models.UserModel({id: 1}).getAccount().then(function (data) {out = data.dataValues.id}) +Promise { + _bitField: 0, + _fulfillmentHandler0: undefined, + _rejectionHandler0: undefined, + _promise0: undefined, + _receiver0: undefined } +PeerTube [1.0.0] (b10eb595)> out +2 +PeerTube [1.0.0] (b10eb595)> +``` -- cgit v1.2.3 From 12b119c05aea63ab225210479ebbe681303f26f3 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sun, 14 Oct 2018 21:08:52 +0200 Subject: (doc) update architecture, tools and readme --- ARCHITECTURE.md | 12 +++++++++--- README.md | 6 ++---- support/doc/tools.md | 45 +++++++++++++++++++++++++++++++++++++-------- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 160d6fc4f..f3254d2d6 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -2,10 +2,16 @@ ## Vocabulary - - **Fediverse:** several servers following each others. + - **Fediverse:** several servers following one another, several users + following each other. Designates federated communities in general. + - **Vidiverse:** same as Fediverse, but federating videos specifically. - **Instance:** a server which runs PeerTube in the fediverse. - **Origin instance:** the instance on which the video was uploaded and which is seeding (through the WebSeed protocol) the video. + - **Cache instance:** an instance that decided to make available a WebSeed + of its own for a video originating from another instance. It sends a `ptCache` + activity to notify the origin instance, which will then update its list of + WebSeeds for the video. - **Following:** the action of a PeerTube instance which will follow another instance (subscribe to its videos). @@ -22,8 +28,8 @@ * All the requests are retried several times if they fail. ### Instance - * An instance has a websocket tracker which is responsible for all the video - uploaded in it. + * An instance has a websocket tracker which is responsible for all videos + uploaded by its users. * An instance has an administrator that can follow other instances. * An instance can be configured to follow back automatically. * An instance can blacklist other instances (only used in "follow back" diff --git a/README.md b/README.md index b06b9c002..9a9bd4fb0 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,6 @@ Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent.

-

-We have run a crowdfunding campaign to pave the road to version 1.0 of PeerTube. Thanks to everyone who pitched in and shared the news around. You can now check out the corresponding milestone and help its development! -

-

Client @@ -212,6 +208,8 @@ Here are some simple schemes: :heart: Supports of our crowdfunding ---------------------------------------------------------------- +We have run [a crowdfunding campaign](https://www.kisskissbankbank.com/en/projects/peertube-a-free-and-federated-video-platform) to pave the road to the version 1.0.0 of PeerTube. Thanks to everyone who pitched in and shared the news around! + Quonfucius, IP Solution, \_Laure\_, @lex666, 0x010C, 3dsman, 3rw4n-G3D, aallrd, Abel-Berger, Adam-Odell, adechambost, adim, adngdb, Adrien Thurotte, Adrien-BARAN, Adrien-Hamraoui, Adrien-Horcholle, Adrien-Luxey, Adrien-Polar, Adrien-Touminet, Agathe Begault, Agence-Différente, Ahmed-Al-Ahmed, aiprole, akpoptro, Al-Nimr, Alain-Delgrange, Alain-Fyon, Alain-Girard, Alain-MICHEL, Aleksandar-Aleksandrov, Alex-Chancellé, Alex-Dufournet, Alex-Gleason, Alexander-Murray-Watters, Alexandre-Alapetite, Alexandre-Badez, Alexandre-Giuliani, Alexandre-Mercier, Alexandre-Roux-2, Alexandre-SIMON, Alexandre29, Alexia-Monsavoir, Alexis-Frn, Alexis-Gros, Alexis-Kauffmann, alfajet, Alias, alinemont, Aliocha-Lang, Alllightlong, aloisdg, Amanda Hinault, André-Rabe, Anne-PROTAS, antoine, Antoine Derouin, Antoine-Beauvillain, Antoine-Deléron, antomoro, Antón López, Antonin-DENIS, Antonin-Segault, aokami, Apichat-Apichat, Ar-To, ARIAS-Frédéric-2, ariasuni, Aris-Papathéodorou, Arnaud -Vigoureux , Arnaud-Mounier, Arnaud-Risler, Arnaud-Vigouroux, Arnulf, Arthur-Bellier, arthur-bello, Arthur-Charron, Arthur-De Kimpe, Arthur.Ball, Arthur.Frin, Arvi-LEFEVRE, athanael.fr, auber38, Auguste Psqr, Aurélien-Tamisier, Avel-Musicavel, axel-guegant, Axel-Plat, Aymeric-Dlv, Ayst, Azenilion, Bandino, baptiste-lemoine, Baptiste-Rochez, baruica, Bastien-Dangin, batlab, bcourtine, Bea-Schaack-2, beaufils, beaumme, Belmont1, Ben-Geeraerts, Ben-Meijering, Benjamin-Baratta, Benjamin-Roussel, Benoît Joffre, Benoîtdd, Bernard-Legrand, Bernard-Vauquelin, Bernhard-Hayden, bertrand.arlabosse, bigsicret, bjg, bnjbvr, bob\_isat, bobstechsite, Bolton-Allan, Boov', Boris-ARGAUD, Brice.Francois, broz42, Bruno Lefèvre, Bruno-Douville, Bruno-Fortabat, Bruno-Gadaleta, Bruno-VASTA, Bumblebee, Butchcassidy, Cadiou-Christophe, calendros, Candy-Ming, cappitaine, Carmen-Drocourt, carrigns, case, Cathy-Barbet, CBach, ccazin, Cecile-Obernesser, Cecilia-:), Cédric-Bleschet, Cédric.Bayle, Cestdoncvrai, cgay, champ contrechamp, chapa, charlerlin, charles-jacquin, Charlie-Duclut, charlotte-cgondre78, Chris-Doe, chris-louba, Christel-Berthelot, Christian-FERRARIS, christiannavelot, Christophe-Bastin, christophe-beziers la fosse, Christophe-Pieret, Christophe-Verhaege, christophec, Christopher-Bero, chtfn, chud, Claire-C, clairezed, Claude-POUGHEON, Clément-Hubert, Clément-Morelle, clydeb, Comamanel, Côme Chilliet, Confederac.io, Consulting-AZAPTEC, Corentin3892, CryoGen, cyp, Cypher-Goat, Cyril, Cyril\_M\_, Cyril-MONMOUTON, Cyril-Waechter, Damien-Gabard, Damien-Garaud, Dams3132, Daniel Kuebler, Daniel Waxweiler, Daniel-Bartsch, Daniel-PIPALA, Daniel-Struck, Daniel-Thul, Danny-Joerger, DansLeRuSH, DantSu, Dany-Marcoux, Daouzli-Adel, Darfeld, Darth\_Judge, Dashcom, David-BADOIL, David-Benoist, David-Dormoy, David-Gil-2, David-Velasco, David-Wagner, David-writ, davlgd, davyg2, dbudo72300, de Folleville -Matthieu , DeBugs, Denis-Lecourtiller, Denis-Vannier, Desmu, Didier-Bove, Diego-Crespo, Dimitri-Stouney, dino, Dinosaure, Doc Skellington, Dominique-Brun, dr4Ke, DreamClassier, DRogueRonin, dussydelf, Dylan-Moonfire, Ealhad, Edouard-SCHWEISGUTH, Elanndelh--, ElodieEtJimmy, Éloi-Rivard, Elric-Noel, Elwan-Héry, Emilie-Wietzke, Emilien-Ghomi, eparth, Eric-Bouhana, Eric-Hendricks, Eric.Vales, Erwan-Moreau, Erzender, ESS\_Clem, Etienne-Baqué, Etienne-Botek, Etienne-Lmn, Ex-Serv, fabeveynes, Fabien BERINI ( Rehvaro ) , Fabien Freling, Fabien-Roualdes, Fabien.Abraini, Fabien.Bonneval, fabrice-simon, farlistener, Felix-ROBICHON, FelixDouet, FHE, Fiamoa-McBenson, flamwenco, Flopômpôm, FloraGC, Florent-Deschamps, Florent-Fayolle, Florent-Mallet, Florent-Vasseur, Florent.Duveau, Florestan Fournier, Florian Kohrt, Florian-Bellafont, Florian-Douay, Florian-LE GOFF, Florian-Siegenthaler, Florian.Freyss, fobrice, FOKUZA, Fol-De Dol, FP45, Francis.Moraud, François-Dambrine, François-Deguerry, Francois-Goer, François-Lecomte, François-Lemaire, François-Malterre, François-MORLET, François-Schoubben, François-Xavier-Davanne, François-Zajéga, francois.peyratout, Frathom, Fred-Fred-2, Frédéric GUÉLEN, Frédéric-Blumstein, Frédéric-Meurou, Frederic-Reynaud, Frédéric-Sagot, Frek, FrenchHope, freyja, FugazziPL, Funky-Whale, Gabriel-Devillers, Gabriel-Mirété, Galedas, GardoToF, Gaspard-Kemlin, GauthierPLM, Gauvain "GovanifY" Roussel-Tarbouriech, Gavy, gdquest, Geek Faëries, Geneviève-Perello, Geoffroy-MANAUD, Geojulien, Georges-Dutreix, Georges-Sempéré, Gerald-Vannier, Gérard-Brasquet, Gérard-Sensevy, Gerrit-Großkopf, GGBNM, Ghislain-Fabre, Gil-Felot, Gilles-Brossier, Gilles-Moisan, Gilles-SACLIER, Gilles-Trossevin, Gilou, GinGa, ginkgopr, glazzara, Glen-Lomax, Gof, Gonçalves-Daniel, goofy-goofy, grandlap, GRAP-Groupement Régional Alimentaire de Proximité, greg-chapuis, Grégoire-Delbeke, Grégory-Becq, Grégory-Goulaouic, Gregouw, Grizix, GrosCaillou, Grummfy, grumph, guiaug, Guillaume-Allart, Guillaume-Chambert, Guillaume-Chaslot, Guillaume-David, Guillaume-Duc, Guillaume-Gay, Guillaume-Lecoquierre, Guillaume007, guillaumefavre, Guiraud-Dominique, Guy-Torreilles, GwendalL, gwlolos, Hanna-E, Hanno-Wagner, Harald-Eilertsen, Harpocrate, Hebus82, Hellmut, Henri-ROS, hervelc, hguilbert, Hisham-Muhammad, Hoang-Mai-Lesaffre, Homerc, homosapienssapiens, hoper, Hoshin, Hugo-Lagouge, Hugo-SIMANCAS, Hugo-Simon, Hylm, IchbinRob, Ivan-Ogai, Ivan.D'halluin, Ivar-Troost, J-C-2, Jacques-Roos, James-Moore, James-Valleroy, Jan-Aagaard, Jan-Keromnes, Jancry, Janko-Mihelić, jano31coa, Jboot, jcgross, Jean CHARPENTIER, jean claude-skowron, Jean Dos, jean luc-PERROT, Jean-Baptiste-Maneyrol, Jean-charles-Surbayrole, Jean-claude-Jouanne, jean-dreyfus, jean-FISCHER, JEAN-FRANCOIS-BOUDEAU, Jean-Francois-Ducrot, Jean-François-PETITBON, Jean-François-Tomasi, Jean-Galland, Jean-louis-Bergamo, Jean-Luc-PIPO, Jean-Marie-Graïc, Jean-Martin Laval, Jean-Noel-Bruletout, Jean-Paul-GIBERT, Jean-Paul-Lescat, jean-philippe-bénétrix, Jean-Philippe-Eisenbarth, Jean-Philippe-Renaudet, Jean-Philippe-Rennard, Jean-Sébastien-Renaud, Jean-Yves Kiger, Jean-Yves-DUPARC, Jeanne-Corvellec, jeansebastien, Jelv, Jérémie -Wach, Jeremie-Lestel, Jérémy-Korwin, Jérôme-Avond, Jerome-Bu, Jerome-Denis, Jérôme-ISNARD, jerome-simonato, JeromeD, Jery, Jezza, Jim-McDoniel, jl-M-2, jlanca, jlcpuzzle, jn-m, jnthnctt, joakim.faiss, Joe-Riche, Joévin-SOULENQ, Johann-FONTAINE, John-Devor, John-Doe, Jojo-Boulix, Jonas-Aparicio, Jonathan-Dollé, Jonathan-Kohler, Jonathan-LAURENT, Jos-van den Oever, Joseph-Lawson, Jozef-Knaperek, jroger, ju, jubarbu, Julianoe-G, Julie-Bultez, Julien Loudet, Julien Maulny (alcalyn), Julien-AILHAUD, Julien-Aubin, Julien-Biaudet, Julien-Bréchet, Julien-Cochennec, Julien-Duroure, Julien-Huon, Julien-Lemaire, Julien-Weber, jyb, K-\_, KalambakA, Kanor, kari-kimber, Karim-Jouini, karl-bienfait, Kdecherf, Keplerpondorskell, kevin-Beranger, Kevin-Nguyen, King-Of Peons, Kioob, kloh, kokoklems, Konstantin-Kovar, Kriĉjo, Kyâne-PICHOU, L'elfe-Sylvain, La Gonz, Lara-Dufour, lareinedeselfes, Laurence-Giroud, laurent-fuentes, Laurent-HEINTZ, Laurent-PICQUENOT, ldubost, lebidibule, LeChi, LeDivinBueno, Legrave, Les Assortis, Leyokki-Tk, LibreEnFete-en Tregor, LilO. Moino, Liloumuloup, Linuxine-T, lionel-lachaud, Lionel-Schinckus, Loïc-L'Anton, Loïc.Guérin, Louis-Gatin, Louis-Marie-BAER, Louis-Rémi.Babé, Louis-Roche, Louisclement, Lu, ludovic-lainard, Ludovic-Pénet, Lukas-Steiblys, lusoheart, Mad Sugar, maguy-giorgi, mahen, maiido, Malphas, ManetteBE, Manon-Amalric, Manuel-Vazquez, ManuInzesky, Manumerique, Marc-BESSIERES, Marc-DUFOURNET, Marc-GASSER, Marc-Honnorat, marc-wilzius, marc.ribault.1, Marco-Heisig, Marie-PACHECO, Marien-Fressinaud, Marius-Lemonnier, Mark-O'Donovan, marliebo, marmat8951, mart1n, martensite, Mathdatech, Mathias-Bocquet, Mathieu-Amirault, Mathieu-B., Mathieu-Cornic, Mathieu-VIRAMAN, Matías-Pérez, Matilin-Torre, matt.faure, Mattéo-Delabre, Matthias-Devlamynck, Matthieu-Bollot, Matthieu-De Beule, Matthieu-DEVILLERS, Matthieu-Dupont de Dinechin, Matthieu-Gaudé, Matthieu-Sauboua-Beneluz, matthieublanco, MatthieuSchneider, Max-PENY, Maxime-de WYROW, Maxime-Desjardin, Maxime-Forest, maxime-haag, Maxime-Mangel, Maximilian Praeger, Mayeul-Cantan, Mayeul-Guiraud, mcg1712, metalvinze, Mewen, mheiber, Michael-Koppmann, Michael-Loew, Michael-Q. Bid, Michal-Herda, Michal-Noga, Michel-DUPONT, Michel-Le Lagadec, Michel-POUSSIER, Michel-Roux, Mickaël-Gauvin, Mickael-Liegard, MicMP3Man, Miguel-de la Cruz, Mike-Kasprzak, Mimon-Lapompe, Mister-Ocelot, mjhvc, Moutmout, MouTom, MP, mphdp, Mr-Tea, msellebulle, Mushussu, mylainos, nanouckd, Nasser-Debruyere, Nat-Tuck, Nathan.B, nayya, nazgulz666, Neal-Wilson, neeev, neodarz-neodarz, NepsKi, Nestorvep, NHenry, Nialix, NicoD, Nicolas-Auvray, nicolas-k, Nicolas-Pinault, Nicolas-Ruffel, NicolasCARPi, nicolaslegland, niconil, Niles, nitot, Nono1965, Norbert, Norde, Numcap, obergix, Obrow, Okki, Olivier-Calzi, Olivier-Ganneval, Olivier-Marouzé, Olivier-Mondoloni, olivier-pierret, Oncela-Petit Chat, Óskar-Sturluson, p3n15634n7, Paindesegle, Pas De-Panique, Pascal-BLEUSE, Pascal-Larramendy, Patrice-Jabeneau, patrice-maertens, patrick-bappel, PATRICK-GRANDIN, Patrick-MERCIER, Patrickl , Paul-Härle, Paul-Tardy, pbramy, Pedro-CADETE, Perrine-de Coëtlogon, Peter\_Fillgod, Petter-Joelson, Philippe-BATTMANN, Philippe-Cabaud, Philippe-Debar, philippe-giffard, Philippe-Lallemant, Philippe-Le Van, philippe-lhardy, Philippe-Thébault, Philippe-VINCENT-2, PhilOGM, Pierre 'catwell' Chapuis, Pierre Gros, Pierre-Antoine-Champin, Pierre-Bresson-2, Pierre-d'Alençon, Pierre-Equoy, Pierre-Girardeau, Pierre-Houmeau, Pierre-Marijon, Pierre-petch, Pierrick-Couturier, Pilou-CaraGk, Piotr-Miszczak, Pla, Plastic Yogi, PME2050, pmiossec, Pofilo, Polioman, Polios63, Poutchiny, PRALLET-Claude, PtrckVllnv, Pulov Yuran, queertube, Quentin-Dugne, Quentin-PAGÈS, ra-mon, Radhwan-Ben Madhkour, Raphaël-Brocq, Raphaël-Grolimund, Raphaël-Piédallu, raphane, Raphip, Raven, Raymond-Lutz, Razael, Rebecca-Breu, Remi-Durand, Rémi-Herrmann, Rémi-Verschelde, Remigho, Remix-the commons, Remy-Grauby, Rémy-Pradier, Renaud-Vincent, rgggn, rigelk, rip, Rivinbeg, Robert-Riemann, Robin Biechy, Roger-FRATTE, roipoussiere, Rolindes-Arroyo, Romain Théry-Hermain, Romain-Bouyé, Romain-Ortiz, RomainVENNE, Romuald-EYRAUD, royhome, Rudy-aparicio, Rusty-Dwyer, rverchere, sajous.net, Salah-ZERGUI, Sam-R, Samh, Samuel Tardieu, Samuel-FAYET, Samuel-Verschelde, Sanpi, Sascha-Brendel, Schwartz, Se7h, Sebastiaan-Glazenborg, Sebastian-Hugentobler, Sébastien Adam, Septie, Ser Eole, Severin-Suveren, severine-roger, shlagevuk-shlagevuk, Siegfried-Ehret, Simon-Hemery, Simon-Larcher, Simon-Reiser, Simounet, Siri-Louie, sissssou, skarab, Skurious, skynebula, Sohga-Sohga, Solène-Rapenne, solinux, Sophie-Imbach , Sosthen, Spiderweak, Stanislas-ANDRE, Stanislas-Michalak, starmatt, Steef, Stefan-Petrovski, Stéphane-Girardon, Stéphanie-Baltus, Stev-3d, Stoori, SuckyStrike, Sufflope, Sulfurax, SundownDEV, Swann-Fournial, Syk, Syluban, Sylv1c, Sylvain Bellone, Sylvain P, Sylvain\_M, Sylvain-Cazaux, Sylvain-GLAIZE, sylvain.arrachart, Sylvestre Ledru, sylvie-boutet, Sylvie-TORRES, tael67, tang35, tangi\_b, Tarulien, Taunya-Debolt, Tazimut-Khaelyor, terry-maire, Thanaen, Thatoo, Théophile-Noiré, Thibault-Vlieghe, Thierry-Chancé, Thierry-Fenasse, Thomas-Aurel, Thomas-CALVEZ, thomas-constans, Thomas-Kuntz, thomassin-loucas, Thosbk, ticosc, Tim-Albers, Tinapa -Itastri, TkPx, TM, tnntwister, TomR, Tomus, Tonio-Bilos, tony-carnide, Toover, toto-leroidelasaucisse, ToumToum, TP., trigrou, Tristan-Porteries, Tryph, Tursiops, tzilliox, U-&\_\`HbAAe4onnpN9!e+/#42\*5>k^E, Ulrich-Norbisrath, Un Sur Quatre, Valerio-Paladino, Valerio-Pilo, Valeryan\_24, Valou69, Vegattitude, Velome, Vergogne, Vero-Pajot, vianneyb, Victo-Sab, Victor -Hery, Victorien-Labalette, Vincent-Corrèze, Vincent-Fromentin, Vincent-Lamy, Vincent-Lasseur, VINCENT-PEYRET, vmorel, Walter-van Holst, Watsdesign, Wesley-Moore, williampolletdev, win100, wyk, Xaloc-Xaloc, Xavier ALT, Xavier-Chantry, Xavier-Godard, XoD, Yaaann, Yann-Delaunoy, Yann-Nave, yannick-grenzinger, yanselmetti, Ykatsot, Yohann-Bacha, yopox, Youen-Toupin, Yves-Caniou, Yves-Gerech, zar-rok, ZeBlackPearl, ZeGreg diff --git a/support/doc/tools.md b/support/doc/tools.md index 0df8c9f6c..7f93c94f2 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -1,3 +1,30 @@ + + +**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* + +- [CLI tools guide](#cli-tools-guide) + - [CLI wrapper](#cli-wrapper) + - [Remote Tools](#remote-tools) + - [Dependencies](#dependencies) + - [Installation](#installation) + - [peertube-import-videos.js](#peertube-import-videosjs) + - [peertube-upload.js](#peertube-uploadjs) + - [peertube-watch.js](#peertube-watchjs) + - [Server tools](#server-tools) + - [parse-log](#parse-log) + - [create-transcoding-job.js](#create-transcoding-jobjs) + - [create-import-video-file-job.js](#create-import-video-file-jobjs) + - [prune-storage.js](#prune-storagejs) + - [optimize-old-videos.js](#optimize-old-videosjs) + - [update-host.js](#update-hostjs) + - [REPL (Read Eval Print Loop)](#repl-read-eval-print-loop) + - [.help](#help) + - [Lodash example](#lodash-example) + - [YoutubeDL example](#youtubedl-example) + - [Models examples](#models-examples) + + + # CLI tools guide - [CLI wrapper](#cli-wrapper) - [Remote tools](#remote-tools) @@ -159,7 +186,7 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production ### create-transcoding-job.js -You can use this script to force transcoding of an existing video. +You can use this script to force transcoding of an existing video. PeerTube needs to be running. ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-transcoding-job -- -v [videoUUID] @@ -172,7 +199,7 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production ### create-import-video-file-job.js -You can use this script to import a video file to replace an already uploaded file or to add a new resolution to a video. +You can use this script to import a video file to replace an already uploaded file or to add a new resolution to a video. PeerTube needs to be running. ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run create-import-video-file-job -- -v [videoUUID] -i [videoFile] @@ -189,9 +216,10 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production ### optimize-old-videos.js -Before version v1.0.0-beta.16, Peertube did not specify a bitrate for the transcoding of uploaded videos. -This means that videos might be encoded into very large files that are too large for streaming. This script -re-transcodes these videos so that they can be watched properly, even on slow connections. +Before version v1.0.0-beta.16, Peertube did not specify a bitrate for the +transcoding of uploaded videos. This means that videos might be encoded into +very large files that are too large for streaming. This script re-transcodes +these videos so that they can be watched properly, even on slow connections. ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run optimize-old-videos @@ -200,8 +228,9 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production ### update-host.js -If you started PeerTube with a domain, and then changed it you will have invalid torrent files and invalid URLs in your database. -To fix this, you have to run: +If you started PeerTube with a domain, and then changed it you will have +invalid torrent files and invalid URLs in your database. To fix this, you have +to run: ``` $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run update-host @@ -209,7 +238,7 @@ $ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production ### REPL ([Read Eval Print Loop](https://nodejs.org/docs/latest-v8.x/api/repl.html)) -If you want to interact with the application libraries and objects, there is a REPL for that. +If you want to interact with the application libraries and objects even when PeerTube is not running, there is a REPL for that. usage: `node ./dist/server/tools/repl.js` -- cgit v1.2.3 From 5b3f86dd80d0cd1abc4fbe83cac4b00bfe6e96b6 Mon Sep 17 00:00:00 2001 From: BO41 Date: Mon, 15 Oct 2018 14:35:18 +0200 Subject: add alwaysStrict flag to client/tsconfig.json (#1280) --- client/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/tsconfig.json b/client/tsconfig.json index e041769dd..431ea7d91 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -8,6 +8,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "noImplicitAny": false, + "alwaysStrict": true, "target": "es5", "typeRoots": [ "node_modules/@types" -- cgit v1.2.3 From 98d9ada261907cb5f378a5c313b61fa9be07761d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 Oct 2018 14:52:11 +0200 Subject: Update CHANGELOG.md --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6716c7bc2..2a1363041 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,9 @@ ## v1.0.0 -Announcement scheduled for october 15 +### SECURITY + + * Add more headers to HTTP signature to avoid actor impersonation by replaying modified signed HTTP requests (thanks Thibaut Girka) ### Bug fixes -- cgit v1.2.3 From 6ca76832fde247a33cb2ee94208f492801d1791a Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 15 Oct 2018 18:53:06 +0200 Subject: improve description of the HTTP video import feature --- .../+admin/config/edit-custom-config/edit-custom-config.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html index e2cbd35ca..dfbbfbb29 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html @@ -112,7 +112,7 @@ Date: Mon, 15 Oct 2018 12:41:42 -0700 Subject: typo and grammar in README.md (#1281) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9a9bd4fb0..ab811d276 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ Be it as a user or an instance administrator, you can decide what your experienc In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our redundancy guide).

-Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisments that hurt visitors and incentivize alter creativity (more about that in our FAQ). +Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and incentivize alter creativity (more about that in our FAQ).

--- @@ -105,7 +105,7 @@ Want to see it in action? * [peertube.cpy.re](https://peertube.cpy.re) * [peertube2.cpy.re](https://peertube2.cpy.re) * [peertube3.cpy.re](https://peertube3.cpy.re) - * [Video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) explaining what is PeerTube + * [Video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) explaining what PeerTube is * [Video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) showing the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) :question: Motivation -- cgit v1.2.3 From dffd5d127f49eb63d2b2b3133aec75ec1d7e4dcb Mon Sep 17 00:00:00 2001 From: BO41 Date: Tue, 16 Oct 2018 01:04:50 +0200 Subject: update tslint config and fix member ordering (#1279) --- client/src/app/+admin/users/user-edit/user-edit.ts | 1 - .../+admin/users/user-list/user-list.component.ts | 28 +++++++++++----------- .../my-account-ownership.component.ts | 24 +++++++++---------- client/src/app/search/search.component.ts | 3 +-- client/src/app/shared/rest/rest-table.ts | 4 ++-- client/tslint.json | 16 +++++++++---- tslint.json | 2 +- 7 files changed, 42 insertions(+), 36 deletions(-) diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts index 07b087b5b..99ce5804b 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.ts +++ b/client/src/app/+admin/users/user-edit/user-edit.ts @@ -1,7 +1,6 @@ import { ServerService } from '../../../core' import { FormReactive } from '../../../shared' import { USER_ROLE_LABELS, VideoResolution } from '../../../../../../shared' -import { EditCustomConfigComponent } from '../../../+admin/config/edit-custom-config/' import { ConfigService } from '@app/+admin/config/shared/config.service' export abstract class UserEdit extends FormReactive { diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index 33384dc35..ab2250722 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -55,20 +55,6 @@ export class UserListComponent extends RestTable implements OnInit { ] } - protected loadData () { - this.selectedUsers = [] - - this.userService.getUsers(this.pagination, this.sort, this.search) - .subscribe( - resultList => { - this.users = resultList.data - this.totalRecords = resultList.total - }, - - err => this.notificationsService.error(this.i18n('Error'), err.message) - ) - } - openBanUserModal (users: User[]) { for (const user of users) { if (user.username === 'root') { @@ -131,4 +117,18 @@ export class UserListComponent extends RestTable implements OnInit { isInSelectionMode () { return this.selectedUsers.length !== 0 } + + protected loadData () { + this.selectedUsers = [] + + this.userService.getUsers(this.pagination, this.sort, this.search) + .subscribe( + resultList => { + this.users = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } } diff --git a/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts b/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts index 520278671..0b51ac13c 100644 --- a/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts +++ b/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts @@ -34,18 +34,6 @@ export class MyAccountOwnershipComponent extends RestTable implements OnInit { this.initialize() } - protected loadData () { - return this.videoOwnershipService.getOwnershipChanges(this.pagination, this.sort) - .subscribe( - resultList => { - this.videoChangeOwnerships = resultList.data - this.totalRecords = resultList.total - }, - - err => this.notificationsService.error(this.i18n('Error'), err.message) - ) - } - createByString (account: Account) { return Account.CREATE_BY_STRING(account.name, account.host) } @@ -65,4 +53,16 @@ export class MyAccountOwnershipComponent extends RestTable implements OnInit { err => this.notificationsService.error(this.i18n('Error'), err.message) ) } + + protected loadData () { + return this.videoOwnershipService.getOwnershipChanges(this.pagination, this.sort) + .subscribe( + resultList => { + this.videoChangeOwnerships = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } } diff --git a/client/src/app/search/search.component.ts b/client/src/app/search/search.component.ts index 911d56843..ecffcafc1 100644 --- a/client/src/app/search/search.component.ts +++ b/client/src/app/search/search.component.ts @@ -1,6 +1,6 @@ import { Component, OnDestroy, OnInit } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' -import { AuthService, RedirectService } from '@app/core' +import { AuthService } from '@app/core' import { NotificationsService } from 'angular2-notifications' import { forkJoin, Subscription } from 'rxjs' import { SearchService } from '@app/search/search.service' @@ -40,7 +40,6 @@ export class SearchComponent implements OnInit, OnDestroy { private route: ActivatedRoute, private router: Router, private metaService: MetaService, - private redirectService: RedirectService, private notificationsService: NotificationsService, private searchService: SearchService, private authService: AuthService diff --git a/client/src/app/shared/rest/rest-table.ts b/client/src/app/shared/rest/rest-table.ts index 26748f245..884588207 100644 --- a/client/src/app/shared/rest/rest-table.ts +++ b/client/src/app/shared/rest/rest-table.ts @@ -16,8 +16,6 @@ export abstract class RestTable { private searchStream: Subject private sortLocalStorageKey = 'rest-table-sort-' + this.constructor.name - protected abstract loadData (): void - initialize () { this.loadSort() this.initSearch() @@ -71,4 +69,6 @@ export abstract class RestTable { onSearch (search: string) { this.searchStream.next(search) } + + protected abstract loadData (): void } diff --git a/client/tslint.json b/client/tslint.json index e997088fd..fcc866ee3 100644 --- a/client/tslint.json +++ b/client/tslint.json @@ -7,10 +7,18 @@ "max-line-length": [true, 140], "no-floating-promises": false, "no-unused-variable": false, // Memory issues - "member-ordering": [true, - "public-before-private", - "static-before-instance", - "variables-before-functions" + "member-ordering": [true, { + "order": [ + "public-static-field", + "private-static-field", + "public-instance-field", + "private-instance-field", + "public-constructor", + "private-constructor", + "public-instance-method", + "protected-instance-method", + "private-instance-method" + ]} ], "angular-whitespace": [true, "check-interpolation", "check-semicolon"], diff --git a/tslint.json b/tslint.json index 92d0bd2b1..6828f4325 100644 --- a/tslint.json +++ b/tslint.json @@ -4,7 +4,7 @@ "await-promise": [true, "Bluebird"], "no-inferrable-types": true, "eofline": true, - "indent": ["spaces"], + "indent": [true, "spaces"], "ter-indent": [true, 2], "max-line-length": [true, 140], "no-unused-variable": false, // Memory issues -- cgit v1.2.3 From 7ad9b9846c44d198a736183fb186c2039f5236b5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 12 Oct 2018 15:26:04 +0200 Subject: Add ability for users to block an account/instance on server side --- server/controllers/api/accounts.ts | 5 +- server/controllers/api/search.ts | 2 +- server/controllers/api/users/index.ts | 2 + server/controllers/api/users/me.ts | 3 +- server/controllers/api/users/my-blocklist.ts | 125 +++++++++++ server/controllers/api/video-channel.ts | 2 +- server/controllers/api/videos/comment.ts | 12 +- server/controllers/api/videos/index.ts | 2 +- server/helpers/utils.ts | 5 +- server/initializers/constants.ts | 5 +- server/initializers/database.ts | 6 +- server/lib/blocklist.ts | 40 ++++ server/lib/video-comment.ts | 6 +- server/middlewares/validators/blocklist.ts | 94 ++++++++ server/middlewares/validators/index.ts | 2 + server/middlewares/validators/server.ts | 33 +++ server/middlewares/validators/sort.ts | 8 +- server/models/account/account-blocklist.ts | 111 ++++++++++ server/models/server/server-blocklist.ts | 121 ++++++++++ server/models/server/server.ts | 6 + server/models/utils.ts | 18 ++ server/models/video/video-comment.ts | 95 ++++++-- server/models/video/video.ts | 40 +++- server/tests/api/check-params/blocklist.ts | 222 +++++++++++++++++++ server/tests/api/check-params/index.ts | 1 + server/tests/api/users/account-blocklist.ts | 294 +++++++++++++++++++++++++ server/tests/utils/requests/requests.ts | 4 +- server/tests/utils/users/blocklist.ts | 103 +++++++++ server/tests/utils/videos/video-comments.ts | 14 +- shared/models/blocklist/account-block.model.ts | 7 + shared/models/blocklist/index.ts | 2 + shared/models/blocklist/server-block.model.ts | 9 + shared/models/index.ts | 1 + 33 files changed, 1344 insertions(+), 56 deletions(-) create mode 100644 server/controllers/api/users/my-blocklist.ts create mode 100644 server/lib/blocklist.ts create mode 100644 server/middlewares/validators/blocklist.ts create mode 100644 server/middlewares/validators/server.ts create mode 100644 server/models/account/account-blocklist.ts create mode 100644 server/models/server/server-blocklist.ts create mode 100644 server/tests/api/check-params/blocklist.ts create mode 100644 server/tests/api/users/account-blocklist.ts create mode 100644 server/tests/utils/users/blocklist.ts create mode 100644 shared/models/blocklist/account-block.model.ts create mode 100644 shared/models/blocklist/index.ts create mode 100644 shared/models/blocklist/server-block.model.ts diff --git a/server/controllers/api/accounts.ts b/server/controllers/api/accounts.ts index 8e3f60010..86ef2aed1 100644 --- a/server/controllers/api/accounts.ts +++ b/server/controllers/api/accounts.ts @@ -1,7 +1,8 @@ import * as express from 'express' import { getFormattedObjects } from '../../helpers/utils' import { - asyncMiddleware, commonVideosFiltersValidator, + asyncMiddleware, + commonVideosFiltersValidator, listVideoAccountChannelsValidator, optionalAuthenticate, paginationValidator, @@ -90,7 +91,7 @@ async function listAccountVideos (req: express.Request, res: express.Response, n nsfw: buildNSFWFilter(res, req.query.nsfw), withFiles: false, accountId: account.id, - userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined + user: res.locals.oauth ? res.locals.oauth.token.User : undefined }) return res.json(getFormattedObjects(resultList.data, resultList.total)) diff --git a/server/controllers/api/search.ts b/server/controllers/api/search.ts index a8a6cfb08..534305ba6 100644 --- a/server/controllers/api/search.ts +++ b/server/controllers/api/search.ts @@ -119,7 +119,7 @@ async function searchVideosDB (query: VideosSearchQuery, res: express.Response) includeLocalVideos: true, nsfw: buildNSFWFilter(res, query.nsfw), filter: query.filter, - userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined + user: res.locals.oauth ? res.locals.oauth.token.User : undefined }) const resultList = await VideoModel.searchAndPopulateAccountAndServer(options) diff --git a/server/controllers/api/users/index.ts b/server/controllers/api/users/index.ts index 4f8137c03..9fcb8077f 100644 --- a/server/controllers/api/users/index.ts +++ b/server/controllers/api/users/index.ts @@ -37,6 +37,7 @@ import { UserModel } from '../../../models/account/user' import { auditLoggerFactory, getAuditIdFromRes, UserAuditView } from '../../../helpers/audit-logger' import { meRouter } from './me' import { deleteUserToken } from '../../../lib/oauth-model' +import { myBlocklistRouter } from './my-blocklist' const auditLogger = auditLoggerFactory('users') @@ -53,6 +54,7 @@ const askSendEmailLimiter = new RateLimit({ }) const usersRouter = express.Router() +usersRouter.use('/', myBlocklistRouter) usersRouter.use('/', meRouter) usersRouter.get('/autocomplete', diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index 591ec6b25..ebe668110 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts @@ -238,7 +238,8 @@ async function getUserSubscriptionVideos (req: express.Request, res: express.Res nsfw: buildNSFWFilter(res, req.query.nsfw), filter: req.query.filter as VideoFilter, withFiles: false, - actorId: user.Account.Actor.id + actorId: user.Account.Actor.id, + user }) return res.json(getFormattedObjects(resultList.data, resultList.total)) diff --git a/server/controllers/api/users/my-blocklist.ts b/server/controllers/api/users/my-blocklist.ts new file mode 100644 index 000000000..e955ffde9 --- /dev/null +++ b/server/controllers/api/users/my-blocklist.ts @@ -0,0 +1,125 @@ +import * as express from 'express' +import 'multer' +import { getFormattedObjects } from '../../../helpers/utils' +import { + asyncMiddleware, + asyncRetryTransactionMiddleware, + authenticate, + paginationValidator, + serverGetValidator, + setDefaultPagination, + setDefaultSort, + unblockAccountByAccountValidator +} from '../../../middlewares' +import { + accountsBlocklistSortValidator, + blockAccountByAccountValidator, + serversBlocklistSortValidator, + unblockServerByAccountValidator +} from '../../../middlewares/validators' +import { UserModel } from '../../../models/account/user' +import { AccountModel } from '../../../models/account/account' +import { AccountBlocklistModel } from '../../../models/account/account-blocklist' +import { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist, removeServerFromBlocklist } from '../../../lib/blocklist' +import { ServerBlocklistModel } from '../../../models/server/server-blocklist' +import { ServerModel } from '../../../models/server/server' + +const myBlocklistRouter = express.Router() + +myBlocklistRouter.get('/me/blocklist/accounts', + authenticate, + paginationValidator, + accountsBlocklistSortValidator, + setDefaultSort, + setDefaultPagination, + asyncMiddleware(listBlockedAccounts) +) + +myBlocklistRouter.post('/me/blocklist/accounts', + authenticate, + asyncMiddleware(blockAccountByAccountValidator), + asyncRetryTransactionMiddleware(blockAccount) +) + +myBlocklistRouter.delete('/me/blocklist/accounts/:accountName', + authenticate, + asyncMiddleware(unblockAccountByAccountValidator), + asyncRetryTransactionMiddleware(unblockAccount) +) + +myBlocklistRouter.get('/me/blocklist/servers', + authenticate, + paginationValidator, + serversBlocklistSortValidator, + setDefaultSort, + setDefaultPagination, + asyncMiddleware(listBlockedServers) +) + +myBlocklistRouter.post('/me/blocklist/servers', + authenticate, + asyncMiddleware(serverGetValidator), + asyncRetryTransactionMiddleware(blockServer) +) + +myBlocklistRouter.delete('/me/blocklist/servers/:host', + authenticate, + asyncMiddleware(unblockServerByAccountValidator), + asyncRetryTransactionMiddleware(unblockServer) +) + +export { + myBlocklistRouter +} + +// --------------------------------------------------------------------------- + +async function listBlockedAccounts (req: express.Request, res: express.Response) { + const user: UserModel = res.locals.oauth.token.User + + const resultList = await AccountBlocklistModel.listForApi(user.Account.id, req.query.start, req.query.count, req.query.sort) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) +} + +async function blockAccount (req: express.Request, res: express.Response) { + const user: UserModel = res.locals.oauth.token.User + const accountToBlock: AccountModel = res.locals.account + + await addAccountInBlocklist(user.Account.id, accountToBlock.id) + + return res.status(204).end() +} + +async function unblockAccount (req: express.Request, res: express.Response) { + const accountBlock: AccountBlocklistModel = res.locals.accountBlock + + await removeAccountFromBlocklist(accountBlock) + + return res.status(204).end() +} + +async function listBlockedServers (req: express.Request, res: express.Response) { + const user: UserModel = res.locals.oauth.token.User + + const resultList = await ServerBlocklistModel.listForApi(user.Account.id, req.query.start, req.query.count, req.query.sort) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) +} + +async function blockServer (req: express.Request, res: express.Response) { + const user: UserModel = res.locals.oauth.token.User + const serverToBlock: ServerModel = res.locals.server + + await addServerInBlocklist(user.Account.id, serverToBlock.id) + + return res.status(204).end() +} + +async function unblockServer (req: express.Request, res: express.Response) { + const serverBlock: ServerBlocklistModel = res.locals.serverBlock + + await removeServerFromBlocklist(serverBlock) + + return res.status(204).end() +} diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index c84d1be58..9bf3c5fd8 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts @@ -219,7 +219,7 @@ async function listVideoChannelVideos (req: express.Request, res: express.Respon nsfw: buildNSFWFilter(res, req.query.nsfw), withFiles: false, videoChannelId: videoChannelInstance.id, - userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined + user: res.locals.oauth ? res.locals.oauth.token.User : undefined }) return res.json(getFormattedObjects(resultList.data, resultList.total)) diff --git a/server/controllers/api/videos/comment.ts b/server/controllers/api/videos/comment.ts index 4f2b4faee..3875c8f79 100644 --- a/server/controllers/api/videos/comment.ts +++ b/server/controllers/api/videos/comment.ts @@ -8,7 +8,7 @@ import { buildFormattedCommentTree, createVideoComment } from '../../../lib/vide import { asyncMiddleware, asyncRetryTransactionMiddleware, - authenticate, + authenticate, optionalAuthenticate, paginationValidator, setDefaultPagination, setDefaultSort @@ -36,10 +36,12 @@ videoCommentRouter.get('/:videoId/comment-threads', setDefaultSort, setDefaultPagination, asyncMiddleware(listVideoCommentThreadsValidator), + optionalAuthenticate, asyncMiddleware(listVideoThreads) ) videoCommentRouter.get('/:videoId/comment-threads/:threadId', asyncMiddleware(listVideoThreadCommentsValidator), + optionalAuthenticate, asyncMiddleware(listVideoThreadComments) ) @@ -69,10 +71,12 @@ export { async function listVideoThreads (req: express.Request, res: express.Response, next: express.NextFunction) { const video = res.locals.video as VideoModel + const user: UserModel = res.locals.oauth ? res.locals.oauth.token.User : undefined + let resultList: ResultList if (video.commentsEnabled === true) { - resultList = await VideoCommentModel.listThreadsForApi(video.id, req.query.start, req.query.count, req.query.sort) + resultList = await VideoCommentModel.listThreadsForApi(video.id, req.query.start, req.query.count, req.query.sort, user) } else { resultList = { total: 0, @@ -85,10 +89,12 @@ async function listVideoThreads (req: express.Request, res: express.Response, ne async function listVideoThreadComments (req: express.Request, res: express.Response, next: express.NextFunction) { const video = res.locals.video as VideoModel + const user: UserModel = res.locals.oauth ? res.locals.oauth.token.User : undefined + let resultList: ResultList if (video.commentsEnabled === true) { - resultList = await VideoCommentModel.listThreadCommentsForApi(video.id, res.locals.videoCommentThread.id) + resultList = await VideoCommentModel.listThreadCommentsForApi(video.id, res.locals.videoCommentThread.id, user) } else { resultList = { total: 0, diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 6a73e13d0..664154406 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -437,7 +437,7 @@ async function listVideos (req: express.Request, res: express.Response, next: ex nsfw: buildNSFWFilter(res, req.query.nsfw), filter: req.query.filter as VideoFilter, withFiles: false, - userId: res.locals.oauth ? res.locals.oauth.token.User.id : undefined + user: res.locals.oauth ? res.locals.oauth.token.User : undefined }) return res.json(getFormattedObjects(resultList.data, resultList.total)) diff --git a/server/helpers/utils.ts b/server/helpers/utils.ts index 39afb4e7b..049c3f8bc 100644 --- a/server/helpers/utils.ts +++ b/server/helpers/utils.ts @@ -40,7 +40,10 @@ const getServerActor = memoizee(async function () { const application = await ApplicationModel.load() if (!application) throw Error('Could not load Application from database.') - return application.Account.Actor + const actor = application.Account.Actor + actor.Account = application.Account + + return actor }) function generateVideoTmpPath (target: string | ParseTorrent) { diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 49ee13c10..cf00da2c7 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -47,7 +47,10 @@ const SORTABLE_COLUMNS = { VIDEOS: [ 'name', 'duration', 'createdAt', 'publishedAt', 'views', 'likes', 'trending' ], VIDEOS_SEARCH: [ 'name', 'duration', 'createdAt', 'publishedAt', 'views', 'likes', 'match' ], - VIDEO_CHANNELS_SEARCH: [ 'match', 'displayName', 'createdAt' ] + VIDEO_CHANNELS_SEARCH: [ 'match', 'displayName', 'createdAt' ], + + ACCOUNTS_BLOCKLIST: [ 'createdAt' ], + SERVERS_BLOCKLIST: [ 'createdAt' ] } const OAUTH_LIFETIME = { diff --git a/server/initializers/database.ts b/server/initializers/database.ts index 482c03b31..dd5b9bf67 100644 --- a/server/initializers/database.ts +++ b/server/initializers/database.ts @@ -29,6 +29,8 @@ import { VideoViewModel } from '../models/video/video-views' import { VideoChangeOwnershipModel } from '../models/video/video-change-ownership' import { VideoRedundancyModel } from '../models/redundancy/video-redundancy' import { UserVideoHistoryModel } from '../models/account/user-video-history' +import { AccountBlocklistModel } from '../models/account/account-blocklist' +import { ServerBlocklistModel } from '../models/server/server-blocklist' require('pg').defaults.parseInt8 = true // Avoid BIGINT to be converted to string @@ -91,7 +93,9 @@ async function initDatabaseModels (silent: boolean) { VideoImportModel, VideoViewModel, VideoRedundancyModel, - UserVideoHistoryModel + UserVideoHistoryModel, + AccountBlocklistModel, + ServerBlocklistModel ]) // Check extensions exist in the database diff --git a/server/lib/blocklist.ts b/server/lib/blocklist.ts new file mode 100644 index 000000000..394c24537 --- /dev/null +++ b/server/lib/blocklist.ts @@ -0,0 +1,40 @@ +import { sequelizeTypescript } from '../initializers' +import { AccountBlocklistModel } from '../models/account/account-blocklist' +import { ServerBlocklistModel } from '../models/server/server-blocklist' + +function addAccountInBlocklist (byAccountId: number, targetAccountId: number) { + return sequelizeTypescript.transaction(async t => { + return AccountBlocklistModel.create({ + accountId: byAccountId, + targetAccountId: targetAccountId + }, { transaction: t }) + }) +} + +function addServerInBlocklist (byAccountId: number, targetServerId: number) { + return sequelizeTypescript.transaction(async t => { + return ServerBlocklistModel.create({ + accountId: byAccountId, + targetServerId + }, { transaction: t }) + }) +} + +function removeAccountFromBlocklist (accountBlock: AccountBlocklistModel) { + return sequelizeTypescript.transaction(async t => { + return accountBlock.destroy({ transaction: t }) + }) +} + +function removeServerFromBlocklist (serverBlock: ServerBlocklistModel) { + return sequelizeTypescript.transaction(async t => { + return serverBlock.destroy({ transaction: t }) + }) +} + +export { + addAccountInBlocklist, + addServerInBlocklist, + removeAccountFromBlocklist, + removeServerFromBlocklist +} diff --git a/server/lib/video-comment.ts b/server/lib/video-comment.ts index 70ba7c303..59bce7520 100644 --- a/server/lib/video-comment.ts +++ b/server/lib/video-comment.ts @@ -64,10 +64,8 @@ function buildFormattedCommentTree (resultList: ResultList): } const parentCommentThread = idx[childComment.inReplyToCommentId] - if (!parentCommentThread) { - const msg = `Cannot format video thread tree, parent ${childComment.inReplyToCommentId} not found for child ${childComment.id}` - throw new Error(msg) - } + // Maybe the parent comment was blocked by the admin/user + if (!parentCommentThread) continue parentCommentThread.children.push(childCommentThread) idx[childComment.id] = childCommentThread diff --git a/server/middlewares/validators/blocklist.ts b/server/middlewares/validators/blocklist.ts new file mode 100644 index 000000000..9dbd5e512 --- /dev/null +++ b/server/middlewares/validators/blocklist.ts @@ -0,0 +1,94 @@ +import { param, body } from 'express-validator/check' +import * as express from 'express' +import { logger } from '../../helpers/logger' +import { areValidationErrors } from './utils' +import { isAccountNameWithHostExist } from '../../helpers/custom-validators/accounts' +import { UserModel } from '../../models/account/user' +import { AccountBlocklistModel } from '../../models/account/account-blocklist' +import { isHostValid } from '../../helpers/custom-validators/servers' +import { ServerBlocklistModel } from '../../models/server/server-blocklist' + +const blockAccountByAccountValidator = [ + body('accountName').exists().withMessage('Should have an account name with host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking blockAccountByAccountValidator parameters', { parameters: req.body }) + + if (areValidationErrors(req, res)) return + if (!await isAccountNameWithHostExist(req.body.accountName, res)) return + + return next() + } +] + +const unblockAccountByAccountValidator = [ + param('accountName').exists().withMessage('Should have an account name with host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking unblockAccountByAccountValidator parameters', { parameters: req.params }) + + if (areValidationErrors(req, res)) return + if (!await isAccountNameWithHostExist(req.params.accountName, res)) return + + const user = res.locals.oauth.token.User as UserModel + const targetAccount = res.locals.account + if (!await isUnblockAccountExists(user.Account.id, targetAccount.id, res)) return + + return next() + } +] + +const unblockServerByAccountValidator = [ + param('host').custom(isHostValid).withMessage('Should have an account name with host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking unblockServerByAccountValidator parameters', { parameters: req.params }) + + if (areValidationErrors(req, res)) return + + const user = res.locals.oauth.token.User as UserModel + if (!await isUnblockServerExists(user.Account.id, req.params.host, res)) return + + return next() + } +] + +// --------------------------------------------------------------------------- + +export { + blockAccountByAccountValidator, + unblockAccountByAccountValidator, + unblockServerByAccountValidator +} + +// --------------------------------------------------------------------------- + +async function isUnblockAccountExists (accountId: number, targetAccountId: number, res: express.Response) { + const accountBlock = await AccountBlocklistModel.loadByAccountAndTarget(accountId, targetAccountId) + if (!accountBlock) { + res.status(404) + .send({ error: 'Account block entry not found.' }) + .end() + + return false + } + + res.locals.accountBlock = accountBlock + + return true +} + +async function isUnblockServerExists (accountId: number, host: string, res: express.Response) { + const serverBlock = await ServerBlocklistModel.loadByAccountAndHost(accountId, host) + if (!serverBlock) { + res.status(404) + .send({ error: 'Server block entry not found.' }) + .end() + + return false + } + + res.locals.serverBlock = serverBlock + + return true +} diff --git a/server/middlewares/validators/index.ts b/server/middlewares/validators/index.ts index 17226614c..46c7f0f3a 100644 --- a/server/middlewares/validators/index.ts +++ b/server/middlewares/validators/index.ts @@ -1,4 +1,5 @@ export * from './account' +export * from './blocklist' export * from './oembed' export * from './activitypub' export * from './pagination' @@ -10,3 +11,4 @@ export * from './user-subscriptions' export * from './videos' export * from './webfinger' export * from './search' +export * from './server' diff --git a/server/middlewares/validators/server.ts b/server/middlewares/validators/server.ts new file mode 100644 index 000000000..a491dfeb3 --- /dev/null +++ b/server/middlewares/validators/server.ts @@ -0,0 +1,33 @@ +import * as express from 'express' +import { logger } from '../../helpers/logger' +import { areValidationErrors } from './utils' +import { isHostValid } from '../../helpers/custom-validators/servers' +import { ServerModel } from '../../models/server/server' +import { body } from 'express-validator/check' + +const serverGetValidator = [ + body('host').custom(isHostValid).withMessage('Should have a valid host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking serverGetValidator parameters', { parameters: req.body }) + + if (areValidationErrors(req, res)) return + + const server = await ServerModel.loadByHost(req.body.host) + if (!server) { + return res.status(404) + .send({ error: 'Server host not found.' }) + .end() + } + + res.locals.server = server + + return next() + } +] + +// --------------------------------------------------------------------------- + +export { + serverGetValidator +} diff --git a/server/middlewares/validators/sort.ts b/server/middlewares/validators/sort.ts index 08dcc2680..4c0577d8f 100644 --- a/server/middlewares/validators/sort.ts +++ b/server/middlewares/validators/sort.ts @@ -16,6 +16,8 @@ const SORTABLE_VIDEO_CHANNELS_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.V const SORTABLE_FOLLOWERS_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.FOLLOWERS) const SORTABLE_FOLLOWING_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.FOLLOWING) const SORTABLE_USER_SUBSCRIPTIONS_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.USER_SUBSCRIPTIONS) +const SORTABLE_ACCOUNTS_BLOCKLIST_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.ACCOUNTS_BLOCKLIST) +const SORTABLE_SERVERS_BLOCKLIST_COLUMNS = createSortableColumns(SORTABLE_COLUMNS.SERVERS_BLOCKLIST) const usersSortValidator = checkSort(SORTABLE_USERS_COLUMNS) const accountsSortValidator = checkSort(SORTABLE_ACCOUNTS_COLUMNS) @@ -31,6 +33,8 @@ const videoChannelsSortValidator = checkSort(SORTABLE_VIDEO_CHANNELS_COLUMNS) const followersSortValidator = checkSort(SORTABLE_FOLLOWERS_COLUMNS) const followingSortValidator = checkSort(SORTABLE_FOLLOWING_COLUMNS) const userSubscriptionsSortValidator = checkSort(SORTABLE_USER_SUBSCRIPTIONS_COLUMNS) +const accountsBlocklistSortValidator = checkSort(SORTABLE_ACCOUNTS_BLOCKLIST_COLUMNS) +const serversBlocklistSortValidator = checkSort(SORTABLE_SERVERS_BLOCKLIST_COLUMNS) // --------------------------------------------------------------------------- @@ -48,5 +52,7 @@ export { jobsSortValidator, videoCommentThreadsSortValidator, userSubscriptionsSortValidator, - videoChannelsSearchSortValidator + videoChannelsSearchSortValidator, + accountsBlocklistSortValidator, + serversBlocklistSortValidator } diff --git a/server/models/account/account-blocklist.ts b/server/models/account/account-blocklist.ts new file mode 100644 index 000000000..bacd122e8 --- /dev/null +++ b/server/models/account/account-blocklist.ts @@ -0,0 +1,111 @@ +import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript' +import { AccountModel } from './account' +import { getSort } from '../utils' +import { AccountBlock } from '../../../shared/models/blocklist' + +enum ScopeNames { + WITH_ACCOUNTS = 'WITH_ACCOUNTS' +} + +@Scopes({ + [ScopeNames.WITH_ACCOUNTS]: { + include: [ + { + model: () => AccountModel, + required: true, + as: 'ByAccount' + }, + { + model: () => AccountModel, + required: true, + as: 'AccountBlocked' + } + ] + } +}) + +@Table({ + tableName: 'accountBlocklist', + indexes: [ + { + fields: [ 'accountId', 'targetAccountId' ], + unique: true + }, + { + fields: [ 'targetAccountId' ] + } + ] +}) +export class AccountBlocklistModel extends Model { + + @CreatedAt + createdAt: Date + + @UpdatedAt + updatedAt: Date + + @ForeignKey(() => AccountModel) + @Column + accountId: number + + @BelongsTo(() => AccountModel, { + foreignKey: { + name: 'accountId', + allowNull: false + }, + as: 'ByAccount', + onDelete: 'CASCADE' + }) + ByAccount: AccountModel + + @ForeignKey(() => AccountModel) + @Column + targetAccountId: number + + @BelongsTo(() => AccountModel, { + foreignKey: { + name: 'targetAccountId', + allowNull: false + }, + as: 'AccountBlocked', + onDelete: 'CASCADE' + }) + AccountBlocked: AccountModel + + static loadByAccountAndTarget (accountId: number, targetAccountId: number) { + const query = { + where: { + accountId, + targetAccountId + } + } + + return AccountBlocklistModel.findOne(query) + } + + static listForApi (accountId: number, start: number, count: number, sort: string) { + const query = { + offset: start, + limit: count, + order: getSort(sort), + where: { + accountId + } + } + + return AccountBlocklistModel + .scope([ ScopeNames.WITH_ACCOUNTS ]) + .findAndCountAll(query) + .then(({ rows, count }) => { + return { total: count, data: rows } + }) + } + + toFormattedJSON (): AccountBlock { + return { + byAccount: this.ByAccount.toFormattedJSON(), + accountBlocked: this.AccountBlocked.toFormattedJSON(), + createdAt: this.createdAt + } + } +} diff --git a/server/models/server/server-blocklist.ts b/server/models/server/server-blocklist.ts new file mode 100644 index 000000000..705ed2c6b --- /dev/null +++ b/server/models/server/server-blocklist.ts @@ -0,0 +1,121 @@ +import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript' +import { AccountModel } from '../account/account' +import { ServerModel } from './server' +import { ServerBlock } from '../../../shared/models/blocklist' +import { getSort } from '../utils' + +enum ScopeNames { + WITH_ACCOUNT = 'WITH_ACCOUNT', + WITH_SERVER = 'WITH_SERVER' +} + +@Scopes({ + [ScopeNames.WITH_ACCOUNT]: { + include: [ + { + model: () => AccountModel, + required: true + } + ] + }, + [ScopeNames.WITH_SERVER]: { + include: [ + { + model: () => ServerModel, + required: true + } + ] + } +}) + +@Table({ + tableName: 'serverBlocklist', + indexes: [ + { + fields: [ 'accountId', 'targetServerId' ], + unique: true + }, + { + fields: [ 'targetServerId' ] + } + ] +}) +export class ServerBlocklistModel extends Model { + + @CreatedAt + createdAt: Date + + @UpdatedAt + updatedAt: Date + + @ForeignKey(() => AccountModel) + @Column + accountId: number + + @BelongsTo(() => AccountModel, { + foreignKey: { + name: 'accountId', + allowNull: false + }, + onDelete: 'CASCADE' + }) + ByAccount: AccountModel + + @ForeignKey(() => ServerModel) + @Column + targetServerId: number + + @BelongsTo(() => ServerModel, { + foreignKey: { + name: 'targetServerId', + allowNull: false + }, + onDelete: 'CASCADE' + }) + ServerBlocked: ServerModel + + static loadByAccountAndHost (accountId: number, host: string) { + const query = { + where: { + accountId + }, + include: [ + { + model: ServerModel, + where: { + host + }, + required: true + } + ] + } + + return ServerBlocklistModel.findOne(query) + } + + static listForApi (accountId: number, start: number, count: number, sort: string) { + const query = { + offset: start, + limit: count, + order: getSort(sort), + where: { + accountId + } + } + + return ServerBlocklistModel + .scope([ ScopeNames.WITH_ACCOUNT, ScopeNames.WITH_SERVER ]) + .findAndCountAll(query) + .then(({ rows, count }) => { + return { total: count, data: rows } + }) + } + + toFormattedJSON (): ServerBlock { + return { + byAccount: this.ByAccount.toFormattedJSON(), + serverBlocked: this.ServerBlocked.toFormattedJSON(), + createdAt: this.createdAt + } + } +} diff --git a/server/models/server/server.ts b/server/models/server/server.ts index ca3b24d51..300d70938 100644 --- a/server/models/server/server.ts +++ b/server/models/server/server.ts @@ -49,4 +49,10 @@ export class ServerModel extends Model { return ServerModel.findOne(query) } + + toFormattedJSON () { + return { + host: this.host + } + } } diff --git a/server/models/utils.ts b/server/models/utils.ts index e0bf091ad..50c865e75 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts @@ -64,9 +64,27 @@ function createSimilarityAttribute (col: string, value: string) { ) } +function buildBlockedAccountSQL (serverAccountId: number, userAccountId?: number) { + const blockerIds = [ serverAccountId ] + if (userAccountId) blockerIds.push(userAccountId) + + const blockerIdsString = blockerIds.join(', ') + + const query = 'SELECT "targetAccountId" AS "id" FROM "accountBlocklist" WHERE "accountId" IN (' + blockerIdsString + ')' + + ' UNION ALL ' + + // 'SELECT "accountId" FROM "accountBlocklist" WHERE "targetAccountId" = user.account.id + // UNION ALL + 'SELECT "account"."id" AS "id" FROM account INNER JOIN "actor" ON account."actorId" = actor.id ' + + 'INNER JOIN "serverBlocklist" ON "actor"."serverId" = "serverBlocklist"."targetServerId" ' + + 'WHERE "serverBlocklist"."accountId" IN (' + blockerIdsString + ')' + + return query +} + // --------------------------------------------------------------------------- export { + buildBlockedAccountSQL, SortType, getSort, getVideoSort, diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts index f84c1880c..08c6b3ff0 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts @@ -1,6 +1,17 @@ import * as Sequelize from 'sequelize' import { - AllowNull, BeforeDestroy, BelongsTo, Column, CreatedAt, DataType, ForeignKey, IFindOptions, Is, Model, Scopes, Table, + AllowNull, + BeforeDestroy, + BelongsTo, + Column, + CreatedAt, + DataType, + ForeignKey, + IFindOptions, + Is, + Model, + Scopes, + Table, UpdatedAt } from 'sequelize-typescript' import { ActivityTagObject } from '../../../shared/models/activitypub/objects/common-objects' @@ -13,9 +24,11 @@ import { AccountModel } from '../account/account' import { ActorModel } from '../activitypub/actor' import { AvatarModel } from '../avatar/avatar' import { ServerModel } from '../server/server' -import { getSort, throwIfNotValid } from '../utils' +import { buildBlockedAccountSQL, getSort, throwIfNotValid } from '../utils' import { VideoModel } from './video' import { VideoChannelModel } from './video-channel' +import { getServerActor } from '../../helpers/utils' +import { UserModel } from '../account/user' enum ScopeNames { WITH_ACCOUNT = 'WITH_ACCOUNT', @@ -25,18 +38,29 @@ enum ScopeNames { } @Scopes({ - [ScopeNames.ATTRIBUTES_FOR_API]: { - attributes: { - include: [ - [ - Sequelize.literal( - '(SELECT COUNT("replies"."id") ' + - 'FROM "videoComment" AS "replies" ' + - 'WHERE "replies"."originCommentId" = "VideoCommentModel"."id")' - ), - 'totalReplies' + [ScopeNames.ATTRIBUTES_FOR_API]: (serverAccountId: number, userAccountId?: number) => { + return { + attributes: { + include: [ + [ + Sequelize.literal( + '(' + + 'WITH "blocklist" AS (' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')' + + 'SELECT COUNT("replies"."id") - (' + + 'SELECT COUNT("replies"."id") ' + + 'FROM "videoComment" AS "replies" ' + + 'WHERE "replies"."originCommentId" = "VideoCommentModel"."id" ' + + 'AND "accountId" IN (SELECT "id" FROM "blocklist")' + + ')' + + 'FROM "videoComment" AS "replies" ' + + 'WHERE "replies"."originCommentId" = "VideoCommentModel"."id" ' + + 'AND "accountId" NOT IN (SELECT "id" FROM "blocklist")' + + ')' + ), + 'totalReplies' + ] ] - ] + } } }, [ScopeNames.WITH_ACCOUNT]: { @@ -267,26 +291,47 @@ export class VideoCommentModel extends Model { return VideoCommentModel.scope([ ScopeNames.WITH_IN_REPLY_TO, ScopeNames.WITH_VIDEO ]).findOne(query) } - static listThreadsForApi (videoId: number, start: number, count: number, sort: string) { + static async listThreadsForApi (videoId: number, start: number, count: number, sort: string, user?: UserModel) { + const serverActor = await getServerActor() + const serverAccountId = serverActor.Account.id + const userAccountId = user.Account.id + const query = { offset: start, limit: count, order: getSort(sort), where: { videoId, - inReplyToCommentId: null + inReplyToCommentId: null, + accountId: { + [Sequelize.Op.notIn]: Sequelize.literal( + '(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')' + ) + } } } + // FIXME: typings + const scopes: any[] = [ + ScopeNames.WITH_ACCOUNT, + { + method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ] + } + ] + return VideoCommentModel - .scope([ ScopeNames.WITH_ACCOUNT, ScopeNames.ATTRIBUTES_FOR_API ]) + .scope(scopes) .findAndCountAll(query) .then(({ rows, count }) => { return { total: count, data: rows } }) } - static listThreadCommentsForApi (videoId: number, threadId: number) { + static async listThreadCommentsForApi (videoId: number, threadId: number, user?: UserModel) { + const serverActor = await getServerActor() + const serverAccountId = serverActor.Account.id + const userAccountId = user.Account.id + const query = { order: [ [ 'createdAt', 'ASC' ], [ 'updatedAt', 'ASC' ] ], where: { @@ -294,12 +339,24 @@ export class VideoCommentModel extends Model { [ Sequelize.Op.or ]: [ { id: threadId }, { originCommentId: threadId } - ] + ], + accountId: { + [Sequelize.Op.notIn]: Sequelize.literal( + '(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')' + ) + } } } + const scopes: any[] = [ + ScopeNames.WITH_ACCOUNT, + { + method: [ ScopeNames.ATTRIBUTES_FOR_API, serverAccountId, userAccountId ] + } + ] + return VideoCommentModel - .scope([ ScopeNames.WITH_ACCOUNT, ScopeNames.ATTRIBUTES_FOR_API ]) + .scope(scopes) .findAndCountAll(query) .then(({ rows, count }) => { return { total: count, data: rows } diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 4f3f75613..eab99cba7 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -27,7 +27,7 @@ import { Table, UpdatedAt } from 'sequelize-typescript' -import { VideoPrivacy, VideoState } from '../../../shared' +import { UserRight, VideoPrivacy, VideoState } from '../../../shared' import { VideoTorrentObject } from '../../../shared/models/activitypub/objects' import { Video, VideoDetails, VideoFile } from '../../../shared/models/videos' import { VideoFilter } from '../../../shared/models/videos/video-query.type' @@ -70,7 +70,7 @@ import { AccountVideoRateModel } from '../account/account-video-rate' import { ActorModel } from '../activitypub/actor' import { AvatarModel } from '../avatar/avatar' import { ServerModel } from '../server/server' -import { buildTrigramSearchIndex, createSimilarityAttribute, getVideoSort, throwIfNotValid } from '../utils' +import { buildBlockedAccountSQL, buildTrigramSearchIndex, createSimilarityAttribute, getVideoSort, throwIfNotValid } from '../utils' import { TagModel } from './tag' import { VideoAbuseModel } from './video-abuse' import { VideoChannelModel } from './video-channel' @@ -93,6 +93,7 @@ import { } from './video-format-utils' import * as validator from 'validator' import { UserVideoHistoryModel } from '../account/user-video-history' +import { UserModel } from '../account/user' // FIXME: Define indexes here because there is an issue with TS and Sequelize.literal when called directly in the annotation const indexes: Sequelize.DefineIndexesOptions[] = [ @@ -138,6 +139,7 @@ type ForAPIOptions = { } type AvailableForListIDsOptions = { + serverAccountId: number actorId: number includeLocalVideos: boolean filter?: VideoFilter @@ -151,6 +153,7 @@ type AvailableForListIDsOptions = { accountId?: number videoChannelId?: number trendingDays?: number + user?: UserModel } @Scopes({ @@ -235,6 +238,15 @@ type AvailableForListIDsOptions = { ) } ] + }, + channelId: { + [ Sequelize.Op.notIn ]: Sequelize.literal( + '(' + + 'SELECT id FROM "videoChannel" WHERE "accountId" IN (' + + buildBlockedAccountSQL(options.serverAccountId, options.user ? options.user.Account.id : undefined) + + ')' + + ')' + ) } }, include: [] @@ -975,10 +987,10 @@ export class VideoModel extends Model { videoChannelId?: number, actorId?: number trendingDays?: number, - userId?: number + user?: UserModel }, countVideos = true) { - if (options.filter && options.filter === 'all-local' && !options.userId) { - throw new Error('Try to filter all-local but no userId is provided') + if (options.filter && options.filter === 'all-local' && !options.user.hasRight(UserRight.SEE_ALL_VIDEOS)) { + throw new Error('Try to filter all-local but no user has not the see all videos right') } const query: IFindOptions = { @@ -994,11 +1006,14 @@ export class VideoModel extends Model { query.group = 'VideoModel.id' } + const serverActor = await getServerActor() + // actorId === null has a meaning, so just check undefined - const actorId = options.actorId !== undefined ? options.actorId : (await getServerActor()).id + const actorId = options.actorId !== undefined ? options.actorId : serverActor.id const queryOptions = { actorId, + serverAccountId: serverActor.Account.id, nsfw: options.nsfw, categoryOneOf: options.categoryOneOf, licenceOneOf: options.licenceOneOf, @@ -1010,7 +1025,7 @@ export class VideoModel extends Model { accountId: options.accountId, videoChannelId: options.videoChannelId, includeLocalVideos: options.includeLocalVideos, - userId: options.userId, + user: options.user, trendingDays } @@ -1033,7 +1048,7 @@ export class VideoModel extends Model { tagsAllOf?: string[] durationMin?: number // seconds durationMax?: number // seconds - userId?: number, + user?: UserModel, filter?: VideoFilter }) { const whereAnd = [] @@ -1104,6 +1119,7 @@ export class VideoModel extends Model { const serverActor = await getServerActor() const queryOptions = { actorId: serverActor.id, + serverAccountId: serverActor.Account.id, includeLocalVideos: options.includeLocalVideos, nsfw: options.nsfw, categoryOneOf: options.categoryOneOf, @@ -1111,7 +1127,7 @@ export class VideoModel extends Model { languageOneOf: options.languageOneOf, tagsOneOf: options.tagsOneOf, tagsAllOf: options.tagsAllOf, - userId: options.userId, + user: options.user, filter: options.filter } @@ -1287,7 +1303,7 @@ export class VideoModel extends Model { private static async getAvailableForApi ( query: IFindOptions, - options: AvailableForListIDsOptions & { userId?: number}, + options: AvailableForListIDsOptions, countVideos = true ) { const idsScope = { @@ -1320,8 +1336,8 @@ export class VideoModel extends Model { } ] - if (options.userId) { - apiScope.push({ method: [ ScopeNames.WITH_USER_HISTORY, options.userId ] }) + if (options.user) { + apiScope.push({ method: [ ScopeNames.WITH_USER_HISTORY, options.user.id ] }) } const secondQuery = { diff --git a/server/tests/api/check-params/blocklist.ts b/server/tests/api/check-params/blocklist.ts new file mode 100644 index 000000000..8117c46a6 --- /dev/null +++ b/server/tests/api/check-params/blocklist.ts @@ -0,0 +1,222 @@ +/* tslint:disable:no-unused-expression */ + +import 'mocha' + +import { + createUser, + doubleFollow, + flushAndRunMultipleServers, + flushTests, + killallServers, + makeDeleteRequest, + makeGetRequest, + makePostBodyRequest, + ServerInfo, + setAccessTokensToServers +} from '../../utils' +import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '../../utils/requests/check-api-params' + +describe('Test blocklist API validators', function () { + let servers: ServerInfo[] + let server: ServerInfo + + before(async function () { + this.timeout(60000) + + await flushTests() + + servers = await flushAndRunMultipleServers(2) + await setAccessTokensToServers(servers) + + server = servers[0] + + const user = { username: 'user1', password: 'password' } + await createUser(server.url, server.accessToken, user.username, user.password) + + await doubleFollow(servers[0], servers[1]) + }) + + // --------------------------------------------------------------- + + describe('When managing user blocklist', function () { + const path = '/api/v1/users/me/blocklist/accounts' + + describe('When managing user accounts blocklist', function () { + + describe('When listing blocked accounts', function () { + it('Should fail with an unauthenticated user', async function () { + await makeGetRequest({ + url: server.url, + path, + statusCodeExpected: 401 + }) + }) + + it('Should fail with a bad start pagination', async function () { + await checkBadStartPagination(server.url, path, server.accessToken) + }) + + it('Should fail with a bad count pagination', async function () { + await checkBadCountPagination(server.url, path, server.accessToken) + }) + + it('Should fail with an incorrect sort', async function () { + await checkBadSortPagination(server.url, path, server.accessToken) + }) + }) + + describe('When blocking an account', function () { + it('Should fail with an unauthenticated user', async function () { + await makePostBodyRequest({ + url: server.url, + path, + fields: { accountName: 'user1' }, + statusCodeExpected: 401 + }) + }) + + it('Should fail with an unknown account', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { accountName: 'user2' }, + statusCodeExpected: 404 + }) + }) + + it('Should succeed with the correct params', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { accountName: 'user1' }, + statusCodeExpected: 204 + }) + }) + }) + + describe('When unblocking an account', function () { + it('Should fail with an unauthenticated user', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user1', + statusCodeExpected: 401 + }) + }) + + it('Should fail with an unknown account block', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user2', + token: server.accessToken, + statusCodeExpected: 404 + }) + }) + + it('Should succeed with the correct params', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user1', + token: server.accessToken, + statusCodeExpected: 204 + }) + }) + }) + }) + + describe('When managing user servers blocklist', function () { + const path = '/api/v1/users/me/blocklist/servers' + + describe('When listing blocked servers', function () { + it('Should fail with an unauthenticated user', async function () { + await makeGetRequest({ + url: server.url, + path, + statusCodeExpected: 401 + }) + }) + + it('Should fail with a bad start pagination', async function () { + await checkBadStartPagination(server.url, path, server.accessToken) + }) + + it('Should fail with a bad count pagination', async function () { + await checkBadCountPagination(server.url, path, server.accessToken) + }) + + it('Should fail with an incorrect sort', async function () { + await checkBadSortPagination(server.url, path, server.accessToken) + }) + }) + + describe('When blocking a server', function () { + it('Should fail with an unauthenticated user', async function () { + await makePostBodyRequest({ + url: server.url, + path, + fields: { host: 'localhost:9002' }, + statusCodeExpected: 401 + }) + }) + + it('Should fail with an unknown server', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { host: 'localhost:9003' }, + statusCodeExpected: 404 + }) + }) + + it('Should succeed with the correct params', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { host: 'localhost:9002' }, + statusCodeExpected: 204 + }) + }) + }) + + describe('When unblocking a server', function () { + it('Should fail with an unauthenticated user', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9002', + statusCodeExpected: 401 + }) + }) + + it('Should fail with an unknown server block', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9003', + token: server.accessToken, + statusCodeExpected: 404 + }) + }) + + it('Should succeed with the correct params', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9002', + token: server.accessToken, + statusCodeExpected: 204 + }) + }) + }) + }) + }) + + after(async function () { + killallServers(servers) + + // Keep the logs if the test failed + if (this['ok']) { + await flushTests() + } + }) +}) diff --git a/server/tests/api/check-params/index.ts b/server/tests/api/check-params/index.ts index bfc550ae5..877ceb0a7 100644 --- a/server/tests/api/check-params/index.ts +++ b/server/tests/api/check-params/index.ts @@ -1,5 +1,6 @@ // Order of the tests we want to execute import './accounts' +import './blocklist' import './config' import './follows' import './jobs' diff --git a/server/tests/api/users/account-blocklist.ts b/server/tests/api/users/account-blocklist.ts new file mode 100644 index 000000000..00ad51461 --- /dev/null +++ b/server/tests/api/users/account-blocklist.ts @@ -0,0 +1,294 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { AccountBlock, ServerBlock, Video } from '../../../../shared/index' +import { + createUser, + doubleFollow, + flushAndRunMultipleServers, + flushTests, + killallServers, + ServerInfo, + uploadVideo, + userLogin +} from '../../utils/index' +import { setAccessTokensToServers } from '../../utils/users/login' +import { getVideosListWithToken } from '../../utils/videos/videos' +import { + addVideoCommentReply, + addVideoCommentThread, + getVideoCommentThreads, + getVideoThreadComments +} from '../../utils/videos/video-comments' +import { waitJobs } from '../../utils/server/jobs' +import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' +import { + addAccountToAccountBlocklist, + addServerToAccountBlocklist, + getAccountBlocklistByAccount, getServerBlocklistByAccount, + removeAccountFromAccountBlocklist, + removeServerFromAccountBlocklist +} from '../../utils/users/blocklist' + +const expect = chai.expect + +async function checkAllVideos (url: string, token: string) { + const res = await getVideosListWithToken(url, token) + + expect(res.body.data).to.have.lengthOf(4) +} + +async function checkAllComments (url: string, token: string, videoUUID: string) { + const resThreads = await getVideoCommentThreads(url, videoUUID, 0, 5, '-createdAt', token) + + const threads: VideoComment[] = resThreads.body.data + expect(threads).to.have.lengthOf(2) + + for (const thread of threads) { + const res = await getVideoThreadComments(url, videoUUID, thread.id, token) + + const tree: VideoCommentThreadTree = res.body + expect(tree.children).to.have.lengthOf(1) + } +} + +describe('Test accounts blocklist', function () { + let servers: ServerInfo[] + let videoUUID1: string + let videoUUID2: string + let userToken1: string + let userToken2: string + + before(async function () { + this.timeout(60000) + + await flushTests() + + servers = await flushAndRunMultipleServers(2) + await setAccessTokensToServers(servers) + + { + const user = { username: 'user1', password: 'password' } + await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) + + userToken1 = await userLogin(servers[0], user) + await uploadVideo(servers[0].url, userToken1, { name: 'video user 1' }) + } + + { + const user = { username: 'user2', password: 'password' } + await createUser(servers[1].url, servers[1].accessToken, user.username, user.password) + + userToken2 = await userLogin(servers[1], user) + await uploadVideo(servers[1].url, userToken2, { name: 'video user 2' }) + } + + { + const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video server 1' }) + videoUUID1 = res.body.video.uuid + } + + { + const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video server 2' }) + videoUUID2 = res.body.video.uuid + } + + await doubleFollow(servers[0], servers[1]) + + { + const resComment = await addVideoCommentThread(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, 'comment root 1') + const resReply = await addVideoCommentReply(servers[ 0 ].url, userToken1, videoUUID1, resComment.body.comment.id, 'comment user 1') + await addVideoCommentReply(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, resReply.body.comment.id, 'comment root 1') + } + + { + const resComment = await addVideoCommentThread(servers[ 0 ].url, userToken1, videoUUID1, 'comment user 1') + await addVideoCommentReply(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, resComment.body.comment.id, 'comment root 1') + } + + await waitJobs(servers) + }) + + describe('When managing account blocklist', function () { + it('Should list all videos', function () { + return checkAllVideos(servers[0].url, servers[0].accessToken) + }) + + it('Should list the comments', function () { + return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) + }) + + it('Should block a remote account', async function () { + await addAccountToAccountBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:9002') + }) + + it('Should hide its videos', async function () { + const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(3) + + const v = videos.find(v => v.name === 'video user 2') + expect(v).to.be.undefined + }) + + it('Should block a local account', async function () { + await addAccountToAccountBlocklist(servers[0].url, servers[0].accessToken, 'user1') + }) + + it('Should hide its videos', async function () { + const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) + + const v = videos.find(v => v.name === 'video user 1') + expect(v).to.be.undefined + }) + + it('Should hide its comments', async function () { + const resThreads = await getVideoCommentThreads(servers[0].url, videoUUID1, 0, 5, '-createdAt', servers[0].accessToken) + + const threads: VideoComment[] = resThreads.body.data + expect(threads).to.have.lengthOf(1) + expect(threads[0].totalReplies).to.equal(0) + + const t = threads.find(t => t.text === 'comment user 1') + expect(t).to.be.undefined + + for (const thread of threads) { + const res = await getVideoThreadComments(servers[0].url, videoUUID1, thread.id, servers[0].accessToken) + + const tree: VideoCommentThreadTree = res.body + expect(tree.children).to.have.lengthOf(0) + } + }) + + it('Should list all the videos with another user', async function () { + return checkAllVideos(servers[0].url, userToken1) + }) + + it('Should list all the comments with another user', async function () { + return checkAllComments(servers[0].url, userToken1, videoUUID1) + }) + + it('Should list blocked accounts', async function () { + { + const res = await getAccountBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') + const blocks: AccountBlock[] = res.body.data + + expect(res.body.total).to.equal(2) + + const block = blocks[0] + expect(block.byAccount.displayName).to.equal('root') + expect(block.byAccount.name).to.equal('root') + expect(block.accountBlocked.displayName).to.equal('user2') + expect(block.accountBlocked.name).to.equal('user2') + expect(block.accountBlocked.host).to.equal('localhost:9002') + } + + { + const res = await getAccountBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 1, 2, 'createdAt') + const blocks: AccountBlock[] = res.body.data + + expect(res.body.total).to.equal(2) + + const block = blocks[0] + expect(block.byAccount.displayName).to.equal('root') + expect(block.byAccount.name).to.equal('root') + expect(block.accountBlocked.displayName).to.equal('user1') + expect(block.accountBlocked.name).to.equal('user1') + expect(block.accountBlocked.host).to.equal('localhost:9001') + } + }) + + it('Should unblock the remote account', async function () { + await removeAccountFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:9002') + }) + + it('Should display its videos', async function () { + const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(3) + + const v = videos.find(v => v.name === 'video user 2') + expect(v).not.to.be.undefined + }) + + it('Should unblock the local account', async function () { + await removeAccountFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'user1') + }) + + it('Should display its comments', function () { + return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) + }) + }) + + describe('When managing server blocklist', function () { + it('Should list all videos', function () { + return checkAllVideos(servers[0].url, servers[0].accessToken) + }) + + it('Should list the comments', function () { + return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) + }) + + it('Should block a remote server', async function () { + await addServerToAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:9002') + }) + + it('Should hide its videos', async function () { + const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) + + const v1 = videos.find(v => v.name === 'video user 2') + const v2 = videos.find(v => v.name === 'video server 2') + + expect(v1).to.be.undefined + expect(v2).to.be.undefined + }) + + it('Should list all the videos with another user', async function () { + return checkAllVideos(servers[0].url, userToken1) + }) + + it('Should hide its comments') + + it('Should list blocked servers', async function () { + const res = await getServerBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') + const blocks: ServerBlock[] = res.body.data + + expect(res.body.total).to.equal(1) + + const block = blocks[0] + expect(block.byAccount.displayName).to.equal('root') + expect(block.byAccount.name).to.equal('root') + expect(block.serverBlocked.host).to.equal('localhost:9002') + }) + + it('Should unblock the remote server', async function () { + await removeServerFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:9002') + }) + + it('Should display its videos', function () { + return checkAllVideos(servers[0].url, servers[0].accessToken) + }) + + it('Should display its comments', function () { + return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) + }) + }) + + after(async function () { + killallServers(servers) + + // Keep the logs if the test failed + if (this[ 'ok' ]) { + await flushTests() + } + }) +}) diff --git a/server/tests/utils/requests/requests.ts b/server/tests/utils/requests/requests.ts index 27a529eda..5796540f7 100644 --- a/server/tests/utils/requests/requests.ts +++ b/server/tests/utils/requests/requests.ts @@ -37,9 +37,7 @@ function makeDeleteRequest (options: { if (options.token) req.set('Authorization', 'Bearer ' + options.token) - return req - .expect('Content-Type', /json/) - .expect(options.statusCodeExpected) + return req.expect(options.statusCodeExpected) } function makeUploadRequest (options: { diff --git a/server/tests/utils/users/blocklist.ts b/server/tests/utils/users/blocklist.ts new file mode 100644 index 000000000..47b315480 --- /dev/null +++ b/server/tests/utils/users/blocklist.ts @@ -0,0 +1,103 @@ +/* tslint:disable:no-unused-expression */ + +import { makeDeleteRequest, makePostBodyRequest } from '../index' +import { makeGetRequest } from '../requests/requests' + +function getAccountBlocklistByAccount ( + url: string, + token: string, + start: number, + count: number, + sort = '-createdAt', + statusCodeExpected = 200 +) { + const path = '/api/v1/users/me/blocklist/accounts' + + return makeGetRequest({ + url, + token, + query: { start, count, sort }, + path, + statusCodeExpected + }) +} + +function addAccountToAccountBlocklist (url: string, token: string, accountToBlock: string, statusCodeExpected = 204) { + const path = '/api/v1/users/me/blocklist/accounts' + + return makePostBodyRequest({ + url, + path, + token, + fields: { + accountName: accountToBlock + }, + statusCodeExpected + }) +} + +function removeAccountFromAccountBlocklist (url: string, token: string, accountToUnblock: string, statusCodeExpected = 204) { + const path = '/api/v1/users/me/blocklist/accounts/' + accountToUnblock + + return makeDeleteRequest({ + url, + path, + token, + statusCodeExpected + }) +} + +function getServerBlocklistByAccount ( + url: string, + token: string, + start: number, + count: number, + sort = '-createdAt', + statusCodeExpected = 200 +) { + const path = '/api/v1/users/me/blocklist/servers' + + return makeGetRequest({ + url, + token, + query: { start, count, sort }, + path, + statusCodeExpected + }) +} + +function addServerToAccountBlocklist (url: string, token: string, serverToBlock: string, statusCodeExpected = 204) { + const path = '/api/v1/users/me/blocklist/servers' + + return makePostBodyRequest({ + url, + path, + token, + fields: { + host: serverToBlock + }, + statusCodeExpected + }) +} + +function removeServerFromAccountBlocklist (url: string, token: string, serverToBlock: string, statusCodeExpected = 204) { + const path = '/api/v1/users/me/blocklist/servers/' + serverToBlock + + return makeDeleteRequest({ + url, + path, + token, + statusCodeExpected + }) +} + +// --------------------------------------------------------------------------- + +export { + getAccountBlocklistByAccount, + addAccountToAccountBlocklist, + removeAccountFromAccountBlocklist, + getServerBlocklistByAccount, + addServerToAccountBlocklist, + removeServerFromAccountBlocklist +} diff --git a/server/tests/utils/videos/video-comments.ts b/server/tests/utils/videos/video-comments.ts index 1b9ee452e..7d4cae364 100644 --- a/server/tests/utils/videos/video-comments.ts +++ b/server/tests/utils/videos/video-comments.ts @@ -1,7 +1,7 @@ import * as request from 'supertest' import { makeDeleteRequest } from '../' -function getVideoCommentThreads (url: string, videoId: number | string, start: number, count: number, sort?: string) { +function getVideoCommentThreads (url: string, videoId: number | string, start: number, count: number, sort?: string, token?: string) { const path = '/api/v1/videos/' + videoId + '/comment-threads' const req = request(url) @@ -10,20 +10,24 @@ function getVideoCommentThreads (url: string, videoId: number | string, start: n .query({ count: count }) if (sort) req.query({ sort }) + if (token) req.set('Authorization', 'Bearer ' + token) return req.set('Accept', 'application/json') .expect(200) .expect('Content-Type', /json/) } -function getVideoThreadComments (url: string, videoId: number | string, threadId: number) { +function getVideoThreadComments (url: string, videoId: number | string, threadId: number, token?: string) { const path = '/api/v1/videos/' + videoId + '/comment-threads/' + threadId - return request(url) + const req = request(url) .get(path) .set('Accept', 'application/json') - .expect(200) - .expect('Content-Type', /json/) + + if (token) req.set('Authorization', 'Bearer ' + token) + + return req.expect(200) + .expect('Content-Type', /json/) } function addVideoCommentThread (url: string, token: string, videoId: number | string, text: string, expectedStatus = 200) { diff --git a/shared/models/blocklist/account-block.model.ts b/shared/models/blocklist/account-block.model.ts new file mode 100644 index 000000000..d6f8840c5 --- /dev/null +++ b/shared/models/blocklist/account-block.model.ts @@ -0,0 +1,7 @@ +import { Account } from '../actors' + +export interface AccountBlock { + byAccount: Account + accountBlocked: Account + createdAt: Date | string +} diff --git a/shared/models/blocklist/index.ts b/shared/models/blocklist/index.ts new file mode 100644 index 000000000..fc7873270 --- /dev/null +++ b/shared/models/blocklist/index.ts @@ -0,0 +1,2 @@ +export * from './account-block.model' +export * from './server-block.model' diff --git a/shared/models/blocklist/server-block.model.ts b/shared/models/blocklist/server-block.model.ts new file mode 100644 index 000000000..efba672bd --- /dev/null +++ b/shared/models/blocklist/server-block.model.ts @@ -0,0 +1,9 @@ +import { Account } from '../actors' + +export interface ServerBlock { + byAccount: Account + serverBlocked: { + host: string + } + createdAt: Date | string +} diff --git a/shared/models/index.ts b/shared/models/index.ts index e61d6cbdc..062533834 100644 --- a/shared/models/index.ts +++ b/shared/models/index.ts @@ -1,6 +1,7 @@ export * from './activitypub' export * from './actors' export * from './avatars' +export * from './blocklist' export * from './redundancy' export * from './users' export * from './videos' -- cgit v1.2.3 From af5767ffae41b2d5604e41ba9a7225c623dd6735 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 12 Oct 2018 17:26:40 +0200 Subject: Add user/instance block by users in the client --- client/src/app/+accounts/accounts.component.html | 7 +- .../video-abuse-list.component.html | 2 +- .../video-blacklist-list.component.html | 2 +- .../users/user-list/user-list.component.html | 6 +- .../my-account-blocklist.component.html | 26 +++++ .../my-account-blocklist.component.scss | 7 ++ .../my-account-blocklist.component.ts | 59 ++++++++++ .../my-account-server-blocklist.component.html | 27 +++++ .../my-account-server-blocklist.component.scss | 7 ++ .../my-account-server-blocklist.component.ts | 60 ++++++++++ .../app/+my-account/my-account-routing.module.ts | 20 ++++ .../src/app/+my-account/my-account.component.html | 16 ++- .../src/app/+my-account/my-account.component.scss | 2 +- client/src/app/+my-account/my-account.component.ts | 15 ++- client/src/app/+my-account/my-account.module.ts | 6 +- client/src/app/shared/account/account.model.ts | 5 + .../app/shared/blocklist/account-block.model.ts | 14 +++ .../src/app/shared/blocklist/blocklist.service.ts | 79 ++++++++++++++ client/src/app/shared/blocklist/index.ts | 2 + .../shared/buttons/action-dropdown.component.html | 6 +- .../shared/buttons/action-dropdown.component.scss | 5 + .../user-moderation-dropdown.component.html | 7 +- .../user-moderation-dropdown.component.ts | 121 +++++++++++++++++++-- client/src/app/shared/shared.module.ts | 2 + server/controllers/api/users/my-blocklist.ts | 4 +- server/lib/blocklist.ts | 4 +- server/middlewares/validators/blocklist.ts | 45 +++++++- server/models/account/account-blocklist.ts | 8 +- server/models/server/server-blocklist.ts | 4 +- server/tests/api/check-params/blocklist.ts | 20 ++++ server/tests/api/users/account-blocklist.ts | 14 +-- shared/models/blocklist/account-block.model.ts | 2 +- shared/models/blocklist/server-block.model.ts | 2 +- 33 files changed, 560 insertions(+), 46 deletions(-) create mode 100644 client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html create mode 100644 client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss create mode 100644 client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts create mode 100644 client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html create mode 100644 client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss create mode 100644 client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts create mode 100644 client/src/app/shared/blocklist/account-block.model.ts create mode 100644 client/src/app/shared/blocklist/blocklist.service.ts create mode 100644 client/src/app/shared/blocklist/index.ts diff --git a/client/src/app/+accounts/accounts.component.html b/client/src/app/+accounts/accounts.component.html index 036e794d2..60dbcdf1d 100644 --- a/client/src/app/+accounts/accounts.component.html +++ b/client/src/app/+accounts/accounts.component.html @@ -10,8 +10,13 @@
{{ account.nameWithHost }}
Banned + Muted + Instance muted - +
{{ account.followersCount }} subscribers
diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html index 287ab3e46..0374b70ef 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html +++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html @@ -9,7 +9,7 @@ Created Video State - + diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html index 0585e0490..ff4543b97 100644 --- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html +++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html @@ -8,7 +8,7 @@ Video name Sensitive Date - + diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html index afa9ccfe4..eb8d30e17 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.html +++ b/client/src/app/+admin/users/user-list/user-list.component.html @@ -60,8 +60,10 @@ - {{ user.username }} - (banned) + + {{ user.username }} + (banned) + {{ user.email }} {{ user.videoQuotaUsed }} / {{ user.videoQuota }} diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html new file mode 100644 index 000000000..a96a11f5e --- /dev/null +++ b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html @@ -0,0 +1,26 @@ +
+
Muted accounts
+
+ + + + + + Account + Muted at + + + + + + {{ accountBlock.blockedAccount.nameWithHost }} + {{ accountBlock.createdAt }} + + + + + + diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss new file mode 100644 index 000000000..6028b75ea --- /dev/null +++ b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss @@ -0,0 +1,7 @@ +@import '_variables'; +@import '_mixins'; + +.unblock-button { + @include peertube-button; + @include grey-button; +} \ No newline at end of file diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts new file mode 100644 index 000000000..fbad28410 --- /dev/null +++ b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts @@ -0,0 +1,59 @@ +import { Component, OnInit } from '@angular/core' +import { NotificationsService } from 'angular2-notifications' +import { I18n } from '@ngx-translate/i18n-polyfill' +import { RestPagination, RestTable } from '@app/shared' +import { SortMeta } from 'primeng/components/common/sortmeta' +import { BlocklistService, AccountBlock } from '@app/shared/blocklist' + +@Component({ + selector: 'my-account-blocklist', + styleUrls: [ './my-account-blocklist.component.scss' ], + templateUrl: './my-account-blocklist.component.html' +}) +export class MyAccountBlocklistComponent extends RestTable implements OnInit { + blockedAccounts: AccountBlock[] = [] + totalRecords = 0 + rowsPerPage = 10 + sort: SortMeta = { field: 'createdAt', order: -1 } + pagination: RestPagination = { count: this.rowsPerPage, start: 0 } + + constructor ( + private notificationsService: NotificationsService, + private blocklistService: BlocklistService, + private i18n: I18n + ) { + super() + } + + ngOnInit () { + this.initialize() + } + + unblockAccount (accountBlock: AccountBlock) { + const blockedAccount = accountBlock.blockedAccount + + this.blocklistService.unblockAccountByUser(blockedAccount) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: blockedAccount.nameWithHost }) + ) + + this.loadData() + } + ) + } + + protected loadData () { + return this.blocklistService.getUserAccountBlocklist(this.pagination, this.sort) + .subscribe( + resultList => { + this.blockedAccounts = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } +} diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html new file mode 100644 index 000000000..680334740 --- /dev/null +++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html @@ -0,0 +1,27 @@ +
+
Muted instances
+
+ + + + + + Instance + Muted at + + + + + + + {{ serverBlock.blockedServer.host }} + {{ serverBlock.createdAt }} + + + + + + diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss new file mode 100644 index 000000000..6028b75ea --- /dev/null +++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss @@ -0,0 +1,7 @@ +@import '_variables'; +@import '_mixins'; + +.unblock-button { + @include peertube-button; + @include grey-button; +} \ No newline at end of file diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts new file mode 100644 index 000000000..b994c2c99 --- /dev/null +++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts @@ -0,0 +1,60 @@ +import { Component, OnInit } from '@angular/core' +import { NotificationsService } from 'angular2-notifications' +import { I18n } from '@ngx-translate/i18n-polyfill' +import { RestPagination, RestTable } from '@app/shared' +import { SortMeta } from 'primeng/components/common/sortmeta' +import { ServerBlock } from '../../../../../shared' +import { BlocklistService } from '@app/shared/blocklist' + +@Component({ + selector: 'my-account-server-blocklist', + styleUrls: [ './my-account-server-blocklist.component.scss' ], + templateUrl: './my-account-server-blocklist.component.html' +}) +export class MyAccountServerBlocklistComponent extends RestTable implements OnInit { + blockedAccounts: ServerBlock[] = [] + totalRecords = 0 + rowsPerPage = 10 + sort: SortMeta = { field: 'createdAt', order: -1 } + pagination: RestPagination = { count: this.rowsPerPage, start: 0 } + + constructor ( + private notificationsService: NotificationsService, + private blocklistService: BlocklistService, + private i18n: I18n + ) { + super() + } + + ngOnInit () { + this.initialize() + } + + unblockServer (serverBlock: ServerBlock) { + const host = serverBlock.blockedServer.host + + this.blocklistService.unblockServerByUser(host) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Instance {{host}} unmuted.', { host }) + ) + + this.loadData() + } + ) + } + + protected loadData () { + return this.blocklistService.getUserServerBlocklist(this.pagination, this.sort) + .subscribe( + resultList => { + this.blockedAccounts = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } +} diff --git a/client/src/app/+my-account/my-account-routing.module.ts b/client/src/app/+my-account/my-account-routing.module.ts index 4b2168e35..49f9c94a7 100644 --- a/client/src/app/+my-account/my-account-routing.module.ts +++ b/client/src/app/+my-account/my-account-routing.module.ts @@ -11,6 +11,8 @@ import { MyAccountVideoChannelUpdateComponent } from '@app/+my-account/my-accoun import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component' import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-subscriptions/my-account-subscriptions.component' import { MyAccountOwnershipComponent } from '@app/+my-account/my-account-ownership/my-account-ownership.component' +import { MyAccountBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-blocklist.component' +import { MyAccountServerBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-server-blocklist.component' const myAccountRoutes: Routes = [ { @@ -94,6 +96,24 @@ const myAccountRoutes: Routes = [ title: 'Ownership changes' } } + }, + { + path: 'blocklist/accounts', + component: MyAccountBlocklistComponent, + data: { + meta: { + title: 'Accounts blocklist' + } + } + }, + { + path: 'blocklist/servers', + component: MyAccountServerBlocklistComponent, + data: { + meta: { + title: 'Instances blocklist' + } + } } ] } diff --git a/client/src/app/+my-account/my-account.component.html b/client/src/app/+my-account/my-account.component.html index b602fd69f..41333c25a 100644 --- a/client/src/app/+my-account/my-account.component.html +++ b/client/src/app/+my-account/my-account.component.html @@ -19,7 +19,21 @@
- Ownership changes +
+ + Misc + - {{ miscLabel }} + + + +
+
diff --git a/client/src/app/+my-account/my-account.component.scss b/client/src/app/+my-account/my-account.component.scss index 20b2639b5..6243c6dcf 100644 --- a/client/src/app/+my-account/my-account.component.scss +++ b/client/src/app/+my-account/my-account.component.scss @@ -1,4 +1,4 @@ -.my-library { +.my-library, .misc { span[role=button] { cursor: pointer; } diff --git a/client/src/app/+my-account/my-account.component.ts b/client/src/app/+my-account/my-account.component.ts index bad60a8fb..d728caf07 100644 --- a/client/src/app/+my-account/my-account.component.ts +++ b/client/src/app/+my-account/my-account.component.ts @@ -13,6 +13,7 @@ import { Subscription } from 'rxjs' export class MyAccountComponent implements OnInit, OnDestroy { libraryLabel = '' + miscLabel = '' private routeSub: Subscription @@ -23,11 +24,11 @@ export class MyAccountComponent implements OnInit, OnDestroy { ) {} ngOnInit () { - this.updateLibraryLabel(this.router.url) + this.updateLabels(this.router.url) this.routeSub = this.router.events .pipe(filter(event => event instanceof NavigationStart)) - .subscribe((event: NavigationStart) => this.updateLibraryLabel(event.url)) + .subscribe((event: NavigationStart) => this.updateLabels(event.url)) } ngOnDestroy () { @@ -40,7 +41,7 @@ export class MyAccountComponent implements OnInit, OnDestroy { return importConfig.http.enabled || importConfig.torrent.enabled } - private updateLibraryLabel (url: string) { + private updateLabels (url: string) { const [ path ] = url.split('?') if (path.startsWith('/my-account/video-channels')) { @@ -54,5 +55,13 @@ export class MyAccountComponent implements OnInit, OnDestroy { } else { this.libraryLabel = '' } + + if (path.startsWith('/my-account/blocklist/accounts')) { + this.miscLabel = this.i18n('Muted accounts') + } else if (path.startsWith('/my-account/blocklist/servers')) { + this.miscLabel = this.i18n('Muted instances') + } else { + this.miscLabel = '' + } } } diff --git a/client/src/app/+my-account/my-account.module.ts b/client/src/app/+my-account/my-account.module.ts index ad21162a8..017ebd57d 100644 --- a/client/src/app/+my-account/my-account.module.ts +++ b/client/src/app/+my-account/my-account.module.ts @@ -19,6 +19,8 @@ import { ActorAvatarInfoComponent } from '@app/+my-account/shared/actor-avatar-i import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component' import { MyAccountDangerZoneComponent } from '@app/+my-account/my-account-settings/my-account-danger-zone' import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-subscriptions/my-account-subscriptions.component' +import { MyAccountBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-blocklist.component' +import { MyAccountServerBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-server-blocklist.component' @NgModule({ imports: [ @@ -45,7 +47,9 @@ import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-sub ActorAvatarInfoComponent, MyAccountVideoImportsComponent, MyAccountDangerZoneComponent, - MyAccountSubscriptionsComponent + MyAccountSubscriptionsComponent, + MyAccountBlocklistComponent, + MyAccountServerBlocklistComponent ], exports: [ diff --git a/client/src/app/shared/account/account.model.ts b/client/src/app/shared/account/account.model.ts index 42f2cfeaf..0aba9428a 100644 --- a/client/src/app/shared/account/account.model.ts +++ b/client/src/app/shared/account/account.model.ts @@ -5,6 +5,8 @@ export class Account extends Actor implements ServerAccount { displayName: string description: string nameWithHost: string + muted: boolean + mutedServer: boolean userId?: number @@ -15,5 +17,8 @@ export class Account extends Actor implements ServerAccount { this.description = hash.description this.userId = hash.userId this.nameWithHost = Actor.CREATE_BY_STRING(this.name, this.host) + + this.muted = false + this.mutedServer = false } } diff --git a/client/src/app/shared/blocklist/account-block.model.ts b/client/src/app/shared/blocklist/account-block.model.ts new file mode 100644 index 000000000..336680f65 --- /dev/null +++ b/client/src/app/shared/blocklist/account-block.model.ts @@ -0,0 +1,14 @@ +import { AccountBlock as AccountBlockServer } from '../../../../../shared' +import { Account } from '../account/account.model' + +export class AccountBlock implements AccountBlockServer { + byAccount: Account + blockedAccount: Account + createdAt: Date | string + + constructor (block: AccountBlockServer) { + this.byAccount = new Account(block.byAccount) + this.blockedAccount = new Account(block.blockedAccount) + this.createdAt = block.createdAt + } +} \ No newline at end of file diff --git a/client/src/app/shared/blocklist/blocklist.service.ts b/client/src/app/shared/blocklist/blocklist.service.ts new file mode 100644 index 000000000..d9c318258 --- /dev/null +++ b/client/src/app/shared/blocklist/blocklist.service.ts @@ -0,0 +1,79 @@ +import { Injectable } from '@angular/core' +import { environment } from '../../../environments/environment' +import { HttpClient, HttpParams } from '@angular/common/http' +import { RestExtractor, RestPagination, RestService } from '../rest' +import { SortMeta } from 'primeng/api' +import { catchError, map } from 'rxjs/operators' +import { AccountBlock as AccountBlockServer, ResultList, ServerBlock } from '../../../../../shared' +import { Account } from '@app/shared/account/account.model' +import { AccountBlock } from '@app/shared/blocklist/account-block.model' + +@Injectable() +export class BlocklistService { + static BASE_USER_BLOCKLIST_URL = environment.apiUrl + '/api/v1/users/me/blocklist' + + constructor ( + private authHttp: HttpClient, + private restExtractor: RestExtractor, + private restService: RestService + ) { } + + /*********************** User -> Account blocklist ***********************/ + + getUserAccountBlocklist (pagination: RestPagination, sort: SortMeta) { + let params = new HttpParams() + params = this.restService.addRestGetParams(params, pagination, sort) + + return this.authHttp.get>(BlocklistService.BASE_USER_BLOCKLIST_URL + '/accounts', { params }) + .pipe( + map(res => this.restExtractor.convertResultListDateToHuman(res)), + map(res => this.restExtractor.applyToResultListData(res, this.formatAccountBlock.bind(this))), + catchError(err => this.restExtractor.handleError(err)) + ) + } + + blockAccountByUser (account: Account) { + const body = { accountName: account.nameWithHost } + + return this.authHttp.post(BlocklistService.BASE_USER_BLOCKLIST_URL + '/accounts', body) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + unblockAccountByUser (account: Account) { + const path = BlocklistService.BASE_USER_BLOCKLIST_URL + '/accounts/' + account.nameWithHost + + return this.authHttp.delete(path) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + /*********************** User -> Server blocklist ***********************/ + + getUserServerBlocklist (pagination: RestPagination, sort: SortMeta) { + let params = new HttpParams() + params = this.restService.addRestGetParams(params, pagination, sort) + + return this.authHttp.get>(BlocklistService.BASE_USER_BLOCKLIST_URL + '/servers', { params }) + .pipe( + map(res => this.restExtractor.convertResultListDateToHuman(res)), + catchError(err => this.restExtractor.handleError(err)) + ) + } + + blockServerByUser (host: string) { + const body = { host } + + return this.authHttp.post(BlocklistService.BASE_USER_BLOCKLIST_URL + '/servers', body) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + unblockServerByUser (host: string) { + const path = BlocklistService.BASE_USER_BLOCKLIST_URL + '/servers/' + host + + return this.authHttp.delete(path) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + private formatAccountBlock (accountBlock: AccountBlockServer) { + return new AccountBlock(accountBlock) + } +} diff --git a/client/src/app/shared/blocklist/index.ts b/client/src/app/shared/blocklist/index.ts new file mode 100644 index 000000000..8cf6a55f7 --- /dev/null +++ b/client/src/app/shared/blocklist/index.ts @@ -0,0 +1,2 @@ +export * from './blocklist.service' +export * from './account-block.model' \ No newline at end of file diff --git a/client/src/app/shared/buttons/action-dropdown.component.html b/client/src/app/shared/buttons/action-dropdown.component.html index 111627424..48230d6d8 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.html +++ b/client/src/app/shared/buttons/action-dropdown.component.html @@ -9,13 +9,13 @@
\ No newline at end of file diff --git a/client/src/app/shared/buttons/action-dropdown.component.scss b/client/src/app/shared/buttons/action-dropdown.component.scss index 0a9aa7b04..92c4d1d2c 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.scss +++ b/client/src/app/shared/buttons/action-dropdown.component.scss @@ -46,5 +46,10 @@ .dropdown-item { cursor: pointer; color: #000 !important; + + a, span { + display: block; + width: 100%; + } } } \ No newline at end of file diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.html b/client/src/app/shared/moderation/user-moderation-dropdown.component.html index 01db7cd4a..7367a7e59 100644 --- a/client/src/app/shared/moderation/user-moderation-dropdown.component.html +++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.html @@ -1,5 +1,8 @@ - + - + \ No newline at end of file diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts index 105c99d8b..2f4a55f37 100644 --- a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts +++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' +import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core' import { NotificationsService } from 'angular2-notifications' import { I18n } from '@ngx-translate/i18n-polyfill' import { DropdownAction } from '@app/shared/buttons/action-dropdown.component' @@ -6,16 +6,20 @@ import { UserBanModalComponent } from '@app/shared/moderation/user-ban-modal.com import { UserService } from '@app/shared/users' import { AuthService, ConfirmService } from '@app/core' import { User, UserRight } from '../../../../../shared/models/users' +import { Account } from '@app/shared/account/account.model' +import { BlocklistService } from '@app/shared/blocklist' @Component({ selector: 'my-user-moderation-dropdown', templateUrl: './user-moderation-dropdown.component.html', styleUrls: [ './user-moderation-dropdown.component.scss' ] }) -export class UserModerationDropdownComponent implements OnInit { +export class UserModerationDropdownComponent implements OnChanges { @ViewChild('userBanModal') userBanModal: UserBanModalComponent @Input() user: User + @Input() account: Account + @Input() buttonSize: 'normal' | 'small' = 'normal' @Input() placement = 'left' @@ -29,10 +33,11 @@ export class UserModerationDropdownComponent implements OnInit { private notificationsService: NotificationsService, private confirmService: ConfirmService, private userService: UserService, + private blocklistService: BlocklistService, private i18n: I18n ) { } - ngOnInit () { + ngOnChanges () { this.buildActions() } @@ -92,6 +97,74 @@ export class UserModerationDropdownComponent implements OnInit { ) } + blockAccountByUser (account: Account) { + this.blocklistService.blockAccountByUser(account) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Account {{nameWithHost}} muted.', { nameWithHost: account.nameWithHost }) + ) + + this.account.muted = true + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + unblockAccountByUser (account: Account) { + this.blocklistService.unblockAccountByUser(account) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: account.nameWithHost }) + ) + + this.account.muted = false + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + blockServerByUser (host: string) { + this.blocklistService.blockServerByUser(host) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Instance {{host}} muted.', { host }) + ) + + this.account.mutedServer = true + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + unblockServerByUser (host: string) { + this.blocklistService.unblockServerByUser(host) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Instance {{host}} unmuted.', { host }) + ) + + this.account.mutedServer = false + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + getRouterUserEditLink (user: User) { return [ '/admin', 'users', 'update', user.id ] } @@ -102,25 +175,53 @@ export class UserModerationDropdownComponent implements OnInit { if (this.authService.isLoggedIn()) { const authUser = this.authService.getUser() - if (authUser.hasRight(UserRight.MANAGE_USERS)) { + if (this.user && authUser.id === this.user.id) return + + if (this.user && authUser.hasRight(UserRight.MANAGE_USERS)) { this.userActions = this.userActions.concat([ { label: this.i18n('Edit'), - linkBuilder: this.getRouterUserEditLink + linkBuilder: ({ user }) => this.getRouterUserEditLink(user) }, { label: this.i18n('Delete'), - handler: user => this.removeUser(user) + handler: ({ user }) => this.removeUser(user) }, { label: this.i18n('Ban'), - handler: user => this.openBanUserModal(user), - isDisplayed: user => !user.blocked + handler: ({ user }) => this.openBanUserModal(user), + isDisplayed: ({ user }) => !user.muted }, { label: this.i18n('Unban'), - handler: user => this.unbanUser(user), - isDisplayed: user => user.blocked + handler: ({ user }) => this.unbanUser(user), + isDisplayed: ({ user }) => user.muted + } + ]) + } + + // User actions on accounts/servers + if (this.account) { + this.userActions = this.userActions.concat([ + { + label: this.i18n('Mute this account'), + isDisplayed: ({ account }) => account.muted === false, + handler: ({ account }) => this.blockAccountByUser(account) + }, + { + label: this.i18n('Unmute this account'), + isDisplayed: ({ account }) => account.muted === true, + handler: ({ account }) => this.unblockAccountByUser(account) + }, + { + label: this.i18n('Mute the instance'), + isDisplayed: ({ account }) => !account.userId && account.mutedServer === false, + handler: ({ account }) => this.blockServerByUser(account.host) + }, + { + label: this.i18n('Unmute the instance'), + isDisplayed: ({ account }) => !account.userId && account.mutedServer === true, + handler: ({ account }) => this.unblockServerByUser(account.host) } ]) } diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts index 9647a7966..40e05fcc7 100644 --- a/client/src/app/shared/shared.module.ts +++ b/client/src/app/shared/shared.module.ts @@ -58,6 +58,7 @@ import { InstanceFeaturesTableComponent } from '@app/shared/instance/instance-fe import { OverviewService } from '@app/shared/overview' import { UserBanModalComponent } from '@app/shared/moderation' import { UserModerationDropdownComponent } from '@app/shared/moderation/user-moderation-dropdown.component' +import { BlocklistService } from '@app/shared/blocklist' @NgModule({ imports: [ @@ -172,6 +173,7 @@ import { UserModerationDropdownComponent } from '@app/shared/moderation/user-mod OverviewService, VideoChangeOwnershipValidatorsService, VideoAcceptOwnershipValidatorsService, + BlocklistService, I18nPrimengCalendarService, ScreenService, diff --git a/server/controllers/api/users/my-blocklist.ts b/server/controllers/api/users/my-blocklist.ts index e955ffde9..95a4105ec 100644 --- a/server/controllers/api/users/my-blocklist.ts +++ b/server/controllers/api/users/my-blocklist.ts @@ -6,7 +6,6 @@ import { asyncRetryTransactionMiddleware, authenticate, paginationValidator, - serverGetValidator, setDefaultPagination, setDefaultSort, unblockAccountByAccountValidator @@ -14,6 +13,7 @@ import { import { accountsBlocklistSortValidator, blockAccountByAccountValidator, + blockServerByAccountValidator, serversBlocklistSortValidator, unblockServerByAccountValidator } from '../../../middlewares/validators' @@ -58,7 +58,7 @@ myBlocklistRouter.get('/me/blocklist/servers', myBlocklistRouter.post('/me/blocklist/servers', authenticate, - asyncMiddleware(serverGetValidator), + asyncMiddleware(blockServerByAccountValidator), asyncRetryTransactionMiddleware(blockServer) ) diff --git a/server/lib/blocklist.ts b/server/lib/blocklist.ts index 394c24537..1633e500c 100644 --- a/server/lib/blocklist.ts +++ b/server/lib/blocklist.ts @@ -4,7 +4,7 @@ import { ServerBlocklistModel } from '../models/server/server-blocklist' function addAccountInBlocklist (byAccountId: number, targetAccountId: number) { return sequelizeTypescript.transaction(async t => { - return AccountBlocklistModel.create({ + return AccountBlocklistModel.upsert({ accountId: byAccountId, targetAccountId: targetAccountId }, { transaction: t }) @@ -13,7 +13,7 @@ function addAccountInBlocklist (byAccountId: number, targetAccountId: number) { function addServerInBlocklist (byAccountId: number, targetServerId: number) { return sequelizeTypescript.transaction(async t => { - return ServerBlocklistModel.create({ + return ServerBlocklistModel.upsert({ accountId: byAccountId, targetServerId }, { transaction: t }) diff --git a/server/middlewares/validators/blocklist.ts b/server/middlewares/validators/blocklist.ts index 9dbd5e512..25c054d6b 100644 --- a/server/middlewares/validators/blocklist.ts +++ b/server/middlewares/validators/blocklist.ts @@ -1,4 +1,4 @@ -import { param, body } from 'express-validator/check' +import { body, param } from 'express-validator/check' import * as express from 'express' import { logger } from '../../helpers/logger' import { areValidationErrors } from './utils' @@ -7,6 +7,8 @@ import { UserModel } from '../../models/account/user' import { AccountBlocklistModel } from '../../models/account/account-blocklist' import { isHostValid } from '../../helpers/custom-validators/servers' import { ServerBlocklistModel } from '../../models/server/server-blocklist' +import { ServerModel } from '../../models/server/server' +import { CONFIG } from '../../initializers' const blockAccountByAccountValidator = [ body('accountName').exists().withMessage('Should have an account name with host'), @@ -17,6 +19,17 @@ const blockAccountByAccountValidator = [ if (areValidationErrors(req, res)) return if (!await isAccountNameWithHostExist(req.body.accountName, res)) return + const user = res.locals.oauth.token.User as UserModel + const accountToBlock = res.locals.account + + if (user.Account.id === accountToBlock.id) { + res.status(409) + .send({ error: 'You cannot block yourself.' }) + .end() + + return + } + return next() } ] @@ -38,6 +51,35 @@ const unblockAccountByAccountValidator = [ } ] +const blockServerByAccountValidator = [ + body('host').custom(isHostValid).withMessage('Should have a valid host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking serverGetValidator parameters', { parameters: req.body }) + + if (areValidationErrors(req, res)) return + + const host: string = req.body.host + + if (host === CONFIG.WEBSERVER.HOST) { + return res.status(409) + .send({ error: 'You cannot block your own server.' }) + .end() + } + + const server = await ServerModel.loadByHost(host) + if (!server) { + return res.status(404) + .send({ error: 'Server host not found.' }) + .end() + } + + res.locals.server = server + + return next() + } +] + const unblockServerByAccountValidator = [ param('host').custom(isHostValid).withMessage('Should have an account name with host'), @@ -56,6 +98,7 @@ const unblockServerByAccountValidator = [ // --------------------------------------------------------------------------- export { + blockServerByAccountValidator, blockAccountByAccountValidator, unblockAccountByAccountValidator, unblockServerByAccountValidator diff --git a/server/models/account/account-blocklist.ts b/server/models/account/account-blocklist.ts index bacd122e8..fa2819235 100644 --- a/server/models/account/account-blocklist.ts +++ b/server/models/account/account-blocklist.ts @@ -18,7 +18,7 @@ enum ScopeNames { { model: () => AccountModel, required: true, - as: 'AccountBlocked' + as: 'BlockedAccount' } ] } @@ -67,10 +67,10 @@ export class AccountBlocklistModel extends Model { name: 'targetAccountId', allowNull: false }, - as: 'AccountBlocked', + as: 'BlockedAccount', onDelete: 'CASCADE' }) - AccountBlocked: AccountModel + BlockedAccount: AccountModel static loadByAccountAndTarget (accountId: number, targetAccountId: number) { const query = { @@ -104,7 +104,7 @@ export class AccountBlocklistModel extends Model { toFormattedJSON (): AccountBlock { return { byAccount: this.ByAccount.toFormattedJSON(), - accountBlocked: this.AccountBlocked.toFormattedJSON(), + blockedAccount: this.BlockedAccount.toFormattedJSON(), createdAt: this.createdAt } } diff --git a/server/models/server/server-blocklist.ts b/server/models/server/server-blocklist.ts index 705ed2c6b..450f27152 100644 --- a/server/models/server/server-blocklist.ts +++ b/server/models/server/server-blocklist.ts @@ -72,7 +72,7 @@ export class ServerBlocklistModel extends Model { }, onDelete: 'CASCADE' }) - ServerBlocked: ServerModel + BlockedServer: ServerModel static loadByAccountAndHost (accountId: number, host: string) { const query = { @@ -114,7 +114,7 @@ export class ServerBlocklistModel extends Model { toFormattedJSON (): ServerBlock { return { byAccount: this.ByAccount.toFormattedJSON(), - serverBlocked: this.ServerBlocked.toFormattedJSON(), + blockedServer: this.BlockedServer.toFormattedJSON(), createdAt: this.createdAt } } diff --git a/server/tests/api/check-params/blocklist.ts b/server/tests/api/check-params/blocklist.ts index 8117c46a6..d24d9323f 100644 --- a/server/tests/api/check-params/blocklist.ts +++ b/server/tests/api/check-params/blocklist.ts @@ -85,6 +85,16 @@ describe('Test blocklist API validators', function () { }) }) + it('Should fail to block ourselves', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { accountName: 'root' }, + statusCodeExpected: 409 + }) + }) + it('Should succeed with the correct params', async function () { await makePostBodyRequest({ url: server.url, @@ -170,6 +180,16 @@ describe('Test blocklist API validators', function () { }) }) + it('Should fail with our own server', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { host: 'localhost:9001' }, + statusCodeExpected: 409 + }) + }) + it('Should succeed with the correct params', async function () { await makePostBodyRequest({ url: server.url, diff --git a/server/tests/api/users/account-blocklist.ts b/server/tests/api/users/account-blocklist.ts index 00ad51461..026971331 100644 --- a/server/tests/api/users/account-blocklist.ts +++ b/server/tests/api/users/account-blocklist.ts @@ -183,9 +183,9 @@ describe('Test accounts blocklist', function () { const block = blocks[0] expect(block.byAccount.displayName).to.equal('root') expect(block.byAccount.name).to.equal('root') - expect(block.accountBlocked.displayName).to.equal('user2') - expect(block.accountBlocked.name).to.equal('user2') - expect(block.accountBlocked.host).to.equal('localhost:9002') + expect(block.blockedAccount.displayName).to.equal('user2') + expect(block.blockedAccount.name).to.equal('user2') + expect(block.blockedAccount.host).to.equal('localhost:9002') } { @@ -197,9 +197,9 @@ describe('Test accounts blocklist', function () { const block = blocks[0] expect(block.byAccount.displayName).to.equal('root') expect(block.byAccount.name).to.equal('root') - expect(block.accountBlocked.displayName).to.equal('user1') - expect(block.accountBlocked.name).to.equal('user1') - expect(block.accountBlocked.host).to.equal('localhost:9001') + expect(block.blockedAccount.displayName).to.equal('user1') + expect(block.blockedAccount.name).to.equal('user1') + expect(block.blockedAccount.host).to.equal('localhost:9001') } }) @@ -267,7 +267,7 @@ describe('Test accounts blocklist', function () { const block = blocks[0] expect(block.byAccount.displayName).to.equal('root') expect(block.byAccount.name).to.equal('root') - expect(block.serverBlocked.host).to.equal('localhost:9002') + expect(block.blockedServer.host).to.equal('localhost:9002') }) it('Should unblock the remote server', async function () { diff --git a/shared/models/blocklist/account-block.model.ts b/shared/models/blocklist/account-block.model.ts index d6f8840c5..a942ed614 100644 --- a/shared/models/blocklist/account-block.model.ts +++ b/shared/models/blocklist/account-block.model.ts @@ -2,6 +2,6 @@ import { Account } from '../actors' export interface AccountBlock { byAccount: Account - accountBlocked: Account + blockedAccount: Account createdAt: Date | string } diff --git a/shared/models/blocklist/server-block.model.ts b/shared/models/blocklist/server-block.model.ts index efba672bd..a8b8af0b7 100644 --- a/shared/models/blocklist/server-block.model.ts +++ b/shared/models/blocklist/server-block.model.ts @@ -2,7 +2,7 @@ import { Account } from '../actors' export interface ServerBlock { byAccount: Account - serverBlocked: { + blockedServer: { host: string } createdAt: Date | string -- cgit v1.2.3 From b44164bb567fe7c9f65f1ac2908d44990a8ccc8e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 Oct 2018 13:03:04 +0200 Subject: Add ability to mute a user/instance by server in server api --- server/controllers/api/server/index.ts | 2 + server/controllers/api/server/server-blocklist.ts | 132 ++++++ server/controllers/api/users/my-blocklist.ts | 8 +- server/middlewares/validators/blocklist.ts | 45 +- server/models/utils.ts | 2 - server/tests/api/check-params/blocklist.ts | 256 ++++++++++- server/tests/api/users/account-blocklist.ts | 294 ------------- server/tests/api/users/blocklist.ts | 500 ++++++++++++++++++++++ server/tests/api/users/index.ts | 1 + server/tests/utils/users/blocklist.ts | 97 ++++- shared/models/users/user-right.enum.ts | 3 + shared/models/users/user-role.ts | 4 +- 12 files changed, 1035 insertions(+), 309 deletions(-) create mode 100644 server/controllers/api/server/server-blocklist.ts delete mode 100644 server/tests/api/users/account-blocklist.ts create mode 100644 server/tests/api/users/blocklist.ts diff --git a/server/controllers/api/server/index.ts b/server/controllers/api/server/index.ts index 43bca2c10..c08192a8c 100644 --- a/server/controllers/api/server/index.ts +++ b/server/controllers/api/server/index.ts @@ -2,12 +2,14 @@ import * as express from 'express' import { serverFollowsRouter } from './follows' import { statsRouter } from './stats' import { serverRedundancyRouter } from './redundancy' +import { serverBlocklistRouter } from './server-blocklist' const serverRouter = express.Router() serverRouter.use('/', serverFollowsRouter) serverRouter.use('/', serverRedundancyRouter) serverRouter.use('/', statsRouter) +serverRouter.use('/', serverBlocklistRouter) // --------------------------------------------------------------------------- diff --git a/server/controllers/api/server/server-blocklist.ts b/server/controllers/api/server/server-blocklist.ts new file mode 100644 index 000000000..3cb3a96e2 --- /dev/null +++ b/server/controllers/api/server/server-blocklist.ts @@ -0,0 +1,132 @@ +import * as express from 'express' +import 'multer' +import { getFormattedObjects, getServerActor } from '../../../helpers/utils' +import { + asyncMiddleware, + asyncRetryTransactionMiddleware, + authenticate, + ensureUserHasRight, + paginationValidator, + setDefaultPagination, + setDefaultSort +} from '../../../middlewares' +import { + accountsBlocklistSortValidator, + blockAccountValidator, + blockServerValidator, + serversBlocklistSortValidator, + unblockAccountByServerValidator, + unblockServerByServerValidator +} from '../../../middlewares/validators' +import { AccountModel } from '../../../models/account/account' +import { AccountBlocklistModel } from '../../../models/account/account-blocklist' +import { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist, removeServerFromBlocklist } from '../../../lib/blocklist' +import { ServerBlocklistModel } from '../../../models/server/server-blocklist' +import { ServerModel } from '../../../models/server/server' +import { UserRight } from '../../../../shared/models/users' + +const serverBlocklistRouter = express.Router() + +serverBlocklistRouter.get('/blocklist/accounts', + authenticate, + ensureUserHasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST), + paginationValidator, + accountsBlocklistSortValidator, + setDefaultSort, + setDefaultPagination, + asyncMiddleware(listBlockedAccounts) +) + +serverBlocklistRouter.post('/blocklist/accounts', + authenticate, + ensureUserHasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST), + asyncMiddleware(blockAccountValidator), + asyncRetryTransactionMiddleware(blockAccount) +) + +serverBlocklistRouter.delete('/blocklist/accounts/:accountName', + authenticate, + ensureUserHasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST), + asyncMiddleware(unblockAccountByServerValidator), + asyncRetryTransactionMiddleware(unblockAccount) +) + +serverBlocklistRouter.get('/blocklist/servers', + authenticate, + ensureUserHasRight(UserRight.MANAGE_SERVERS_BLOCKLIST), + paginationValidator, + serversBlocklistSortValidator, + setDefaultSort, + setDefaultPagination, + asyncMiddleware(listBlockedServers) +) + +serverBlocklistRouter.post('/blocklist/servers', + authenticate, + ensureUserHasRight(UserRight.MANAGE_SERVERS_BLOCKLIST), + asyncMiddleware(blockServerValidator), + asyncRetryTransactionMiddleware(blockServer) +) + +serverBlocklistRouter.delete('/blocklist/servers/:host', + authenticate, + ensureUserHasRight(UserRight.MANAGE_SERVERS_BLOCKLIST), + asyncMiddleware(unblockServerByServerValidator), + asyncRetryTransactionMiddleware(unblockServer) +) + +export { + serverBlocklistRouter +} + +// --------------------------------------------------------------------------- + +async function listBlockedAccounts (req: express.Request, res: express.Response) { + const serverActor = await getServerActor() + + const resultList = await AccountBlocklistModel.listForApi(serverActor.Account.id, req.query.start, req.query.count, req.query.sort) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) +} + +async function blockAccount (req: express.Request, res: express.Response) { + const serverActor = await getServerActor() + const accountToBlock: AccountModel = res.locals.account + + await addAccountInBlocklist(serverActor.Account.id, accountToBlock.id) + + return res.status(204).end() +} + +async function unblockAccount (req: express.Request, res: express.Response) { + const accountBlock: AccountBlocklistModel = res.locals.accountBlock + + await removeAccountFromBlocklist(accountBlock) + + return res.status(204).end() +} + +async function listBlockedServers (req: express.Request, res: express.Response) { + const serverActor = await getServerActor() + + const resultList = await ServerBlocklistModel.listForApi(serverActor.Account.id, req.query.start, req.query.count, req.query.sort) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) +} + +async function blockServer (req: express.Request, res: express.Response) { + const serverActor = await getServerActor() + const serverToBlock: ServerModel = res.locals.server + + await addServerInBlocklist(serverActor.Account.id, serverToBlock.id) + + return res.status(204).end() +} + +async function unblockServer (req: express.Request, res: express.Response) { + const serverBlock: ServerBlocklistModel = res.locals.serverBlock + + await removeServerFromBlocklist(serverBlock) + + return res.status(204).end() +} diff --git a/server/controllers/api/users/my-blocklist.ts b/server/controllers/api/users/my-blocklist.ts index 95a4105ec..9575eab46 100644 --- a/server/controllers/api/users/my-blocklist.ts +++ b/server/controllers/api/users/my-blocklist.ts @@ -12,8 +12,8 @@ import { } from '../../../middlewares' import { accountsBlocklistSortValidator, - blockAccountByAccountValidator, - blockServerByAccountValidator, + blockAccountValidator, + blockServerValidator, serversBlocklistSortValidator, unblockServerByAccountValidator } from '../../../middlewares/validators' @@ -37,7 +37,7 @@ myBlocklistRouter.get('/me/blocklist/accounts', myBlocklistRouter.post('/me/blocklist/accounts', authenticate, - asyncMiddleware(blockAccountByAccountValidator), + asyncMiddleware(blockAccountValidator), asyncRetryTransactionMiddleware(blockAccount) ) @@ -58,7 +58,7 @@ myBlocklistRouter.get('/me/blocklist/servers', myBlocklistRouter.post('/me/blocklist/servers', authenticate, - asyncMiddleware(blockServerByAccountValidator), + asyncMiddleware(blockServerValidator), asyncRetryTransactionMiddleware(blockServer) ) diff --git a/server/middlewares/validators/blocklist.ts b/server/middlewares/validators/blocklist.ts index 25c054d6b..109276c63 100644 --- a/server/middlewares/validators/blocklist.ts +++ b/server/middlewares/validators/blocklist.ts @@ -9,8 +9,9 @@ import { isHostValid } from '../../helpers/custom-validators/servers' import { ServerBlocklistModel } from '../../models/server/server-blocklist' import { ServerModel } from '../../models/server/server' import { CONFIG } from '../../initializers' +import { getServerActor } from '../../helpers/utils' -const blockAccountByAccountValidator = [ +const blockAccountValidator = [ body('accountName').exists().withMessage('Should have an account name with host'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { @@ -51,7 +52,24 @@ const unblockAccountByAccountValidator = [ } ] -const blockServerByAccountValidator = [ +const unblockAccountByServerValidator = [ + param('accountName').exists().withMessage('Should have an account name with host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking unblockAccountByServerValidator parameters', { parameters: req.params }) + + if (areValidationErrors(req, res)) return + if (!await isAccountNameWithHostExist(req.params.accountName, res)) return + + const serverActor = await getServerActor() + const targetAccount = res.locals.account + if (!await isUnblockAccountExists(serverActor.Account.id, targetAccount.id, res)) return + + return next() + } +] + +const blockServerValidator = [ body('host').custom(isHostValid).withMessage('Should have a valid host'), async (req: express.Request, res: express.Response, next: express.NextFunction) => { @@ -95,13 +113,30 @@ const unblockServerByAccountValidator = [ } ] +const unblockServerByServerValidator = [ + param('host').custom(isHostValid).withMessage('Should have an account name with host'), + + async (req: express.Request, res: express.Response, next: express.NextFunction) => { + logger.debug('Checking unblockServerByServerValidator parameters', { parameters: req.params }) + + if (areValidationErrors(req, res)) return + + const serverActor = await getServerActor() + if (!await isUnblockServerExists(serverActor.Account.id, req.params.host, res)) return + + return next() + } +] + // --------------------------------------------------------------------------- export { - blockServerByAccountValidator, - blockAccountByAccountValidator, + blockServerValidator, + blockAccountValidator, unblockAccountByAccountValidator, - unblockServerByAccountValidator + unblockServerByAccountValidator, + unblockAccountByServerValidator, + unblockServerByServerValidator } // --------------------------------------------------------------------------- diff --git a/server/models/utils.ts b/server/models/utils.ts index 50c865e75..60b0906e8 100644 --- a/server/models/utils.ts +++ b/server/models/utils.ts @@ -72,8 +72,6 @@ function buildBlockedAccountSQL (serverAccountId: number, userAccountId?: number const query = 'SELECT "targetAccountId" AS "id" FROM "accountBlocklist" WHERE "accountId" IN (' + blockerIdsString + ')' + ' UNION ALL ' + - // 'SELECT "accountId" FROM "accountBlocklist" WHERE "targetAccountId" = user.account.id - // UNION ALL 'SELECT "account"."id" AS "id" FROM account INNER JOIN "actor" ON account."actorId" = actor.id ' + 'INNER JOIN "serverBlocklist" ON "actor"."serverId" = "serverBlocklist"."targetServerId" ' + 'WHERE "serverBlocklist"."accountId" IN (' + blockerIdsString + ')' diff --git a/server/tests/api/check-params/blocklist.ts b/server/tests/api/check-params/blocklist.ts index d24d9323f..c745ac975 100644 --- a/server/tests/api/check-params/blocklist.ts +++ b/server/tests/api/check-params/blocklist.ts @@ -12,13 +12,14 @@ import { makeGetRequest, makePostBodyRequest, ServerInfo, - setAccessTokensToServers + setAccessTokensToServers, userLogin } from '../../utils' import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '../../utils/requests/check-api-params' describe('Test blocklist API validators', function () { let servers: ServerInfo[] let server: ServerInfo + let userAccessToken: string before(async function () { this.timeout(60000) @@ -33,15 +34,17 @@ describe('Test blocklist API validators', function () { const user = { username: 'user1', password: 'password' } await createUser(server.url, server.accessToken, user.username, user.password) + userAccessToken = await userLogin(server, user) + await doubleFollow(servers[0], servers[1]) }) // --------------------------------------------------------------- describe('When managing user blocklist', function () { - const path = '/api/v1/users/me/blocklist/accounts' describe('When managing user accounts blocklist', function () { + const path = '/api/v1/users/me/blocklist/accounts' describe('When listing blocked accounts', function () { it('Should fail with an unauthenticated user', async function () { @@ -231,6 +234,255 @@ describe('Test blocklist API validators', function () { }) }) + describe('When managing server blocklist', function () { + + describe('When managing server accounts blocklist', function () { + const path = '/api/v1/server/blocklist/accounts' + + describe('When listing blocked accounts', function () { + it('Should fail with an unauthenticated user', async function () { + await makeGetRequest({ + url: server.url, + path, + statusCodeExpected: 401 + }) + }) + + it('Should fail with a user without the appropriate rights', async function () { + await makeGetRequest({ + url: server.url, + token: userAccessToken, + path, + statusCodeExpected: 403 + }) + }) + + it('Should fail with a bad start pagination', async function () { + await checkBadStartPagination(server.url, path, server.accessToken) + }) + + it('Should fail with a bad count pagination', async function () { + await checkBadCountPagination(server.url, path, server.accessToken) + }) + + it('Should fail with an incorrect sort', async function () { + await checkBadSortPagination(server.url, path, server.accessToken) + }) + }) + + describe('When blocking an account', function () { + it('Should fail with an unauthenticated user', async function () { + await makePostBodyRequest({ + url: server.url, + path, + fields: { accountName: 'user1' }, + statusCodeExpected: 401 + }) + }) + + it('Should fail with a user without the appropriate rights', async function () { + await makePostBodyRequest({ + url: server.url, + token: userAccessToken, + path, + fields: { accountName: 'user1' }, + statusCodeExpected: 403 + }) + }) + + it('Should fail with an unknown account', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { accountName: 'user2' }, + statusCodeExpected: 404 + }) + }) + + it('Should fail to block ourselves', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { accountName: 'root' }, + statusCodeExpected: 409 + }) + }) + + it('Should succeed with the correct params', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { accountName: 'user1' }, + statusCodeExpected: 204 + }) + }) + }) + + describe('When unblocking an account', function () { + it('Should fail with an unauthenticated user', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user1', + statusCodeExpected: 401 + }) + }) + + it('Should fail with a user without the appropriate rights', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user1', + token: userAccessToken, + statusCodeExpected: 403 + }) + }) + + it('Should fail with an unknown account block', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user2', + token: server.accessToken, + statusCodeExpected: 404 + }) + }) + + it('Should succeed with the correct params', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/user1', + token: server.accessToken, + statusCodeExpected: 204 + }) + }) + }) + }) + + describe('When managing server servers blocklist', function () { + const path = '/api/v1/server/blocklist/servers' + + describe('When listing blocked servers', function () { + it('Should fail with an unauthenticated user', async function () { + await makeGetRequest({ + url: server.url, + path, + statusCodeExpected: 401 + }) + }) + + it('Should fail with a user without the appropriate rights', async function () { + await makeGetRequest({ + url: server.url, + token: userAccessToken, + path, + statusCodeExpected: 403 + }) + }) + + it('Should fail with a bad start pagination', async function () { + await checkBadStartPagination(server.url, path, server.accessToken) + }) + + it('Should fail with a bad count pagination', async function () { + await checkBadCountPagination(server.url, path, server.accessToken) + }) + + it('Should fail with an incorrect sort', async function () { + await checkBadSortPagination(server.url, path, server.accessToken) + }) + }) + + describe('When blocking a server', function () { + it('Should fail with an unauthenticated user', async function () { + await makePostBodyRequest({ + url: server.url, + path, + fields: { host: 'localhost:9002' }, + statusCodeExpected: 401 + }) + }) + + it('Should fail with a user without the appropriate rights', async function () { + await makePostBodyRequest({ + url: server.url, + token: userAccessToken, + path, + fields: { host: 'localhost:9002' }, + statusCodeExpected: 403 + }) + }) + + it('Should fail with an unknown server', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { host: 'localhost:9003' }, + statusCodeExpected: 404 + }) + }) + + it('Should fail with our own server', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { host: 'localhost:9001' }, + statusCodeExpected: 409 + }) + }) + + it('Should succeed with the correct params', async function () { + await makePostBodyRequest({ + url: server.url, + token: server.accessToken, + path, + fields: { host: 'localhost:9002' }, + statusCodeExpected: 204 + }) + }) + }) + + describe('When unblocking a server', function () { + it('Should fail with an unauthenticated user', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9002', + statusCodeExpected: 401 + }) + }) + + it('Should fail with a user without the appropriate rights', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9002', + token: userAccessToken, + statusCodeExpected: 403 + }) + }) + + it('Should fail with an unknown server block', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9003', + token: server.accessToken, + statusCodeExpected: 404 + }) + }) + + it('Should succeed with the correct params', async function () { + await makeDeleteRequest({ + url: server.url, + path: path + '/localhost:9002', + token: server.accessToken, + statusCodeExpected: 204 + }) + }) + }) + }) + }) + after(async function () { killallServers(servers) diff --git a/server/tests/api/users/account-blocklist.ts b/server/tests/api/users/account-blocklist.ts deleted file mode 100644 index 026971331..000000000 --- a/server/tests/api/users/account-blocklist.ts +++ /dev/null @@ -1,294 +0,0 @@ -/* tslint:disable:no-unused-expression */ - -import * as chai from 'chai' -import 'mocha' -import { AccountBlock, ServerBlock, Video } from '../../../../shared/index' -import { - createUser, - doubleFollow, - flushAndRunMultipleServers, - flushTests, - killallServers, - ServerInfo, - uploadVideo, - userLogin -} from '../../utils/index' -import { setAccessTokensToServers } from '../../utils/users/login' -import { getVideosListWithToken } from '../../utils/videos/videos' -import { - addVideoCommentReply, - addVideoCommentThread, - getVideoCommentThreads, - getVideoThreadComments -} from '../../utils/videos/video-comments' -import { waitJobs } from '../../utils/server/jobs' -import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' -import { - addAccountToAccountBlocklist, - addServerToAccountBlocklist, - getAccountBlocklistByAccount, getServerBlocklistByAccount, - removeAccountFromAccountBlocklist, - removeServerFromAccountBlocklist -} from '../../utils/users/blocklist' - -const expect = chai.expect - -async function checkAllVideos (url: string, token: string) { - const res = await getVideosListWithToken(url, token) - - expect(res.body.data).to.have.lengthOf(4) -} - -async function checkAllComments (url: string, token: string, videoUUID: string) { - const resThreads = await getVideoCommentThreads(url, videoUUID, 0, 5, '-createdAt', token) - - const threads: VideoComment[] = resThreads.body.data - expect(threads).to.have.lengthOf(2) - - for (const thread of threads) { - const res = await getVideoThreadComments(url, videoUUID, thread.id, token) - - const tree: VideoCommentThreadTree = res.body - expect(tree.children).to.have.lengthOf(1) - } -} - -describe('Test accounts blocklist', function () { - let servers: ServerInfo[] - let videoUUID1: string - let videoUUID2: string - let userToken1: string - let userToken2: string - - before(async function () { - this.timeout(60000) - - await flushTests() - - servers = await flushAndRunMultipleServers(2) - await setAccessTokensToServers(servers) - - { - const user = { username: 'user1', password: 'password' } - await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) - - userToken1 = await userLogin(servers[0], user) - await uploadVideo(servers[0].url, userToken1, { name: 'video user 1' }) - } - - { - const user = { username: 'user2', password: 'password' } - await createUser(servers[1].url, servers[1].accessToken, user.username, user.password) - - userToken2 = await userLogin(servers[1], user) - await uploadVideo(servers[1].url, userToken2, { name: 'video user 2' }) - } - - { - const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video server 1' }) - videoUUID1 = res.body.video.uuid - } - - { - const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video server 2' }) - videoUUID2 = res.body.video.uuid - } - - await doubleFollow(servers[0], servers[1]) - - { - const resComment = await addVideoCommentThread(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, 'comment root 1') - const resReply = await addVideoCommentReply(servers[ 0 ].url, userToken1, videoUUID1, resComment.body.comment.id, 'comment user 1') - await addVideoCommentReply(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, resReply.body.comment.id, 'comment root 1') - } - - { - const resComment = await addVideoCommentThread(servers[ 0 ].url, userToken1, videoUUID1, 'comment user 1') - await addVideoCommentReply(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, resComment.body.comment.id, 'comment root 1') - } - - await waitJobs(servers) - }) - - describe('When managing account blocklist', function () { - it('Should list all videos', function () { - return checkAllVideos(servers[0].url, servers[0].accessToken) - }) - - it('Should list the comments', function () { - return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) - }) - - it('Should block a remote account', async function () { - await addAccountToAccountBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:9002') - }) - - it('Should hide its videos', async function () { - const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) - - const videos: Video[] = res.body.data - expect(videos).to.have.lengthOf(3) - - const v = videos.find(v => v.name === 'video user 2') - expect(v).to.be.undefined - }) - - it('Should block a local account', async function () { - await addAccountToAccountBlocklist(servers[0].url, servers[0].accessToken, 'user1') - }) - - it('Should hide its videos', async function () { - const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) - - const videos: Video[] = res.body.data - expect(videos).to.have.lengthOf(2) - - const v = videos.find(v => v.name === 'video user 1') - expect(v).to.be.undefined - }) - - it('Should hide its comments', async function () { - const resThreads = await getVideoCommentThreads(servers[0].url, videoUUID1, 0, 5, '-createdAt', servers[0].accessToken) - - const threads: VideoComment[] = resThreads.body.data - expect(threads).to.have.lengthOf(1) - expect(threads[0].totalReplies).to.equal(0) - - const t = threads.find(t => t.text === 'comment user 1') - expect(t).to.be.undefined - - for (const thread of threads) { - const res = await getVideoThreadComments(servers[0].url, videoUUID1, thread.id, servers[0].accessToken) - - const tree: VideoCommentThreadTree = res.body - expect(tree.children).to.have.lengthOf(0) - } - }) - - it('Should list all the videos with another user', async function () { - return checkAllVideos(servers[0].url, userToken1) - }) - - it('Should list all the comments with another user', async function () { - return checkAllComments(servers[0].url, userToken1, videoUUID1) - }) - - it('Should list blocked accounts', async function () { - { - const res = await getAccountBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') - const blocks: AccountBlock[] = res.body.data - - expect(res.body.total).to.equal(2) - - const block = blocks[0] - expect(block.byAccount.displayName).to.equal('root') - expect(block.byAccount.name).to.equal('root') - expect(block.blockedAccount.displayName).to.equal('user2') - expect(block.blockedAccount.name).to.equal('user2') - expect(block.blockedAccount.host).to.equal('localhost:9002') - } - - { - const res = await getAccountBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 1, 2, 'createdAt') - const blocks: AccountBlock[] = res.body.data - - expect(res.body.total).to.equal(2) - - const block = blocks[0] - expect(block.byAccount.displayName).to.equal('root') - expect(block.byAccount.name).to.equal('root') - expect(block.blockedAccount.displayName).to.equal('user1') - expect(block.blockedAccount.name).to.equal('user1') - expect(block.blockedAccount.host).to.equal('localhost:9001') - } - }) - - it('Should unblock the remote account', async function () { - await removeAccountFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:9002') - }) - - it('Should display its videos', async function () { - const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) - - const videos: Video[] = res.body.data - expect(videos).to.have.lengthOf(3) - - const v = videos.find(v => v.name === 'video user 2') - expect(v).not.to.be.undefined - }) - - it('Should unblock the local account', async function () { - await removeAccountFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'user1') - }) - - it('Should display its comments', function () { - return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) - }) - }) - - describe('When managing server blocklist', function () { - it('Should list all videos', function () { - return checkAllVideos(servers[0].url, servers[0].accessToken) - }) - - it('Should list the comments', function () { - return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) - }) - - it('Should block a remote server', async function () { - await addServerToAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:9002') - }) - - it('Should hide its videos', async function () { - const res = await getVideosListWithToken(servers[0].url, servers[0].accessToken) - - const videos: Video[] = res.body.data - expect(videos).to.have.lengthOf(2) - - const v1 = videos.find(v => v.name === 'video user 2') - const v2 = videos.find(v => v.name === 'video server 2') - - expect(v1).to.be.undefined - expect(v2).to.be.undefined - }) - - it('Should list all the videos with another user', async function () { - return checkAllVideos(servers[0].url, userToken1) - }) - - it('Should hide its comments') - - it('Should list blocked servers', async function () { - const res = await getServerBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') - const blocks: ServerBlock[] = res.body.data - - expect(res.body.total).to.equal(1) - - const block = blocks[0] - expect(block.byAccount.displayName).to.equal('root') - expect(block.byAccount.name).to.equal('root') - expect(block.blockedServer.host).to.equal('localhost:9002') - }) - - it('Should unblock the remote server', async function () { - await removeServerFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:9002') - }) - - it('Should display its videos', function () { - return checkAllVideos(servers[0].url, servers[0].accessToken) - }) - - it('Should display its comments', function () { - return checkAllComments(servers[0].url, servers[0].accessToken, videoUUID1) - }) - }) - - after(async function () { - killallServers(servers) - - // Keep the logs if the test failed - if (this[ 'ok' ]) { - await flushTests() - } - }) -}) diff --git a/server/tests/api/users/blocklist.ts b/server/tests/api/users/blocklist.ts new file mode 100644 index 000000000..99fe04b8c --- /dev/null +++ b/server/tests/api/users/blocklist.ts @@ -0,0 +1,500 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { AccountBlock, ServerBlock, Video } from '../../../../shared/index' +import { + createUser, + doubleFollow, + flushAndRunMultipleServers, + flushTests, + killallServers, + ServerInfo, + uploadVideo, + userLogin +} from '../../utils/index' +import { setAccessTokensToServers } from '../../utils/users/login' +import { getVideosListWithToken } from '../../utils/videos/videos' +import { + addVideoCommentReply, + addVideoCommentThread, + getVideoCommentThreads, + getVideoThreadComments +} from '../../utils/videos/video-comments' +import { waitJobs } from '../../utils/server/jobs' +import { VideoComment, VideoCommentThreadTree } from '../../../../shared/models/videos/video-comment.model' +import { + addAccountToAccountBlocklist, + addAccountToServerBlocklist, + addServerToAccountBlocklist, + addServerToServerBlocklist, + getAccountBlocklistByAccount, + getAccountBlocklistByServer, + getServerBlocklistByAccount, + getServerBlocklistByServer, + removeAccountFromAccountBlocklist, + removeAccountFromServerBlocklist, + removeServerFromAccountBlocklist, + removeServerFromServerBlocklist +} from '../../utils/users/blocklist' + +const expect = chai.expect + +async function checkAllVideos (url: string, token: string) { + const res = await getVideosListWithToken(url, token) + + expect(res.body.data).to.have.lengthOf(4) +} + +async function checkAllComments (url: string, token: string, videoUUID: string) { + const resThreads = await getVideoCommentThreads(url, videoUUID, 0, 5, '-createdAt', token) + + const threads: VideoComment[] = resThreads.body.data + expect(threads).to.have.lengthOf(2) + + for (const thread of threads) { + const res = await getVideoThreadComments(url, videoUUID, thread.id, token) + + const tree: VideoCommentThreadTree = res.body + expect(tree.children).to.have.lengthOf(1) + } +} + +describe('Test blocklist', function () { + let servers: ServerInfo[] + let videoUUID1: string + let videoUUID2: string + let userToken1: string + let userModeratorToken: string + let userToken2: string + + before(async function () { + this.timeout(60000) + + await flushTests() + + servers = await flushAndRunMultipleServers(2) + await setAccessTokensToServers(servers) + + { + const user = { username: 'user1', password: 'password' } + await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) + + userToken1 = await userLogin(servers[0], user) + await uploadVideo(servers[0].url, userToken1, { name: 'video user 1' }) + } + + { + const user = { username: 'moderator', password: 'password' } + await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) + + userModeratorToken = await userLogin(servers[0], user) + } + + { + const user = { username: 'user2', password: 'password' } + await createUser(servers[1].url, servers[1].accessToken, user.username, user.password) + + userToken2 = await userLogin(servers[1], user) + await uploadVideo(servers[1].url, userToken2, { name: 'video user 2' }) + } + + { + const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video server 1' }) + videoUUID1 = res.body.video.uuid + } + + { + const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video server 2' }) + videoUUID2 = res.body.video.uuid + } + + await doubleFollow(servers[0], servers[1]) + + { + const resComment = await addVideoCommentThread(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, 'comment root 1') + const resReply = await addVideoCommentReply(servers[ 0 ].url, userToken1, videoUUID1, resComment.body.comment.id, 'comment user 1') + await addVideoCommentReply(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, resReply.body.comment.id, 'comment root 1') + } + + { + const resComment = await addVideoCommentThread(servers[ 0 ].url, userToken1, videoUUID1, 'comment user 1') + await addVideoCommentReply(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1, resComment.body.comment.id, 'comment root 1') + } + + await waitJobs(servers) + }) + + describe('User blocklist', function () { + + describe('When managing account blocklist', function () { + it('Should list all videos', function () { + return checkAllVideos(servers[ 0 ].url, servers[ 0 ].accessToken) + }) + + it('Should list the comments', function () { + return checkAllComments(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1) + }) + + it('Should block a remote account', async function () { + await addAccountToAccountBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user2@localhost:9002') + }) + + it('Should hide its videos', async function () { + const res = await getVideosListWithToken(servers[ 0 ].url, servers[ 0 ].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(3) + + const v = videos.find(v => v.name === 'video user 2') + expect(v).to.be.undefined + }) + + it('Should block a local account', async function () { + await addAccountToAccountBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user1') + }) + + it('Should hide its videos', async function () { + const res = await getVideosListWithToken(servers[ 0 ].url, servers[ 0 ].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) + + const v = videos.find(v => v.name === 'video user 1') + expect(v).to.be.undefined + }) + + it('Should hide its comments', async function () { + const resThreads = await getVideoCommentThreads(servers[ 0 ].url, videoUUID1, 0, 5, '-createdAt', servers[ 0 ].accessToken) + + const threads: VideoComment[] = resThreads.body.data + expect(threads).to.have.lengthOf(1) + expect(threads[ 0 ].totalReplies).to.equal(0) + + const t = threads.find(t => t.text === 'comment user 1') + expect(t).to.be.undefined + + for (const thread of threads) { + const res = await getVideoThreadComments(servers[ 0 ].url, videoUUID1, thread.id, servers[ 0 ].accessToken) + + const tree: VideoCommentThreadTree = res.body + expect(tree.children).to.have.lengthOf(0) + } + }) + + it('Should list all the videos with another user', async function () { + return checkAllVideos(servers[ 0 ].url, userToken1) + }) + + it('Should list all the comments with another user', async function () { + return checkAllComments(servers[ 0 ].url, userToken1, videoUUID1) + }) + + it('Should list blocked accounts', async function () { + { + const res = await getAccountBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') + const blocks: AccountBlock[] = res.body.data + + expect(res.body.total).to.equal(2) + + const block = blocks[ 0 ] + expect(block.byAccount.displayName).to.equal('root') + expect(block.byAccount.name).to.equal('root') + expect(block.blockedAccount.displayName).to.equal('user2') + expect(block.blockedAccount.name).to.equal('user2') + expect(block.blockedAccount.host).to.equal('localhost:9002') + } + + { + const res = await getAccountBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 1, 2, 'createdAt') + const blocks: AccountBlock[] = res.body.data + + expect(res.body.total).to.equal(2) + + const block = blocks[ 0 ] + expect(block.byAccount.displayName).to.equal('root') + expect(block.byAccount.name).to.equal('root') + expect(block.blockedAccount.displayName).to.equal('user1') + expect(block.blockedAccount.name).to.equal('user1') + expect(block.blockedAccount.host).to.equal('localhost:9001') + } + }) + + it('Should unblock the remote account', async function () { + await removeAccountFromAccountBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user2@localhost:9002') + }) + + it('Should display its videos', async function () { + const res = await getVideosListWithToken(servers[ 0 ].url, servers[ 0 ].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(3) + + const v = videos.find(v => v.name === 'video user 2') + expect(v).not.to.be.undefined + }) + + it('Should unblock the local account', async function () { + await removeAccountFromAccountBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user1') + }) + + it('Should display its comments', function () { + return checkAllComments(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1) + }) + }) + + describe('When managing server blocklist', function () { + it('Should list all videos', function () { + return checkAllVideos(servers[ 0 ].url, servers[ 0 ].accessToken) + }) + + it('Should list the comments', function () { + return checkAllComments(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1) + }) + + it('Should block a remote server', async function () { + await addServerToAccountBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'localhost:9002') + }) + + it('Should hide its videos', async function () { + const res = await getVideosListWithToken(servers[ 0 ].url, servers[ 0 ].accessToken) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) + + const v1 = videos.find(v => v.name === 'video user 2') + const v2 = videos.find(v => v.name === 'video server 2') + + expect(v1).to.be.undefined + expect(v2).to.be.undefined + }) + + it('Should list all the videos with another user', async function () { + return checkAllVideos(servers[ 0 ].url, userToken1) + }) + + it('Should hide its comments') + + it('Should list blocked servers', async function () { + const res = await getServerBlocklistByAccount(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') + const blocks: ServerBlock[] = res.body.data + + expect(res.body.total).to.equal(1) + + const block = blocks[ 0 ] + expect(block.byAccount.displayName).to.equal('root') + expect(block.byAccount.name).to.equal('root') + expect(block.blockedServer.host).to.equal('localhost:9002') + }) + + it('Should unblock the remote server', async function () { + await removeServerFromAccountBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'localhost:9002') + }) + + it('Should display its videos', function () { + return checkAllVideos(servers[ 0 ].url, servers[ 0 ].accessToken) + }) + + it('Should display its comments', function () { + return checkAllComments(servers[ 0 ].url, servers[ 0 ].accessToken, videoUUID1) + }) + }) + }) + + describe('Server blocklist', function () { + + describe('When managing account blocklist', function () { + it('Should list all videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllVideos(servers[ 0 ].url, token) + } + }) + + it('Should list the comments', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllComments(servers[ 0 ].url, token, videoUUID1) + } + }) + + it('Should block a remote account', async function () { + await addAccountToServerBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user2@localhost:9002') + }) + + it('Should hide its videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + const res = await getVideosListWithToken(servers[ 0 ].url, token) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(3) + + const v = videos.find(v => v.name === 'video user 2') + expect(v).to.be.undefined + } + }) + + it('Should block a local account', async function () { + await addAccountToServerBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user1') + }) + + it('Should hide its videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + const res = await getVideosListWithToken(servers[ 0 ].url, token) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) + + const v = videos.find(v => v.name === 'video user 1') + expect(v).to.be.undefined + } + }) + + it('Should hide its comments', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + const resThreads = await getVideoCommentThreads(servers[ 0 ].url, videoUUID1, 0, 5, '-createdAt', token) + + const threads: VideoComment[] = resThreads.body.data + expect(threads).to.have.lengthOf(1) + expect(threads[ 0 ].totalReplies).to.equal(0) + + const t = threads.find(t => t.text === 'comment user 1') + expect(t).to.be.undefined + + for (const thread of threads) { + const res = await getVideoThreadComments(servers[ 0 ].url, videoUUID1, thread.id, token) + + const tree: VideoCommentThreadTree = res.body + expect(tree.children).to.have.lengthOf(0) + } + } + }) + + it('Should list blocked accounts', async function () { + { + const res = await getAccountBlocklistByServer(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') + const blocks: AccountBlock[] = res.body.data + + expect(res.body.total).to.equal(2) + + const block = blocks[ 0 ] + expect(block.byAccount.displayName).to.equal('peertube') + expect(block.byAccount.name).to.equal('peertube') + expect(block.blockedAccount.displayName).to.equal('user2') + expect(block.blockedAccount.name).to.equal('user2') + expect(block.blockedAccount.host).to.equal('localhost:9002') + } + + { + const res = await getAccountBlocklistByServer(servers[ 0 ].url, servers[ 0 ].accessToken, 1, 2, 'createdAt') + const blocks: AccountBlock[] = res.body.data + + expect(res.body.total).to.equal(2) + + const block = blocks[ 0 ] + expect(block.byAccount.displayName).to.equal('peertube') + expect(block.byAccount.name).to.equal('peertube') + expect(block.blockedAccount.displayName).to.equal('user1') + expect(block.blockedAccount.name).to.equal('user1') + expect(block.blockedAccount.host).to.equal('localhost:9001') + } + }) + + it('Should unblock the remote account', async function () { + await removeAccountFromServerBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user2@localhost:9002') + }) + + it('Should display its videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + const res = await getVideosListWithToken(servers[ 0 ].url, token) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(3) + + const v = videos.find(v => v.name === 'video user 2') + expect(v).not.to.be.undefined + } + }) + + it('Should unblock the local account', async function () { + await removeAccountFromServerBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'user1') + }) + + it('Should display its comments', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllComments(servers[ 0 ].url, token, videoUUID1) + } + }) + }) + + describe('When managing server blocklist', function () { + it('Should list all videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllVideos(servers[ 0 ].url, token) + } + }) + + it('Should list the comments', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllComments(servers[ 0 ].url, token, videoUUID1) + } + }) + + it('Should block a remote server', async function () { + await addServerToServerBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'localhost:9002') + }) + + it('Should hide its videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + const res = await getVideosListWithToken(servers[ 0 ].url, token) + + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) + + const v1 = videos.find(v => v.name === 'video user 2') + const v2 = videos.find(v => v.name === 'video server 2') + + expect(v1).to.be.undefined + expect(v2).to.be.undefined + } + }) + + it('Should hide its comments') + + it('Should list blocked servers', async function () { + const res = await getServerBlocklistByServer(servers[ 0 ].url, servers[ 0 ].accessToken, 0, 1, 'createdAt') + const blocks: ServerBlock[] = res.body.data + + expect(res.body.total).to.equal(1) + + const block = blocks[ 0 ] + expect(block.byAccount.displayName).to.equal('peertube') + expect(block.byAccount.name).to.equal('peertube') + expect(block.blockedServer.host).to.equal('localhost:9002') + }) + + it('Should unblock the remote server', async function () { + await removeServerFromServerBlocklist(servers[ 0 ].url, servers[ 0 ].accessToken, 'localhost:9002') + }) + + it('Should list all videos', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllVideos(servers[ 0 ].url, token) + } + }) + + it('Should list the comments', async function () { + for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { + await checkAllComments(servers[ 0 ].url, token, videoUUID1) + } + }) + }) + }) + + after(async function () { + killallServers(servers) + + // Keep the logs if the test failed + if (this[ 'ok' ]) { + await flushTests() + } + }) +}) diff --git a/server/tests/api/users/index.ts b/server/tests/api/users/index.ts index 21d75da3e..0a1b8b0b2 100644 --- a/server/tests/api/users/index.ts +++ b/server/tests/api/users/index.ts @@ -1,3 +1,4 @@ +import './blocklist' import './user-subscriptions' import './users' import './users-verification' diff --git a/server/tests/utils/users/blocklist.ts b/server/tests/utils/users/blocklist.ts index 47b315480..35b537571 100644 --- a/server/tests/utils/users/blocklist.ts +++ b/server/tests/utils/users/blocklist.ts @@ -91,6 +91,94 @@ function removeServerFromAccountBlocklist (url: string, token: string, serverToB }) } +function getAccountBlocklistByServer ( + url: string, + token: string, + start: number, + count: number, + sort = '-createdAt', + statusCodeExpected = 200 +) { + const path = '/api/v1/server/blocklist/accounts' + + return makeGetRequest({ + url, + token, + query: { start, count, sort }, + path, + statusCodeExpected + }) +} + +function addAccountToServerBlocklist (url: string, token: string, accountToBlock: string, statusCodeExpected = 204) { + const path = '/api/v1/server/blocklist/accounts' + + return makePostBodyRequest({ + url, + path, + token, + fields: { + accountName: accountToBlock + }, + statusCodeExpected + }) +} + +function removeAccountFromServerBlocklist (url: string, token: string, accountToUnblock: string, statusCodeExpected = 204) { + const path = '/api/v1/server/blocklist/accounts/' + accountToUnblock + + return makeDeleteRequest({ + url, + path, + token, + statusCodeExpected + }) +} + +function getServerBlocklistByServer ( + url: string, + token: string, + start: number, + count: number, + sort = '-createdAt', + statusCodeExpected = 200 +) { + const path = '/api/v1/server/blocklist/servers' + + return makeGetRequest({ + url, + token, + query: { start, count, sort }, + path, + statusCodeExpected + }) +} + +function addServerToServerBlocklist (url: string, token: string, serverToBlock: string, statusCodeExpected = 204) { + const path = '/api/v1/server/blocklist/servers' + + return makePostBodyRequest({ + url, + path, + token, + fields: { + host: serverToBlock + }, + statusCodeExpected + }) +} + +function removeServerFromServerBlocklist (url: string, token: string, serverToBlock: string, statusCodeExpected = 204) { + const path = '/api/v1/server/blocklist/servers/' + serverToBlock + + return makeDeleteRequest({ + url, + path, + token, + statusCodeExpected + }) +} + // --------------------------------------------------------------------------- export { @@ -99,5 +187,12 @@ export { removeAccountFromAccountBlocklist, getServerBlocklistByAccount, addServerToAccountBlocklist, - removeServerFromAccountBlocklist + removeServerFromAccountBlocklist, + + getAccountBlocklistByServer, + addAccountToServerBlocklist, + removeAccountFromServerBlocklist, + getServerBlocklistByServer, + addServerToServerBlocklist, + removeServerFromServerBlocklist } diff --git a/shared/models/users/user-right.enum.ts b/shared/models/users/user-right.enum.ts index ed2c536ce..51c59d20a 100644 --- a/shared/models/users/user-right.enum.ts +++ b/shared/models/users/user-right.enum.ts @@ -8,6 +8,9 @@ export enum UserRight { MANAGE_JOBS, MANAGE_CONFIGURATION, + MANAGE_ACCOUNTS_BLOCKLIST, + MANAGE_SERVERS_BLOCKLIST, + MANAGE_VIDEO_BLACKLIST, REMOVE_ANY_VIDEO, diff --git a/shared/models/users/user-role.ts b/shared/models/users/user-role.ts index d7020c0f2..adef8fd95 100644 --- a/shared/models/users/user-role.ts +++ b/shared/models/users/user-role.ts @@ -27,7 +27,9 @@ const userRoleRights: { [ id: number ]: UserRight[] } = { UserRight.REMOVE_ANY_VIDEO_CHANNEL, UserRight.REMOVE_ANY_VIDEO_COMMENT, UserRight.UPDATE_ANY_VIDEO, - UserRight.SEE_ALL_VIDEOS + UserRight.SEE_ALL_VIDEOS, + UserRight.MANAGE_ACCOUNTS_BLOCKLIST, + UserRight.MANAGE_SERVERS_BLOCKLIST ], [UserRole.USER]: [] -- cgit v1.2.3 From 65b21c961c69c4a63c7c0c34be3d6d034a1176c7 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 Oct 2018 16:43:14 +0200 Subject: Add ability to mute a user/instance by server in client --- client/src/app/+accounts/accounts.component.html | 6 +- client/src/app/+admin/admin.module.ts | 3 + .../+admin/moderation/instance-blocklist/index.ts | 2 + .../instance-account-blocklist.component.html | 22 ++++ .../instance-account-blocklist.component.scss | 7 ++ .../instance-account-blocklist.component.ts | 59 +++++++++ .../instance-server-blocklist.component.html | 23 ++++ .../instance-server-blocklist.component.scss | 7 ++ .../instance-server-blocklist.component.ts | 60 +++++++++ .../+admin/moderation/moderation.component.html | 4 + .../app/+admin/moderation/moderation.component.ts | 8 ++ .../src/app/+admin/moderation/moderation.routes.ts | 23 ++++ client/src/app/shared/account/account.model.ts | 12 +- .../app/shared/blocklist/account-block.model.ts | 2 +- .../src/app/shared/blocklist/blocklist.service.ts | 56 +++++++++ client/src/app/shared/blocklist/index.ts | 2 +- .../user-moderation-dropdown.component.ts | 137 ++++++++++++++++++--- client/src/sass/include/_bootstrap-variables.scss | 4 +- server/models/video/video-comment.ts | 4 +- server/models/video/video.ts | 6 +- server/tests/api/users/blocklist.ts | 31 +++-- 21 files changed, 437 insertions(+), 41 deletions(-) create mode 100644 client/src/app/+admin/moderation/instance-blocklist/index.ts create mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html create mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss create mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts create mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html create mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss create mode 100644 client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts diff --git a/client/src/app/+accounts/accounts.component.html b/client/src/app/+accounts/accounts.component.html index 60dbcdf1d..c1377c1ea 100644 --- a/client/src/app/+accounts/accounts.component.html +++ b/client/src/app/+accounts/accounts.component.html @@ -10,8 +10,10 @@
{{ account.nameWithHost }}
Banned - Muted - Instance muted + Muted + Muted by your instance + Instance muted + Instance muted by your instance + + + + Account + Muted at + + + + + + {{ accountBlock.blockedAccount.nameWithHost }} + {{ accountBlock.createdAt }} + + + + + + diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss new file mode 100644 index 000000000..6028b75ea --- /dev/null +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss @@ -0,0 +1,7 @@ +@import '_variables'; +@import '_mixins'; + +.unblock-button { + @include peertube-button; + @include grey-button; +} \ No newline at end of file diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts new file mode 100644 index 000000000..3f243aee4 --- /dev/null +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts @@ -0,0 +1,59 @@ +import { Component, OnInit } from '@angular/core' +import { NotificationsService } from 'angular2-notifications' +import { I18n } from '@ngx-translate/i18n-polyfill' +import { RestPagination, RestTable } from '@app/shared' +import { SortMeta } from 'primeng/components/common/sortmeta' +import { BlocklistService, AccountBlock } from '@app/shared/blocklist' + +@Component({ + selector: 'my-instance-account-blocklist', + styleUrls: [ './instance-account-blocklist.component.scss' ], + templateUrl: './instance-account-blocklist.component.html' +}) +export class InstanceAccountBlocklistComponent extends RestTable implements OnInit { + blockedAccounts: AccountBlock[] = [] + totalRecords = 0 + rowsPerPage = 10 + sort: SortMeta = { field: 'createdAt', order: -1 } + pagination: RestPagination = { count: this.rowsPerPage, start: 0 } + + constructor ( + private notificationsService: NotificationsService, + private blocklistService: BlocklistService, + private i18n: I18n + ) { + super() + } + + ngOnInit () { + this.initialize() + } + + unblockAccount (accountBlock: AccountBlock) { + const blockedAccount = accountBlock.blockedAccount + + this.blocklistService.unblockAccountByInstance(blockedAccount) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Account {{nameWithHost}} unmuted by your instance.', { nameWithHost: blockedAccount.nameWithHost }) + ) + + this.loadData() + } + ) + } + + protected loadData () { + return this.blocklistService.getInstanceAccountBlocklist(this.pagination, this.sort) + .subscribe( + resultList => { + this.blockedAccounts = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } +} diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html new file mode 100644 index 000000000..859c0f916 --- /dev/null +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html @@ -0,0 +1,23 @@ + + + + + Instance + Muted at + + + + + + + {{ serverBlock.blockedServer.host }} + {{ serverBlock.createdAt }} + + + + + + diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss new file mode 100644 index 000000000..6028b75ea --- /dev/null +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss @@ -0,0 +1,7 @@ +@import '_variables'; +@import '_mixins'; + +.unblock-button { + @include peertube-button; + @include grey-button; +} \ No newline at end of file diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts new file mode 100644 index 000000000..9459117a3 --- /dev/null +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts @@ -0,0 +1,60 @@ +import { Component, OnInit } from '@angular/core' +import { NotificationsService } from 'angular2-notifications' +import { I18n } from '@ngx-translate/i18n-polyfill' +import { RestPagination, RestTable } from '@app/shared' +import { SortMeta } from 'primeng/components/common/sortmeta' +import { BlocklistService } from '@app/shared/blocklist' +import { ServerBlock } from '../../../../../../shared' + +@Component({ + selector: 'my-instance-server-blocklist', + styleUrls: [ './instance-server-blocklist.component.scss' ], + templateUrl: './instance-server-blocklist.component.html' +}) +export class InstanceServerBlocklistComponent extends RestTable implements OnInit { + blockedAccounts: ServerBlock[] = [] + totalRecords = 0 + rowsPerPage = 10 + sort: SortMeta = { field: 'createdAt', order: -1 } + pagination: RestPagination = { count: this.rowsPerPage, start: 0 } + + constructor ( + private notificationsService: NotificationsService, + private blocklistService: BlocklistService, + private i18n: I18n + ) { + super() + } + + ngOnInit () { + this.initialize() + } + + unblockServer (serverBlock: ServerBlock) { + const host = serverBlock.blockedServer.host + + this.blocklistService.unblockServerByInstance(host) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Instance {{host}} unmuted by your instance.', { host }) + ) + + this.loadData() + } + ) + } + + protected loadData () { + return this.blocklistService.getInstanceServerBlocklist(this.pagination, this.sort) + .subscribe( + resultList => { + this.blockedAccounts = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } +} diff --git a/client/src/app/+admin/moderation/moderation.component.html b/client/src/app/+admin/moderation/moderation.component.html index 91e87fcd4..8ec7278ef 100644 --- a/client/src/app/+admin/moderation/moderation.component.html +++ b/client/src/app/+admin/moderation/moderation.component.html @@ -5,6 +5,10 @@ Video abuses Blacklisted videos + + Muted accounts + + Muted servers diff --git a/client/src/app/+admin/moderation/moderation.component.ts b/client/src/app/+admin/moderation/moderation.component.ts index 0f4efb970..7f85f920e 100644 --- a/client/src/app/+admin/moderation/moderation.component.ts +++ b/client/src/app/+admin/moderation/moderation.component.ts @@ -16,4 +16,12 @@ export class ModerationComponent { hasVideoBlacklistRight () { return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) } + + hasAccountsBlacklistRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST) + } + + hasServersBlacklistRight () { + return this.auth.getUser().hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST) + } } diff --git a/client/src/app/+admin/moderation/moderation.routes.ts b/client/src/app/+admin/moderation/moderation.routes.ts index 6d81b9b36..bc6dd49d5 100644 --- a/client/src/app/+admin/moderation/moderation.routes.ts +++ b/client/src/app/+admin/moderation/moderation.routes.ts @@ -4,6 +4,7 @@ import { UserRightGuard } from '@app/core' import { VideoAbuseListComponent } from '@app/+admin/moderation/video-abuse-list' import { VideoBlacklistListComponent } from '@app/+admin/moderation/video-blacklist-list' import { ModerationComponent } from '@app/+admin/moderation/moderation.component' +import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } from '@app/+admin/moderation/instance-blocklist' export const ModerationRoutes: Routes = [ { @@ -46,6 +47,28 @@ export const ModerationRoutes: Routes = [ title: 'Blacklisted videos' } } + }, + { + path: 'blocklist/accounts', + component: InstanceAccountBlocklistComponent, + canActivate: [ UserRightGuard ], + data: { + userRight: UserRight.MANAGE_ACCOUNTS_BLOCKLIST, + meta: { + title: 'Muted accounts' + } + } + }, + { + path: 'blocklist/servers', + component: InstanceServerBlocklistComponent, + canActivate: [ UserRightGuard ], + data: { + userRight: UserRight.MANAGE_SERVER_REDUNDANCY, + meta: { + title: 'Muted instances' + } + } } ] } diff --git a/client/src/app/shared/account/account.model.ts b/client/src/app/shared/account/account.model.ts index 0aba9428a..c5cd2051c 100644 --- a/client/src/app/shared/account/account.model.ts +++ b/client/src/app/shared/account/account.model.ts @@ -5,8 +5,10 @@ export class Account extends Actor implements ServerAccount { displayName: string description: string nameWithHost: string - muted: boolean - mutedServer: boolean + mutedByUser: boolean + mutedByInstance: boolean + mutedServerByUser: boolean + mutedServerByInstance: boolean userId?: number @@ -18,7 +20,9 @@ export class Account extends Actor implements ServerAccount { this.userId = hash.userId this.nameWithHost = Actor.CREATE_BY_STRING(this.name, this.host) - this.muted = false - this.mutedServer = false + this.mutedByUser = false + this.mutedByInstance = false + this.mutedServerByUser = false + this.mutedServerByInstance = false } } diff --git a/client/src/app/shared/blocklist/account-block.model.ts b/client/src/app/shared/blocklist/account-block.model.ts index 336680f65..e7b433d88 100644 --- a/client/src/app/shared/blocklist/account-block.model.ts +++ b/client/src/app/shared/blocklist/account-block.model.ts @@ -11,4 +11,4 @@ export class AccountBlock implements AccountBlockServer { this.blockedAccount = new Account(block.blockedAccount) this.createdAt = block.createdAt } -} \ No newline at end of file +} diff --git a/client/src/app/shared/blocklist/blocklist.service.ts b/client/src/app/shared/blocklist/blocklist.service.ts index d9c318258..c1f7312f0 100644 --- a/client/src/app/shared/blocklist/blocklist.service.ts +++ b/client/src/app/shared/blocklist/blocklist.service.ts @@ -11,6 +11,7 @@ import { AccountBlock } from '@app/shared/blocklist/account-block.model' @Injectable() export class BlocklistService { static BASE_USER_BLOCKLIST_URL = environment.apiUrl + '/api/v1/users/me/blocklist' + static BASE_SERVER_BLOCKLIST_URL = environment.apiUrl + '/api/v1/server/blocklist' constructor ( private authHttp: HttpClient, @@ -73,6 +74,61 @@ export class BlocklistService { .pipe(catchError(err => this.restExtractor.handleError(err))) } + /*********************** Instance -> Account blocklist ***********************/ + + getInstanceAccountBlocklist (pagination: RestPagination, sort: SortMeta) { + let params = new HttpParams() + params = this.restService.addRestGetParams(params, pagination, sort) + + return this.authHttp.get>(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/accounts', { params }) + .pipe( + map(res => this.restExtractor.convertResultListDateToHuman(res)), + map(res => this.restExtractor.applyToResultListData(res, this.formatAccountBlock.bind(this))), + catchError(err => this.restExtractor.handleError(err)) + ) + } + + blockAccountByInstance (account: Account) { + const body = { accountName: account.nameWithHost } + + return this.authHttp.post(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/accounts', body) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + unblockAccountByInstance (account: Account) { + const path = BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/accounts/' + account.nameWithHost + + return this.authHttp.delete(path) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + /*********************** Instance -> Server blocklist ***********************/ + + getInstanceServerBlocklist (pagination: RestPagination, sort: SortMeta) { + let params = new HttpParams() + params = this.restService.addRestGetParams(params, pagination, sort) + + return this.authHttp.get>(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/servers', { params }) + .pipe( + map(res => this.restExtractor.convertResultListDateToHuman(res)), + catchError(err => this.restExtractor.handleError(err)) + ) + } + + blockServerByInstance (host: string) { + const body = { host } + + return this.authHttp.post(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/servers', body) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + unblockServerByInstance (host: string) { + const path = BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/servers/' + host + + return this.authHttp.delete(path) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + private formatAccountBlock (accountBlock: AccountBlockServer) { return new AccountBlock(accountBlock) } diff --git a/client/src/app/shared/blocklist/index.ts b/client/src/app/shared/blocklist/index.ts index 8cf6a55f7..5886ca07e 100644 --- a/client/src/app/shared/blocklist/index.ts +++ b/client/src/app/shared/blocklist/index.ts @@ -1,2 +1,2 @@ export * from './blocklist.service' -export * from './account-block.model' \ No newline at end of file +export * from './account-block.model' diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts index 2f4a55f37..908f0b8e0 100644 --- a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts +++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts @@ -26,7 +26,7 @@ export class UserModerationDropdownComponent implements OnChanges { @Output() userChanged = new EventEmitter() @Output() userDeleted = new EventEmitter() - userActions: DropdownAction[] = [] + userActions: DropdownAction<{ user: User, account: Account }>[] = [] constructor ( private authService: AuthService, @@ -106,7 +106,7 @@ export class UserModerationDropdownComponent implements OnChanges { this.i18n('Account {{nameWithHost}} muted.', { nameWithHost: account.nameWithHost }) ) - this.account.muted = true + this.account.mutedByUser = true this.userChanged.emit() }, @@ -123,7 +123,7 @@ export class UserModerationDropdownComponent implements OnChanges { this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: account.nameWithHost }) ) - this.account.muted = false + this.account.mutedByUser = false this.userChanged.emit() }, @@ -140,7 +140,7 @@ export class UserModerationDropdownComponent implements OnChanges { this.i18n('Instance {{host}} muted.', { host }) ) - this.account.mutedServer = true + this.account.mutedServerByUser = true this.userChanged.emit() }, @@ -157,7 +157,75 @@ export class UserModerationDropdownComponent implements OnChanges { this.i18n('Instance {{host}} unmuted.', { host }) ) - this.account.mutedServer = false + this.account.mutedServerByUser = false + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + blockAccountByInstance (account: Account) { + this.blocklistService.blockAccountByInstance(account) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Account {{nameWithHost}} muted by the instance.', { nameWithHost: account.nameWithHost }) + ) + + this.account.mutedByInstance = true + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + unblockAccountByInstance (account: Account) { + this.blocklistService.unblockAccountByInstance(account) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Account {{nameWithHost}} unmuted by the instance.', { nameWithHost: account.nameWithHost }) + ) + + this.account.mutedByInstance = false + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + blockServerByInstance (host: string) { + this.blocklistService.blockServerByInstance(host) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Instance {{host}} muted by the instance.', { host }) + ) + + this.account.mutedServerByInstance = true + this.userChanged.emit() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + + unblockServerByInstance (host: string) { + this.blocklistService.unblockServerByInstance(host) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Instance {{host}} unmuted by the instance.', { host }) + ) + + this.account.mutedServerByInstance = false this.userChanged.emit() }, @@ -189,41 +257,74 @@ export class UserModerationDropdownComponent implements OnChanges { }, { label: this.i18n('Ban'), - handler: ({ user }) => this.openBanUserModal(user), - isDisplayed: ({ user }) => !user.muted + handler: ({ user }: { user: User }) => this.openBanUserModal(user), + isDisplayed: ({ user }: { user: User }) => !user.blocked }, { label: this.i18n('Unban'), - handler: ({ user }) => this.unbanUser(user), - isDisplayed: ({ user }) => user.muted + handler: ({ user }: { user: User }) => this.unbanUser(user), + isDisplayed: ({ user }: { user: User }) => user.blocked } ]) } - // User actions on accounts/servers + // Actions on accounts/servers if (this.account) { + // User actions this.userActions = this.userActions.concat([ { label: this.i18n('Mute this account'), - isDisplayed: ({ account }) => account.muted === false, - handler: ({ account }) => this.blockAccountByUser(account) + isDisplayed: ({ account }: { account: Account }) => account.mutedByUser === false, + handler: ({ account }: { account: Account }) => this.blockAccountByUser(account) }, { label: this.i18n('Unmute this account'), - isDisplayed: ({ account }) => account.muted === true, - handler: ({ account }) => this.unblockAccountByUser(account) + isDisplayed: ({ account }: { account: Account }) => account.mutedByUser === true, + handler: ({ account }: { account: Account }) => this.unblockAccountByUser(account) }, { label: this.i18n('Mute the instance'), - isDisplayed: ({ account }) => !account.userId && account.mutedServer === false, - handler: ({ account }) => this.blockServerByUser(account.host) + isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === false, + handler: ({ account }: { account: Account }) => this.blockServerByUser(account.host) }, { label: this.i18n('Unmute the instance'), - isDisplayed: ({ account }) => !account.userId && account.mutedServer === true, - handler: ({ account }) => this.unblockServerByUser(account.host) + isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === true, + handler: ({ account }: { account: Account }) => this.unblockServerByUser(account.host) } ]) + + // Instance actions + if (authUser.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) { + this.userActions = this.userActions.concat([ + { + label: this.i18n('Mute this account by your instance'), + isDisplayed: ({ account }: { account: Account }) => account.mutedByInstance === false, + handler: ({ account }: { account: Account }) => this.blockAccountByInstance(account) + }, + { + label: this.i18n('Unmute this account by your instance'), + isDisplayed: ({ account }: { account: Account }) => account.mutedByInstance === true, + handler: ({ account }: { account: Account }) => this.unblockAccountByInstance(account) + } + ]) + } + + // Instance actions + if (authUser.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) { + this.userActions = this.userActions.concat([ + { + label: this.i18n('Mute the instance by your instance'), + isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === false, + handler: ({ account }: { account: Account }) => this.blockServerByInstance(account.host) + }, + { + label: this.i18n('Unmute the instance by your instance'), + isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === true, + handler: ({ account }: { account: Account }) => this.unblockServerByInstance(account.host) + } + ]) + } } } } diff --git a/client/src/sass/include/_bootstrap-variables.scss b/client/src/sass/include/_bootstrap-variables.scss index ce2532af5..77a20cfe1 100644 --- a/client/src/sass/include/_bootstrap-variables.scss +++ b/client/src/sass/include/_bootstrap-variables.scss @@ -29,4 +29,6 @@ $input-btn-focus-color: inherit; $input-focus-border-color: #ced4da; $nav-pills-link-active-bg: #F0F0F0; -$nav-pills-link-active-color: #000; \ No newline at end of file +$nav-pills-link-active-color: #000; + +$zindex-dropdown: 10000; \ No newline at end of file diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts index 08c6b3ff0..dd6d08139 100644 --- a/server/models/video/video-comment.ts +++ b/server/models/video/video-comment.ts @@ -294,7 +294,7 @@ export class VideoCommentModel extends Model { static async listThreadsForApi (videoId: number, start: number, count: number, sort: string, user?: UserModel) { const serverActor = await getServerActor() const serverAccountId = serverActor.Account.id - const userAccountId = user.Account.id + const userAccountId = user ? user.Account.id : undefined const query = { offset: start, @@ -330,7 +330,7 @@ export class VideoCommentModel extends Model { static async listThreadCommentsForApi (videoId: number, threadId: number, user?: UserModel) { const serverActor = await getServerActor() const serverAccountId = serverActor.Account.id - const userAccountId = user.Account.id + const userAccountId = user ? user.Account.id : undefined const query = { order: [ [ 'createdAt', 'ASC' ], [ 'updatedAt', 'ASC' ] ], diff --git a/server/models/video/video.ts b/server/models/video/video.ts index eab99cba7..6c183933b 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -1255,9 +1255,11 @@ export class VideoModel extends Model { // threshold corresponds to how many video the field should have to be returned static async getRandomFieldSamples (field: 'category' | 'channelId', threshold: number, count: number) { - const actorId = (await getServerActor()).id + const serverActor = await getServerActor() + const actorId = serverActor.id - const scopeOptions = { + const scopeOptions: AvailableForListIDsOptions = { + serverAccountId: serverActor.Account.id, actorId, includeLocalVideos: true } diff --git a/server/tests/api/users/blocklist.ts b/server/tests/api/users/blocklist.ts index 99fe04b8c..eed4b9f3e 100644 --- a/server/tests/api/users/blocklist.ts +++ b/server/tests/api/users/blocklist.ts @@ -14,7 +14,7 @@ import { userLogin } from '../../utils/index' import { setAccessTokensToServers } from '../../utils/users/login' -import { getVideosListWithToken } from '../../utils/videos/videos' +import { getVideosListWithToken, getVideosList } from '../../utils/videos/videos' import { addVideoCommentReply, addVideoCommentThread, @@ -41,9 +41,17 @@ import { const expect = chai.expect async function checkAllVideos (url: string, token: string) { - const res = await getVideosListWithToken(url, token) + { + const res = await getVideosListWithToken(url, token) - expect(res.body.data).to.have.lengthOf(4) + expect(res.body.data).to.have.lengthOf(4) + } + + { + const res = await getVideosList(url) + + expect(res.body.data).to.have.lengthOf(4) + } } async function checkAllComments (url: string, token: string, videoUUID: string) { @@ -444,16 +452,19 @@ describe('Test blocklist', function () { it('Should hide its videos', async function () { for (const token of [ userModeratorToken, servers[ 0 ].accessToken ]) { - const res = await getVideosListWithToken(servers[ 0 ].url, token) + const res1 = await getVideosList(servers[ 0 ].url) + const res2 = await getVideosListWithToken(servers[ 0 ].url, token) - const videos: Video[] = res.body.data - expect(videos).to.have.lengthOf(2) + for (const res of [ res1, res2 ]) { + const videos: Video[] = res.body.data + expect(videos).to.have.lengthOf(2) - const v1 = videos.find(v => v.name === 'video user 2') - const v2 = videos.find(v => v.name === 'video server 2') + const v1 = videos.find(v => v.name === 'video user 2') + const v2 = videos.find(v => v.name === 'video server 2') - expect(v1).to.be.undefined - expect(v2).to.be.undefined + expect(v1).to.be.undefined + expect(v2).to.be.undefined + } } }) -- cgit v1.2.3 From fd28a0fc8833c8cfe1017a88fbda141130b2d263 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 16 Oct 2018 09:37:32 +0200 Subject: Fix redundancy test --- server/tests/api/server/redundancy.ts | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/server/tests/api/server/redundancy.ts b/server/tests/api/server/redundancy.ts index 1960854b6..f50d6e3cf 100644 --- a/server/tests/api/server/redundancy.ts +++ b/server/tests/api/server/redundancy.ts @@ -419,7 +419,7 @@ describe('Test videos redundancy', function () { killallServers([ servers[0] ]) - await wait(10000) + await wait(15000) await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001') }) @@ -452,26 +452,22 @@ describe('Test videos redundancy', function () { }) it('Should cache video 2 webseed on the first video', async function () { - this.timeout(50000) + this.timeout(120000) await waitJobs(servers) - await wait(7000) + let checked = false - try { - await check1WebSeed(strategy, video1Server2UUID) - await check2Webseeds(strategy, video2Server2UUID) - } catch { - await wait(3000) + while (checked === false) { + await wait(1000) try { await check1WebSeed(strategy, video1Server2UUID) await check2Webseeds(strategy, video2Server2UUID) - } catch { - await wait(5000) - await check1WebSeed(strategy, video1Server2UUID) - await check2Webseeds(strategy, video2Server2UUID) + checked = true + } catch { + checked = false } } }) -- cgit v1.2.3 From 26370ce469913f48b1c10b91d68ac8cb67586ce1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 16 Oct 2018 10:55:29 +0200 Subject: Move redundancy in its own travis container --- .travis.yml | 1 + CHANGELOG.md | 34 +++ scripts/travis.sh | 3 + server/tests/api/index-4.ts | 1 + server/tests/api/index.ts | 1 + server/tests/api/redundancy/index.ts | 1 + server/tests/api/redundancy/redundancy.ts | 483 ++++++++++++++++++++++++++++++ server/tests/api/server/index.ts | 1 - 8 files changed, 524 insertions(+), 1 deletion(-) create mode 100644 server/tests/api/index-4.ts create mode 100644 server/tests/api/redundancy/index.ts create mode 100644 server/tests/api/redundancy/redundancy.ts diff --git a/.travis.yml b/.travis.yml index 7670cb7c0..3a73e4fc0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,6 +42,7 @@ matrix: - env: TEST_SUITE=api-1 - env: TEST_SUITE=api-2 - env: TEST_SUITE=api-3 + - env: TEST_SUITE=api-4 - env: TEST_SUITE=cli - env: TEST_SUITE=lint - env: TEST_SUITE=jest diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a1363041..d2bd98f4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,39 @@ # Changelog +## v1.1.0-alpha.1 + +We released this alpha version because some admins/users need some moderation tools we implemented in recent weeks. +This release could contain bugs. Don't expect a stable v1.1.0 until December :) + +### Scripts + + * Use DB information from config/production.yaml in upgrade script ([@ldidry](https://github.com/ldidry)) + * Add REPL script ([@McFlat](https://github.com/mcflat)) + +### Docker + + * Add search and import settings env settings env variables ([@kaiyou](https://github.com/kaiyou)) + * Add docker dev image ([@am97](https://github.com/am97)) + +### Features + + * Automatically resume videos if the user is logged in + * Hide automatically the menu when the window is resized ([@BO41](https://github.com/BO41)) + * Remove confirm modal for JavaScript/CSS injection ([@scanlime](https://github.com/scanlime)) + * Set bitrate limits for transcoding ([@Nutomic](https://github.com/nutomic)) + * Add moderation tools in the account page + * Add bulk actions in users table (Delete/Ban for now) + * Add search filter in admin users table + * Add search filter in admin following + * Add search filter in admin followers + * Add ability to list all local videos + * Add ability for users to mute an account or an instance + * Add ability for administrators to mute an account or an instance + * Rename "News" category to "News & Politics" ([@daker](https://github.com/daker)) + * Add explicit error message when changing video ownership ([@lucas-dclrcq](https://github.com/lucas-dclrcq)) + * Improve description of the HTTP video import feature ([@rigelk](https://github.com/rigelk)) + + ## v1.0.0 ### SECURITY diff --git a/scripts/travis.sh b/scripts/travis.sh index 628039ab7..ae4a9f926 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -31,6 +31,9 @@ elif [ "$1" = "api-2" ]; then elif [ "$1" = "api-3" ]; then npm run build:server mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-3.ts +elif [ "$1" = "api-3" ]; then + npm run build:server + mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-4.ts elif [ "$1" = "lint" ]; then npm run tslint -- --project ./tsconfig.json -c ./tslint.json server.ts "server/**/*.ts" "shared/**/*.ts" diff --git a/server/tests/api/index-4.ts b/server/tests/api/index-4.ts new file mode 100644 index 000000000..8e69b95a6 --- /dev/null +++ b/server/tests/api/index-4.ts @@ -0,0 +1 @@ +import './redundancy' diff --git a/server/tests/api/index.ts b/server/tests/api/index.ts index 2d996dbf9..bc140f860 100644 --- a/server/tests/api/index.ts +++ b/server/tests/api/index.ts @@ -2,3 +2,4 @@ import './index-1' import './index-2' import './index-3' +import './index-4' diff --git a/server/tests/api/redundancy/index.ts b/server/tests/api/redundancy/index.ts new file mode 100644 index 000000000..8e69b95a6 --- /dev/null +++ b/server/tests/api/redundancy/index.ts @@ -0,0 +1 @@ +import './redundancy' diff --git a/server/tests/api/redundancy/redundancy.ts b/server/tests/api/redundancy/redundancy.ts new file mode 100644 index 000000000..1960854b6 --- /dev/null +++ b/server/tests/api/redundancy/redundancy.ts @@ -0,0 +1,483 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { VideoDetails } from '../../../../shared/models/videos' +import { + doubleFollow, + flushAndRunMultipleServers, + getFollowingListPaginationAndSort, + getVideo, + immutableAssign, + killallServers, makeGetRequest, + root, + ServerInfo, + setAccessTokensToServers, unfollow, + uploadVideo, + viewVideo, + wait, + waitUntilLog, + checkVideoFilesWereRemoved, removeVideo +} from '../../utils' +import { waitJobs } from '../../utils/server/jobs' +import * as magnetUtil from 'magnet-uri' +import { updateRedundancy } from '../../utils/server/redundancy' +import { ActorFollow } from '../../../../shared/models/actors' +import { readdir } from 'fs-extra' +import { join } from 'path' +import { VideoRedundancyStrategy } from '../../../../shared/models/redundancy' +import { getStats } from '../../utils/server/stats' +import { ServerStats } from '../../../../shared/models/server/server-stats.model' + +const expect = chai.expect + +let servers: ServerInfo[] = [] +let video1Server2UUID: string + +function checkMagnetWebseeds (file: { magnetUri: string, resolution: { id: number } }, baseWebseeds: string[], server: ServerInfo) { + const parsed = magnetUtil.decode(file.magnetUri) + + for (const ws of baseWebseeds) { + const found = parsed.urlList.find(url => url === `${ws}-${file.resolution.id}.mp4`) + expect(found, `Webseed ${ws} not found in ${file.magnetUri} on server ${server.url}`).to.not.be.undefined + } + + expect(parsed.urlList).to.have.lengthOf(baseWebseeds.length) +} + +async function runServers (strategy: VideoRedundancyStrategy, additionalParams: any = {}) { + const config = { + redundancy: { + videos: { + check_interval: '5 seconds', + strategies: [ + immutableAssign({ + min_lifetime: '1 hour', + strategy: strategy, + size: '100KB' + }, additionalParams) + ] + } + } + } + servers = await flushAndRunMultipleServers(3, config) + + // Get the access tokens + await setAccessTokensToServers(servers) + + { + const res = await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, { name: 'video 1 server 2' }) + video1Server2UUID = res.body.video.uuid + + await viewVideo(servers[ 1 ].url, video1Server2UUID) + } + + await waitJobs(servers) + + // Server 1 and server 2 follow each other + await doubleFollow(servers[ 0 ], servers[ 1 ]) + // Server 1 and server 3 follow each other + await doubleFollow(servers[ 0 ], servers[ 2 ]) + // Server 2 and server 3 follow each other + await doubleFollow(servers[ 1 ], servers[ 2 ]) + + await waitJobs(servers) +} + +async function check1WebSeed (strategy: VideoRedundancyStrategy, videoUUID?: string) { + if (!videoUUID) videoUUID = video1Server2UUID + + const webseeds = [ + 'http://localhost:9002/static/webseed/' + videoUUID + ] + + for (const server of servers) { + { + const res = await getVideo(server.url, videoUUID) + + const video: VideoDetails = res.body + for (const f of video.files) { + checkMagnetWebseeds(f, webseeds, server) + } + } + } +} + +async function checkStatsWith2Webseed (strategy: VideoRedundancyStrategy) { + const res = await getStats(servers[0].url) + const data: ServerStats = res.body + + expect(data.videosRedundancy).to.have.lengthOf(1) + const stat = data.videosRedundancy[0] + + expect(stat.strategy).to.equal(strategy) + expect(stat.totalSize).to.equal(102400) + expect(stat.totalUsed).to.be.at.least(1).and.below(102401) + expect(stat.totalVideoFiles).to.equal(4) + expect(stat.totalVideos).to.equal(1) +} + +async function checkStatsWith1Webseed (strategy: VideoRedundancyStrategy) { + const res = await getStats(servers[0].url) + const data: ServerStats = res.body + + expect(data.videosRedundancy).to.have.lengthOf(1) + + const stat = data.videosRedundancy[0] + expect(stat.strategy).to.equal(strategy) + expect(stat.totalSize).to.equal(102400) + expect(stat.totalUsed).to.equal(0) + expect(stat.totalVideoFiles).to.equal(0) + expect(stat.totalVideos).to.equal(0) +} + +async function check2Webseeds (strategy: VideoRedundancyStrategy, videoUUID?: string) { + if (!videoUUID) videoUUID = video1Server2UUID + + const webseeds = [ + 'http://localhost:9001/static/webseed/' + videoUUID, + 'http://localhost:9002/static/webseed/' + videoUUID + ] + + for (const server of servers) { + const res = await getVideo(server.url, videoUUID) + + const video: VideoDetails = res.body + + for (const file of video.files) { + checkMagnetWebseeds(file, webseeds, server) + + // Only servers 1 and 2 have the video + if (server.serverNumber !== 3) { + await makeGetRequest({ + url: server.url, + statusCodeExpected: 200, + path: '/static/webseed/' + `${videoUUID}-${file.resolution.id}.mp4`, + contentType: null + }) + } + } + } + + for (const directory of [ 'test1', 'test2' ]) { + const files = await readdir(join(root(), directory, 'videos')) + expect(files).to.have.length.at.least(4) + + for (const resolution of [ 240, 360, 480, 720 ]) { + expect(files.find(f => f === `${videoUUID}-${resolution}.mp4`)).to.not.be.undefined + } + } +} + +async function enableRedundancyOnServer1 () { + await updateRedundancy(servers[ 0 ].url, servers[ 0 ].accessToken, servers[ 1 ].host, true) + + const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 5, '-createdAt') + const follows: ActorFollow[] = res.body.data + const server2 = follows.find(f => f.following.host === 'localhost:9002') + const server3 = follows.find(f => f.following.host === 'localhost:9003') + + expect(server3).to.not.be.undefined + expect(server3.following.hostRedundancyAllowed).to.be.false + + expect(server2).to.not.be.undefined + expect(server2.following.hostRedundancyAllowed).to.be.true +} + +async function disableRedundancyOnServer1 () { + await updateRedundancy(servers[ 0 ].url, servers[ 0 ].accessToken, servers[ 1 ].host, false) + + const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 5, '-createdAt') + const follows: ActorFollow[] = res.body.data + const server2 = follows.find(f => f.following.host === 'localhost:9002') + const server3 = follows.find(f => f.following.host === 'localhost:9003') + + expect(server3).to.not.be.undefined + expect(server3.following.hostRedundancyAllowed).to.be.false + + expect(server2).to.not.be.undefined + expect(server2.following.hostRedundancyAllowed).to.be.false +} + +async function cleanServers () { + killallServers(servers) +} + +describe('Test videos redundancy', function () { + + describe('With most-views strategy', function () { + const strategy = 'most-views' + + before(function () { + this.timeout(120000) + + return runServers(strategy) + }) + + it('Should have 1 webseed on the first video', async function () { + await check1WebSeed(strategy) + await checkStatsWith1Webseed(strategy) + }) + + it('Should enable redundancy on server 1', function () { + return enableRedundancyOnServer1() + }) + + it('Should have 2 webseed on the first video', async function () { + this.timeout(40000) + + await waitJobs(servers) + await waitUntilLog(servers[0], 'Duplicated ', 4) + await waitJobs(servers) + + await check2Webseeds(strategy) + await checkStatsWith2Webseed(strategy) + }) + + it('Should undo redundancy on server 1 and remove duplicated videos', async function () { + this.timeout(40000) + + await disableRedundancyOnServer1() + + await waitJobs(servers) + await wait(5000) + + await check1WebSeed(strategy) + + await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ]) + }) + + after(function () { + return cleanServers() + }) + }) + + describe('With trending strategy', function () { + const strategy = 'trending' + + before(function () { + this.timeout(120000) + + return runServers(strategy) + }) + + it('Should have 1 webseed on the first video', async function () { + await check1WebSeed(strategy) + await checkStatsWith1Webseed(strategy) + }) + + it('Should enable redundancy on server 1', function () { + return enableRedundancyOnServer1() + }) + + it('Should have 2 webseed on the first video', async function () { + this.timeout(40000) + + await waitJobs(servers) + await waitUntilLog(servers[0], 'Duplicated ', 4) + await waitJobs(servers) + + await check2Webseeds(strategy) + await checkStatsWith2Webseed(strategy) + }) + + it('Should unfollow on server 1 and remove duplicated videos', async function () { + this.timeout(40000) + + await unfollow(servers[0].url, servers[0].accessToken, servers[1]) + + await waitJobs(servers) + await wait(5000) + + await check1WebSeed(strategy) + + await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ]) + }) + + after(function () { + return cleanServers() + }) + }) + + describe('With recently added strategy', function () { + const strategy = 'recently-added' + + before(function () { + this.timeout(120000) + + return runServers(strategy, { min_views: 3 }) + }) + + it('Should have 1 webseed on the first video', async function () { + await check1WebSeed(strategy) + await checkStatsWith1Webseed(strategy) + }) + + it('Should enable redundancy on server 1', function () { + return enableRedundancyOnServer1() + }) + + it('Should still have 1 webseed on the first video', async function () { + this.timeout(40000) + + await waitJobs(servers) + await wait(15000) + await waitJobs(servers) + + await check1WebSeed(strategy) + await checkStatsWith1Webseed(strategy) + }) + + it('Should view 2 times the first video to have > min_views config', async function () { + this.timeout(40000) + + await viewVideo(servers[ 0 ].url, video1Server2UUID) + await viewVideo(servers[ 2 ].url, video1Server2UUID) + + await wait(10000) + await waitJobs(servers) + }) + + it('Should have 2 webseed on the first video', async function () { + this.timeout(40000) + + await waitJobs(servers) + await waitUntilLog(servers[0], 'Duplicated ', 4) + await waitJobs(servers) + + await check2Webseeds(strategy) + await checkStatsWith2Webseed(strategy) + }) + + it('Should remove the video and the redundancy files', async function () { + this.timeout(20000) + + await removeVideo(servers[1].url, servers[1].accessToken, video1Server2UUID) + + await waitJobs(servers) + + for (const server of servers) { + await checkVideoFilesWereRemoved(video1Server2UUID, server.serverNumber) + } + }) + + after(function () { + return cleanServers() + }) + }) + + describe('Test expiration', function () { + const strategy = 'recently-added' + + async function checkContains (servers: ServerInfo[], str: string) { + for (const server of servers) { + const res = await getVideo(server.url, video1Server2UUID) + const video: VideoDetails = res.body + + for (const f of video.files) { + expect(f.magnetUri).to.contain(str) + } + } + } + + async function checkNotContains (servers: ServerInfo[], str: string) { + for (const server of servers) { + const res = await getVideo(server.url, video1Server2UUID) + const video: VideoDetails = res.body + + for (const f of video.files) { + expect(f.magnetUri).to.not.contain(str) + } + } + } + + before(async function () { + this.timeout(120000) + + await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 }) + + await enableRedundancyOnServer1() + }) + + it('Should still have 2 webseeds after 10 seconds', async function () { + this.timeout(40000) + + await wait(10000) + + try { + await checkContains(servers, 'http%3A%2F%2Flocalhost%3A9001') + } catch { + // Maybe a server deleted a redundancy in the scheduler + await wait(2000) + + await checkContains(servers, 'http%3A%2F%2Flocalhost%3A9001') + } + }) + + it('Should stop server 1 and expire video redundancy', async function () { + this.timeout(40000) + + killallServers([ servers[0] ]) + + await wait(10000) + + await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001') + }) + + after(function () { + return killallServers([ servers[1], servers[2] ]) + }) + }) + + describe('Test file replacement', function () { + let video2Server2UUID: string + const strategy = 'recently-added' + + before(async function () { + this.timeout(120000) + + await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 }) + + await enableRedundancyOnServer1() + + await waitJobs(servers) + await waitUntilLog(servers[0], 'Duplicated ', 4) + await waitJobs(servers) + + await check2Webseeds(strategy) + await checkStatsWith2Webseed(strategy) + + const res = await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, { name: 'video 2 server 2' }) + video2Server2UUID = res.body.video.uuid + }) + + it('Should cache video 2 webseed on the first video', async function () { + this.timeout(50000) + + await waitJobs(servers) + + await wait(7000) + + try { + await check1WebSeed(strategy, video1Server2UUID) + await check2Webseeds(strategy, video2Server2UUID) + } catch { + await wait(3000) + + try { + await check1WebSeed(strategy, video1Server2UUID) + await check2Webseeds(strategy, video2Server2UUID) + } catch { + await wait(5000) + + await check1WebSeed(strategy, video1Server2UUID) + await check2Webseeds(strategy, video2Server2UUID) + } + } + }) + + after(function () { + return cleanServers() + }) + }) +}) diff --git a/server/tests/api/server/index.ts b/server/tests/api/server/index.ts index c74c68a33..eeb8b7a28 100644 --- a/server/tests/api/server/index.ts +++ b/server/tests/api/server/index.ts @@ -3,7 +3,6 @@ import './email' import './follows' import './handle-down' import './jobs' -import './redundancy' import './reverse-proxy' import './stats' import './tracker' -- cgit v1.2.3 From 92ea70a782181b987b3547a0d5816e314efb5112 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 16 Oct 2018 11:51:28 +0200 Subject: Fix code typos --- .../instance-blocklist/instance-server-blocklist.component.html | 2 +- .../instance-blocklist/instance-server-blocklist.component.ts | 4 ++-- client/src/app/+admin/moderation/moderation.component.html | 4 ++-- client/src/app/+admin/moderation/moderation.component.ts | 4 ++-- .../my-account-blocklist/my-account-server-blocklist.component.html | 2 +- .../my-account-blocklist/my-account-server-blocklist.component.ts | 4 ++-- client/src/app/+my-account/my-account-routing.module.ts | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html index 859c0f916..f634ba834 100644 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html @@ -1,5 +1,5 @@ diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts index 9459117a3..130009dc7 100644 --- a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts +++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts @@ -12,7 +12,7 @@ import { ServerBlock } from '../../../../../../shared' templateUrl: './instance-server-blocklist.component.html' }) export class InstanceServerBlocklistComponent extends RestTable implements OnInit { - blockedAccounts: ServerBlock[] = [] + blockedServers: ServerBlock[] = [] totalRecords = 0 rowsPerPage = 10 sort: SortMeta = { field: 'createdAt', order: -1 } @@ -50,7 +50,7 @@ export class InstanceServerBlocklistComponent extends RestTable implements OnIni return this.blocklistService.getInstanceServerBlocklist(this.pagination, this.sort) .subscribe( resultList => { - this.blockedAccounts = resultList.data + this.blockedServers = resultList.data this.totalRecords = resultList.total }, diff --git a/client/src/app/+admin/moderation/moderation.component.html b/client/src/app/+admin/moderation/moderation.component.html index 8ec7278ef..01457936c 100644 --- a/client/src/app/+admin/moderation/moderation.component.html +++ b/client/src/app/+admin/moderation/moderation.component.html @@ -6,9 +6,9 @@ Blacklisted videos - Muted accounts + Muted accounts - Muted servers + Muted servers diff --git a/client/src/app/+admin/moderation/moderation.component.ts b/client/src/app/+admin/moderation/moderation.component.ts index 7f85f920e..2b2618933 100644 --- a/client/src/app/+admin/moderation/moderation.component.ts +++ b/client/src/app/+admin/moderation/moderation.component.ts @@ -17,11 +17,11 @@ export class ModerationComponent { return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) } - hasAccountsBlacklistRight () { + hasAccountsBlocklistRight () { return this.auth.getUser().hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST) } - hasServersBlacklistRight () { + hasServersBlocklistRight () { return this.auth.getUser().hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST) } } diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html index 680334740..329cfb08f 100644 --- a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html +++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html @@ -3,7 +3,7 @@ diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts index b994c2c99..b411d6926 100644 --- a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts +++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts @@ -12,7 +12,7 @@ import { BlocklistService } from '@app/shared/blocklist' templateUrl: './my-account-server-blocklist.component.html' }) export class MyAccountServerBlocklistComponent extends RestTable implements OnInit { - blockedAccounts: ServerBlock[] = [] + blockedServers: ServerBlock[] = [] totalRecords = 0 rowsPerPage = 10 sort: SortMeta = { field: 'createdAt', order: -1 } @@ -50,7 +50,7 @@ export class MyAccountServerBlocklistComponent extends RestTable implements OnIn return this.blocklistService.getUserServerBlocklist(this.pagination, this.sort) .subscribe( resultList => { - this.blockedAccounts = resultList.data + this.blockedServers = resultList.data this.totalRecords = resultList.total }, diff --git a/client/src/app/+my-account/my-account-routing.module.ts b/client/src/app/+my-account/my-account-routing.module.ts index 49f9c94a7..601e517b4 100644 --- a/client/src/app/+my-account/my-account-routing.module.ts +++ b/client/src/app/+my-account/my-account-routing.module.ts @@ -102,7 +102,7 @@ const myAccountRoutes: Routes = [ component: MyAccountBlocklistComponent, data: { meta: { - title: 'Accounts blocklist' + title: 'Muted accounts' } } }, @@ -111,7 +111,7 @@ const myAccountRoutes: Routes = [ component: MyAccountServerBlocklistComponent, data: { meta: { - title: 'Instances blocklist' + title: 'Muted instances' } } } -- cgit v1.2.3 From 225553a021eba517fed81c1ad0c9f5f5eab441e3 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 17 Oct 2018 08:42:54 +0200 Subject: Improve release script --- scripts/release.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/release.sh b/scripts/release.sh index 3a8643b5a..ccb93bc44 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -34,8 +34,8 @@ fi version="v$1" github_prerelease_option="" -if [[ "$version" = *".pre."* ]]; then - echo "This is a pre-release." +if [[ "$version" = *"-alpha."* ]] || [[ "$version" = *"-beta."* ]] || [[ "$version" = *"-rc."* ]]; then + echo -e "This is a pre-release.\n" github_prerelease_option="--pre-release" fi @@ -45,7 +45,7 @@ tar_name="peertube-$version.tar.xz" changelog=$(awk -v version="$version" '/## v/ { printit = $2 == version }; printit;' CHANGELOG.md | grep -v "$version" | sed '1{/^$/d}') -printf "Changelog will be:\\n%s\\n" "$changelog" +printf "Changelog will be:\\n\\n%s\\n\\n" "$changelog" read -p "Are you sure to release? " -n 1 -r echo -- cgit v1.2.3 From 7cdc3ab63b9238a352363524568da39407a56a3d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 17 Oct 2018 08:43:16 +0200 Subject: Bumped to version v1.1.0-alpha.1 --- client/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index a1dd94b76..0c5734c55 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "peertube-client", - "version": "1.0.0", + "version": "1.1.0-alpha.1", "private": true, "licence": "GPLv3", "author": { diff --git a/package.json b/package.json index 1fd6d7d19..e5b2bb50e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube", "description": "Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.", - "version": "1.0.0", + "version": "1.1.0-alpha.1", "private": true, "licence": "AGPLv3", "engines": { -- cgit v1.2.3 From 7f196c9320ab010fcf659dbf819d83dded5eeb7f Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 9 Oct 2018 17:46:26 -0500 Subject: Scale bitrate linearly with FPS --- shared/models/videos/video-resolution.enum.ts | 37 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/shared/models/videos/video-resolution.enum.ts b/shared/models/videos/video-resolution.enum.ts index e40e5b58b..13c0fe9a7 100644 --- a/shared/models/videos/video-resolution.enum.ts +++ b/shared/models/videos/video-resolution.enum.ts @@ -9,13 +9,13 @@ export enum VideoResolution { } /** - * Bitrate targets for different resolutions and frame rates, in bytes per second. + * Bitrate targets for different resolutions, at VideoTranscodingFPS.AVERAGE. + * * Sources for individual quality levels: * Google Live Encoder: https://support.google.com/youtube/answer/2853702?hl=en * YouTube Video Info (tested with random music video): https://www.h3xed.com/blogmedia/youtube-info.php */ -export function getTargetBitrate (resolution: VideoResolution, fps: number, - fpsTranscodingConstants: VideoTranscodingFPS) { +export function getBaseBitrate (resolution: VideoResolution) { switch (resolution) { case VideoResolution.H_240P: // quality according to Google Live Encoder: 300 - 700 Kbps @@ -30,29 +30,36 @@ export function getTargetBitrate (resolution: VideoResolution, fps: number, // Quality according to YouTube Video Info: 879 Kbps return 900 * 1000 case VideoResolution.H_720P: - if (fps === fpsTranscodingConstants.MAX) { - // quality according to Google Live Encoder: 2,250 - 6,000 Kbps - // Quality according to YouTube Video Info: 2634 Kbps - return 2600 * 1000 - } - // quality according to Google Live Encoder: 1,500 - 4,000 Kbps // Quality according to YouTube Video Info: 1752 Kbps return 1750 * 1000 case VideoResolution.H_1080P: // fallthrough default: - if (fps === fpsTranscodingConstants.MAX) { - // quality according to Google Live Encoder: 3000 - 6000 Kbps - // Quality according to YouTube Video Info: 4387 Kbps - return 4400 * 1000 - } - // quality according to Google Live Encoder: 3000 - 6000 Kbps // Quality according to YouTube Video Info: 3277 Kbps return 3300 * 1000 } } +/** + * Calculate the target bitrate based on video resolution and FPS. + */ +export function getTargetBitrate (resolution: VideoResolution, fps: number, + fpsTranscodingConstants: VideoTranscodingFPS) { + const baseBitrate = getBaseBitrate(resolution) + // The maximum bitrate, used when fps === VideoTranscodingFPS.MAX + // Based on numbers from Youtube, 60 fps bitrate divided by 30 fps bitrate: + // 2600 / 1750 = 1.48571428571 + // 4400 / 3300 = 1.33333333333 + const maxBitrate = baseBitrate * 1.4 + const maxBitrateDifference = maxBitrate - baseBitrate + const maxFpsDifference = fpsTranscodingConstants.MAX - fpsTranscodingConstants.AVERAGE + // For 1080p video with default settings, this results in the following formula: + // 3300 + (x - 30) * (1320/30) + // Example outputs: 1080p30: 3300 kbps, 1080p60: 4620 kbps, 720p30: 1750, 720p60: 2450 + return baseBitrate + (fps - fpsTranscodingConstants.AVERAGE) * (maxBitrateDifference / maxFpsDifference) +} + /** * The maximum bitrate we expect to see on a transcoded video in bytes per second. */ -- cgit v1.2.3 From e243c38c356b5cfd8ba1783f19389a99dc5cf527 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 9 Oct 2018 18:22:35 -0500 Subject: better documentation --- shared/models/videos/video-resolution.enum.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shared/models/videos/video-resolution.enum.ts b/shared/models/videos/video-resolution.enum.ts index 13c0fe9a7..4d2644cc0 100644 --- a/shared/models/videos/video-resolution.enum.ts +++ b/shared/models/videos/video-resolution.enum.ts @@ -49,14 +49,16 @@ export function getTargetBitrate (resolution: VideoResolution, fps: number, const baseBitrate = getBaseBitrate(resolution) // The maximum bitrate, used when fps === VideoTranscodingFPS.MAX // Based on numbers from Youtube, 60 fps bitrate divided by 30 fps bitrate: - // 2600 / 1750 = 1.48571428571 - // 4400 / 3300 = 1.33333333333 + // 720p: 2600 / 1750 = 1.48571428571 + // 1080p: 4400 / 3300 = 1.33333333333 const maxBitrate = baseBitrate * 1.4 const maxBitrateDifference = maxBitrate - baseBitrate const maxFpsDifference = fpsTranscodingConstants.MAX - fpsTranscodingConstants.AVERAGE // For 1080p video with default settings, this results in the following formula: // 3300 + (x - 30) * (1320/30) - // Example outputs: 1080p30: 3300 kbps, 1080p60: 4620 kbps, 720p30: 1750, 720p60: 2450 + // Example outputs: + // 1080p10: 2420 kbps, 1080p30: 3300 kbps, 1080p60: 4620 kbps + // 720p10: 1283 kbps, 720p30: 1750 kbps, 720p60: 2450 return baseBitrate + (fps - fpsTranscodingConstants.AVERAGE) * (maxBitrateDifference / maxFpsDifference) } -- cgit v1.2.3 From 2f71dcf8de13e5250957173c9a2efe1c5544aeb2 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 9 Oct 2018 18:53:16 -0500 Subject: more documentation --- shared/models/videos/video-resolution.enum.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/shared/models/videos/video-resolution.enum.ts b/shared/models/videos/video-resolution.enum.ts index 4d2644cc0..c9b258921 100644 --- a/shared/models/videos/video-resolution.enum.ts +++ b/shared/models/videos/video-resolution.enum.ts @@ -43,14 +43,20 @@ export function getBaseBitrate (resolution: VideoResolution) { /** * Calculate the target bitrate based on video resolution and FPS. + * + * The calculation is based on two values: + * Bitrate at VideoTranscodingFPS.AVERAGE is always the same as + * getBaseBitrate(). Bitrate at VideoTranscodingFPS.MAX is always + * getBaseBitrate() * 1.4. All other values are calculated linearly + * between these two points. */ export function getTargetBitrate (resolution: VideoResolution, fps: number, fpsTranscodingConstants: VideoTranscodingFPS) { const baseBitrate = getBaseBitrate(resolution) // The maximum bitrate, used when fps === VideoTranscodingFPS.MAX // Based on numbers from Youtube, 60 fps bitrate divided by 30 fps bitrate: - // 720p: 2600 / 1750 = 1.48571428571 - // 1080p: 4400 / 3300 = 1.33333333333 + // 720p: 2600 / 1750 = 1.49 + // 1080p: 4400 / 3300 = 1.33 const maxBitrate = baseBitrate * 1.4 const maxBitrateDifference = maxBitrate - baseBitrate const maxFpsDifference = fpsTranscodingConstants.MAX - fpsTranscodingConstants.AVERAGE @@ -58,7 +64,7 @@ export function getTargetBitrate (resolution: VideoResolution, fps: number, // 3300 + (x - 30) * (1320/30) // Example outputs: // 1080p10: 2420 kbps, 1080p30: 3300 kbps, 1080p60: 4620 kbps - // 720p10: 1283 kbps, 720p30: 1750 kbps, 720p60: 2450 + // 720p10: 1283 kbps, 720p30: 1750 kbps, 720p60: 2450 kbps return baseBitrate + (fps - fpsTranscodingConstants.AVERAGE) * (maxBitrateDifference / maxFpsDifference) } -- cgit v1.2.3 From c19787797150daf706dec586a44819a8b727fe84 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Wed, 10 Oct 2018 02:39:34 -0500 Subject: dont export base bitrate --- shared/models/videos/video-resolution.enum.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/models/videos/video-resolution.enum.ts b/shared/models/videos/video-resolution.enum.ts index c9b258921..2eee03843 100644 --- a/shared/models/videos/video-resolution.enum.ts +++ b/shared/models/videos/video-resolution.enum.ts @@ -15,7 +15,7 @@ export enum VideoResolution { * Google Live Encoder: https://support.google.com/youtube/answer/2853702?hl=en * YouTube Video Info (tested with random music video): https://www.h3xed.com/blogmedia/youtube-info.php */ -export function getBaseBitrate (resolution: VideoResolution) { +function getBaseBitrate (resolution: VideoResolution) { switch (resolution) { case VideoResolution.H_240P: // quality according to Google Live Encoder: 300 - 700 Kbps -- cgit v1.2.3 From bcf21a376f1e26cb3e74236e4cc41909310d4c32 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Wed, 17 Oct 2018 03:15:38 -0500 Subject: Set keyframe interval for transcoding (fixes #1147) (#1231) * Set keyframe interval for transcoding (fixes #1147) * remove -maxrate and old bitrate setter * pass fps as parameter * set type for ffmpeg param * assign ffmpeg object --- server/helpers/ffmpeg-utils.ts | 52 +++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index a964abdd4..17f35fe8d 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -116,28 +116,27 @@ type TranscodeOptions = { function transcode (options: TranscodeOptions) { return new Promise(async (res, rej) => { + let fps = await getVideoFileFPS(options.inputPath) + // On small/medium resolutions, limit FPS + if (options.resolution !== undefined && + options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && + fps > VIDEO_TRANSCODING_FPS.AVERAGE) { + fps = VIDEO_TRANSCODING_FPS.AVERAGE + } + let command = ffmpeg(options.inputPath, { niceness: FFMPEG_NICE.TRANSCODING }) .output(options.outputPath) - .preset(standard) + command = await presetH264(command, options.resolution, fps) if (CONFIG.TRANSCODING.THREADS > 0) { // if we don't set any threads ffmpeg will chose automatically command = command.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS) } - let fps = await getVideoFileFPS(options.inputPath) if (options.resolution !== undefined) { // '?x720' or '720x?' for example const size = options.isPortraitMode === true ? `${options.resolution}x?` : `?x${options.resolution}` command = command.size(size) - - // On small/medium resolutions, limit FPS - if ( - options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && - fps > VIDEO_TRANSCODING_FPS.AVERAGE - ) { - fps = VIDEO_TRANSCODING_FPS.AVERAGE - } } if (fps) { @@ -148,12 +147,6 @@ function transcode (options: TranscodeOptions) { command = command.withFPS(fps) } - // Constrained Encoding (VBV) - // https://slhck.info/video/2017/03/01/rate-control.html - // https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate - const targetBitrate = getTargetBitrate(options.resolution, fps, VIDEO_TRANSCODING_FPS) - command.outputOptions([`-maxrate ${ targetBitrate }`, `-bufsize ${ targetBitrate * 2 }`]) - command .on('error', (err, stdout, stderr) => { logger.error('Error in transcoding job.', { stdout, stderr }) @@ -199,9 +192,9 @@ function getVideoFileStream (path: string) { * and quality. Superfast and ultrafast will give you better * performance, but then quality is noticeably worse. */ -function veryfast (_ffmpeg) { - _ffmpeg - .preset(standard) +async function presetH264VeryFast (ffmpeg: ffmpeg, resolution: VideoResolution, fps: number): ffmpeg { + const localFfmpeg = await presetH264(ffmpeg, resolution, fps) + localFfmpeg .outputOption('-preset:v veryfast') .outputOption(['--aq-mode=2', '--aq-strength=1.3']) /* @@ -220,9 +213,9 @@ function veryfast (_ffmpeg) { /** * A preset optimised for a stillimage audio video */ -function audio (_ffmpeg) { - _ffmpeg - .preset(veryfast) +async function presetStillImageWithAudio (ffmpeg: ffmpeg, resolution: VideoResolution, fps: number): ffmpeg { + const localFfmpeg = await presetH264VeryFast(ffmpeg, resolution, fps) + localFfmpeg .outputOption('-tune stillimage') } @@ -290,8 +283,8 @@ namespace audio { * As for the audio, quality '5' is the highest and ensures 96-112kbps/channel * See https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr */ -async function standard (_ffmpeg) { - let localFfmpeg = _ffmpeg +async function presetH264 (ffmpeg: ffmpeg, resolution: VideoResolution, fps: number): ffmpeg { + let localFfmpeg = ffmpeg .format('mp4') .videoCodec('libx264') .outputOption('-level 3.1') // 3.1 is the minimal ressource allocation for our highest supported resolution @@ -324,5 +317,16 @@ async function standard (_ffmpeg) { if (bitrate !== undefined) return localFfmpeg.audioBitrate(bitrate) + // Constrained Encoding (VBV) + // https://slhck.info/video/2017/03/01/rate-control.html + // https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate + const targetBitrate = getTargetBitrate(resolution, fps, VIDEO_TRANSCODING_FPS) + localFfmpeg.outputOptions([`-maxrate ${ targetBitrate }`, `-bufsize ${ targetBitrate * 2 }`]) + + // Keyframe interval of 2 seconds for faster seeking and resolution switching. + // https://streaminglearningcenter.com/blogs/whats-the-right-keyframe-interval.html + // https://superuser.com/a/908325 + localFfmpeg.outputOption(`-g ${ fps * 2 }`) + return localFfmpeg } -- cgit v1.2.3 From a73115f31ae891cb47759f075b1d2cead40817a4 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 17 Oct 2018 10:47:01 +0200 Subject: Fix webtorrent disabling --- .../my-account-video-settings.component.html | 11 ----- .../src/assets/player/peertube-videojs-plugin.ts | 47 ++++++++++++++-------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html index 50f798c79..8be8a66cc 100644 --- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html +++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html @@ -15,17 +15,6 @@ -
- - -
- -
-
- { + this.player.playbackRate(oldPlaybackRate) + return done() + }) + } + this.addTorrent(this.currentVideoFile.magnetUri, previousVideoFile, options, () => { this.player.playbackRate(oldPlaybackRate) return done() @@ -251,11 +266,7 @@ class PeerTubePlugin extends Plugin { private addTorrent ( magnetOrTorrentUrl: string, previousVideoFile: VideoFile, - options: { - forcePlay?: boolean, - seek?: number, - delay?: number - }, + options: PlayOptions, done: Function ) { console.log('Adding ' + magnetOrTorrentUrl + '.') @@ -291,7 +302,7 @@ class PeerTubePlugin extends Plugin { renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => { this.renderer = renderer - if (err || this.playerRefusedP2P) return this.fallbackToHttp(done) + if (err) return this.fallbackToHttp(options, done) return this.tryToPlay(err => { if (err) return done(err) @@ -299,7 +310,7 @@ class PeerTubePlugin extends Plugin { if (options.seek) this.seek(options.seek) if (options.forcePlay === false && paused === true) this.player.pause() - return done(err) + return done() }) }) }, options.delay || 0) @@ -435,12 +446,6 @@ class PeerTubePlugin extends Plugin { return this.updateVideoFile(undefined, { forcePlay: true, seek: this.startTime }) } - // Don't try on iOS that does not support MediaSource - if (this.isIOS()) { - this.currentVideoFile = this.pickAverageVideoFile() - return this.fallbackToHttp(undefined, false) - } - // Proxy first play const oldPlay = this.player.play.bind(this.player) this.player.play = () => { @@ -570,7 +575,9 @@ class PeerTubePlugin extends Plugin { return fetch(url, { method: 'PUT', body, headers }) } - private fallbackToHttp (done?: Function, play = true) { + private fallbackToHttp (options: PlayOptions, done?: Function) { + const paused = this.player.paused() + this.disableAutoResolution(true) this.flushVideoFile(this.currentVideoFile, true) @@ -582,9 +589,15 @@ class PeerTubePlugin extends Plugin { const httpUrl = this.currentVideoFile.fileUrl this.player.src = this.savePlayerSrcFunction this.player.src(httpUrl) - if (play) this.tryToPlay() - if (done) return done() + return this.tryToPlay(err => { + if (err && done) return done(err) + + if (options.seek) this.seek(options.seek) + if (options.forcePlay === false && paused === true) this.player.pause() + + if (done) return done() + }) } private handleError (err: Error | string) { -- cgit v1.2.3 From f365e978ed08e8fc7adf0607271c4071915629ee Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 17 Oct 2018 10:57:58 +0200 Subject: Update translations --- client/src/locale/source/angular_en_US.xml | 981 +++++++++++++++++++----- client/src/locale/source/server_en_US.xml | 4 +- client/src/locale/target/angular_ar_001.xml | 110 ++- client/src/locale/target/angular_ca_ES.xml | 125 +-- client/src/locale/target/angular_cs_CZ.xml | 116 +-- client/src/locale/target/angular_de_DE.xml | 635 ++++++++++----- client/src/locale/target/angular_eo.xml | 132 +--- client/src/locale/target/angular_es_ES.xml | 132 +--- client/src/locale/target/angular_eu_ES.xml | 247 +++--- client/src/locale/target/angular_fa_IR.xml | 33 +- client/src/locale/target/angular_fr_FR.xml | 381 ++++----- client/src/locale/target/angular_gl_ES.xml | 28 +- client/src/locale/target/angular_it_IT.xml | 886 +++++++++++++++++---- client/src/locale/target/angular_ja_JP.xml | 102 ++- client/src/locale/target/angular_nl_NL.xml | 26 +- client/src/locale/target/angular_oc.xml | 835 +++++++++++++++++--- client/src/locale/target/angular_pl_PL.xml | 321 ++++++-- client/src/locale/target/angular_pt_BR.xml | 247 +++--- client/src/locale/target/angular_ru_RU.xml | 302 ++++++-- client/src/locale/target/angular_sv_SE.xml | 385 +++++----- client/src/locale/target/angular_zh_Hans_CN.xml | 380 ++++----- client/src/locale/target/angular_zh_Hant_TW.xml | 647 ++++++++++++---- client/src/locale/target/player_de_DE.json | 2 +- client/src/locale/target/player_sv_SE.json | 2 +- client/src/locale/target/player_zh_Hans_CN.json | 2 +- client/src/locale/target/server_ar_001.xml | 4 - client/src/locale/target/server_ca_ES.json | 2 +- client/src/locale/target/server_cs_CZ.json | 2 +- client/src/locale/target/server_de_DE.json | 2 +- client/src/locale/target/server_eo.json | 2 +- client/src/locale/target/server_es_ES.json | 2 +- client/src/locale/target/server_eu_ES.json | 2 +- client/src/locale/target/server_fr_FR.json | 2 +- client/src/locale/target/server_gl_ES.xml | 4 - client/src/locale/target/server_nl_NL.xml | 4 - client/src/locale/target/server_oc.json | 2 +- client/src/locale/target/server_pl_PL.xml | 4 - client/src/locale/target/server_pt_BR.json | 2 +- client/src/locale/target/server_sv_SE.json | 2 +- client/src/locale/target/server_zh_Hans_CN.json | 2 +- client/src/locale/target/server_zh_Hant_TW.json | 2 +- 41 files changed, 4782 insertions(+), 2319 deletions(-) diff --git a/client/src/locale/source/angular_en_US.xml b/client/src/locale/source/angular_en_US.xml index 7f91bd550..2b0754fcf 100644 --- a/client/src/locale/source/angular_en_US.xml +++ b/client/src/locale/source/angular_en_US.xml @@ -205,12 +205,12 @@ 18 - app/login/login.component.html - 72 + app/shared/moderation/user-ban-modal.component.html + 22 - app/+admin/users/user-list/user-ban-modal.component.html - 22 + app/login/login.component.html + 72 app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html @@ -226,11 +226,23 @@ app/shared/forms/reactive-file.component.html 11 + + Unlisted + + app/shared/video/video-miniature.component.html + 12 + + + Private + + app/shared/video/video-miniature.component.html + 13 + <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views app/shared/video/video-miniature.component.html - 13 + 16 Delete @@ -260,6 +272,10 @@ app/shared/buttons/edit-button.component.html 5 + + app/shared/buttons/edit-button.component.html + 1 + Truncated preview @@ -372,7 +388,7 @@ app/+admin/users/user-list/user-list.component.html - 19 + 42 @@ -382,6 +398,40 @@ app/shared/instance/instance-features-table.component.html 14 + + Ban + + app/shared/moderation/user-ban-modal.component.html + 3 + + + Reason... + + app/shared/moderation/user-ban-modal.component.html + 10 + + + app/videos/+video-watch/modal/video-report.component.html + 11 + + + app/videos/+video-watch/modal/video-blacklist.component.html + 11 + + + + A banned user will no longer be able to login. + + + app/shared/moderation/user-ban-modal.component.html + 17 + + + Ban this user + + app/shared/moderation/user-ban-modal.component.html + 25 + Login @@ -518,7 +568,7 @@ app/+admin/users/user-list/user-list.component.html - 18 + 41 app/+verify-account/verify-account-ask-send-email/verify-account-ask-send-email.component.html @@ -634,8 +684,11 @@ app/search/search.component.html 6 - - Filters + + + Filters + <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span>"/><x id="INTERPOLATION" equiv-text="{{ numberOfFilters() }}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/> + app/search/search.component.html 16 @@ -646,19 +699,19 @@ app/search/search.component.html - 25 + 28 <x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers app/search/search.component.html - 41 + 44 <x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views app/search/search.component.html - 52 + 55 Change the language @@ -716,7 +769,7 @@ app/+accounts/accounts.component.html - 17 + 29 app/+video-channels/video-channels.component.html @@ -772,7 +825,7 @@ app/+accounts/accounts.component.html - 21 + 33 app/+video-channels/video-channels.component.html @@ -902,23 +955,49 @@ app/search/search-filters.component.html 94 + + Display unlisted and private videos + + app/shared/video/abstract-video-list.html + 11 + + + app/shared/video/abstract-video-list.html + 11 + + + app/shared/video/abstract-video-list.html + 11 + + + app/shared/video/abstract-video-list.html + 11 + + + app/shared/video/abstract-video-list.html + 11 + + + app/shared/video/abstract-video-list.html + 11 + No results. app/shared/video/abstract-video-list.html - 7 + 17 app/shared/video/abstract-video-list.html - 7 + 17 app/shared/video/abstract-video-list.html - 7 + 17 app/shared/video/abstract-video-list.html - 7 + 17 app/videos/video-list/video-overview.component.html @@ -926,7 +1005,7 @@ app/shared/video/abstract-video-list.html - 7 + 17 app/+my-account/my-account-videos/my-account-videos.component.html @@ -934,7 +1013,7 @@ app/shared/video/abstract-video-list.html - 7 + 17 @@ -974,6 +1053,14 @@ app/+admin/config/edit-custom-config/edit-custom-config.component.html 8 + + app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html + 8 + + + app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html + 12 + PeerTube @@ -1260,17 +1347,47 @@ app/+about/about-peertube/about-peertube.component.html 95 + + Banned + + app/+accounts/accounts.component.html + 12 + + + Muted + + app/+accounts/accounts.component.html + 13 + + + Muted by your instance + + app/+accounts/accounts.component.html + 14 + + + Instance muted + + app/+accounts/accounts.component.html + 15 + + + Instance muted by your instance + + app/+accounts/accounts.component.html + 16 + <x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers app/+accounts/accounts.component.html - 12 + 24 Video channels app/+accounts/accounts.component.html - 19 + 31 Stats @@ -1320,7 +1437,7 @@ app/+admin/follows/followers-list/followers-list.component.html - 9 + 18 app/+my-account/my-account-video-channels/my-account-video-channel-edit.component.html @@ -1444,8 +1561,8 @@ app/videos/+video-edit/video-add-components/video-import-torrent.component.html 42 - - Video import with HTTP enabled + + Video import with HTTP URL (i.e. YouTube) enabled app/+admin/config/edit-custom-config/edit-custom-config.component.html 115 @@ -1704,15 +1821,29 @@ app/+admin/follows/following-add/following-add.component.html 21 + + Filter... + + app/+admin/follows/followers-list/followers-list.component.html + 8 + + + app/+admin/follows/following-list/following-list.component.html + 9 + + + app/+admin/users/user-list/user-list.component.html + 27 + ID app/+admin/follows/followers-list/followers-list.component.html - 7 + 16 app/+admin/follows/following-list/following-list.component.html - 7 + 18 app/+admin/jobs/jobs-list/jobs-list.component.html @@ -1722,27 +1853,27 @@ Score app/+admin/follows/followers-list/followers-list.component.html - 8 + 17 Host app/+admin/follows/followers-list/followers-list.component.html - 10 + 19 app/+admin/follows/following-list/following-list.component.html - 8 + 19 State app/+admin/follows/followers-list/followers-list.component.html - 11 + 20 app/+admin/follows/following-list/following-list.component.html - 9 + 20 app/+admin/jobs/jobs-list/jobs-list.component.html @@ -1756,11 +1887,11 @@ Created <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="<p-sortIcon>"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="</p-sortIcon>"/> app/+admin/follows/followers-list/followers-list.component.html - 12 + 21 app/+admin/follows/following-list/following-list.component.html - 10 + 21 app/+admin/jobs/jobs-list/jobs-list.component.html @@ -1768,7 +1899,7 @@ app/+admin/users/user-list/user-list.component.html - 21 + 44 app/+admin/moderation/video-abuse-list/video-abuse-list.component.html @@ -1782,27 +1913,27 @@ Accepted app/+admin/follows/followers-list/followers-list.component.html - 23 + 32 app/+admin/follows/following-list/following-list.component.html - 21 + 32 Pending app/+admin/follows/followers-list/followers-list.component.html - 24 + 33 app/+admin/follows/following-list/following-list.component.html - 22 + 33 Redundancy allowed app/+admin/follows/following-list/following-list.component.html - 11 + 22 Manage follows @@ -1908,7 +2039,7 @@ app/+admin/users/user-list/user-list.component.html - 20 + 43 @@ -1933,71 +2064,45 @@ app/+admin/users/user-edit/user-edit.component.html 72 - - Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/> - - app/+admin/users/user-list/user-ban-modal.component.html - 3 - - - Reason... - - app/+admin/users/user-list/user-ban-modal.component.html - 10 - - - app/videos/+video-watch/modal/video-report.component.html - 11 - - - app/videos/+video-watch/modal/video-blacklist.component.html - 11 - - - - A banned user will no longer be able to login. - - - app/+admin/users/user-list/user-ban-modal.component.html - 17 - - - Ban this user - - app/+admin/users/user-list/user-ban-modal.component.html - 25 - Users list app/+admin/users/user-list/user-list.component.html 2 + + Batch actions + + app/+admin/users/user-list/user-list.component.html + 19 + Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="<p-sortIcon>"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="</p-sortIcon>"/> app/+admin/users/user-list/user-list.component.html - 17 + 40 - - Actions + + (banned) app/+admin/users/user-list/user-list.component.html - 43 + 65 + + Go to the account page - app/+admin/moderation/video-abuse-list/video-abuse-list.component.html - 44 + app/+admin/users/user-list/user-list.component.html + 63 - app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html - 33 + app/videos/+video-watch/video-watch.component.html + 133 Ban reason: app/+admin/users/user-list/user-list.component.html - 51 + 82 Moderation comment @@ -2069,6 +2174,16 @@ app/+my-account/my-account-ownership/my-account-ownership.component.html 33 + + Actions + + app/+admin/moderation/video-abuse-list/video-abuse-list.component.html + 44 + + + app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html + 33 + Reason: @@ -2123,6 +2238,72 @@ app/+admin/moderation/moderation.component.html 7 + + Muted accounts + + app/+admin/moderation/moderation.component.html + 9 + + + app/+my-account/my-account.component.html + 29 + + + app/+my-account/my-account-blocklist/my-account-blocklist.component.html + 2 + + + Muted servers + + app/+admin/moderation/moderation.component.html + 11 + + + Account + + app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html + 8 + + + app/+my-account/my-account-blocklist/my-account-blocklist.component.html + 12 + + + Muted at <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="<p-sortIcon>"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="</p-sortIcon>"/> + + app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html + 9 + + + app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html + 9 + + + app/+my-account/my-account-blocklist/my-account-blocklist.component.html + 13 + + + app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html + 13 + + + Unmute + + app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html + 18 + + + app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html + 19 + + + app/+my-account/my-account-blocklist/my-account-blocklist.component.html + 22 + + + app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html + 23 + My settings @@ -2159,11 +2340,27 @@ app/+my-account/my-account.component.html 18 + + Misc + + app/+my-account/my-account.component.html + 24 + + + Muted instances + + app/+my-account/my-account.component.html + 31 + + + app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html + 2 + Ownership changes app/+my-account/my-account.component.html - 22 + 33 Video quota: @@ -2437,17 +2634,23 @@ When you will upload a video in this channel, the video support field will be au app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html 3 + + Use WebTorrent to exchange parts of the video with others + + app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html + 20 + Automatically plays video app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html - 20 + 25 Save app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html - 23 + 28 Update my profile @@ -3155,12 +3358,6 @@ When you will upload a video in this channel, the video support field will be au app/videos/+video-watch/video-watch.component.html 134 - - Go to the account page - - app/videos/+video-watch/video-watch.component.html - 133 - Show more @@ -3223,23 +3420,17 @@ When you will upload a video in this channel, the video support field will be au app/videos/+video-watch/comment/video-comments.component.html 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/></strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - app/videos/+video-watch/comment/video-comments.component.html - 8 - No comments. app/videos/+video-watch/comment/video-comments.component.html - 18 + 17 View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies app/videos/+video-watch/comment/video-comments.component.html - 55 + 54 @@ -3247,7 +3438,7 @@ When you will upload a video in this channel, the video support field will be au app/videos/+video-watch/comment/video-comments.component.html - 64 + 63 Add comment... @@ -3354,50 +3545,16 @@ When you will upload a video in this channel, the video support field will be au 1 - - 240p - - src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts - 1 - - - - 360p - - src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts - 1 - - - - 480p - - src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts - 1 - - - - 720p - - src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts - 1 - - - - 1080p + + Error - src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts + src/app/+accounts/accounts.component.ts 1 - - - Auto (via ffmpeg) - src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts + src/app/+accounts/accounts.component.ts 1 - - - Error src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts 1 @@ -3430,6 +3587,14 @@ When you will upload a video in this channel, the video support field will be au src/app/+admin/jobs/jobs-list/jobs-list.component.ts 1 + + src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts + 1 + + + src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts + 1 + src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.ts 1 @@ -3455,7 +3620,7 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/+admin/users/user-list/user-ban-modal.component.ts + src/app/+admin/users/user-list/user-list.component.ts 1 @@ -3475,7 +3640,11 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/+admin/users/user-list/user-list.component.ts + src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts + 1 + + + src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts 1 @@ -3562,6 +3731,58 @@ When you will upload a video in this channel, the video support field will be au src/app/shared/forms/reactive-file.component.ts 1 + + src/app/shared/moderation/user-ban-modal.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + src/app/shared/user-subscription/subscribe-button.component.ts 1 @@ -3667,36 +3888,43 @@ When you will upload a video in this channel, the video support field will be au 1 - - You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. + + 240p src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts 1 - - This could lead to security issues or bugs if you do not understand it. + + 360p src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts 1 - - Are you sure you want to update the configuration? + + 480p src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts 1 - - Please type + + 720p src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts 1 - - to confirm. + + 1080p + + src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts + 1 + + + + Auto (via ffmpeg) src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts 1 @@ -3720,6 +3948,14 @@ When you will upload a video in this channel, the video support field will be au src/app/+admin/follows/shared/redundancy-checkbox.component.ts 1 + + src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts + 1 + + + src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts + 1 + src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.ts 1 @@ -3741,7 +3977,7 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/+admin/users/user-list/user-ban-modal.component.ts + src/app/+admin/users/user-list/user-list.component.ts 1 @@ -3749,71 +3985,119 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/+admin/users/user-list/user-list.component.ts + src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts + 1 + + + src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts + 1 + + + src/app/+my-account/my-account-ownership/my-account-accept-ownership/my-account-accept-ownership.component.ts + 1 + + + src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts + 1 + + + src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.ts + 1 + + + src/app/+my-account/my-account-settings/my-account-profile/my-account-profile.component.ts + 1 + + + src/app/+my-account/my-account-settings/my-account-settings.component.ts + 1 + + + src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts + 1 + + + src/app/+my-account/my-account-video-channels/my-account-video-channel-create.component.ts + 1 + + + src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts + 1 + + + src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts + 1 + + + src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts + 1 + + + src/app/+my-account/my-account-videos/my-account-videos.component.ts 1 - src/app/+my-account/my-account-ownership/my-account-accept-ownership/my-account-accept-ownership.component.ts + src/app/+my-account/my-account-videos/my-account-videos.component.ts 1 - src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts + src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts 1 - src/app/+my-account/my-account-settings/my-account-danger-zone/my-account-danger-zone.component.ts + src/app/+verify-account/verify-account-ask-send-email/verify-account-ask-send-email.component.ts 1 - src/app/+my-account/my-account-settings/my-account-profile/my-account-profile.component.ts + src/app/login/login.component.ts 1 - src/app/+my-account/my-account-settings/my-account-settings.component.ts + src/app/reset-password/reset-password.component.ts 1 - src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts + src/app/shared/moderation/user-ban-modal.component.ts 1 - src/app/+my-account/my-account-video-channels/my-account-video-channel-create.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+my-account/my-account-video-channels/my-account-video-channels.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+my-account/my-account-videos/my-account-videos.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+my-account/my-account-videos/my-account-videos.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+verify-account/verify-account-ask-send-email/verify-account-ask-send-email.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/login/login.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/reset-password/reset-password.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 @@ -3879,11 +4163,11 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/+admin/users/shared/user.service.ts + src/app/+my-account/my-account-settings/my-account-settings.component.ts 1 - src/app/+my-account/my-account-settings/my-account-settings.component.ts + src/app/shared/users/user.service.ts 1 @@ -4046,6 +4330,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> unmuted by your instance. + + src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts + 1 + + + + Instance <x id="INTERPOLATION" equiv-text="{{host}}"/> unmuted by your instance. + + src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts + 1 + + Comment updated. @@ -4110,13 +4408,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Moderator - - src/app/+admin/users/shared/user.service.ts - 1 - - User <x id="INTERPOLATION" equiv-text="{{username}}"/> created. @@ -4138,28 +4429,22 @@ When you will upload a video in this channel, the video support field will be au 1 - - User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned. + + Unban - src/app/+admin/users/user-list/user-ban-modal.component.ts + src/app/+admin/users/user-list/user-list.component.ts 1 - - - Ban src/app/+admin/users/user-list/user-list.component.ts 1 - - - Unban - src/app/+admin/users/user-list/user-list.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 - src/app/+admin/users/user-list/user-list.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 @@ -4169,16 +4454,20 @@ When you will upload a video in this channel, the video support field will be au src/app/+admin/users/user-list/user-list.component.ts 1 + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + - - Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>? + + Do you really want to unban <x id="INTERPOLATION" equiv-text="{{num}}"/> users? src/app/+admin/users/user-list/user-list.component.ts 1 - - User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned. + + <x id="INTERPOLATION" equiv-text="{{num}}"/> users unbanned. src/app/+admin/users/user-list/user-list.component.ts 1 @@ -4190,21 +4479,47 @@ When you will upload a video in this channel, the video support field will be au src/app/+admin/users/user-list/user-list.component.ts 1 + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + - - If you remove this user, you will not be able to create another with the same username! + + If you remove these users, you will not be able to create others with the same username! src/app/+admin/users/user-list/user-list.component.ts 1 - - User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted. + + <x id="INTERPOLATION" equiv-text="{{num}}"/> users deleted. src/app/+admin/users/user-list/user-list.component.ts 1 + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> unmuted. + + src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Instance <x id="INTERPOLATION" equiv-text="{{host}}"/> unmuted. + + src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + Ownership accepted @@ -4286,6 +4601,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + This name already exists on this instance. + + src/app/+my-account/my-account-video-channels/my-account-video-channel-create.component.ts + 1 + + Create @@ -4427,6 +4749,101 @@ When you will upload a video in this channel, the video support field will be au 1 + + Subscribe to the account + + src/app/+video-channels/video-channels.component.ts + 1 + + + src/app/videos/+video-watch/video-watch.component.ts + 1 + + + + Focus the search bar + + src/app/app.component.ts + 1 + + + + Toggle the left menu + + src/app/app.component.ts + 1 + + + + Go to the videos overview page + + src/app/app.component.ts + 1 + + + + Go to the trending videos page + + src/app/app.component.ts + 1 + + + + Go to the recently added videos page + + src/app/app.component.ts + 1 + + + + Go to the local videos page + + src/app/app.component.ts + 1 + + + + Go to the videos upload page + + src/app/app.component.ts + 1 + + + + Toggle Dark theme + + src/app/app.component.ts + 1 + + + + Go to my subscriptions + + src/app/core/auth/auth.service.ts + 1 + + + + Go to my videos + + src/app/core/auth/auth.service.ts + 1 + + + + Go to my imports + + src/app/core/auth/auth.service.ts + 1 + + + + Go to my channels + + src/app/core/auth/auth.service.ts + 1 + + Cannot retrieve OAuth Client credentials: <x id="INTERPOLATION" equiv-text="{{errorText}}"/>. @@ -4960,6 +5377,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + You can only transfer ownership to a local account + + src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts + 1 + + Name is required. @@ -5662,6 +6086,146 @@ When you will upload a video in this channel, the video support field will be au 1 + + <x id="INTERPOLATION" equiv-text="{{num}}"/> users banned. + + src/app/shared/moderation/user-ban-modal.component.ts + 1 + + + + User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned. + + src/app/shared/moderation/user-ban-modal.component.ts + 1 + + + + Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>? + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + If you remove this user, you will not be able to create another with the same username! + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> muted. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Instance <x id="INTERPOLATION" equiv-text="{{host}}"/> muted. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> muted by the instance. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> unmuted by the instance. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Instance <x id="INTERPOLATION" equiv-text="{{host}}"/> muted by the instance. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Instance <x id="INTERPOLATION" equiv-text="{{host}}"/> unmuted by the instance. + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Mute this account + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Unmute this account + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Mute the instance + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Unmute the instance + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Mute this account by your instance + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Unmute this account by your instance + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Mute the instance by your instance + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + + + Unmute the instance by your instance + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. @@ -5718,6 +6282,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Moderator + + src/app/shared/users/user.service.ts + 1 + + Only I can see this video @@ -5880,6 +6451,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Like the video + + src/app/videos/+video-watch/video-watch.component.ts + 1 + + + + Dislike the video + + src/app/videos/+video-watch/video-watch.component.ts + 1 + + Do you really want to delete this video? diff --git a/client/src/locale/source/server_en_US.xml b/client/src/locale/source/server_en_US.xml index 8858a7a59..b6e62ce80 100644 --- a/client/src/locale/source/server_en_US.xml +++ b/client/src/locale/source/server_en_US.xml @@ -41,8 +41,8 @@ Entertainment undefined - - News + + News & Politics undefined diff --git a/client/src/locale/target/angular_ar_001.xml b/client/src/locale/target/angular_ar_001.xml index c6c3338a7..1154e07c7 100644 --- a/client/src/locale/target/angular_ar_001.xml +++ b/client/src/locale/target/angular_ar_001.xml @@ -154,7 +154,7 @@ - views - مشاهدة - 13 + 16 @@ -168,7 +168,7 @@ Edit تحرير - 5 + 1 @@ -196,7 +196,21 @@ Video quota حصة الفيديو - 19 + 42 + + + + Ban + حظر + + 3 + + + + Reason... + السبب… + + 11 @@ -384,34 +398,27 @@ 5 - - Filters - عوامل التصفية - - 16 - - No results found لم يتم العثور على أية نتيجة - 25 + 28 subscribers مشترك - 41 + 44 - views - مشاهدة - 52 + 55 @@ -636,14 +643,14 @@ No results. لا نتائج - 7 + 17 Instance مثيل الخادوم - 8 + 12 @@ -825,14 +832,14 @@ subscribers مشترك - 12 + 24 Video channels قنوات الفيديو - 19 + 31 @@ -947,13 +954,6 @@ 42 - - Video import with HTTP enabled - إستيراد الملف باستخدام HTTP مفعل - - 115 - - Administrator المدير @@ -1078,7 +1078,7 @@ Host المضيف - 8 + 19 @@ -1148,7 +1148,7 @@ Role الدور - 20 + 43 @@ -1158,13 +1158,6 @@ 72 - - Reason... - السبب… - - 11 - - Users list قائمة المستخدِمون @@ -1172,11 +1165,11 @@ 2 - - Actions - الإجراءات + + Go to the account page + الإنتقال إلى صفحة الحساب - 33 + 133 @@ -1221,6 +1214,13 @@ 33 + + Actions + الإجراءات + + 33 + + Reason: السبب: @@ -1467,14 +1467,14 @@ Automatically plays video التشغيل التلقائي للفيديو - 20 + 25 Save حفظ - 23 + 28 @@ -1782,13 +1782,6 @@ 123 - - Go to the account page - الإنتقال إلى صفحة الحساب - - 133 - - Show more عرض المزيد @@ -1825,7 +1818,7 @@ No comments. ليس هناك تعليقات. - 18 + 17 @@ -1834,7 +1827,7 @@ تم تعطيل التعليقات. - 64 + 63 @@ -1937,13 +1930,6 @@ 1 - - Ban - حظر - - 1 - - Unban ألغ الحظر @@ -1958,13 +1944,6 @@ 1 - - Do you really want to unban ? - هل تريد إلغاء الحظر عن ? - - 1 - - You cannot delete root. لا يمكنك حذف المسخدم الجذر @@ -2539,6 +2518,13 @@ 1 + + Do you really want to unban ? + هل تريد إلغاء الحظر عن ? + + 1 + + Subscribed مشترك diff --git a/client/src/locale/target/angular_ca_ES.xml b/client/src/locale/target/angular_ca_ES.xml index 1fd88b480..3e0b01658 100644 --- a/client/src/locale/target/angular_ca_ES.xml +++ b/client/src/locale/target/angular_ca_ES.xml @@ -7,7 +7,7 @@ - views - visualitzacions - 13 + 16 @@ -21,7 +21,7 @@ Edit Editar - 5 + 1 @@ -49,7 +49,14 @@ Video quota Quota de vídeo - 19 + 42 + + + + Reason... + Motiu... + + 11 @@ -236,13 +243,6 @@ 6 - - Filters - Filtres - - 16 - - No results found @@ -251,7 +251,7 @@ Cap resultat - 25 + 28 @@ -419,14 +419,14 @@ No results. Sense resultats. - 7 + 17 Instance Instància - 8 + 12 @@ -748,14 +748,14 @@ subscribers subscriptors - 12 + 24 Video channels Canals de vídeo - 19 + 31 @@ -1104,14 +1104,14 @@ Score Puntuació - 8 + 17 Host Amfitrió - 8 + 19 @@ -1202,7 +1202,7 @@ Role Rol - 20 + 43 @@ -1218,13 +1218,6 @@ 65 - - Reason... - Motiu... - - 11 - - Users list Llista d'usuaris @@ -1236,7 +1229,14 @@ Username Nom d'usuari - 17 + 40 + + + + Go to the account page + Anar a la pàgina del compte + + 133 @@ -1417,14 +1417,14 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir Automatically plays video Reprodueix vídeo automàticament - 20 + 25 Save Desa - 23 + 28 @@ -1754,13 +1754,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 123 - - Go to the account page - Anar a la pàgina del compte - - 133 - - Show more Veure més @@ -1811,25 +1804,18 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Pots fer comentaris a la pàgina de la teva instància on aquest vídeo està federat amb el teu compte de PeerTube o mitjançant qualsevol instància del fedivers que sigui compatible amb ActivityPub. Per exemple, amb Mastodon o Pleroma, pots escriure en el quadre de cerca <strong>@@</strong> i torna a trobar el vídeo. S''estan treballant en poder fer comentaris directes a <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Cap comentari. - 18 + 17 View all replies Veure totes les respostes - 55 + 54 @@ -1840,7 +1826,7 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir Els comentaris estan desactivats. - 64 + 63 @@ -1910,41 +1896,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - You set custom . - Estableix personalitzacions . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Això podria provocar problemes de seguretat o errors si no ho entens. - - 1 - - - - Are you sure you want to update the configuration? - Estàs segur que vols actualitzar la configuració? - - 1 - - - - Please type - Si us plau escriu - - 1 - - - - to confirm. - per confirmar. - - 1 - - Success Èxit @@ -2064,13 +2015,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - User deleted. - Usuari eliminat. - - 1 - - Password updated. Contrasenya actualitzada. @@ -3109,6 +3053,13 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 + + User deleted. + Usuari eliminat. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La sol·licitud és massa gran per al servidor. Contacta amb el teu administrador si vols augmentar la mida del límit. diff --git a/client/src/locale/target/angular_cs_CZ.xml b/client/src/locale/target/angular_cs_CZ.xml index deed0d6b1..81644aa52 100644 --- a/client/src/locale/target/angular_cs_CZ.xml +++ b/client/src/locale/target/angular_cs_CZ.xml @@ -140,7 +140,7 @@ - views - zhlédnutí - 13 + 16 @@ -154,7 +154,7 @@ Edit Upravit - 5 + 1 @@ -182,7 +182,7 @@ Video quota Limit na videa - 19 + 42 @@ -196,6 +196,13 @@ 14 + + Reason... + Důvod... + + 11 + + Login @@ -451,14 +458,14 @@ No results. Žádné výsledky. - 7 + 17 Instance Instance - 8 + 12 @@ -774,14 +781,14 @@ subscribers odběratelů - 12 + 24 Video channels Video kanály - 19 + 31 @@ -1130,14 +1137,14 @@ Score Skóre - 8 + 17 Host Host - 8 + 19 @@ -1228,7 +1235,7 @@ Role Role - 20 + 43 @@ -1244,13 +1251,6 @@ 65 - - Reason... - Důvod... - - 11 - - Users list Seznam uživatelů @@ -1262,7 +1262,14 @@ Username Uživatelské jméno - 17 + 40 + + + + Go to the account page + Přejít na stránku kanálu + + 133 @@ -1443,14 +1450,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video Automaticky přehrávat videa - 20 + 25 Save Uložit - 23 + 28 @@ -1780,13 +1787,6 @@ When you will upload a video in this channel, the video support field will be au 123 - - Go to the account page - Přejít na stránku kanálu - - 133 - - Show more Zobrazit více @@ -1837,25 +1837,18 @@ When you will upload a video in this channel, the video support field will be au 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Můžete komentovat video na stránkách instance, kde je vaše video federováno s PeerTube účtem nebo pomocí kterékoliv instance obsahující ActivityPub federaci. V instancích s Mastodon nebo Pleroma napište do vyhledávacího pole <strong>@@</strong> a najděte video. Na přímém komentování se pracuje: <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Žádné komentáře - 18 + 17 View all replies Zobrazit všech odpovědí - 55 + 54 @@ -1866,7 +1859,7 @@ When you will upload a video in this channel, the video support field will be au Komentáře k tomuto video nejsou povoleny. - 64 + 63 @@ -1936,41 +1929,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - You set custom . - Nastaveno vlastní . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Tato akce může vést k bezpečnostním problémům nebo chybám, pokud jí nerozumíte. - - 1 - - - - Are you sure you want to update the configuration? - Opravdu chcete aktualizovat nastavení? - - 1 - - - - Please type - Prosím napište - - 1 - - - - to confirm. - pro potvrzení. - - 1 - - Success Úspěšně @@ -2090,13 +2048,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - User deleted. - Uživatel odstraněn. - - 1 - - Password updated. Heslo aktualizováno. @@ -3135,6 +3086,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + User deleted. + Uživatel odstraněn. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Požadavek je příliš velký. Prosím, kontaktujte administrátor pro navýšení limitu. diff --git a/client/src/locale/target/angular_de_DE.xml b/client/src/locale/target/angular_de_DE.xml index 12f0dda27..6f5f436e8 100644 --- a/client/src/locale/target/angular_de_DE.xml +++ b/client/src/locale/target/angular_de_DE.xml @@ -231,7 +231,7 @@ - views - Aufrufe - 13 + 16 @@ -245,7 +245,7 @@ Edit Bearbeiten - 5 + 1 @@ -269,11 +269,112 @@ 19 + + + + Subscribe + + + + + + + + Abonnieren + + + + + + + 5 + + + + + Unsubscribe + + + Abo beenden + + + 18 + + + + Using an ActivityPub account + Mit einem ActivityPub-Konto + + 36 + + + + Subscribe with an account on + Mit einem Konto auf abonnieren + + 39 + + + + Subscribe with your local account + Mit deinem lokalen Konto abonnieren + + 40 + + + + Subscribe with a Mastodon account: + Mit einem Mastodon-Konto abonnieren. + + 43 + + + + Using a syndication feed + Mit einem Feed + + 48 + + + + Subscribe via RSS + Über RSS abonnieren + + 49 + + + + + Remote subscribe + Remote interact + + + Entfernt abonnieren + Entfernt interagieren + + + 10 + + + + You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there. + Du kannst diesen Kanal über jede Fediverse-Instanz abonnieren, die ActivityPub unterstützt. Bei Mastodon oder Pleroma kannst du z. B. die URL des Kanals in das Suchfeld eingeben und dann das Abo starten. + + 17 + + + + You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there. + Du kannst hiermit über jede Fediverse-Instanz interagieren, die ActivityPub unterstützt. Bei Mastodon oder Pleroma kannst du z. B. die URL des Kanals in das Suchfeld eingeben und dann damit interagieren. + + 22 + + Video quota Videokontingent - 19 + 42 @@ -287,6 +388,38 @@ 14 + + Ban + Sperren + + 3 + + + + Reason... + Grund... + + 11 + + + + + A banned user will no longer be able to login. + + + Ein gesperrter Nutzer wird sich nicht mehr anmelden können. + + + 17 + + + + Ban this user + Diesen Nutzer sperren. + + 25 + + Login @@ -314,7 +447,7 @@ Username or email address - Benutzername und E-Mail-Adresse + Benutzername oder E-Mail-Adresse 15 @@ -492,13 +625,6 @@ Konto erstellen 6 - - Filters - Filter - - 16 - - No results found @@ -507,21 +633,21 @@ Konto erstellen Keine Ergebnisse gefunden. - 25 + 28 subscribers Abonnenten - 41 + 44 - views - Aufrufe - 52 + 55 @@ -645,6 +771,13 @@ Konto erstellen 25 + + Show keyboard shortcuts + Zeige Tastatur-Kürzel + + 91 + + Toggle dark interface Dunkle Oberfläche umschalten @@ -689,7 +822,7 @@ Konto erstellen Display sensitive content - Anstößige Inhalte anzeigen + Anstößige Inhalte zeigen 33 @@ -754,7 +887,7 @@ Konto erstellen No results. Keine Ergebnisse. - 7 + 17 @@ -768,6 +901,17 @@ Konto erstellen 6 + + + # + + + # + + + 14 + + @@ -791,7 +935,7 @@ Konto erstellen Instance Instanz - 8 + 12 @@ -838,7 +982,7 @@ Konto erstellen this instance provides a baseline quota of space for the videos of its users. - diese Instanz stellt für die Videos ihrer Nutzer einen Speicherplatz von zur Verfügung. + für die Videos ihrer Nutzer stellt diese Instanz einen Speicherplatz von zur Verfügung. 27 @@ -849,7 +993,7 @@ Konto erstellen this instance provides unlimited space for the videos of its users. - diese Instanz stellt unbegrenzten Speicherplatz für die Videos ihrer Nutzer zur Verfügung. + für die Videos ihrer Nutzer stellt diese Instanz unbegrenzten Speicherplatz zur Verfügung. 31 @@ -879,7 +1023,7 @@ Konto erstellen PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser. - PeerTube ist eine föderierte Videostreamingplattform basierend auf dem ActivityPub-Protokoll, die P2P direkt im Browser verwendet (WebTorrent). + PeerTube ist eine föderierte Videostreamingplattform basierend auf dem ActivityPub-Protokoll, die mit WebTorrent P2P-Technologie direkt im Browser verwendet. 6 @@ -889,7 +1033,7 @@ Konto erstellen It is a free and open-source software, under the AGPLv3 licence. - Es ist freie Open-Source-Software, die unter der AGPLv3-Lizenz steht. + Es handelt sich um freie Open-Source-Software, die unter der AGPLv3-Lizenz steht. 8 @@ -900,7 +1044,7 @@ Konto erstellen For more information, please visit joinpeertube.org. - Besuche für weitere Informationen joinpeertube.org. + Für weitere Informationen besuche joinpeertube.org. 12 @@ -919,7 +1063,7 @@ Konto erstellen This implies that your IP address is stored in the instance's BitTorrent tracker as long as you download or watch the video. - PeerTube verwendet das BitTorrent-Protokoll, um Bandbreite zwischen den Usern aufzuteilen. + PeerTube verwendet das BitTorrent-Protokoll, um Bandbreite zwischen den Nutzern aufzuteilen. Das setzt voraus, dass deine IP-Adresse auf dem BitTorrent-Tracker zwischengespeichert wird, solange du dir ein Video ansiehst oder herunterlädst. @@ -939,7 +1083,7 @@ Konto erstellen In practice, this is much more difficult because: - Theoretisch könnte jemand mit genug technischer Erfahrung herausfinden, welche IP-Adresse welches Video herunterlädt. + Theoretisch könnte jemand mit genug technischer Erfahrung herausfinden, mit welcher IP-Adresse welches Video heruntergeladen wird. In der Praxis ist das jedoch sehr schwierig, denn: @@ -953,7 +1097,7 @@ Konto erstellen Der Angreifer müsste für jedes Video eine separate HTTP-Anfrage senden. - Möchte er alle Videos von PeerTube verfolgen, so müsste er genausoviele Anfragen senden, wie es Videos gibt. (also eine ganze Menge!) + Möchte er alle Videos von PeerTube verfolgen, so müsste er genau so viele Anfragen senden, wie es Videos gibt – also möglicherweise eine ganze Menge. 33 @@ -966,7 +1110,7 @@ Konto erstellen Für jede gesendete Anfrage gibt der Tracker eine begrenzte Anzahl zufälliger Peers zurück. - Wenn sich z. B. 1000 Peers im Schwarm befinden und der Tracker immer nur 20 Peer pro Anfrage versendet, müssten mindestens 50 Anfragen gesendet werden, um jeden Peer im Schwarm zu kennen. + Wenn sich z. B. 1000 Peers im Schwarm befinden und der Tracker immer nur 20 Peers pro Anfrage versendet, müssten mindestens 50 Anfragen gesendet werden, um jeden Peer im Schwarm zu kennen. 38 @@ -977,7 +1121,7 @@ Konto erstellen Those requests have to be sent regularly to know who starts/stops watching a video. It is easy to detect that kind of behaviour - Diese Anfragen müssen regelmäßig versandt werden, damit bekannt ist, wer anfängt oder aufhört, sich ein Video anzusehen. Es ist leicht, diese Art von Verhalten zu entdecken + Diese Anfragen müssten regelmäßig versendet werden, um es mitzubekommen, wenn jemand anfängt oder aufhört, sich ein Video anzusehen. Es ist leicht, derartiges Verhalten zu entdecken. 43 @@ -988,7 +1132,7 @@ Konto erstellen If an IP address is stored in the tracker, it doesn't mean that the person behind the IP (if this person exists) has watched the video - Wenn eine IP im Tracker gespeichert wird, heißt das nicht unbedingt, dass die zugehörige Person das Video auch tatsächlich angesehen hat. + Wenn eine IP-Adresse im Tracker gespeichert wird, heißt das nicht unbedingt, dass die zugehörige Person das Video auch tatsächlich angesehen hat. 47 @@ -1014,7 +1158,7 @@ Konto erstellen Web-Peers sind nicht öffentlich einsehbar: Weil wir WebRTC im Browser benutzen (mit der WebTorrent-Bibliothek), ist das Protokoll verschieden vom klassischen BitTorrent. Wenn du deinen Browser benutzt, sendest du ein Signal mit deiner IP-Adresse zum Tracker, der zufällig andere Peers aussucht, an die das Signal weitergeleitet wird. - Siehe dieses Dokument für weitere Informationen + Siehe dieses Dokument für weitere Informationen. 55 @@ -1026,8 +1170,8 @@ Konto erstellen There are much more effective ways to get that kind of information. - Das Schlimmstfall-Szenario einer durchschnittlichen Person, die ihre Freunde ausspäht ist relativ unwahrscheinlich. - Es gibt viel effektivere Möglichkeiten, um an diese Art von Informationen zu gelangen. + Das Worst-Case-Szenario eines gewöhnlichen Nutzers, der so seine Freunde ausspäht, ist relativ unwahrscheinlich. + Es gibt viel bessere Möglichkeiten, um an diese Informationen zu gelangen. 62 @@ -1079,7 +1223,7 @@ Konto erstellen What will be done to mitigate this problem? - Was wird getan, um das Problem zu beheben? + Was wird getan, um dieses Problem zu beheben? 83 @@ -1090,8 +1234,8 @@ Konto erstellen In the meantime, we want to test different ideas related to this issue: - PeerTube befindet sich noch in der Beta-Phase und möchte die besten Gegenmaßnahmen bereitstellen, wenn die Software als stabil angesehen wird. - In der Zwischenzeit wollen wir verschiedene Ideen in diesem Zusammenhang ausprobieren: + PeerTube befindet sich noch in der Beta-Phase und möchte in der stabilen Version die besten Gegenmaßnahmen bereitstellen. + Bis dahin wollen wir verschiedene Ideen in diesem Zusammenhang ausprobieren: 85 @@ -1113,7 +1257,7 @@ Konto erstellen Ring a bell if there are unusual requests (being tested) - Informiere mich bei merkwürdigen Anfragen (wird getestet). + Bei ungewöhnlichen Anfragen darauf aufmerksam machen (wird getestet). 93 @@ -1136,14 +1280,14 @@ Konto erstellen subscribers Abonnenten - 12 + 24 Video channels Kanäle - 19 + 31 @@ -1232,7 +1376,7 @@ Konto erstellen With <strong>Do not list</strong> or <strong>Blur thumbnails</strong>, a confirmation will be requested to watch the video. - Bei Wahl der Optionen <strong>Nicht zeigen</strong> oder <strong>Vorschaubilder verschwommen anzeigen</strong> wird vor Ansicht des Videos eine Bestätigung gefordert. + Bei Wahl der Optionen <strong>Nicht zeigen</strong> oder <strong>Miniaturansichten verschwommen anzeigen</strong> wird vor Ansicht des Videos eine Bestätigung gefordert. 6 @@ -1246,7 +1390,7 @@ Konto erstellen Blur thumbnails - Vorschaubilder verschwommen anzeigen + Miniaturansichten verschwommen anzeigen 12 @@ -1286,13 +1430,6 @@ Konto erstellen 42 - - Video import with HTTP enabled - Video-Import über HTTP aktiviert - - 115 - - Video import with a torrent file or a magnet URI enabled Video-Import über eine Torrent-Datei oder einen Magnet-Link aktiviert @@ -1627,14 +1764,14 @@ Konto erstellen Score Punkte - 8 + 17 Host Host - 8 + 19 @@ -1651,11 +1788,25 @@ Konto erstellen 11 + + Accepted + Akzeptiert + + 32 + + + + Pending + Ausstehend + + 33 + + Redundancy allowed Redundanz erlaubt - 11 + 22 @@ -1746,7 +1897,7 @@ Konto erstellen Role Benutzerrolle - 20 + 43 @@ -1768,38 +1919,6 @@ Konto erstellen 72 - - Ban - sperren - - 3 - - - - Reason... - Grund... - - 11 - - - - - A banned user will no longer be able to login. - - - Ein gesperrter Nutzer wird sich nicht mehr anmelden können. - - - 17 - - - - Ban this user - Diesen Nutzer sperren. - - 25 - - Users list Benutzerliste @@ -1811,21 +1930,21 @@ Konto erstellen Username Benutzername - 17 + 40 - - Actions - Aktionen + + Go to the account page + Zur Kontoseite gehen - 33 + 133 Ban reason: Grund für die Sperrung: - 51 + 82 @@ -1888,6 +2007,13 @@ Konto erstellen 33 + + Actions + Aktionen + + 33 + + Reason: Grund: @@ -1995,9 +2121,9 @@ Konto erstellen Ownership changes - Änderungen des Besitzers + Besitzer ändern - 22 + 33 @@ -2226,6 +2352,13 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 30 + + Current password + Aktuelles Passwort + + 7 + + New password Neues Passwort @@ -2251,14 +2384,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Automatically plays video Videos automatisch abspielen - 20 + 25 Save Speichern - 23 + 28 @@ -2289,9 +2422,16 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 18 + + Once you delete your account, there is no going back. Please be certain. + Sobald dein Konto gelöscht ist, gibt es kein Zurück mehr. Sei dir bitte sicher. + + 2 + + Delete your account - Lösche dein Konto + Mein Konto löschen 4 @@ -2384,7 +2524,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa You can import any URL <a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'>supported by youtube-dl</a> or URL that points to a raw MP4 file. You should make sure you have diffusion rights over the content it points to, otherwise it could cause legal trouble to yourself and your instance. - Du kannst von jeder URL importieren, <a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'>die von youtube-dl unterstützt wird</a> oder jeder URL, die auf eine MP4-Datei zeigt. Du solltest sicherstellen, dass du die Verbreitungsrechte für den Inhalt hast, ansonsten könnte es legale Schwierigkeiten für dich und deine Instanz verursachen. + Du kannst von jeder URL importieren, <a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'>die von youtube-dl unterstützt wird</a> sowie von jeder URL, die auf eine MP4-Datei zeigt. Du solltest sicherstellen, dass du die Verbreitungsrechte für den Inhalt hast, ansonsten könnte es legale Schwierigkeiten für dich und deine Instanz verursachen. 9 @@ -2451,14 +2591,21 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Select the torrent to import - Wähle die Torrent-Datei für den Import + Wähle die Torrent-Datei für den Import aus 6 + + Or + Oder + + 11 + + Paste magnet URI - Füge die Magnet URI ein + Füge die Magnet-URI ein 14 @@ -2504,7 +2651,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Import with URL - Importiere über einer URL + Importiere über eine URL 17 @@ -2543,7 +2690,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Add this caption - Diesen Untertitel hinzufügen + Untertitel hinzufügen 40 @@ -2564,11 +2711,25 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Tags could be used to suggest relevant recommendations.</br>Press Enter to add a new tag. - Taks können genutzt werden, um relevante Empfehlungen aussprechen zu können.</br>Drücke die Eingabetaste, um einen neuen Tag hinzuzufügen. + Tags können genutzt werden, um relevante Empfehlungen aussprechen zu können.</br>Drücke die Eingabetaste, um einen neuen Tag hinzuzufügen. 18 + + + Tag + + Tag + + 21 + + + + Enter a new tag + Gib einen neuen Tag ein + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Videobeschreibungen sind standardmäßig gekürzt und müssen manuell aufgeklappt werden. @@ -2606,14 +2767,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Wait transcoding before publishing the video - Warte das Transkodieren ab, bevor du das Video veröffentlichst + Transkodieren abwarten, bevor das Video veröffentlicht wird 130 If you decide not to wait for transcoding before publishing the video, it could be unplayable until transcoding ends. - Wenn du dich entschließt, dass Transkodieren nicht abzuwarten, kann das Video unabspielbar sein, bis das Transkodieren beendet ist. + Wenn du dich entschließt, das Transkodieren nicht abzuwarten, kann das Video unabspielbar sein, bis das Transkodieren beendet ist. 131 @@ -2627,7 +2788,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Add another caption - Weiteren Untertitel hinzufügen + Weitere Untertitel hinzufügen 146 @@ -2694,7 +2855,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Upload thumbnail - Vorschaubild hochladen + Miniaturansicht hochladen 195 @@ -3001,13 +3162,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 134 - - Go to the account page - Gehe zur Kontoseite - - 133 - - Show more Mehr anzeigen @@ -3087,25 +3241,18 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Du kannst entweder auf der Seite deiner Fediverse-Instanz kommentieren oder auf einer anderen, die ActivityPub unterstützt. Bei Mastodon oder Pleroma kannst du z. B. in das Suchfeld <strong>@@</strong> eingeben und das Video wiederfinden. An der Möglichkeit zur direkten Kommentierung wird gearbeitet: <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Keine Kommentare. - 18 + 17 View all replies Zeige alle Antworten - 55 + 54 @@ -3116,7 +3263,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Kommentare sind abgeschaltet. - 64 + 63 @@ -3137,6 +3284,57 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 20 + + You are one step away from commenting + Du bist einen Schritt vom Kommentieren entfernt + + 28 + + + + + If you have an account on this instance, you can login: + + + Wenn du über ein Konto auf dieser Instanz verfügst, kannst du dich anmelden. + + + 32 + + + + login to comment + melde dich an, um zu kommentieren + + 35 + + + + + Otherwise you can comment using an account on any ActivityPub-compatible instance. + On most platforms, you can find the video by typing its URL in the search bar and then comment it + from within the software's interface. + + + Ansonsten kannst du mit einem Konto einer beliebigen Instanz kommentieren, die ActitityPub unterstützt. + Auf den meisten Plattformen kannst du das Video kommentieren, indem du die URL des Videos in das Suchfeld + eingibst und dann den Anweisungen der Website folgst. + + + 36 + + + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + + Falls du über ein Mastodon- oder Pleroma-Konto verfügst, kannst du es dort direkt öffnen. + + + 41 + + Highlighted comment Markierter Kommentar @@ -3186,37 +3384,44 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - You set custom . - wurde verändert. + + 240p + 240p + + 1 + + + + 360p + 360p 1 - - This could lead to security issues or bugs if you do not understand it. - Das könnte zu Sicherheitslücken führen, falls du es nicht verstehst. + + 480p + 480p 1 - - Are you sure you want to update the configuration? - Willst du die Einstellungen wirklich aktualisieren? + + 720p + 720p 1 - - Please type - Bitte eingeben + + 1080p + 1080p 1 - - to confirm. - zur Bestätigung. + + Auto (via ffmpeg) + Automatisch (über ffmpeg) 1 @@ -3242,6 +3447,69 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + 100MB + 100MB + + 1 + + + + 500MB + 500MB + + 1 + + + + 1GB + 1GB + + 1 + + + + 5GB + 5GB + + 1 + + + + 20GB + 20GB + + 1 + + + + 50GB + 50GB + + 1 + + + + 10MB + 10MB + + 1 + + + + 50MB + 50MB + + 1 + + + + 2GB + 2GB + + 1 + + is not valid ist ungültig @@ -3403,20 +3671,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - User banned. - Benutzer gesperrt. - - 1 - - - - Ban - Sperren - - 1 - - Unban Sperre aufheben @@ -3431,20 +3685,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Do you really want to unban ? - Möchtest du die Sperre von wirklich aufheben? - - 1 - - - - User unbanned. - Sperre von Benutzer aufgehoben. - - 1 - - You cannot delete root. Du kannst die Wurzel nicht löschen. @@ -3452,20 +3692,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - If you remove this user, you will not be able to create another with the same username! - Wenn du diesen Nutzer entfernst, wirst du keinen neuen mit dem gleichen Nutzernamen erstellen können! - - 1 - - - - User deleted. - Benutzer entfernt. - - 1 - - Ownership accepted Besitz geworden @@ -3480,6 +3706,13 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + You current password is invalid. + Dein aktuelles Passwort ist ungültig. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. Bist du sicher, dass du dein Konto löschen möchtest? Das wird all deine Daten löschen, inkl. aller Kanäle, Videos etc. @@ -4807,14 +5040,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Markdown compatible that supports: - Kompatibilität mit Markdown mit Unterstützung von: + Markdown-Unterstützung von: 1 Emphasis - Hervorhebung + Hervorhebungen 1 @@ -4847,6 +5080,41 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + User banned. + Benutzer gesperrt. + + 1 + + + + Do you really want to unban ? + Möchtest du die Sperre von wirklich aufheben? + + 1 + + + + User unbanned. + Sperre von Benutzer aufgehoben. + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + Wenn du diesen Nutzer entfernst, wirst du keinen neuen mit dem gleichen Nutzernamen erstellen können! + + 1 + + + + User deleted. + Benutzer entfernt. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Die Anfrage ist zu groß. Bitte kontaktiere den Administrator, um die Obergrenze für die Größe zu erhöhen. @@ -4903,6 +5171,13 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + Moderator + Moderator + + 1 + + Only I can see this video Nur ich kann dieses Video sehen @@ -5066,7 +5341,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa likes / dislikes - Likes / Dislikes + gefällt das / gefällt das nicht 1 diff --git a/client/src/locale/target/angular_eo.xml b/client/src/locale/target/angular_eo.xml index 3eb88bb99..f3d70d813 100644 --- a/client/src/locale/target/angular_eo.xml +++ b/client/src/locale/target/angular_eo.xml @@ -126,7 +126,7 @@ - views - rigardoj - 13 + 16 @@ -140,7 +140,7 @@ Edit Redakti - 5 + 1 @@ -168,7 +168,14 @@ Video quota Datumlimo por filmoj - 19 + 42 + + + + Reason... + Kialo… + + 11 @@ -356,13 +363,6 @@ 6 - - Filters - Filtriloj - - 16 - - No results found @@ -371,7 +371,7 @@ Neniuj rezultoj troviĝis - 25 + 28 @@ -575,14 +575,14 @@ No results. Nenio troviĝis. - 7 + 17 Instance Nodo - 8 + 12 @@ -927,14 +927,14 @@ subscribers abonantoj - 12 + 24 Video channels Filmaj kanaloj - 19 + 31 @@ -1077,13 +1077,6 @@ 42 - - Video import with HTTP enabled - Enporto de filmoj per HTTP ŝaltita - - 115 - - Video import with a torrent file or a magnet URI enabled Enporto de filmoj per torenta dosiero aŭ magneta ligilo ŝaltita @@ -1339,14 +1332,14 @@ Score Poentaro - 8 + 17 Host Gastiganto - 8 + 19 @@ -1451,7 +1444,7 @@ Role Rolo - 20 + 43 @@ -1467,13 +1460,6 @@ 65 - - Reason... - Kialo… - - 11 - - Users list Listo de uzantoj @@ -1485,7 +1471,14 @@ Username Salutnomo - 17 + 40 + + + + Go to the account page + Iri al paĝo de la konto + + 133 @@ -1701,14 +1694,14 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos Automatically plays video Memfare ludas filmon - 20 + 25 Save Konservi - 23 + 28 @@ -2239,13 +2232,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 123 - - Go to the account page - Iri al paĝo de la konto - - 133 - - Show more Montri pli @@ -2296,25 +2282,18 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Vi povas komenti aŭ sur la paĝo de via nodo, kie tiu ĉi filmo estas federata kun via konto ĉe PeerTube, aŭ per iu ajn nodo en fediverso, subtenanta protokolon « ActivityPub ». Ekzemple, en Mastodon aŭ Pleroma vi povas tajpi en serĉujon « <strong>@@</strong> » kaj retrovi la filmon. Rektaj ebloj komenti estas prilaborataj en <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Neniuj komentoj. - 18 + 17 View all replies Montri ĉiujn respondojn - 55 + 54 @@ -2325,7 +2304,7 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos Komentoj estas malŝaltitaj. - 64 + 63 @@ -2395,41 +2374,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - You set custom . - Vi agordis propran . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Tio ĉi povas estigi sekurecajn problemojn aŭ erarojn, se vi ne komprenas ĝin. - - 1 - - - - Are you sure you want to update the configuration? - Ĉu vi certe volas ĝisdatigi la agordon? - - 1 - - - - Please type - Bonvolu tajpi - - 1 - - - - to confirm. - por konfirmi. - - 1 - - Success Sukceso @@ -2549,13 +2493,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - User deleted. - Uzanto forigita. - - 1 - - Password updated. Pasvorto ĝisdatigita. @@ -3741,6 +3678,13 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 + + User deleted. + Uzanto forigita. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Peto estas tro granda por la servilo. Bonvolu kontakti vian administranton se vi volas pligrandigi la limon. diff --git a/client/src/locale/target/angular_es_ES.xml b/client/src/locale/target/angular_es_ES.xml index 1c64ac9a9..a44b06b84 100644 --- a/client/src/locale/target/angular_es_ES.xml +++ b/client/src/locale/target/angular_es_ES.xml @@ -14,7 +14,7 @@ - views - visualizaciones - 13 + 16 @@ -28,7 +28,7 @@ Edit Modificar - 5 + 1 @@ -56,7 +56,14 @@ Video quota Cuota de vídeo - 19 + 42 + + + + Reason... + Motivo... + + 11 @@ -241,13 +248,6 @@ Iniciar sesión 6 - - Filters - Filtros - - 16 - - No results found @@ -256,7 +256,7 @@ Iniciar sesión No hubo resultados - 25 + 28 @@ -424,14 +424,14 @@ Iniciar sesión No results. Ningún resultados - 7 + 17 Instance Nodo - 8 + 12 @@ -776,14 +776,14 @@ Iniciar sesión subscribers suscriptores - 12 + 24 Video channels Canales de vídeo - 19 + 31 @@ -912,13 +912,6 @@ Iniciar sesión 42 - - Video import with HTTP enabled - Importar video con HTTP activado - - 115 - - Video import with a torrent file or a magnet URI enabled Importar video con un archivo torrent o un enlace magnet activado @@ -1174,14 +1167,14 @@ Iniciar sesión Score Puntuación - 8 + 17 Host Host - 8 + 19 @@ -1286,7 +1279,7 @@ Iniciar sesión Role Rol - 20 + 43 @@ -1302,13 +1295,6 @@ Iniciar sesión 65 - - Reason... - Motivo... - - 11 - - Users list Lista de usuarios @@ -1320,7 +1306,14 @@ Iniciar sesión Username Nombre de usuario - 17 + 40 + + + + Go to the account page + Ir a la página de la cuenta + + 133 @@ -1514,14 +1507,14 @@ Cuando subas un vídeo a este canal, el campo de soporte del vídeo se rellenar Automatically plays video Reproducir vídeo automáticamente - 20 + 25 Save Guardar - 23 + 28 @@ -2052,13 +2045,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 123 - - Go to the account page - Ir a la página de la cuenta - - 133 - - Show more Mostrar más @@ -2109,25 +2095,18 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Puedes comentar bien a través de la página de tu nodo donde este vídeo está federado con tu cuenta de PeerTube, o bien a través de cualquier instancia del fediverso equipada con ActivityPub. Por ejemplo, con Mastodon o Pleroma puede escribir en la caja de búsqueda <strong>@@</strong> y encontrar el vídeo. Estamos trabajando en la capacidad de comentar directamente en <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. No hay comentarios - 18 + 17 View all replies Ver las respuestas - 55 + 54 @@ -2138,7 +2117,7 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac Los comentarios están inhabilitados. - 64 + 63 @@ -2208,41 +2187,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - You set custom . - Ajustaste de forma personalizada . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Esto podría provocar problemas de seguridad o bugs si no lo entiendes. - - 1 - - - - Are you sure you want to update the configuration? - ¿Estás seguro de que quieres actualizar la configuración? - - 1 - - - - Please type - Por favor escribe - - 1 - - - - to confirm. - para confirmar. - - 1 - - Success Correcto @@ -2362,13 +2306,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - User deleted. - Usuario eliminado. - - 1 - - Password updated. Contraseña actualizada. @@ -3561,6 +3498,13 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 + + User deleted. + Usuario eliminado. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La petición es demasiado grande para el servidor. Por favor contacta con tu administrador si quieres aumentar el límite de tamaño. diff --git a/client/src/locale/target/angular_eu_ES.xml b/client/src/locale/target/angular_eu_ES.xml index 20046ea3f..d47093717 100644 --- a/client/src/locale/target/angular_eu_ES.xml +++ b/client/src/locale/target/angular_eu_ES.xml @@ -217,7 +217,7 @@ - views - ikustaldi - 13 + 16 @@ -231,7 +231,7 @@ Edit Editatu - 5 + 1 @@ -259,7 +259,7 @@ Video quota Bideo-kuota - 19 + 42 @@ -273,6 +273,38 @@ 14 + + Ban + Debekatu + + 3 + + + + Reason... + Arrazoia... + + 11 + + + + + A banned user will no longer be able to login. + + + Debekatutako erabiltzaile batek ezin izango du saioa hasi. + + + 17 + + + + Ban this user + Debekatu erabiltzaile hau + + 25 + + Login @@ -479,13 +511,6 @@ 6 - - Filters - Iragazkiak - - 16 - - No results found @@ -494,21 +519,21 @@ Ez da emaitzarik aurkitu - 25 + 28 subscribers harpidedun - 41 + 44 - views - ikustaldi - 52 + 55 @@ -741,7 +766,7 @@ No results. Emaitzarik ez. - 7 + 17 @@ -778,7 +803,7 @@ Instance Instantzia - 8 + 12 @@ -1119,14 +1144,14 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. subscribers harpidedun - 12 + 24 Video channels Bideo kanalak - 19 + 31 @@ -1269,13 +1294,6 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 42 - - Video import with HTTP enabled - Bideoa HTTP bidez inportatzea gaituta - - 115 - - Video import with a torrent file or a magnet URI enabled Bideoa torrent fitxategia edo magnet URL bidez inportatzea gaituta @@ -1599,14 +1617,14 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Score Puntuazioa - 8 + 17 Host Ostalaria - 8 + 19 @@ -1711,7 +1729,7 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Role Rola - 20 + 43 @@ -1734,38 +1752,6 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 72 - - Ban - Debekatu - - 3 - - - - Reason... - Arrazoia... - - 11 - - - - - A banned user will no longer be able to login. - - - Debekatutako erabiltzaile batek ezin izango du saioa hasi. - - - 17 - - - - Ban this user - Debekatu erabiltzaile hau - - 25 - - Users list Erabiltzaileen zerrenda @@ -1777,21 +1763,21 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Username Erabiltzaile-izena - 17 + 40 - - Actions - Ekintzak + + Go to the account page + Joan kontuaren orrira - 33 + 133 Ban reason: Debekatzeko arrazoia: - 51 + 82 @@ -1854,6 +1840,13 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 33 + + Actions + Ekintzak + + 33 + + Reason: Arrazoia: @@ -1963,7 +1956,7 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Ownership changes Jabetza aldaketak - 22 + 33 @@ -2209,14 +2202,14 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin Automatically plays video Automatikoki abiatzen du bideoa - 20 + 25 Save Gorde - 23 + 28 @@ -2920,13 +2913,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 134 - - Go to the account page - Joan kontuaren orrira - - 133 - - Show more Erakutsi gehiago @@ -3006,25 +2992,18 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Bideo hau zure PeerTube kontuarekin federatzen den zure instantziaren orrian egin dezakezu iruzkina, edo ActivityPub onartzen duen fedibertsoko edozein instantzian. Adibidez Mastodon edo Pleroma instantzietan, bilaketa kutxan <strong>@@</strong> idatzi dezakezu bideoa aurkitzeko. Iruzkinak zuzenean egitek aukera garapenean dago: <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Iruzkinik ez. - 18 + 17 View all replies Ikusi erantzun - 55 + 54 @@ -3035,7 +3014,7 @@ Ezin izan dugu bilatzen duzun orria aurkitu. Iruzkinak desgaituta daude. - 64 + 63 @@ -3105,41 +3084,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - You set custom . - pertsonalizatua ezarri duzu. - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Honek segurtasun arazoak edo akatsak ekar litzake egindakoa ulertzen ez baduzu. - - 1 - - - - Are you sure you want to update the configuration? - Ziur konfigurazioa aldatu nahi duzula? - - 1 - - - - Please type - Idatzi - - 1 - - - - to confirm. - berresteko. - - 1 - - Success Arrakasta @@ -3301,20 +3245,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - User banned. - erabiltzailea debekatuta. - - 1 - - - - Ban - Debekatu - - 1 - - Unban Kendu debekua @@ -3329,20 +3259,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Do you really want to unban ? - Ziur zaude erabiltzaileari debekua kendu nahi diozula? - - 1 - - - - User unbanned. - erabiltzaileari debekua kendu zaio. - - 1 - - You cannot delete root. Ezin duzu erroa ezabatu. @@ -3350,13 +3266,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - User deleted. - erabiltzailea ezabatuta. - - 1 - - Ownership accepted Jabetza onartuta @@ -4731,6 +4640,34 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + User banned. + erabiltzailea debekatuta. + + 1 + + + + Do you really want to unban ? + Ziur zaude erabiltzaileari debekua kendu nahi diozula? + + 1 + + + + User unbanned. + erabiltzaileari debekua kendu zaio. + + 1 + + + + User deleted. + erabiltzailea ezabatuta. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Eskaria luzeegia da zerbitzariarentzat. Jarri zure administratzailearekin kontaktuan muga handitu nahi baduzu. diff --git a/client/src/locale/target/angular_fa_IR.xml b/client/src/locale/target/angular_fa_IR.xml index 149b4019a..8a965cf62 100644 --- a/client/src/locale/target/angular_fa_IR.xml +++ b/client/src/locale/target/angular_fa_IR.xml @@ -224,7 +224,7 @@ Edit ویرایش - 5 + 1 @@ -241,6 +241,13 @@ 19 + + Reason... + دلیل... + + 11 + + Login @@ -389,13 +396,6 @@ 88 - - Filters - فیلتر‌ها - - 16 - - No results found @@ -404,7 +404,7 @@ نتیجه‌ای یافت نشد - 25 + 28 @@ -615,7 +615,7 @@ No results. بدون نتیجه. - 7 + 17 @@ -753,14 +753,14 @@ Score امتیاز - 8 + 17 Host میزبان - 8 + 19 @@ -800,14 +800,7 @@ Role نقش - 20 - - - - Reason... - دلیل... - - 11 + 43 diff --git a/client/src/locale/target/angular_fr_FR.xml b/client/src/locale/target/angular_fr_FR.xml index 2db81316b..bf9b7c762 100644 --- a/client/src/locale/target/angular_fr_FR.xml +++ b/client/src/locale/target/angular_fr_FR.xml @@ -231,7 +231,7 @@ - views - vues - 13 + 16 @@ -245,7 +245,7 @@ Edit Modifier - 5 + 1 @@ -301,6 +301,13 @@ 18 + + Using an ActivityPub account + En utilisant un compte ActivityPub + + 36 + + Subscribe with an account on S'abonner avec un compte sur @@ -315,6 +322,13 @@ 40 + + Subscribe with a Mastodon account: + S'abonner avec un compte Mastodon : + + 43 + + Using a syndication feed Utilisation d'un flux de syndication @@ -360,7 +374,7 @@ Video quota Quota des vidéos - 19 + 42 @@ -374,6 +388,38 @@ 14 + + Ban + Bannir + + 3 + + + + Reason... + Motivation… + + 11 + + + + + A banned user will no longer be able to login. + + + Un utilisateur banni ne sera plus capable de se connecter. + + + 17 + + + + Ban this user + Bannir cet utilisateur + + 25 + + Login @@ -579,13 +625,6 @@ 6 - - Filters - Filtres - - 16 - - No results found @@ -594,21 +633,21 @@ Aucun résultat trouvé - 25 + 28 subscribers abonnés - 41 + 44 - views - vues - 52 + 55 @@ -848,7 +887,7 @@ No results. Aucun résultat. - 7 + 17 @@ -862,6 +901,17 @@ 6 + + + # + + + # + + + 14 + + @@ -885,7 +935,7 @@ Instance Instance - 8 + 12 @@ -1229,14 +1279,14 @@ subscribers abonnés - 12 + 24 Video channels Chaînes de vidéos - 19 + 31 @@ -1379,13 +1429,6 @@ 42 - - Video import with HTTP enabled - Import de vidéo avec HTTP activé - - 115 - - Video import with a torrent file or a magnet URI enabled Import de vidéo avec un fichier torrent ou URL magnet activé @@ -1720,14 +1763,14 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé Score Score - 8 + 17 Host Hôte - 8 + 19 @@ -1748,21 +1791,21 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé Accepted Accepté - 21 + 32 Pending En attente - 22 + 33 Redundancy allowed Redondance autorisée - 11 + 22 @@ -1853,7 +1896,7 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé Role Rôle - 20 + 43 @@ -1876,38 +1919,6 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 72 - - Ban - Bannir - - 3 - - - - Reason... - Motivation… - - 11 - - - - - A banned user will no longer be able to login. - - - Un utilisateur banni ne sera plus capable de se connecter. - - - 17 - - - - Ban this user - Bannir cet utilisateur - - 25 - - Users list Liste des utilisateurs @@ -1919,21 +1930,21 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé Username Identifiant - 17 + 40 - - Actions - Actions + + Go to the account page + Accéder au profil public de l'utilisateur - 33 + 133 Ban reason: Raison du bannissement : - 51 + 82 @@ -1996,6 +2007,13 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 33 + + Actions + Actions + + 33 + + Reason: Raison : @@ -2105,7 +2123,7 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé Ownership changes Changements de propriétaires - 22 + 33 @@ -2334,6 +2352,13 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au 30 + + Current password + Mot de passe actuel + + 7 + + New password Nouveau mot de passe @@ -2359,14 +2384,14 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au Automatically plays video Lire automatiquement les vidéos - 20 + 25 Save Enregistrer - 23 + 28 @@ -2397,6 +2422,13 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au 18 + + Once you delete your account, there is no going back. Please be certain. + Une fois votre compte supprimé vous ne pourrez pas revenir en arrière. Soyez sûr de ce que vous faites. + + 2 + + Delete your account Supprimer votre compte @@ -2565,6 +2597,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 6 + + Or + Ou + + 11 + + Paste magnet URI Copier l'URL magnet @@ -2678,6 +2717,20 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 18 + + + Tag + + Tag + + 21 + + + + Enter a new tag + Entrez un nouveau tag + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Les descriptions des vidéos sont tronquées par défaut et requièrent une action manuelle pour être pleinement affichées. @@ -3110,13 +3163,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 134 - - Go to the account page - Accéder au profil public de l'utilisateur - - 133 - - Show more Voir plus @@ -3196,25 +3242,18 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Vous pouvez commenter soit sur la page de votre instance où cette vidéo est fédérée avec votre compte PeerTube, soit via n'importe quelle instance Fediverse compatible avec ActivityPub. Par exemple, avec Mastodon ou Pleroma vous pouvez taper dans le champ de recherche : <strong>@@</strong> et retrouver la vidéo. Les commentaires directs sont en cours de développement, cela peut être suivi via cette issue <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Aucun commentaire. - 18 + 17 View all replies Voir les réponses - 55 + 54 @@ -3225,7 +3264,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute Les commentaires sont désactivés. - 64 + 63 @@ -3271,6 +3310,32 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 35 + + + Otherwise you can comment using an account on any ActivityPub-compatible instance. + On most platforms, you can find the video by typing its URL in the search bar and then comment it + from within the software's interface. + + + Sinon, vous pouvez commenter en utilisant un compte sur n'importe quelle instance compatible avec le protocole ActivityPub. + Sur la plupart des plateformes, vous pouvez trouver la vidéo en tapant son adresse dans la barre de recherche et en la commentant. + depuis l'interface du logiciel. + + + 36 + + + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + + Si vous avez un compte sur Mastodon ou Pleroma, vous pouvez directement l'ouvrir dans leur interface : + + + 41 + + Highlighted comment Commentaire mis en exergue @@ -3313,6 +3378,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Error + Erreur + + 1 + + 240p 240p @@ -3355,48 +3427,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Error - Erreur - - 1 - - - - You set custom . - Vous avez défini du . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Cela pourrait mener à des problèmes de sécurité ou à des bogues ; soyez sûr de comprendre ce que vous faites. - - 1 - - - - Are you sure you want to update the configuration? - Êtes-vous sûr de vouloir modifier la configuration ? - - 1 - - - - Please type - Merci de taper - - 1 - - - - to confirm. - pour confirmer. - - 1 - - Success Réussite @@ -3642,20 +3672,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - User banned. - Utilisateur banni. - - 1 - - - - Ban - Bannir - - 1 - - Unban Rétablir @@ -3670,20 +3686,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Do you really want to unban ? - Voulez-vous réellement rétablir ? - - 1 - - - - User unbanned. - L'utilisateur est rétabli. - - 1 - - You cannot delete root. Vous ne pouvez pas supprimer root. @@ -3691,20 +3693,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - If you remove this user, you will not be able to create another with the same username! - Si vous supprimez ce compte, vous ne pourrez plus en créer de nouveau avec le même nom ! - - 1 - - - - User deleted. - Utilisateur supprimé. - - 1 - - Ownership accepted Changement de propriété accepté @@ -3719,6 +3707,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + You current password is invalid. + Votre mot de passe actuel est invalide. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. Êtes-vous sûr de vouloir supprimer votre compte ? Cela supprimera toutes vos données, incluant vos chaînes, vidéos etc. @@ -5086,6 +5081,41 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + User banned. + Utilisateur banni. + + 1 + + + + Do you really want to unban ? + Voulez-vous réellement rétablir ? + + 1 + + + + User unbanned. + L'utilisateur est rétabli. + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + Si vous supprimez ce compte, vous ne pourrez plus en créer de nouveau avec le même nom ! + + 1 + + + + User deleted. + Utilisateur supprimé. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La requête est trop volumineuse pour le serveur. Merci de contacter un administrateur afin d'augmenter la taille limite acceptée par celui-ci. @@ -5142,6 +5172,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Moderator + Modérateur + + 1 + + Only I can see this video Seul moi peut voir cette vidéo diff --git a/client/src/locale/target/angular_gl_ES.xml b/client/src/locale/target/angular_gl_ES.xml index 17586924b..8ed944577 100644 --- a/client/src/locale/target/angular_gl_ES.xml +++ b/client/src/locale/target/angular_gl_ES.xml @@ -14,14 +14,14 @@ - views - visionados - 13 + 16 Edit Editar - 5 + 1 @@ -230,13 +230,6 @@ 6 - - Filters - Filtros - - 16 - - No results found @@ -245,7 +238,7 @@ Non se atoparon resultados - 25 + 28 @@ -413,14 +406,14 @@ No results. Sin resultados. - 7 + 17 Instance Instancia - 8 + 12 @@ -722,14 +715,14 @@ subscribers suscritoras - 12 + 24 Video channels Canles de vídeo - 19 + 31 @@ -858,13 +851,6 @@ 42 - - Video import with HTTP enabled - Importación de vídeos por HTTP activada - - 115 - - Video import with a torrent file or a magnet URI enabled Importación de vídeo con un ficheiro torrent ou URI magnet activada diff --git a/client/src/locale/target/angular_it_IT.xml b/client/src/locale/target/angular_it_IT.xml index 56649f505..38bfcf2eb 100644 --- a/client/src/locale/target/angular_it_IT.xml +++ b/client/src/locale/target/angular_it_IT.xml @@ -38,6 +38,20 @@ 27 + + Select month + Seleziona mese + + 7 + + + + Select year + Seleziona anno + + 16 + + «« «« @@ -217,7 +231,7 @@ - views - visualizzazioni - 13 + 16 @@ -231,11 +245,12 @@ Edit Modifica - 5 + 1 Truncated preview + Anteprima parziale 9 @@ -254,11 +269,92 @@ 19 + + + + Subscribe + + + + + + + + Subscribe + + + + + + + 5 + + + + + Unsubscribe + + + Unsubscribe + + + 18 + + + + Using an ActivityPub account + Utilizzando un account ActivityPub + + 36 + + + + Subscribe with an account on + Iscriviti con un account su + + 39 + + + + Subscribe with your local account + Iscriviti con il tuo account locale + + 40 + + + + Subscribe with a Mastodon account: + Iscriviti con un account Mastodon: + + 43 + + + + Using a syndication feed + Usando una syndication feed + + 48 + + + + Subscribe via RSS + Iscriviti usando RSS + + 49 + + + + You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there. + Puoi iscriverti al canale attraverso una qualunque ActivityPub istanza del fediverso. Con istanze con Mastodon o Pleroma puoi digitare la URL del canale nel campo di ricerca e iscriverti là. + + 17 + + Video quota Quota video - 19 + 42 @@ -272,6 +368,35 @@ 14 + + Ban + Ban (espelli) + + 3 + + + + Reason... + Motivo... + + 11 + + + + + A banned user will no longer be able to login. + + + 17 + + + + Ban this user + Banna questo utente + + 25 + + Login @@ -434,6 +559,7 @@ Example: jane_doe + Esempio: jane_doe 16 @@ -477,13 +603,6 @@ 6 - - Filters - Filtri - - 16 - - No results found @@ -492,21 +611,21 @@ Nessun risultato trovato - 25 + 28 subscribers iscritti - 41 + 44 - views - visualizzazioni - 52 + 55 @@ -581,6 +700,13 @@ 47 + + Overview + Panoramica + + 52 + + Trending Popolari @@ -623,6 +749,13 @@ 25 + + Show keyboard shortcuts + Mostra scorciatoie della tastiera + + 91 + + Toggle dark interface (Dis)attiva l'interfaccia sicura @@ -732,7 +865,7 @@ No results. Nessun risultato. - 7 + 17 @@ -746,6 +879,17 @@ 6 + + + # + + + # + + + 14 + + @@ -769,7 +913,7 @@ Instance Istanza - 8 + 12 @@ -981,6 +1125,11 @@ When you are in a web browser, you send a signal containing your IP address to the tracker that will randomly choose other peers to forward the information to. See this document for more information + + I nodi non sono accessibili pubblicamente: in quanto usiamo WebRTC nel browser(tramite la libreria WebTorrent ), il protocollo è diverso dal BitTorrent classico. + Quando usi un browser web, mandi un segnale contenente il tuo indirizzo IP al tracker, il quale selezionerà casualmente altri nodi a cui inoltrare questa informazione. + Per ulteriori informazioni, vedi questo documento + 55 @@ -990,12 +1139,17 @@ The worst-case scenario of an average person spying on their friends is quite unlikely. There are much more effective ways to get that kind of information. + + La peggiore delle ipotesi, in cui una persona qualunque spia un amico, è molto improbabile. + Ci sono modi molto più efficaci di ottenere questo genere di informazioni. + 62 How does PeerTube compare with YouTube? + Come si può paragonare PeerTube con YouTube? 67 @@ -1028,12 +1182,18 @@ PeerTube is transparent about it: we warn you that if you want to keep your IP private, you must use a VPN or Tor Browser. Thinking that removing P2P from PeerTube will give you back anonymity doesn't make sense. + + Il tuo indirizzo IP è pubblico quindi, ogni volta che visiti un sito web, una moltitudine di attori (oltre al sito web finale) vedono il tuo IP nei propri registri: ISP/routers/trackers/CDN e altri. + PeerTube è trasparente al riguardo: ti avvisiamo che, se vuoi mantenere il tuo indirizzo IP privato, devi usare un VPN o il browser Tor. + Pensare che rimuovere la componente P2P da PeerTube ti possa restituire l'anonimato non ha senso. + 77 What will be done to mitigate this problem? + Che azioni verranno intraprese per limitare questo problema? 83 @@ -1043,6 +1203,10 @@ PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: + + PeerTube è solamente in beta e vogliamo offrire le migliori contromisure possibili per il rilascio stabile. + Nel frattempo vogliamo testare varie idee in relazione a questo problema: + 85 @@ -1077,6 +1241,7 @@ An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program + Un programma automatico per incrementare la ridondanza dei video: non potremmo sapere se l'indirizzo IP abbia scaricato il video volontariamente o per via del programma automatico 95 @@ -1085,13 +1250,13 @@ subscribers iscritti - 12 + 24 Video channels - 19 + 31 @@ -1138,6 +1303,7 @@ Videos Overview + Panoramica dei video 58 @@ -1186,6 +1352,7 @@ Blur thumbnails + Miniature offuscate. 12 @@ -1218,13 +1385,6 @@ 42 - - Video import with HTTP enabled - Carica video con HTTP attivato - - 115 - - Video import with a torrent file or a magnet URI enabled Carica video con un file torrent o un URI magnete attivo @@ -1255,12 +1415,14 @@ User default video quota + Quota standard per i video dell'utente 139 User default daily upload limit + Limite giornaliero per il caricamento 153 @@ -1295,6 +1457,7 @@ Instance whitelisted by Twitter + Istanza inserita in white list da Twitter 189 @@ -1344,6 +1507,7 @@ Resolution enabled + Risoluzione abilitata 227 @@ -1523,14 +1687,14 @@ Score Punteggio - 8 + 17 Host Host - 8 + 19 @@ -1546,6 +1710,27 @@ 11 + + Accepted + Accettato + + 32 + + + + Pending + In attesa + + 33 + + + + Redundancy allowed + Ridondanza permessa + + 22 + + Manage follows Gestisci chi segui @@ -1632,7 +1817,7 @@ Role Ruolo - 20 + 43 @@ -1651,34 +1836,6 @@ 72 - - Ban - - 3 - - - - Reason... - Motivo... - - 11 - - - - - A banned user will no longer be able to login. - - - 17 - - - - Ban this user - Banna questo utente - - 25 - - Users list Lista utenti @@ -1689,21 +1846,20 @@ Username - 17 + 40 - - Actions - Azioni + + Go to the account page - 33 + 133 Ban reason: Motivo ban: - 51 + 82 @@ -1758,6 +1914,13 @@ 33 + + Actions + Azioni + + 33 + + Reason: Motivo: @@ -1817,6 +1980,13 @@ 3 + + My library + La mia libreria + + 7 + + My channels I miei canali @@ -1848,7 +2018,7 @@ Ownership changes Cambi di proprietario - 22 + 33 @@ -2073,14 +2243,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video Riproduci automaticamente video - 20 + 25 Save Salva - 23 + 28 @@ -2725,12 +2895,6 @@ When you will upload a video in this channel, the video support field will be au 134 - - Go to the account page - - 133 - - Show more Mostra di piú @@ -2806,14 +2970,14 @@ Altri video No comments. Nessun commento. - 18 + 17 View all replies Visualizza tutte le risposte - 55 + 54 @@ -2824,7 +2988,7 @@ Altri video I commenti sono disabilitati. - 64 + 63 @@ -2894,57 +3058,43 @@ Altri video 1 - - You set custom . - Hai inserito un testo personalizzato . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Questo potrebbe portare a problemi di sicurreza o errori nel programma se tu non capisci cosa fai. - - 1 - - - - Are you sure you want to update the configuration? - Sei sicuro di volere un aggiornamento della configurazione? + + Success 1 - - Please type - Per favore digita + + Configuration updated. + Configurazione aggiornata. 1 - - to confirm. - per confermare. + + Unlimited + Illimitato/ti 1 - - Success + + 10MB + 10MB 1 - - Configuration updated. - Configurazione aggiornata. + + 50MB + 50MB 1 - - Unlimited - Illimitato/ti + + 2GB + 2GB 1 @@ -2958,7 +3108,7 @@ Altri video You need to specify hosts to follow. - Devi specificare gli host per seguire. + Devi specificare gli host da seguire. 1 @@ -3012,6 +3162,20 @@ Altri video 1 + + disabled + disabilitato + + 1 + + + + Redundancy for is + La ridondanza per è + + 1 + + Comment updated. Commento modificato. @@ -3088,23 +3252,9 @@ Altri video 1 - - User banned. - L`utente è stato espulso (banned). - - 1 - - - - Ban - Ban (espelli) - - 1 - - - - Unban - Rimuovi ban + + Unban + Rimuovi ban 1 @@ -3115,19 +3265,6 @@ Altri video 1 - - Do you really want to unban ? - - 1 - - - - User unbanned. - L`utente è stato riammesso. - - 1 - - You cannot delete root. Non puoi rimuovere root. @@ -3135,13 +3272,6 @@ Altri video 1 - - User deleted. - L`utente è stato rimosso. - - 1 - - Ownership accepted @@ -3155,6 +3285,13 @@ Altri video 1 + + You current password is invalid. + La tua attuale password non è valida. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. Sei sicuro di volere eliminare il tuo account? Questa azione eliminerá tutti it tuoi dati compresi canali, video etc. @@ -3283,6 +3420,7 @@ Altri video Publication scheduled on + Pubblicazione programmata per il 1 @@ -3371,6 +3509,13 @@ Altri video 1 + + Keyboard Shortcuts: + Scorciatoie per la tastiera: + + 1 + + Incorrect username or password. Username or password non corretti @@ -3518,16 +3663,203 @@ Altri video 1 + + Captions cache size is required. + La dimensione della cache delle descrizioni è richiesta. + + 1 + + + + Captions cache size must be greater than 1. + La dimensione della cache delle descrizioni deve essere piú grande di 1. + + 1 + + + + Captions cache size must be a number. + La dimensione della cache delle descrizioni deve essere un numero. + + 1 + + + + Signup limit is required. + Il limite per le sottoscrizioni è un campo richiesto. + + 1 + + + + Signup limit must be greater than 1. + Il limite per le sottoscrizioni deve essere piú grande di 1. + + 1 + + + + Signup limit must be a number. + Il limite per le sottoscrizioni deve essere un numero. + + 1 + + Admin email is required. - Ci vuole l'email del amministratore. + Ci vuole l'email dell'amministratore. + + 1 + + + + Admin email must be valid. + L'email dell'amministratore deve essere valida. + + 1 + + + + Transcoding threads is required. + Il numero di thread di transcodifica è richiesto. + + 1 + + + + Transcoding threads must be greater or equal to 0. + Il numero di thread di transcodifica deve essere più grande o uguale a 0. + + 1 + + + + Username is required. + L'username è necessario. + + 1 + + + + Password is required. + La password è necessaria. + + 1 + + + + Confirmation of the password is required. + La conferma della password è necessaria. + + 1 + + + + Username must be at least 3 characters long. + L'username deve essere almeno di 3 caratteri. + + 1 + + + + Username cannot be more than 20 characters long. + L'username non può essere più di 20 caratteri. + + 1 + + + + Username should be only lowercase alphanumeric characters. + L'username dovrebbe essere solo in minuscolo e contenere solo alfanumerici. + + 1 + + + + Email is required. + L'email è richiesta. + + 1 + + + + Email must be valid. + L'email deve essere valida. + + 1 + + + + Password must be at least 6 characters long. + La password deve essere lunga almeno 6 caratteri. + + 1 + + + + Password cannot be more than 255 characters long. + La password non può essere più lunga di 255 caratteri. + + 1 + + + + The new password and the confirmed password do not correspond. + La nuova password e quella di conferma non coincidono. + + 1 + + + + Video quota is required. + La quota per il video è richiesta. + + 1 + + + + Quota must be greater than -1. + La quota deve essere più grande di -1. + + 1 + + + + Daily upload limit is required. + Il limite di caricamento giornaliero è necessario. + + 1 + + + + Daily upload limit must be greater than -1. + Il limite di caricamento giornaliero deve essere più grande di -1. + + 1 + + + + User role is required. + Il ruolo dell'utente è necessario. + + 1 + + + + Display name is required. + Il nome visualizzato è necessario. + + 1 + + + + Display name must be at least 3 characters long. 1 Display name cannot be more than 120 characters long. - Il nome mostrato non deve superare i 120 caratteri. 1 @@ -3548,7 +3880,70 @@ Altri video You must to agree with the instance terms in order to registering on it. - Devi accetare le regole del server per registrarti sopra + Devi accettare le regole dell'istanza per registrarti. + + 1 + + + + Ban reason must be at least 3 characters long. + Il motivo dell'espulsione (ban) deve essere lungo almeno 3 caratteri. + + 1 + + + + Ban reason cannot be more than 250 characters long. + Il motivo dell'espulsione non deve essere più lungo di 250 caratteri. + + 1 + + + + Report reason is required. + Il motivo per la segnalazione è richiesto. + + 1 + + + + Report reason must be at least 2 characters long. + Il motivo per la segnalazione deve essere lungo almeno 2 caratteri. + + 1 + + + + Report reason cannot be more than 300 characters long. + Il motivo per la segnalazione non può essere più lungo di 300 caratteri. + + 1 + + + + Moderation comment is required. + Il commento di moderazione è richiesto. + + 1 + + + + Moderation comment must be at least 2 characters long. + Il commento di moderazione deve essere lungo almeno 2 caratteri. + + 1 + + + + Moderation comment cannot be more than 300 characters long. + Il commento di moderazione non può essere più lungo di 300 caratteri. + + 1 + + + + The channel is required. + Il canale è richiesto. 1 @@ -3595,6 +3990,27 @@ Altri video 1 + + Comment is required. + Un commento è necessario. + + 1 + + + + Comment must be at least 2 characters long. + Il commento deve essere lungo almeno 2 caratteri. + + 1 + + + + Comment cannot be more than 3000 characters long. + Il commento non può essere più lungo di 3000 caratteri + + 1 + + Video name is required. Ci vuole il nome del video. @@ -3604,7 +4020,7 @@ Altri video Video name must be at least 3 characters long. - Il nome video deve essere al minimo lunguo di tre caratteri. + Il nome video deve essere minimo di tre caratteri. 1 @@ -3616,9 +4032,30 @@ Altri video 1 + + Video channel is required. + Il canale del video è necessario. + + 1 + + + + Video description must be at least 3 characters long. + La descrizione del video deve essere lunga almeno 3 caratteri. + + 1 + + + + Video description cannot be more than 10000 characters long. + La descrizione del video non può essere più lunga di 10000 caratteri. + + 1 + + A tag should be more than 2 characters long. - Un tag deve contenire al minimo 2 caratteri. + Un tag deve contenere minimo 2 caratteri. 1 @@ -3630,23 +4067,37 @@ Altri video 1 + + Video support must be at least 3 characters long. + Supporto video deve essere almeno di 3 caratteri + + 1 + + + + Video support cannot be more than 500 characters long. + Supporto video non può essere più lungo di 500 caratteri. + + 1 + + A date is required to schedule video update. - Ci vuole una data per programmare l'aggiornamento della video. + La data è necessaria per programmare l'aggiornamento del video. 1 This file is too large. - Il file e troppo grande. + Il file è troppo grande. 1 All unsaved data will be lost, are you sure you want to leave this page? - I dati non salvati saranno persi. Sei sicuro di volere chiudere questa pagina ? + I dati non salvati saranno persi. Sei sicuro di volere chiudere questa pagina? 1 @@ -3966,9 +4417,70 @@ Altri video 1 + + Clear + Resetta + + 1 + + + + yy-mm-dd + yy-mm-dd + + 1 + + Transcode your videos in multiple resolutions - Transcodi le tue video in multiple risoluzioni + Transcodifica i tuoi video in multiple risoluzioni + + 1 + + + + HTTP import (YouTube, Vimeo, direct URL...) + HTTP import (YouTube, Vimeo, direct URL...) + + 1 + + + + Torrent import + Torrent import + + 1 + + + + ~ + ~ + + 1 + + + + {VAR_PLURAL, plural, =1 {minute} other {minutes} } + {VAR_PLURAL, plural, =1 {minute} other {minutes} } + + 1 + + + + of full HD videos + di video HD interi + + 1 + + + + of HD videos + + 1 + + + + of average quality videos 1 @@ -4085,6 +4597,40 @@ Altri video 1 + + User banned. + L`utente è stato espulso (banned). + + 1 + + + + Do you really want to unban ? + + 1 + + + + User unbanned. + L`utente è stato riammesso. + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + Se elimini questo utente, non sarai in grado di crearne un altro con lo stesso username! + + 1 + + + + User deleted. + L`utente è stato rimosso. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La riquiesta è troppo grande per il server. Per favore contatta il tuo amministratore se vuoi aumentare il limite di dimensione. @@ -4141,6 +4687,13 @@ Altri video 1 + + Moderator + Moderatore + + 1 + + Only I can see this video Solo io posso vedere questo video @@ -4157,7 +4710,7 @@ Altri video Anyone can see this video - Tutti quanti possono vedere questo video + Tutti possono vedere questo video 1 @@ -4171,14 +4724,14 @@ Altri video Please check your email to verify your account and complete signup. - Per favore leggi i tuoi email per verificare il tuo account e finire la registrazione. + Per favore controlla la tua email per verificare il tuo account e completare la registrazione. 1 Registration for complete. - Registrazione per finita. + Registrazione completata per . 1 @@ -4192,7 +4745,7 @@ Altri video Your video was uploaded to your account and is private. - Il tuo video e stata caricato sul tuo account ed è privato. + Il tuo video è stato caricato sul tuo account ed è privato. 1 @@ -4220,28 +4773,28 @@ Altri video Upload cancelled - Carica cancellata + Caricamento annullato. 1 We are sorry but PeerTube cannot handle videos > 8GB - Ci dispiace ma PeerTube non può gestire video > 8GB + Ci dispiace ma PeerTube non può gestire video di dimensioni > 8GB 1 Your video quota is exceeded with this video (video size: , used: , quota: ) - La tua quota e superata con questo video (dimensione del video: , utilizzato: , quota: ) + La tua quota è stata superata con questo video (dimensione del video: , stai utilizzando: , quota: ) 1 Your daily video quota is exceeded with this video (video size: , used: , quota: ) - La tua quota giornaliera e superata con questo video (dimensione del video: , utilizzato: , quota: ) + La tua quota giornaliera è stata superata con questo video (dimensione del video: , stai utilizzando: , quota: ) 1 @@ -4262,7 +4815,7 @@ Altri video replies will be deleted too. - rispote saranno cancellate. + Saranno eliminate risposte. 1 @@ -4297,7 +4850,7 @@ Altri video Do you really want to delete this video? - Sei sicuro di volere cancellare questo video ? + Sei sicuro di volere eliminare questo video ? 1 @@ -4311,14 +4864,21 @@ Altri video This video contains mature or explicit content. Are you sure you want to watch it? - Questo video contiene del contenuto sensibile. Sei sicuro di volere guardalo ? + Questo video contiene del contenuto sensibile. Sei sicuro di volerlo guardare? + + 1 + + + + Mature or explicit content + Contenuto per adulti o esplicito. 1 Videos from your subscriptions - Video delle tue iscrizioni + Video dalle tue iscrizioni 1 diff --git a/client/src/locale/target/angular_ja_JP.xml b/client/src/locale/target/angular_ja_JP.xml index 742eaea34..6ea77a5d9 100644 --- a/client/src/locale/target/angular_ja_JP.xml +++ b/client/src/locale/target/angular_ja_JP.xml @@ -217,7 +217,7 @@ - views - 回再生 - 13 + 16 @@ -231,7 +231,7 @@ Edit 編集 - 5 + 1 @@ -255,6 +255,27 @@ 19 + + Ban + 禁止 + + 3 + + + + Reason... + 理由… + + 11 + + + + Ban this user + このユーザーを禁止する + + 25 + + Login @@ -432,13 +453,6 @@ 5 - - Filters - フィルタ - - 16 - - Change the language @@ -622,7 +636,7 @@ No results. 結果がありません。 - 7 + 17 @@ -659,7 +673,7 @@ Instance インスタンス - 8 + 12 @@ -934,14 +948,14 @@ Score スコア - 8 + 17 Host ホスト - 8 + 19 @@ -1004,21 +1018,7 @@ Role 役割 - 20 - - - - Reason... - 理由… - - 11 - - - - Ban this user - このユーザーを禁止する - - 25 + 43 @@ -1028,18 +1028,18 @@ 2 - - Actions - 行動 + + Go to the account page + アカウントページに移動 - 33 + 133 Ban reason: 禁止理由: - 51 + 82 @@ -1084,6 +1084,13 @@ 33 + + Actions + 行動 + + 33 + + Reason: 理由: @@ -1123,7 +1130,7 @@ Ownership changes 所有権の変更 - 22 + 33 @@ -1246,7 +1253,7 @@ Save 貯める - 23 + 28 @@ -1457,13 +1464,6 @@ 134 - - Go to the account page - アカウントページに移動 - - 133 - - Show more もっと見せる @@ -1525,18 +1525,11 @@ 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - このアカウントは、ActivityPub 対応の Fediverse を使用して購読出来ます。例えば、Mastodon や Pleroma の場合、検索ボックスに入力することが出来ます。<strong>@@&<strong> に登録して下さい。 PeerTubeユーザーとしての購読は、<a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a> を参照下さい。 - - 8 - - No comments. コメントはまだありません。 - 18 + 17 @@ -1547,7 +1540,7 @@ この動画のコメントは無効です。 - 64 + 63 @@ -1652,13 +1645,6 @@ 1 - - Ban - 禁止 - - 1 - - Unban 抑止しない diff --git a/client/src/locale/target/angular_nl_NL.xml b/client/src/locale/target/angular_nl_NL.xml index c34e6e24a..376ffd3ca 100644 --- a/client/src/locale/target/angular_nl_NL.xml +++ b/client/src/locale/target/angular_nl_NL.xml @@ -7,7 +7,7 @@ - views - keer bekeken - 13 + 16 @@ -21,7 +21,7 @@ Edit Bewerken - 5 + 1 @@ -49,7 +49,7 @@ Video quota Videoquotum - 19 + 42 @@ -297,14 +297,14 @@ No results. Geen resultaten. - 7 + 17 Instance Instantie - 8 + 12 @@ -503,14 +503,14 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge subscribers abonnees - 12 + 24 Video channels Videokanalen - 19 + 31 @@ -842,14 +842,14 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge Score Score - 8 + 17 Host Host - 8 + 19 @@ -919,7 +919,7 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge Role Rol - 20 + 43 @@ -946,7 +946,7 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge Username Gebruikersnaam - 17 + 40 @@ -1117,14 +1117,14 @@ Als je een video uploadt in dit kanaal, wordt deze tekst ingevuld in het "onders Automatically plays video - 20 + 25 Save Opslaan - 23 + 28 diff --git a/client/src/locale/target/angular_oc.xml b/client/src/locale/target/angular_oc.xml index 5cfebd4e3..18f6527f9 100644 --- a/client/src/locale/target/angular_oc.xml +++ b/client/src/locale/target/angular_oc.xml @@ -231,7 +231,7 @@ - views - visualizacions - 13 + 16 @@ -245,7 +245,7 @@ Edit Modificar - 5 + 1 @@ -269,6 +269,27 @@ 19 + + + + Subscribe + + + + + + + + S’abonar + + + + + + + 5 + + Unsubscribe @@ -280,6 +301,20 @@ 18 + + Using an ActivityPub account + En utilizant un compte ActivityPub + + 36 + + + + Subscribe with an account on + S’abonar amb un compte sus + + 39 + + Subscribe with your local account S’abonar amb lo compte local @@ -287,6 +322,13 @@ 40 + + Subscribe with a Mastodon account: + S’abonar amb un compte Mastodon : + + 43 + + Using a syndication feed En utilizant un fil sindicat @@ -301,11 +343,38 @@ 49 + + + Remote subscribe + Remote interact + + + S’abonar a distància + Interaccion a distància + + + 10 + + + + You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there. + Podètz vos abonar a aquesta cadena via qualque siá instància compatibla amb ActivityPub. Per las instàncias Mastodon o Pleroma podètz picar l’URL de la cadena dins la barra de recèrca e vos i abonar enlà. + + 17 + + + + You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there. + Podètz interagir amb aquò via qualque siá instància compatibla ActivityPub. Per las instàncias Mastodon o Pleroma podètz picar l’URL de la cadena dins la barra de recèrca e podètz interagir enlà. + + 22 + + Video quota Quòta vidèo - 19 + 42 @@ -319,6 +388,38 @@ 14 + + Ban + Fòrabandir + + 3 + + + + Reason... + Rason... + + 11 + + + + + A banned user will no longer be able to login. + + + Un utilizaire fòrabandit poirà pas mai se connectar. + + + 17 + + + + Ban this user + Fòrabandir aqueste utilizaire + + 25 + + Login @@ -523,13 +624,6 @@ 6 - - Filters - Filtres - - 16 - - No results found @@ -538,21 +632,21 @@ Cap de resultats - 25 + 28 subscribers abonats - 41 + 44 - views - visualizacions - 52 + 55 @@ -792,7 +886,7 @@ No results. Cap de resultat - 7 + 17 @@ -806,6 +900,17 @@ 6 + + + # + + + # + + + 14 + + @@ -829,7 +934,7 @@ Instance Instància - 8 + 12 @@ -988,7 +1093,7 @@ If we want to spy all PeerTube's videos, we have to send as many requests as there are videos (so potentially a lot) - Una requèsta HTTP deu èsser enviada a cada traçadors per cada vidèo d’espiar. + Cada traçador deu recebre una requèsta HTTP per cada vidèo d’espiar. Se volèm espiar totas las vidèo de PeerTube, avèm d’enviar tantas requèstas qu’i a de vidèos (doncas potencialament un molon) @@ -1001,7 +1106,7 @@ For instance, if there are 1000 peers in the swarm and the tracker sends only 20 peers for each request, there must be at least 50 requests sent to know every peers in the swarm Per cada requèsta enviada, lo traçador tòrna un nombre limitat de pars a l’azard. - Per cada instància s’i a 1000 pars per l’eissam e lo traçador envia pas que 20 pars per requèsta, cal almens 50 requèstas per conéisser totes los pars del eissam + Per cada instància s’i a 1000 pars per l’eissam e lo traçador envia pas que 20 pars per requèsta, cal almens 50 requèstas per conéisser totes los pars de l’eissam 38 @@ -1011,7 +1116,7 @@ Those requests have to be sent regularly to know who starts/stops watching a video. It is easy to detect that kind of behaviour - Aquelas requèstas an d’èsser enviadas regularament per saber qual commença/arrèstar d’agachar una vidèo. Es aisit de detectar aquel tipe de compòrtament + Aquelas requèstas an d’èsser enviadas regularament per saber qual commença/arrèsta d’agachar una vidèo. Es aisit de detectar aquel tipe de compòrtament 43 @@ -1170,14 +1275,14 @@ subscribers abonats - 12 + 24 Video channels Canals vidèo - 19 + 31 @@ -1320,13 +1425,6 @@ 42 - - Video import with HTTP enabled - Import vidèo amb HTTP activat - - 115 - - Video import with a torrent file or a magnet URI enabled Import de vidèos via un fichièr torretn o un magnet URI activat @@ -1404,6 +1502,17 @@ 189 + + If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> + If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> + Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. + Se vòstra instància es mesa en lista blanca per Twitter, un lector vidèo serà integrat pel fil Twitter sul partatge d’una vidèo PeerTube.<br /> + Se l’instància es pas en lista blanca, utilizam un imatge amb un ligam que mena a l’instància PeerTube.<br /><br /> + Clicatz aquesta bóstia, salvagardatz la configuracion e ensajatz amb l’URL d’una vidèo de vòstra instància (https://exemple.com/videos/watch/blabla) sus <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> per veire se vòstra instància es en lista blanca. + + 190 + + Services Servicis @@ -1650,14 +1759,14 @@ Score Marca - 8 + 17 Host Òst - 8 + 19 @@ -1674,11 +1783,25 @@ 11 + + Accepted + Acceptat + + 32 + + + + Pending + En espèra + + 33 + + Redundancy allowed Redondància autorizada - 11 + 22 @@ -1769,7 +1892,7 @@ Role Ròtle - 20 + 43 @@ -1792,27 +1915,6 @@ 72 - - Ban - Fòrabandir - - 3 - - - - Reason... - Rason... - - 11 - - - - Ban this user - Fòrabandir aqueste utilizaire - - 25 - - Users list Lista d’utilizaires @@ -1824,21 +1926,21 @@ Username Nom d’utilizaire - 17 + 40 - - Actions - Accions + + Go to the account page + Anar a la pagina del compte - 33 + 133 Ban reason: Rason del bandiment : - 51 + 82 @@ -1901,6 +2003,13 @@ 33 + + Actions + Accions + + 33 + + Reason: Rason : @@ -1936,6 +2045,13 @@ 10 + + Blacklist reason: + Rason de la mesa en lista negra : + + 41 + + Moderation Moderacion @@ -1943,6 +2059,13 @@ 2 + + Video abuses + Senhalaments de vidèos + + 5 + + Blacklisted videos Vidèos en lista nègra @@ -1992,6 +2115,13 @@ 18 + + Ownership changes + Cambiaments de proprietats + + 33 + + Video quota: Quòta vidèo : @@ -2020,6 +2150,20 @@ 18 + + Change ownership + Cambiar la proprietat + + 46 + + + + Select the next owner + Seleccionatz lo novèl proprietari + + 9 + + Cancel @@ -2045,6 +2189,13 @@ 19 + + Blacklisted + En lista negra + + 22 + + Cancel @@ -2106,6 +2257,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 8 + + You don't have any subscriptions yet. + Encara avètz pas cap d’abonament. + + 1 + + Created by Creat per @@ -2120,6 +2278,27 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 16 + + Accept ownership + Acceptar la proprietat + + 3 + + + + Select the target channel + Seleccionatz la cadena cibla + + 9 + + + + Initiator + Iniciator + + 13 + + Created @@ -2154,6 +2333,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 39 + + Refuse + Refusar + + 47 + + Change password Cambiar lo senhal @@ -2161,6 +2347,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 30 + + Current password + Senhal actual + + 7 + + New password Nòu senhal @@ -2186,14 +2379,14 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Automatically plays video Legir automaticament las vidèos - 20 + 25 Save Salvagardar - 23 + 28 @@ -2224,6 +2417,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 18 + + Once you delete your account, there is no going back. Please be certain. + Un còp qu’escafatz lo compte, podètz pas anullar aquò. Siatz-ne segur. + + 2 + + Delete your account Suprimir vòstre compte @@ -2242,6 +2442,28 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + + Verify account email confirmation + + + Verificar l’adreça del compte + + + 2 + + + + + Your email has been verified and you may now login. Redirecting... + + + Vòstre corrièl es estat verificat, podètz ara vos connectar. Redireccion... + + + 6 + + An error occurred. Una error s’es producha. @@ -2341,6 +2563,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 6 + + Scheduled + Programada + + 25 + + Publish will be available when upload is finished La publicacion serà possibla un còp lo mandadís acabat @@ -2362,6 +2591,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 6 + + Or + O + + 11 + + Paste magnet URI Pegar lo magnet URI @@ -2436,6 +2672,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 24 + + + This will replace an existing caption! + + + Aquò remplaçarà la legenda existenta ! + + + 29 + + Add this caption Ajustar aquesta legenda @@ -2457,6 +2704,27 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 191 + + Tags could be used to suggest relevant recommendations.</br>Press Enter to add a new tag. + Per suggerir de recomandacions pertinentas òm pòt utilizar las etiquetas.</br>Picatz Entrada per ajustar una nòva etiqueta. + + 18 + + + + + Tag + + Etiqueta + + 21 + + + + Enter a new tag + Picatz una nòva etiqueta + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Las descripcions de las vidèos son troncadas per defaut e demandan una accion manuala per qu’òm las alongue. @@ -2711,6 +2979,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 34 + + + The url is not secured (no HTTPS), so the embed video won't work on HTTPS websites (web browsers block non secured HTTP requests on HTTPS websites). + + + L’URL es pas segura (cap d’HTTPS), la vidèo embarcada foncionarà pas suls sites HTTPS alara (los navigadors web blocan las requèstas HTTP suls sites HTTPS). + + + 45 + + Close Tampar @@ -2747,6 +3026,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 15 + + + This video will be published on . + + + Aquesta vidèo serà publicada lo . + + + 19 + + This video is blacklisted. Aquesta vidèo es en lista negra. @@ -2754,6 +3044,28 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 24 + + + Published - views + + + Publicada - visualizacions + + + 37 + + + + + Published - views + + + Publicada - visualizacions + + + 46 + + Like this video Aimar la vidèo @@ -2817,6 +3129,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 100 + + Unblacklist this video + Tirar de la lista negra aquesta vidèo + + 99 + + Delete this video Suprimir aquesta vidèo @@ -2838,13 +3157,6 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 134 - - Go to the account page - Anar a la pagina del compte - - 133 - - Show more Ne veire mai @@ -2866,6 +3178,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 208 + + + the sharing system used for this video implies that some technical information about your system (such as a public IP address) can be sent to other peers. + + + Lo sistèma de partatge utilizat per aquesta vidèo implica que d’informacions tocant vòstre sistèma (tal coma vòstra adreça IP publica) sián enviadas als autres pars. + + + 209 + + More information Mai d’informacions @@ -2913,25 +3236,18 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Podètz siá comentar de la pagina de vòstra instància ont aquesta vidèo es federada amb vòstre compte PeerTube, o via qualque que siá instància del fediverse compatibla ActivityPub. Per exemple amb Mastodon o Pleroma podètz picar dins la barra de recèrca <strong>@@</strong> e retrobar aquesta vidèo. Las foncionalitats de comentari dirècte son en òbra a <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Cap de comentari. - 18 + 17 View all replies Veire las autras responsas - 55 + 54 @@ -2942,7 +3258,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Los comentaris son desactivats. - 64 + 63 @@ -2963,6 +3279,57 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 20 + + You are one step away from commenting + Sètz a una etapa abans de comentar + + 28 + + + + + If you have an account on this instance, you can login: + + + S’avètz un compte sus aquesta instància, podètz vos connectar : + + + 32 + + + + login to comment + se connectar per comentar + + 35 + + + + + Otherwise you can comment using an account on any ActivityPub-compatible instance. + On most platforms, you can find the video by typing its URL in the search bar and then comment it + from within the software's interface. + + + Autrament podètz comentar n’utilizant un compte amb una instància compatibla ActivityPub. + Sovent podètz trobar la vidèo en picant son URL dins la barra de recèrca puèi la comentar + a partir de l’interfàcia del logicial. + + + 36 + + + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + + S’avètz un compte sus Mastodon o Pleroma, podètz la dobrir dirèctament dins lor interfàcia : + + + 41 + + Highlighted comment Comentari notable @@ -3012,37 +3379,44 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - You set custom . - Avètz definit de . + + 240p + 240p + + 1 + + + + 360p + 360p 1 - - This could lead to security issues or bugs if you do not understand it. - Aquò pòt menar a de problèmas de seguretat o de bugs s’o comprenètz pas. + + 480p + 480p 1 - - Are you sure you want to update the configuration? - Volètz vertadièrament actualizar la configuracion ? + + 720p + 720p 1 - - Please type - Mercés de picar + + 1080p + 1080p 1 - - to confirm. - per confirmar. + + Auto (via ffmpeg) + Auto (via ffmpeg) 1 @@ -3068,6 +3442,69 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + 100MB + 100 Mo + + 1 + + + + 500MB + 500 Mo + + 1 + + + + 1GB + 1 Go + + 1 + + + + 5GB + 5 Go + + 1 + + + + 20GB + 20 Go + + 1 + + + + 50GB + 50 Go + + 1 + + + + 10MB + 10 Mo + + 1 + + + + 50MB + 50 Mo + + 1 + + + + 2GB + 2 Go + + 1 + + is not valid es pas valid @@ -3159,6 +3596,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Update moderation comment + Actualizar lo comentari de moderacion + + 1 + + Mark as accepted Marcar coma acceptat @@ -3187,6 +3631,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Do you really want to remove this video from the blacklist? It will be available again in the videos list. + Volètz vertadièrament levar aquesta vidèo de la lista negra ? Serà disponibla tornamai dins la lista de las vidèo. + + 1 + + Video removed from the blacklist. Vidèo tirada de la lista negra. @@ -3215,16 +3666,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - User banned. - Utilizaire fòrabandit. - - 1 - - - - Ban - Fòrabandir + + Unban + Reabilitar 1 @@ -3243,9 +3687,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - User deleted. - Utilizaire suprimit. + + Ownership accepted + Proprietat acceptada 1 @@ -3257,6 +3701,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + You current password is invalid. + Lo senhal acual es invalid. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. Volètz vertadièrament suprimir lo compte ? Aquò suprimirà totas las donadas, e tanben las cadenas, vidèos, etc. @@ -3411,6 +3862,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Ownership change request sent. + Demanda de cambiament de proprietat enviada. + + 1 + + Channels Cadenas @@ -3686,6 +4144,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Transcoding threads must be greater or equal to 0. + Los fils de transcodatge devon èsser superiors o egals a 1. + + 1 + + Username is required. Lo nom d’utilizaire es requesit. @@ -3723,7 +4188,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Username should be only lowercase alphanumeric characters. - Lo nom d’utilizaire deu èsser alfanumeric e un minuscula. + Lo nom d’utilizaire deu èsser alfanumeric e en minuscula. 1 @@ -3777,6 +4242,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Daily upload limit is required. + Lo quòta jornalièr de mandadís es requesit. + + 1 + + + + Daily upload limit must be greater than -1. + Lo quòta jornalièr deu èsser superior a -1. + + 1 + + User role is required. Lo ròtle del l’utilizaire es requesit. @@ -3826,6 +4305,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Ban reason must be at least 3 characters long. + La rason del bandiment deu conténer almens 3 caractèrs. + + 1 + + + + Ban reason cannot be more than 250 characters long. + La rason del bandiment pòt pas conténer mai de 250 caractèrs. + + 1 + + Report reason is required. La rason del senha es requesida. @@ -3847,6 +4340,48 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Moderation comment is required. + Lo comentari de moderacion es requesit. + + 1 + + + + Moderation comment must be at least 2 characters long. + Lo comentari de moderacon deu conténer almens 2 caractèrs. + + 1 + + + + Moderation comment cannot be more than 300 characters long. + Lo comentari de moderacion pòt pas conténer mai de 300 caractèrs. + + 1 + + + + The channel is required. + La cadena es requesida. + + 1 + + + + Blacklist reason must be at least 2 characters long. + La rason de la mesa en lista negra deu conténer almens 2 caractèrs. + + 1 + + + + Blacklist reason cannot be more than 300 characters long. + La rason de la mesa en lista negra pòt pas conténer mai de 300 caractèrs. + + 1 + + Video caption language is required. La lenga de la legenda es requesida. @@ -3861,6 +4396,41 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + The username is required. + Lo nom d’utilizaire es requesit. + + 1 + + + + Name is required. + Lo nom es requesit. + + 1 + + + + Name must be at least 3 characters long. + Lo nom deu almens conténer 3 caractèrs. + + 1 + + + + Name cannot be more than 20 characters long. + Lo nom pòt pas conténer mai de 20 caractèrs. + + 1 + + + + Name should be only lowercase alphanumeric characters. + Lo nom deu èsser alfanumeric e en minuscula + + 1 + + Description cannot be more than 500 characters long. La descripcion pòt pas conténer mai de 500 caractèrs. @@ -4330,6 +4900,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Transcode your videos in multiple resolutions + Convertir las vidèos en mantunas resolucions + + 1 + + HTTP import (YouTube, Vimeo, direct URL...) Importacion HTTP (YouTube, Vimeo, URL dirècta...) @@ -4416,14 +4993,14 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto days ago - Fa jorns + fa jorns 1 day ago - Fa jorn + fa jorn 1 @@ -4498,6 +5075,41 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + User banned. + Utilizaire fòrabandit. + + 1 + + + + Do you really want to unban ? + Volètz vertadièrament reabilitar  ? + + 1 + + + + User unbanned. + L’utilizaire es reabilitat. + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + Se levatz aqueste utilizaire, poiretz pas ne crear un autre amb lo meteis nom d’utilizaire ! + + 1 + + + + User deleted. + Utilizaire suprimit. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La requèsta es tròp granda pel servidor. Mercés de contactar l’administrator se volètz aumentar la talha limita. @@ -4554,6 +5166,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Moderator + Moderator + + 1 + + Only I can see this video Pas que ieu pòdi veire aquesta vidèo diff --git a/client/src/locale/target/angular_pl_PL.xml b/client/src/locale/target/angular_pl_PL.xml index 0d25a6ed4..87c691c20 100644 --- a/client/src/locale/target/angular_pl_PL.xml +++ b/client/src/locale/target/angular_pl_PL.xml @@ -38,6 +38,20 @@ 27 + + Select month + Wybierz miesiąc + + 7 + + + + Select year + Wybierz rok + + 16 + + «« «« @@ -168,7 +182,7 @@ - views - wyświetleń - 13 + 16 @@ -182,7 +196,7 @@ Edit Edytuj - 5 + 1 @@ -206,11 +220,50 @@ 19 + + + + Subscribe + + + + + + + + Subskrybuj + + + + + + + 5 + + + + + Unsubscribe + + + Odsubskrybuj + + + 18 + + + + Subscribe via RSS + Subskrybuj przez RSS + + 49 + + Video quota Powierzchnia na filmy - 19 + 42 @@ -224,6 +277,13 @@ 14 + + Reason... + Przyczyna… + + 11 + + Login @@ -416,13 +476,6 @@ 6 - - Filters - Filtry - - 16 - - No results found @@ -431,21 +484,21 @@ Nie znaleziono wyników - 25 + 28 subscribers subskrybentów - 41 + 44 - views - wyświetleń - 52 + 55 @@ -678,7 +731,7 @@ No results. Brak wyników. - 7 + 17 @@ -715,7 +768,7 @@ Instance Instancja - 8 + 12 @@ -1037,14 +1090,14 @@ subscribers subskrybentów - 12 + 24 Video channels Kanały wideo - 19 + 31 @@ -1384,6 +1437,16 @@ 7 + + + Moderation + + + Moderacja + + 11 + + Jobs @@ -1442,14 +1505,14 @@ Score Wynik - 8 + 17 Host Host - 8 + 19 @@ -1465,6 +1528,20 @@ 11 + + Accepted + Zaakceptowane + + 32 + + + + Pending + Oczekiwane + + 33 + + Manage follows Zarządzaj śledzeniem @@ -1539,7 +1616,7 @@ Role Rola - 20 + 43 @@ -1551,13 +1628,6 @@ 65 - - Reason... - Przyczyna… - - 11 - - Users list Lista użytkowników @@ -1569,14 +1639,14 @@ Username Nazwa użytkownika - 17 + 40 - - Actions - Akcje + + Go to the account page + Przejdź na stronę konta - 33 + 133 @@ -1614,6 +1684,13 @@ 33 + + Actions + Akcje + + 33 + + Reason: Powód: @@ -1628,6 +1705,13 @@ 10 + + Moderation + Moderacja + + 2 + + Blacklisted videos Filmy na czarnej liście @@ -1806,6 +1890,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 30 + + Current password + Obecne hasło + + 7 + + New password Nowe hasło @@ -1831,14 +1922,14 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia Automatically plays video Automatycznie odtwarzaj filmy - 20 + 25 Save Zapisz - 23 + 28 @@ -1950,6 +2041,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 55 + + Or + Lub + + 11 + + Import Importuj @@ -2006,6 +2104,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 191 + + + Tag + + Tag + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Opisy filmów są automatycznie skracane i wymagają ręcznego działania, aby je rozwinąć. @@ -2115,6 +2220,20 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 27 + + Torrent (.torrent file) + Torrent (plik .torrent) + + 32 + + + + Torrent (magnet link) + Torrent (link magnet) + + 37 + + Cancel @@ -2179,6 +2298,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 51 + + Blacklist video + Dodaj film na czarną listę + + 3 + + The video is being transcoded, it may not work properly. @@ -2295,13 +2421,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 134 - - Go to the account page - Przejdź na stronę konta - - 133 - - Show more Pokaż więcej @@ -2370,24 +2489,18 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Brak komentarzy. - 18 + 17 View all replies Zobacz wszystkie odpowiedzi - 55 + 54 @@ -2398,7 +2511,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia Komentarze są wyłączone. - 64 + 63 @@ -2468,37 +2581,37 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - You set custom . - Możesz ustawić niestandardowe . + + 240p + 240p 1 - - This could lead to security issues or bugs if you do not understand it. - Może to spowodować błędy lub problemy z bezpieczeństwem, jeżeli tego nie rozumiesz. + + 360p + 360p 1 - - Are you sure you want to update the configuration? - Czy na pewno chcesz zaktualizować konfigurację? + + 480p + 480p 1 - - Please type - Wprowadź + + 720p + 720p 1 - - to confirm. - aby potwierdzić. + + 1080p + 1080p 1 @@ -2524,6 +2637,69 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 + + 100MB + 100MB + + 1 + + + + 500MB + 500MB + + 1 + + + + 1GB + 1GB + + 1 + + + + 5GB + 5GB + + 1 + + + + 20GB + 20GB + + 1 + + + + 50GB + 50GB + + 1 + + + + 10MB + 10MB + + 1 + + + + 50MB + 50MB + + 1 + + + + 2GB + 2GB + + 1 + + is not valid nie jest prawidowy @@ -2629,13 +2805,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - User deleted. - Usunięto użytkownika . - - 1 - - Password updated. Zmieniono hasło. @@ -3798,6 +3967,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 + + User deleted. + Usunięto użytkownika . + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Zbyt duże żądanie na ten serwer. Skontaktuj się z administratorem, jeżeli chcesz zwiększyć ten limit. @@ -3974,6 +4150,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia Videos from your subscriptions + Filmy z twoich subskrypcji 1 diff --git a/client/src/locale/target/angular_pt_BR.xml b/client/src/locale/target/angular_pt_BR.xml index b62cbe7a4..390fc0f9a 100644 --- a/client/src/locale/target/angular_pt_BR.xml +++ b/client/src/locale/target/angular_pt_BR.xml @@ -217,7 +217,7 @@ - views - visualizações - 13 + 16 @@ -231,7 +231,7 @@ Edit Editar - 5 + 1 @@ -259,7 +259,7 @@ Video quota Cota de vídeo - 19 + 42 @@ -273,6 +273,38 @@ 14 + + Ban + Banir + + 3 + + + + Reason... + Motivo... + + 11 + + + + + A banned user will no longer be able to login. + + + Um usuário banido não conseguirá mais fazer login. + + + 17 + + + + Ban this user + Banir este usuário + + 25 + + Login @@ -479,13 +511,6 @@ 6 - - Filters - Filtros - - 16 - - No results found @@ -494,21 +519,21 @@ Nenhum resultado encontrado - 25 + 28 subscribers inscritos - 41 + 44 - views - visualizações - 52 + 55 @@ -741,7 +766,7 @@ No results. Nenhum resultado. - 7 + 17 @@ -778,7 +803,7 @@ Instance Instância - 8 + 12 @@ -1123,14 +1148,14 @@ subscribers inscritos - 12 + 24 Video channels Canais de vídeo - 19 + 31 @@ -1273,13 +1298,6 @@ 42 - - Video import with HTTP enabled - Importação de vídeo com HTTP habilitada - - 115 - - Video import with a torrent file or a magnet URI enabled Importação de vídeo com um arquivo torrent ou URI magnética habilitada @@ -1614,14 +1632,14 @@ Score Pontuação - 8 + 17 Host Host - 8 + 19 @@ -1726,7 +1744,7 @@ Role Papel - 20 + 43 @@ -1749,38 +1767,6 @@ 72 - - Ban - Banir - - 3 - - - - Reason... - Motivo... - - 11 - - - - - A banned user will no longer be able to login. - - - Um usuário banido não conseguirá mais fazer login. - - - 17 - - - - Ban this user - Banir este usuário - - 25 - - Users list Lista de usuários @@ -1792,21 +1778,21 @@ Username Nome de usuário - 17 + 40 - - Actions - Ações + + Go to the account page + Ir para a página da conta - 33 + 133 Ban reason: Motivo do banimento: - 51 + 82 @@ -1869,6 +1855,13 @@ 33 + + Actions + Ações + + 33 + + Reason: Motivo: @@ -1978,7 +1971,7 @@ Ownership changes Mudanças de dono - 22 + 33 @@ -2225,14 +2218,14 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen Automatically plays video Reproduzir vídeo automaticamente - 20 + 25 Save Salvar - 23 + 28 @@ -2936,13 +2929,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 134 - - Go to the account page - Ir para a página da conta - - 133 - - Show more Mostrar mais @@ -3022,25 +3008,18 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Você pode comentar na página de sua instância na qual esse vídeo está federado com outra conta do PeerTube, ou por meio de qualquer instância fediverse com capacidade para ActivityPub. Por exemplo, com Mastodon ou Pleroma, você pode digitar na caixa de pesquisa <strong>@@</strong> e encontrar o vídeo. Capacidades de comentar diretamente estão sendo trabalhadas em <a href='https://github.com/Chocobozzz/PeerTube/issues/470'>#470</a>. - - 8 - - No comments. Nenhum comentário. - 18 + 17 View all replies Ver todas as respostas - 55 + 54 @@ -3051,7 +3030,7 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen Comentários estão desabilitados. - 64 + 63 @@ -3121,41 +3100,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - You set custom . - Você definiu personalizado. - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Isso pode levar a problemas de segurança ou bugs se você não entender. - - 1 - - - - Are you sure you want to update the configuration? - Tem certeza de que deseja atualizar a configuração? - - 1 - - - - Please type - Por favor, digite - - 1 - - - - to confirm. - para confirmar. - - 1 - - Success Sucesso @@ -3317,20 +3261,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - User banned. - Usuário banido. - - 1 - - - - Ban - Banir - - 1 - - Unban Desbanir @@ -3345,20 +3275,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Do you really want to unban ? - Você realmente quer desbanir ? - - 1 - - - - User unbanned. - Usuário foi desbanido. - - 1 - - You cannot delete root. Você não pode excluir root. @@ -3366,13 +3282,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - User deleted. - Usuário excluído. - - 1 - - Ownership accepted Propriedade aceita @@ -4747,6 +4656,34 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 + + User banned. + Usuário banido. + + 1 + + + + Do you really want to unban ? + Você realmente quer desbanir ? + + 1 + + + + User unbanned. + Usuário foi desbanido. + + 1 + + + + User deleted. + Usuário excluído. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. A solicitação é grande demais para o servidor. Entre em contato com seu administrador se quiser aumentar o tamanho do limite. diff --git a/client/src/locale/target/angular_ru_RU.xml b/client/src/locale/target/angular_ru_RU.xml index accbbdd71..cc525f605 100644 --- a/client/src/locale/target/angular_ru_RU.xml +++ b/client/src/locale/target/angular_ru_RU.xml @@ -38,6 +38,20 @@ 27 + + Select month + Выберите месяц + + 7 + + + + Select year + Выберите год + + 16 + + «« «« @@ -101,6 +115,13 @@ 6 + + Increment hours + Увеличение часob + + 9 + + HH HH @@ -115,6 +136,20 @@ 14 + + Decrement hours + Сокращение часов + + 19 + + + + Increment minutes + Увеличение минут + + 28 + + MM MM @@ -129,6 +164,20 @@ 33 + + Decrement minutes + Сокращение минут + + 38 + + + + Increment seconds + Увеличение секунд + + 47 + + SS SS @@ -175,7 +224,7 @@ - views - просмотры - 13 + 16 @@ -189,7 +238,7 @@ Edit Редактировать - 5 + 1 @@ -203,7 +252,7 @@ Video quota Квота видео - 19 + 42 @@ -217,6 +266,31 @@ 14 + + Reason... + Причина... + + 11 + + + + + A banned user will no longer be able to login. + + + Забаненый пользователь не сможет больше подсоединиться. + + + 17 + + + + Ban this user + Отправить пользователя в бан + + 25 + + Login @@ -423,13 +497,6 @@ 6 - - Filters - Критерии - - 16 - - No results found @@ -438,21 +505,21 @@ поиск не дал результатов - 25 + 28 subscribers подписчики - 41 + 44 - views - просмотры - 52 + 55 @@ -685,7 +752,7 @@ No results. Нет результатов - 7 + 17 @@ -720,9 +787,9 @@ Instance - Сервер + Инстанция - 8 + 12 @@ -737,7 +804,7 @@ About instance - О сервере + О Инстанци 1 @@ -897,7 +964,7 @@ Для каждого отправленного запроса, трекер возвращает ограниченное количество случайных партнеров. - Например, при 1000 партнеров в swarm, и при том, что трекер возвращает только 20 партнеров на каждый запрос, нужно 50 запросов, чтоб узнать всех партнеров в swarm + Например, при 1000 партнеров в рой, и при том, что трекер возвращает только 20 партнеров на каждый запрос, нужно 50 запросов, чтоб узнать всех партнеров в рой 38 @@ -1067,14 +1134,14 @@ subscribers подписчики - 12 + 24 Video channels Видеоканал - 19 + 31 @@ -1217,13 +1284,6 @@ 42 - - Video import with HTTP enabled - Импорт видео с помощью HTTP активирован - - 115 - - Video import with a torrent file or a magnet URI enabled Импорт видео с помощью файла торент или magnet URI активирован @@ -1558,14 +1618,14 @@ Score Счет - 8 + 17 Host Host - 8 + 19 @@ -1670,7 +1730,7 @@ Role Роль - 20 + 43 @@ -1693,38 +1753,6 @@ 72 - - Ban - Бан - - 3 - - - - Reason... - Причина... - - 11 - - - - - A banned user will no longer be able to login. - - - Забаненый пользователь не сможет больше подсоединиться. - - - 17 - - - - Ban this user - Отправить пользователя в бан - - 25 - - Users list Список пользователей @@ -1736,21 +1764,14 @@ Username Имя пользователя - 17 - - - - Actions - Действия - - 33 + 40 Ban reason: Причины бана: - 51 + 82 @@ -1813,6 +1834,13 @@ 33 + + Actions + Действия + + 33 + + Reason: Причины: @@ -1922,7 +1950,7 @@ Ownership changes Смена собственника - 22 + 33 @@ -2169,14 +2197,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video Воспроизводить автоматически видео - 20 + 25 Save Сохранить - 23 + 28 @@ -2282,6 +2310,132 @@ When you will upload a video in this channel, the video support field will be au 17 + + Transcoding threads is required. + Транскодирование потоки требуется. + + 1 + + + + Transcoding threads must be greater or equal to 0. + Транскодирование потоков должны быть больше или равно 0. + + 1 + + + + Username is required. + Имя пользователя требуется. + + 1 + + + + Password is required. + Пароль необходим. + + 1 + + + + Username must be at least 3 characters long. + Имя пользователя должно быть длиной не менее 3-х символов. + + 1 + + + + Password must be at least 6 characters long. + Пароль должен быть длиной не менее 6 символов. + + 1 + + + + Display name must be at least 3 characters long. + Отображаемое имя должно иметь длину не менее 3-х символов. + + 1 + + + + Description must be at least 3 characters long. + Описание должно быть длиной не менее 3-х символов. + + 1 + + + + Ban reason must be at least 3 characters long. + Запрет причина должно длиться не менее 3 символов. + + 1 + + + + Report reason must be at least 2 characters long. + Доклад причина должно быть не менее 2 символов. + + 1 + + + + Moderation comment must be at least 2 characters long. + Модерация комментарий должен быть длиной не менее 2 символа. + + 1 + + + + Blacklist reason must be at least 2 characters long. + Причина черного списка должна быть не менее 2 символов. + + 1 + + + + Name must be at least 3 characters long. + Длина имени должна быть не менее 3 символов. + + 1 + + + + Support text must be at least 3 characters long. + Текст поддержки должен содержать не менее 3 символов. + + 1 + + + + Comment must be at least 2 characters long. + Комментарий должен содержать не менее 2 символов. + + 1 + + + + Video name must be at least 3 characters long. + Название видео должно быть не менее 3-х символов. + + 1 + + + + Video description must be at least 3 characters long. + Описание видео должно быть не менее 3-х символов. + + 1 + + + + Video support must be at least 3 characters long. + Описание видео должно быть не менее 3-х символов. + + 1 + + Subscribed Подписаться diff --git a/client/src/locale/target/angular_sv_SE.xml b/client/src/locale/target/angular_sv_SE.xml index 7377f7c23..1f15e7290 100644 --- a/client/src/locale/target/angular_sv_SE.xml +++ b/client/src/locale/target/angular_sv_SE.xml @@ -231,7 +231,7 @@ - views - visningar - 13 + 16 @@ -245,7 +245,7 @@ Edit Redigera - 5 + 1 @@ -301,6 +301,13 @@ 18 + + Using an ActivityPub account + Med ett ActivityPub-konto + + 36 + + Subscribe with an account on Prenumerera med ett konto på @@ -315,6 +322,13 @@ 40 + + Subscribe with a Mastodon account: + Prenumerera med ett Mastodon-konto: + + 43 + + Using a syndication feed Med ett syndikeringsflöde @@ -360,7 +374,7 @@ Video quota Videokvot - 19 + 42 @@ -374,6 +388,38 @@ 14 + + Ban + Blockera + + 3 + + + + Reason... + Anledning … + + 11 + + + + + A banned user will no longer be able to login. + + + En blockerad användare kommer inte längre kunna logga in. + + + 17 + + + + Ban this user + Blockera den här användaren + + 25 + + Login @@ -580,13 +626,6 @@ 6 - - Filters - Filter - - 16 - - No results found @@ -595,21 +634,21 @@ Inga resultat hittades - 25 + 28 subscribers prenumeranter - 41 + 44 - views - visningar - 52 + 55 @@ -849,7 +888,7 @@ No results. Inga resultat. - 7 + 17 @@ -863,6 +902,17 @@ 6 + + + # + + + # + + + 14 + + @@ -886,7 +936,7 @@ Instance Instans - 8 + 12 @@ -1231,14 +1281,14 @@ subscribers prenumeranter - 12 + 24 Video channels Videokanaler - 19 + 31 @@ -1381,13 +1431,6 @@ 42 - - Video import with HTTP enabled - Videoimport med HTTP aktiverad - - 115 - - Video import with a torrent file or a magnet URI enabled Videoimport med torrentfil eller magnet-URI är tillåten @@ -1717,14 +1760,14 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a Score Poäng - 8 + 17 Host Värd - 8 + 19 @@ -1745,21 +1788,21 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a Accepted Accepterad - 21 + 32 Pending Väntar - 22 + 33 Redundancy allowed Redundans tillåten - 11 + 22 @@ -1850,7 +1893,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a Role Roll - 20 + 43 @@ -1873,38 +1916,6 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 72 - - Ban - Blockera - - 3 - - - - Reason... - Anledning … - - 11 - - - - - A banned user will no longer be able to login. - - - En blockerad användare kommer inte längre kunna logga in. - - - 17 - - - - Ban this user - Blockera den här användaren - - 25 - - Users list Användarlista @@ -1916,21 +1927,21 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a Username Användarnamn - 17 + 40 - - Actions - Åtgärder + + Go to the account page + Gå till kontots sida - 33 + 133 Ban reason: Blockeringsanledning: - 51 + 82 @@ -1974,7 +1985,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a State - Tillstånd + Status 11 @@ -1993,6 +2004,13 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 33 + + Actions + Åtgärder + + 33 + + Reason: Anledning: @@ -2102,7 +2120,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a Ownership changes Ändringar av ägarskap - 22 + 33 @@ -2331,6 +2349,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 30 + + Current password + Nuvarande lösenord + + 7 + + New password Nytt lösenord @@ -2356,14 +2381,14 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Automatically plays video Spela videor automatiskt - 20 + 25 Save Spara - 23 + 28 @@ -2394,6 +2419,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 18 + + Once you delete your account, there is no going back. Please be certain. + När du har raderat ditt konto går det inte att ångra. Är du säker på att du vill fortsätta? + + 2 + + Delete your account Radera ditt konto @@ -2561,6 +2593,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 6 + + Or + Eller + + 11 + + Paste magnet URI Klistra in magnet-URI @@ -2674,6 +2713,20 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 18 + + + Tag + + Tagg + + 21 + + + + Enter a new tag + Lägg till en ny tagg + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Videobeskrivningar kortas ner som standard och manuell åtgärd krävs för att visa hela. @@ -3106,13 +3159,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 134 - - Go to the account page - Gå till kontots sida - - 133 - - Show more Visa mer @@ -3192,25 +3238,18 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - Du kan kommentera med ditt PeerTube-konto på din instans sida dit videon är federerad eller via valfri fediverse-instans med stöd för ActivityPub. Med till exempel Mastodon eller Pleroma kan du skriva <strong>@@</strong> i sökrutan för att hitta videon. Kommentering direkt härfrån är en funktion vi arbetar på i <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - - 8 - - No comments. Inga kommentarer. - 18 + 17 View all replies Visa alla svar - 55 + 54 @@ -3221,7 +3260,7 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Kommentarer har avaktiverats. - 64 + 63 @@ -3267,6 +3306,32 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 35 + + + Otherwise you can comment using an account on any ActivityPub-compatible instance. + On most platforms, you can find the video by typing its URL in the search bar and then comment it + from within the software's interface. + + + Annars kan du kommentera med ett konto på en valfri ActivityPub-instans. + På de flesta plattformar kan du hitta videon genom att skriva dess URL i sökrutan och kommentera + från mjukvarugränssnittet. + + + 36 + + + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + + Om du har ett konto på Mastodon eller Pleroma kan du öppna det direkt därifrån: + + + 41 + + Highlighted comment Markerad kommentar @@ -3304,7 +3369,14 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Published videos - Publiserade videor + Publicerade videor + + 1 + + + + Error + Fel 1 @@ -3351,48 +3423,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Error - Fel - - 1 - - - - You set custom . - Du definierade en egen . - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - Detta kan orsaka säkerhetsproblem eller buggar om du inte förstår det. - - 1 - - - - Are you sure you want to update the configuration? - Är du säker på att du vill uppdatera konfigurationen? - - 1 - - - - Please type - Skriv - - 1 - - - - to confirm. - för att bekräfta. - - 1 - - Success Åtgärden lyckades @@ -3638,20 +3668,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - User banned. - Användaren har blockerats. - - 1 - - - - Ban - Blockera - - 1 - - Unban Avsluta blockering @@ -3666,20 +3682,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Do you really want to unban ? - Vill du verkligen avsluta blockeringen av ? - - 1 - - - - User unbanned. - Användaren är inte längre blockerad. - - 1 - - You cannot delete root. Du kan inte radera root. @@ -3687,20 +3689,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - If you remove this user, you will not be able to create another with the same username! - Om du tar bort den här användaren kommer du inte kunna skapa en ny med samma användarnamn! - - 1 - - - - User deleted. - Användaren har raderats. - - 1 - - Ownership accepted Ägarskap accepterat @@ -3715,6 +3703,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + You current password is invalid. + Ditt nuvarande lösenord är inte giltigt. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. Är du säker på att du vill radera ditt konto? Detta kommer ta bort all din data, bland annat kanaler och videor. @@ -5082,6 +5077,41 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + User banned. + Användaren har blockerats. + + 1 + + + + Do you really want to unban ? + Vill du verkligen avsluta blockeringen av ? + + 1 + + + + User unbanned. + Användaren är inte längre blockerad. + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + Om du tar bort den här användaren kommer du inte kunna skapa en ny med samma användarnamn! + + 1 + + + + User deleted. + Användaren har raderats. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Förfrågan är för stor för servern. Kontakta gärna din administratör om du vill öka storleksbegränsningen. @@ -5138,6 +5168,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Moderator + Moderator + + 1 + + Only I can see this video Endast jag kan se den här videon diff --git a/client/src/locale/target/angular_zh_Hans_CN.xml b/client/src/locale/target/angular_zh_Hans_CN.xml index 5b1165dcb..e47d99288 100644 --- a/client/src/locale/target/angular_zh_Hans_CN.xml +++ b/client/src/locale/target/angular_zh_Hans_CN.xml @@ -231,7 +231,7 @@ - views - 次观看 - 13 + 16 @@ -245,7 +245,7 @@ Edit 编辑 - 5 + 1 @@ -301,6 +301,13 @@ 18 + + Using an ActivityPub account + 使用 ActivityPub 帐户 + + 36 + + Subscribe with an account on 使用 上的帐户订阅 @@ -315,6 +322,13 @@ 40 + + Subscribe with a Mastodon account: + 使用 Mastodon 帐户订阅: + + 43 + + Using a syndication feed 使用聚合信息源 @@ -360,7 +374,7 @@ Video quota 视频存储空间 - 19 + 42 @@ -374,6 +388,38 @@ 14 + + Ban + 封禁 + + 3 + + + + Reason... + 原因... + + 11 + + + + + A banned user will no longer be able to login. + + + 被封禁的用户将无法登录。 + + + 17 + + + + Ban this user + 封禁此用户 + + 25 + + Login @@ -578,13 +624,6 @@ 6 - - Filters - 过滤 - - 16 - - No results found @@ -593,21 +632,21 @@ 没有结果 - 25 + 28 subscribers 位订阅者 - 41 + 44 - views - 次观看 - 52 + 55 @@ -847,7 +886,7 @@ No results. 没有结果。 - 7 + 17 @@ -861,6 +900,17 @@ 6 + + + # + + + # + + + 14 + + @@ -884,7 +934,7 @@ Instance 实例 - 8 + 12 @@ -1227,14 +1277,14 @@ subscribers 位订阅者 - 12 + 24 Video channels 视频频道 - 19 + 31 @@ -1377,13 +1427,6 @@ 42 - - Video import with HTTP enabled - 允许通过 HTTP 导入视频 - - 115 - - Video import with a torrent file or a magnet URI enabled 允许通过种子文件或磁力链导入视频 @@ -1718,14 +1761,14 @@ Score 评分 - 8 + 17 Host 主机名 - 8 + 19 @@ -1746,21 +1789,21 @@ Accepted 已接受 - 21 + 32 Pending 等待中 - 22 + 33 Redundancy allowed 允许冗余备份 - 11 + 22 @@ -1851,7 +1894,7 @@ Role 角色 - 20 + 43 @@ -1874,38 +1917,6 @@ 72 - - Ban - 封禁 - - 3 - - - - Reason... - 原因... - - 11 - - - - - A banned user will no longer be able to login. - - - 被封禁的用户将无法登录。 - - - 17 - - - - Ban this user - 封禁此用户 - - 25 - - Users list 用户列表 @@ -1917,21 +1928,21 @@ Username 用户名 - 17 + 40 - - Actions - 操作 + + Go to the account page + 转到帐户页面 - 33 + 133 Ban reason: 封禁理由: - 51 + 82 @@ -1994,6 +2005,13 @@ 33 + + Actions + 操作 + + 33 + + Reason: 理由: @@ -2103,7 +2121,7 @@ Ownership changes 视频转移 - 22 + 33 @@ -2332,6 +2350,13 @@ When you will upload a video in this channel, the video support field will be au 30 + + Current password + 当前密码 + + 7 + + New password 新密码 @@ -2357,14 +2382,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video 自动播放视频 - 20 + 25 Save 保存 - 23 + 28 @@ -2395,6 +2420,13 @@ When you will upload a video in this channel, the video support field will be au 18 + + Once you delete your account, there is no going back. Please be certain. + 帐户一旦被删除,您将无法撤销此操作。继续前请确认您是否真的想要删除帐户。 + + 2 + + Delete your account 删除您的帐户 @@ -2562,6 +2594,13 @@ When you will upload a video in this channel, the video support field will be au 6 + + Or + 或者 + + 11 + + Paste magnet URI 粘贴磁力链 @@ -2675,6 +2714,20 @@ When you will upload a video in this channel, the video support field will be au 18 + + + Tag + + 标签 + + 21 + + + + Enter a new tag + 输入新的标签 + + 21 + + Video descriptions are truncated by default and require manual action to expand them. 视频说明默认只展示一部分,用户需要手动展开才能显示完整内容。 @@ -3107,13 +3160,6 @@ When you will upload a video in this channel, the video support field will be au 134 - - Go to the account page - 转到帐户页面 - - 133 - - Show more 展开 @@ -3193,25 +3239,18 @@ When you will upload a video in this channel, the video support field will be au 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - 您可以在您使用的 PeerTube 实例上使用您的帐户对此视频进行评论(您需要在您的实例上找到此视频),或者通过任意一个使用 ActivityPub 标准的实例发送评论。以 Mastodon 和 Pleroma 为例,您需要在搜索框中输入 <strong>@@</strong> 并在搜索结果中找到此视频。直接评论功能尚在开发中,详情请参见 <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>。 - - 8 - - No comments. 尚无评论。 - 18 + 17 View all replies 查看全部 条回复 - 55 + 54 @@ -3222,7 +3261,7 @@ When you will upload a video in this channel, the video support field will be au 评论功能已停用。 - 64 + 63 @@ -3268,6 +3307,31 @@ When you will upload a video in this channel, the video support field will be au 35 + + + Otherwise you can comment using an account on any ActivityPub-compatible instance. + On most platforms, you can find the video by typing its URL in the search bar and then comment it + from within the software's interface. + + + 您也可以使用兼容 ActivityPub 标准的实例帐户参与评论。 + 对于绝大多数平台,您可以在搜索框中输入 URL,然后即可在界面内进行评论。 + + + 36 + + + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + + 如果您在 Mastodon 或 Pleroma 上有帐户,您可以直接在对应的界面中打开: + + + 41 + + Highlighted comment 所要查看的评论 @@ -3310,6 +3374,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Error + 错误 + + 1 + + 240p 240p @@ -3352,48 +3423,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Error - 错误 - - 1 - - - - You set custom . - 您设置了自定义 - - 1 - - - - This could lead to security issues or bugs if you do not understand it. - 除非您清楚自己在做什么,否则这可能会造成安全隐患或使网站运行不正常。 - - 1 - - - - Are you sure you want to update the configuration? - 您确定要更新设置吗? - - 1 - - - - Please type - 请输入 - - 1 - - - - to confirm. - 以确认操作。 - - 1 - - Success 成功 @@ -3640,20 +3669,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - User banned. - 用户 已封禁。 - - 1 - - - - Ban - 封禁 - - 1 - - Unban 解除封禁 @@ -3668,20 +3683,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Do you really want to unban ? - 您确定要解除对 的封禁吗? - - 1 - - - - User unbanned. - 用户 已解除封禁。 - - 1 - - You cannot delete root. 您无法删除 root 用户。 @@ -3689,20 +3690,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - If you remove this user, you will not be able to create another with the same username! - 一旦删除此用户,你将无法再使用此用户名创建新用户! - - 1 - - - - User deleted. - 用户 已删除。 - - 1 - - Ownership accepted 转移已接受 @@ -3717,6 +3704,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + You current password is invalid. + 您的当前密码不正确。 + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. 您确定要删除您的帐户吗?这将删除您的全部数据,包括频道和视频等。 @@ -5084,6 +5078,41 @@ When you will upload a video in this channel, the video support field will be au 1 + + User banned. + 用户 已封禁。 + + 1 + + + + Do you really want to unban ? + 您确定要解除对 的封禁吗? + + 1 + + + + User unbanned. + 用户 已解除封禁。 + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + 一旦删除此用户,你将无法再使用此用户名创建新用户! + + 1 + + + + User deleted. + 用户 已删除。 + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. 请求已超过限制。请联系管理员以提升限制。 @@ -5140,6 +5169,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Moderator + 监察员 + + 1 + + Only I can see this video 只有我能看到此视频 diff --git a/client/src/locale/target/angular_zh_Hant_TW.xml b/client/src/locale/target/angular_zh_Hant_TW.xml index b6b7f1e4f..65ffe97e6 100644 --- a/client/src/locale/target/angular_zh_Hant_TW.xml +++ b/client/src/locale/target/angular_zh_Hant_TW.xml @@ -38,6 +38,20 @@ 27 + + Select month + 選取月份 + + 7 + + + + Select year + 選取年份 + + 16 + + «« «« @@ -217,7 +231,7 @@ - views - 次檢視 - 13 + 16 @@ -231,7 +245,7 @@ Edit 編輯 - 5 + 1 @@ -255,11 +269,112 @@ 19 + + + + Subscribe + + + + + + + + 訂閱 + + + + + + + 5 + + + + + Unsubscribe + + + 取消訂閱 + + + 18 + + + + Using an ActivityPub account + 使用 ActivityPub 帳號 + + 36 + + + + Subscribe with an account on + 使用 上的帳號訂閱 + + 39 + + + + Subscribe with your local account + 以您的本地帳號訂閱 + + 40 + + + + Subscribe with a Mastodon account: + 使用 Mastodon 帳號訂閱: + + 43 + + + + Using a syndication feed + 使用聯合供稿 + + 48 + + + + Subscribe via RSS + 透過 RSS 訂閱 + + 49 + + + + + Remote subscribe + Remote interact + + + 遠端訂閱 + 遠端實體 + + + 10 + + + + You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there. + 您可以透過任何相容於 ActivityPub 的聯盟實體訂閱。例如 Mastodon 或 Pleroma,您可以在搜尋框輸入頻道 URL 以訂閱。 + + 17 + + + + You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there. + 您可以透過任何相容於 ActivityPub 的聯盟實體進行互動。例如 Mastodon 或 Pleroma,您可以在搜尋框中輸入目前的 URL 並在那裡與其互動。 + + 22 + + Video quota 影片配額 - 19 + 42 @@ -273,6 +388,38 @@ 14 + + Ban + 阻擋 + + 3 + + + + Reason... + 理由…… + + 11 + + + + + A banned user will no longer be able to login. + + + 被阻擋的使用者將不再能登入。 + + + 17 + + + + Ban this user + 阻擋此使用者 + + 25 + + Login @@ -473,34 +620,27 @@ 6 - - Filters - 過濾器 - - 16 - - No results found 沒有結果 - 25 + 28 subscribers 個訂閱者 - 41 + 44 - views - 次檢視 - 52 + 55 @@ -624,6 +764,13 @@ 25 + + Show keyboard shortcuts + 顯示鍵盤快捷鍵 + + 91 + + Toggle dark interface 切換至暗色介面 @@ -733,7 +880,7 @@ No results. 沒有結果 - 7 + 17 @@ -747,6 +894,17 @@ 6 + + + # + + + # + + + 14 + + @@ -770,7 +928,7 @@ Instance 實體 - 8 + 12 @@ -1075,14 +1233,14 @@ subscribers 個訂閱者 - 12 + 24 Video channels 影片頻道 - 19 + 31 @@ -1225,13 +1383,6 @@ 42 - - Video import with HTTP enabled - 已啟用 HTTP 匯入影片 - - 115 - - Video import with a torrent file or a magnet URI enabled 已啟用種子檔案或磁力連結匯入影片 @@ -1556,14 +1707,14 @@ Score 分數 - 8 + 17 Host 主機 - 8 + 19 @@ -1580,6 +1731,27 @@ 11 + + Accepted + 已接受 + + 32 + + + + Pending + 擱置中 + + 33 + + + + Redundancy allowed + 允許冗餘 + + 22 + + Manage follows 管理追蹤 @@ -1668,7 +1840,7 @@ Role 角色 - 20 + 43 @@ -1691,38 +1863,6 @@ 72 - - Ban - 阻擋 - - 3 - - - - Reason... - 理由…… - - 11 - - - - - A banned user will no longer be able to login. - - - 被阻擋的使用者將不再能登入。 - - - 17 - - - - Ban this user - 阻擋此使用者 - - 25 - - Users list 使用者清單 @@ -1734,21 +1874,21 @@ Username 使用者名稱 - 17 + 40 - - Actions - 動作 + + Go to the account page + 到帳號頁面 - 33 + 133 Ban reason: 阻擋理由: - 51 + 82 @@ -1811,6 +1951,13 @@ 33 + + Actions + 動作 + + 33 + + Reason: 理由: @@ -1920,7 +2067,7 @@ Ownership changes 所有權變更 - 22 + 33 @@ -2058,6 +2205,13 @@ When you will upload a video in this channel, the video support field will be au 8 + + You don't have any subscriptions yet. + 您還沒有任何訂閱。 + + 1 + + Created by 建立 @@ -2141,6 +2295,13 @@ When you will upload a video in this channel, the video support field will be au 30 + + Current password + 目前的密碼 + + 7 + + New password 新密碼 @@ -2166,14 +2327,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video 自動播放影片 - 20 + 25 Save 儲存 - 23 + 28 @@ -2204,6 +2365,13 @@ When you will upload a video in this channel, the video support field will be au 18 + + Once you delete your account, there is no going back. Please be certain. + 一旦您刪除了您的帳號,就不能回頭了。請考慮清楚。 + + 2 + + Delete your account 刪除您的帳號 @@ -2339,6 +2507,13 @@ When you will upload a video in this channel, the video support field will be au 6 + + Scheduled + 排定 + + 25 + + Publish will be available when upload is finished 上傳完成時將可發佈 @@ -2360,6 +2535,13 @@ When you will upload a video in this channel, the video support field will be au 6 + + Or + + + 11 + + Paste magnet URI 貼上磁力連結 @@ -2471,6 +2653,20 @@ When you will upload a video in this channel, the video support field will be au 18 + + + Tag + + 標籤 + + 21 + + + + Enter a new tag + 輸入新標籤 + + 21 + + Video descriptions are truncated by default and require manual action to expand them. 預設情況下,影片描述不會完整顯示,需要手動操作才能展開它們。 @@ -2541,6 +2737,20 @@ When you will upload a video in this channel, the video support field will be au 155 + + Already uploaded ✔ + 已上傳 ✔ + + 159 + + + + Will be created on update + 將在更新時建立 + + 167 + + Cancel create 取消建立 @@ -2548,6 +2758,13 @@ When you will upload a video in this channel, the video support field will be au 169 + + Will be deleted on update + 將在更新時刪除 + + 175 + + Cancel deletion 取消刪除 @@ -2555,6 +2772,17 @@ When you will upload a video in this channel, the video support field will be au 177 + + + No captions for now. + + + 現在沒有字幕。 + + + 182 + + Captions 字幕 @@ -2869,13 +3097,6 @@ When you will upload a video in this channel, the video support field will be au 134 - - Go to the account page - 到帳號頁面 - - 133 - - Show more 顯示更多 @@ -2955,25 +3176,18 @@ When you will upload a video in this channel, the video support field will be au 3 - - You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@@</strong> and find back the video. Direct commenting capabilities are being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a>. - 您可以對此影片使用有與您的 PeerTube 帳號在互聯的實體上評論,或是透過任何支援 ActivityPub 的互聯實體來進行。例如 Mastodon 或 Pleroma,您可以在搜尋欄輸入 <strong>@@</strong> 並搜尋影片。直接評論的功能還在 <a href='https://github.com/Chocobozzz/PeerTube/issues/224'>#224</a> 上繼續努力實現。 - - 8 - - No comments. 沒有評論。 - 18 + 17 View all replies 檢視全部 個回覆 - 55 + 54 @@ -2984,7 +3198,7 @@ When you will upload a video in this channel, the video support field will be au 評論已停用。 - 64 + 63 @@ -3005,6 +3219,57 @@ When you will upload a video in this channel, the video support field will be au 20 + + You are one step away from commenting + 您離評論只有一步之遙 + + 28 + + + + + If you have an account on this instance, you can login: + + + 如果您在此實體上有帳號,您可以登入: + + + 32 + + + + login to comment + 登入以評論 + + 35 + + + + + Otherwise you can comment using an account on any ActivityPub-compatible instance. + On most platforms, you can find the video by typing its URL in the search bar and then comment it + from within the software's interface. + + + 或者您也可以使用在任何相容於 ActibityPub 的實體上的帳號評論。 + 在大多數的平臺上,您可以透過輸入 URL 來找到影片,從而對其評論 + 從軟體的界面。 + + + 36 + + + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + + 如果您有 Mastodon 或 Pleroma 的帳號,您可以在他們的界面中直接開啟它: + + + 41 + + Highlighted comment 已突顯的評論 @@ -3054,37 +3319,44 @@ When you will upload a video in this channel, the video support field will be au 1 - - You set custom . - 您可以設定自訂 + + 240p + 240p + + 1 + + + + 360p + 360p 1 - - This could lead to security issues or bugs if you do not understand it. - 這可能會導致安全性問題或臭蟲。若您不了解它。 + + 480p + 480p 1 - - Are you sure you want to update the configuration? - 您確定您想要更新設定嗎? + + 720p + 720p 1 - - Please type - 請輸入 + + 1080p + 1080p 1 - - to confirm. - 以確認。 + + Auto (via ffmpeg) + 自動(透過 ffmpeg) 1 @@ -3110,6 +3382,69 @@ When you will upload a video in this channel, the video support field will be au 1 + + 100MB + 100MB + + 1 + + + + 500MB + 500MB + + 1 + + + + 1GB + 1GB + + 1 + + + + 5GB + 5GB + + 1 + + + + 20GB + 20GB + + 1 + + + + 50GB + 50GB + + 1 + + + + 10MB + 10MB + + 1 + + + + 50MB + 50MB + + 1 + + + + 2GB + 2GB + + 1 + + is not valid 無效 @@ -3173,6 +3508,27 @@ When you will upload a video in this channel, the video support field will be au 1 + + enabled + 已啟用 + + 1 + + + + disabled + 已停用 + + 1 + + + + Redundancy for is + 冗餘 is + + 1 + + Comment updated. 評論已更新。 @@ -3250,20 +3606,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - User banned. - 使用者 已阻擋。 - - 1 - - - - Ban - 阻擋 - - 1 - - Unban 取消阻擋 @@ -3278,20 +3620,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Do you really want to unban ? - 您真的想要取消阻擋 嗎? - - 1 - - - - User unbanned. - 使用者 已取消阻擋。 - - 1 - - You cannot delete root. 您無法刪除 root。 @@ -3299,13 +3627,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - User deleted. - 使用者 已刪除。 - - 1 - - Ownership accepted 所有權已接受 @@ -3320,6 +3641,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + You current password is invalid. + 您目前密碼無效。 + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. 您確定要刪除您的帳號?這將會刪除您所有的資料,包含頻道、影片等。 @@ -3539,6 +3867,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Keyboard Shortcuts: + 鍵盤快捷鍵: + + 1 + + Incorrect username or password. 不正確的使用者名稱或密碼。 @@ -4680,6 +5015,41 @@ When you will upload a video in this channel, the video support field will be au 1 + + User banned. + 使用者 已阻擋。 + + 1 + + + + Do you really want to unban ? + 您真的想要取消阻擋 嗎? + + 1 + + + + User unbanned. + 使用者 已取消阻擋。 + + 1 + + + + If you remove this user, you will not be able to create another with the same username! + 如果您移除此使用者,您就沒辦法再使用同一個使用者名稱來建立另一個使用者! + + 1 + + + + User deleted. + 使用者 已刪除。 + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. 請求對伺服器來說太大。若您想要增加限制大小,請聯絡您的管理員。 @@ -4736,6 +5106,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Moderator + 主持人 + + 1 + + Only I can see this video 只有我可以看見此影片 diff --git a/client/src/locale/target/player_de_DE.json b/client/src/locale/target/player_de_DE.json index afcc2a286..fb4847590 100644 --- a/client/src/locale/target/player_de_DE.json +++ b/client/src/locale/target/player_de_DE.json @@ -1 +1 @@ -{"Audio Player":"Audio-Player","Video Player":"Video-Player","Play":"Wiedergabe","Pause":"Wiedergabe pausieren","Replay":"Nochmal","Current Time":"Aktuelle Zeit","Duration":"Länge","Remaining Time":"Verbleibende Zeit","Stream Type":"Streamtyp","LIVE":"Live","Loaded":"Geladen","Progress":"Fortschritt","Progress Bar":"Fortschrittsanzeige","progress bar timing: currentTime={1} duration={2}":"{1} von {2}","Fullscreen":"Vollbildschirm","Non-Fullscreen":"Kein Vollbildschirm","Mute":"Ton aus","Unmute":"Ton an","Playback Rate":"Wiedergabegeschwindigkeit","Subtitles":"Untertitel","subtitles off":"Untertitel aus","Captions":"Untertitel für Gehörlose und Schwerhörige","captions off":"Untertitel für Gehörlose und Schwerhörige aus","Chapters":"Kapitel","Descriptions":"Beschreibungen","descriptions off":"Beschreibungen aus","Audio Track":"Tonspur","Volume Level":"Lautstärke","You aborted the media playback":"Du hast die Medienwiedergabe abgebrochen.","A network error caused the media download to fail part-way.":"Ein Netzwerkfehler hat das Herunterladen des Videos teilweise verhindert.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Es ist ein Fehler beim Laden aufgetreten. Das kann an einer fehlenden Netzwerk-Verbindung liegen oder daran, dass das Format nicht unterstützt wird.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Die Medienwiedergabe wurde abgebrochen, weil die erhaltenen Daten entweder fehlerhaft sind vom aktuellen Browser nicht unterstützt werden.","No compatible source was found for this media.":"Es konnte keine kompatible Quelle gefunden werden.","The media is encrypted and we do not have the keys to decrypt it.":"Die Daten sind verschlüsselt und es liegen keine Schlüssel dafür vor.","Play Video":"Video abspielen","Close":"Schließen","Close Modal Dialog":"Dialogfenster schließen","Modal Window":"Dialogfenster","This is a modal window":"Dies ist ein Dialogfenster.","This modal can be closed by pressing the Escape key or activating the close button.":"Dieses Dialogfenster kann geschlossen werden, indem man die Escape-Taste drückt oder auf die Schaltfläche zum Schließen des Fenster klickt.",", opens captions settings dialog":", öffnet die Einstellungen für Untertitel für Gehörlose und Schwerhörige",", opens subtitles settings dialog":", öffnet die Einstellungen für Untertitel",", opens descriptions settings dialog":", öffnet die Einstellungen für Beschreibungen",", selected":", ausgewählt","captions settings":"Einstellungen für Untertitel für Gehörlose und Schwerhörige","subtitles settings":"Einstellungen für Untertitel","descriptions settings":"Einstellungen für Beschreibungen","Text":"Text","White":"Weiß","Black":"Schwarz","Red":"Rot","Green":"Grün","Blue":"Blau","Yellow":"Gelb","Magenta":"Magenta","Cyan":"Cyan","Background":"Hintergrund","Window":"Fenster","Transparent":"durchsichtig","Semi-Transparent":"halbdurchsichtig","Opaque":"undurchsichtig","Font Size":"Schriftgröße","Text Edge Style":"Textkantenstil","None":"Nichts","Raised":"Erhöht","Depressed":"Erniedrigt","Uniform":"Gleichmäßig","Dropshadow":"Schlagschatten","Font Family":"Schriftart","Proportional Sans-Serif":"Proportionale Grotesk","Monospace Sans-Serif":"Nichtproportionale Grotesk","Proportional Serif":"Proportionale Serifen-Schrit","Monospace Serif":"Nichtproportionale Serifen-Schrift","Casual":"Gewöhnlich","Script":"Schreibschrift","Small Caps":"Kapitälchen","Reset":"Zurücksetzen","restore all settings to the default values":"Alle Einstellungen auf ihre Standardwerte zurücksetzen","Done":"Fertig","Caption Settings Dialog":"Dialogfenster für Einstellungen für Untertitel für Gehörlose und Schwerhörige","Beginning of dialog window. Escape will cancel and close the window.":"Anfang des Dialogfensters. Mit der Escape-Taste wird das Fenster ohne Speichern geschlossen.","End of dialog window.":"Ende des Dialogfensters.","{1} is loading.":"{1} lädt.","Quality":"Qualität","Auto":"Automatisch","Speed":"Geschwindigkeit","Subtitles/CC":"Untertitel","peers":"Peers","Go to the video page":"Zur Video-Seite gehen","Settings":"Einstellungen","Uses P2P, others may know you are watching this video.":"Nutzt Peer-to-Peer-Technologie, daher könnten andere wissen, dass du dieses Video ansiehst.","Copy the video URL":"Video-URL kopieren","Copy the video URL at the current time":"Video-URL an dieser Stelle kopieren","Copy embed code":"Einbettungscode kopieren"} \ No newline at end of file +{"Audio Player":"Audio-Player","Video Player":"Video-Player","Play":"Wiedergabe","Pause":"Wiedergabe pausieren","Replay":"Nochmal","Current Time":"Aktuelle Zeit","Duration":"Länge","Remaining Time":"Verbleibende Zeit","Stream Type":"Streamtyp","LIVE":"Live","Loaded":"Geladen","Progress":"Fortschritt","Progress Bar":"Fortschrittsanzeige","progress bar timing: currentTime={1} duration={2}":"{1} von {2}","Fullscreen":"Vollbild","Non-Fullscreen":"Vollbild beenden","Mute":"Ton aus","Unmute":"Ton an","Playback Rate":"Wiedergabegeschwindigkeit","Subtitles":"Untertitel","subtitles off":"Untertitel aus","Captions":"Untertitel für Gehörlose und Schwerhörige","captions off":"Untertitel für Gehörlose und Schwerhörige aus","Chapters":"Kapitel","Descriptions":"Beschreibungen","descriptions off":"Beschreibungen aus","Audio Track":"Tonspur","Volume Level":"Lautstärke","You aborted the media playback":"Du hast die Medienwiedergabe abgebrochen.","A network error caused the media download to fail part-way.":"Ein Netzwerkfehler hat das Herunterladen des Videos teilweise verhindert.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Es ist ein Fehler beim Laden aufgetreten. Das kann an einer fehlenden Netzwerk-Verbindung liegen oder daran, dass das Format nicht unterstützt wird.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Die Medienwiedergabe wurde abgebrochen, weil die erhaltenen Daten entweder fehlerhaft sind vom aktuellen Browser nicht unterstützt werden.","No compatible source was found for this media.":"Es konnte keine kompatible Quelle gefunden werden.","The media is encrypted and we do not have the keys to decrypt it.":"Die Daten sind verschlüsselt und es liegen keine Schlüssel dafür vor.","Play Video":"Video abspielen","Close":"Schließen","Close Modal Dialog":"Dialogfenster schließen","Modal Window":"Dialogfenster","This is a modal window":"Dies ist ein Dialogfenster.","This modal can be closed by pressing the Escape key or activating the close button.":"Dieses Dialogfenster kann geschlossen werden, indem man die Escape-Taste drückt oder auf die Schaltfläche zum Schließen des Fenster klickt.",", opens captions settings dialog":", öffnet die Einstellungen für Untertitel für Gehörlose und Schwerhörige",", opens subtitles settings dialog":", öffnet die Einstellungen für Untertitel",", opens descriptions settings dialog":", öffnet die Einstellungen für Beschreibungen",", selected":", ausgewählt","captions settings":"Einstellungen für Untertitel für Gehörlose und Schwerhörige","subtitles settings":"Einstellungen für Untertitel","descriptions settings":"Einstellungen für Beschreibungen","Text":"Text","White":"Weiß","Black":"Schwarz","Red":"Rot","Green":"Grün","Blue":"Blau","Yellow":"Gelb","Magenta":"Magenta","Cyan":"Cyan","Background":"Hintergrund","Window":"Fenster","Transparent":"durchsichtig","Semi-Transparent":"halbdurchsichtig","Opaque":"undurchsichtig","Font Size":"Schriftgröße","Text Edge Style":"Textkantenstil","None":"Nichts","Raised":"Erhöht","Depressed":"Erniedrigt","Uniform":"Gleichmäßig","Dropshadow":"Schlagschatten","Font Family":"Schriftart","Proportional Sans-Serif":"Proportionale Grotesk","Monospace Sans-Serif":"Nichtproportionale Grotesk","Proportional Serif":"Proportionale Serifen-Schrit","Monospace Serif":"Nichtproportionale Serifen-Schrift","Casual":"Gewöhnlich","Script":"Schreibschrift","Small Caps":"Kapitälchen","Reset":"Zurücksetzen","restore all settings to the default values":"Alle Einstellungen auf ihre Standardwerte zurücksetzen","Done":"Fertig","Caption Settings Dialog":"Dialogfenster für Einstellungen für Untertitel für Gehörlose und Schwerhörige","Beginning of dialog window. Escape will cancel and close the window.":"Anfang des Dialogfensters. Mit der Escape-Taste wird das Fenster ohne Speichern geschlossen.","End of dialog window.":"Ende des Dialogfensters.","{1} is loading.":"{1} lädt.","Quality":"Qualität","Auto":"Automatisch","Speed":"Geschwindigkeit","Subtitles/CC":"Untertitel","peers":"Peers","Go to the video page":"Zur Video-Seite gehen","Settings":"Einstellungen","Uses P2P, others may know you are watching this video.":"Nutzt Peer-to-Peer-Technologie, daher könnten andere wissen, dass du dieses Video ansiehst.","Copy the video URL":"Video-URL kopieren","Copy the video URL at the current time":"Video-URL an dieser Stelle kopieren","Copy embed code":"Einbettungscode kopieren"} \ No newline at end of file diff --git a/client/src/locale/target/player_sv_SE.json b/client/src/locale/target/player_sv_SE.json index 5bf4cb63a..b7582e244 100644 --- a/client/src/locale/target/player_sv_SE.json +++ b/client/src/locale/target/player_sv_SE.json @@ -1 +1 @@ -{"Audio Player":"Ljudspelare","Video Player":"Videospelare","Play":"Spela upp","Pause":"Pausa","Replay":"Spela igen","Current Time":"Nuvarande tid","Duration":"Längd","Remaining Time":"Kvarvarande tid","Stream Type":"Strömtyp","LIVE":"DIREKT","Loaded":"Laddad","Progress":"Förlopp","Progress Bar":"Förloppsindikator","progress bar timing: currentTime={1} duration={2}":"{1} av {2}","Fullscreen":"Fullskärm","Non-Fullscreen":"Inte fullskärm","Mute":"Stäng av ljudet","Unmute":"Sätt på ljudet","Playback Rate":"Uppspelningshastighet","Subtitles":"Undertexter","subtitles off":"undertexter av","Captions":"Textning","captions off":"textning av","Chapters":"Kapitel","Descriptions":"Beskrivningar","descriptions off":"beskrivningar av","Audio Track":"Ljudspår","Volume Level":"Volymnivå","You aborted the media playback":"Du avbröt uppspelningen","A network error caused the media download to fail part-way.":"Ett nätverksfel gjorde att nedladdningen av mediafilen misslyckades","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Mediet kunde inte laddas, antingen på grund av ett server- eller nätverksfel eller eftersom formatet inte stöds.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Uppspelningen avbröts på grund av ett korruptionsfel eller eftersom mediet använde funktioner din webbläsare inte stöder.","No compatible source was found for this media.":"Ingen kompatibel källa hittades för detta media.","The media is encrypted and we do not have the keys to decrypt it.":"Mediet är krypterat och vi har inte nycklarna för att dekryptera.","Play Video":"Spela upp video","Close":"Stäng","Close Modal Dialog":"Stäng dialogruta","Modal Window":"Dialogrutan","This is a modal window":"Detta är en dialogruta","This modal can be closed by pressing the Escape key or activating the close button.":"Dialogrutan kan stängas genom att trycka Escape eller klicka på stäng-knappen.",", opens captions settings dialog":", öppnar dialogrutan för inställning av textning",", opens subtitles settings dialog":", öppnar dialogrutan för inställning av undertexter",", opens descriptions settings dialog":", öppnar dialogrutan för inställning av beskrivningar",", selected":", vald","captions settings":"textningsinställningar","subtitles settings":"inställningar för undertexter","descriptions settings":"inställningar för beskrivning","Text":"Text","White":"Vit","Black":"Svart","Red":"Röd","Green":"Grön","Blue":"Blå","Yellow":"Gul","Magenta":"Magenta","Cyan":"Cyan","Background":"Bakgrund","Window":"Fönster","Transparent":"Genomskinlig","Semi-Transparent":"Halvgenomskinlig","Opaque":"Ogenomskinlig","Font Size":"Textstorlek","Text Edge Style":"Textkanter","None":"Ingen","Raised":"Upphöjd","Depressed":"Nedsänkt","Uniform":"Enhetlig","Dropshadow":"Skuggning","Font Family":"Typsnitt","Proportional Sans-Serif":"Proportionerlig sans-serif","Monospace Sans-Serif":"Monospace sans-serif","Proportional Serif":"Proportionerlig serif","Monospace Serif":"Monospace serif","Casual":"Ledig stil","Script":"Skript","Small Caps":"Små kapitäler","Reset":"Återställ","restore all settings to the default values":"återställ alla inställningar till sina standardvärden","Done":"Klar","Caption Settings Dialog":"Dialogruta för textningsinställningar","Beginning of dialog window. Escape will cancel and close the window.":"Början av dialogruta. Tryck Escape för att avbryta och stänga fönstret.","End of dialog window.":"Slut på dialogruta.","{1} is loading.":"{1} laddar.","Quality":"Kvalitet","Auto":"Auto","Speed":"Hastighet","Subtitles/CC":"Undertext","peers":"peers","Go to the video page":"Gå till videosidan","Settings":"Inställningar","Uses P2P, others may know you are watching this video.":"Använder P2P, andra kan veta att du tittar på den här videon.","Copy the video URL":"Kopiera videons URL","Copy the video URL at the current time":"Kopiera videons URL vid den här tidpunkten","Copy embed code":"Kopiera inbäddningskod"} \ No newline at end of file +{"Audio Player":"Ljudspelare","Video Player":"Videospelare","Play":"Spela","Pause":"Pausa","Replay":"Spela igen","Current Time":"Aktuell tid","Duration":"Total tid","Remaining Time":"Återstående tid","Stream Type":"Strömningstyp","LIVE":"DIREKT","Loaded":"Laddad","Progress":"Förlopp","Progress Bar":"Förloppsindikator","progress bar timing: currentTime={1} duration={2}":"{1} av {2}","Fullscreen":"Fullskärm","Non-Fullscreen":"Inte fullskärm","Mute":"Ljud av","Unmute":"Ljud på","Playback Rate":"Uppspelningshastighet","Subtitles":"Undertexter på","subtitles off":"Undertexter av","Captions":"Textning","captions off":"Textning av","Chapters":"Kapitel","Descriptions":"Beskrivningar på","descriptions off":"Beskrivningar av","Audio Track":"Ljudspår","Volume Level":"Volymnivå","You aborted the media playback":"Du avbröt uppspelningen.","A network error caused the media download to fail part-way.":"Ett nätverksfel gjorde att nedladdningen av videon misslyckades.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Det gick inte att ladda videon, antingen på grund av ett server- eller nätverksfel, eller för att formatet inte stöds.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Uppspelningen avbröts på grund av att videon är skadad eller för att videon använder funktioner som din webbläsare inte stöder.","No compatible source was found for this media.":"Det gick inte att hitta någon kompatibel källa för videon.","The media is encrypted and we do not have the keys to decrypt it.":"Videon är krypterad och vi har inte dekrypteringsnycklarna.","Play Video":"Spela upp video","Close":"Stäng","Close Modal Dialog":"Stäng dialogruta","Modal Window":"Dialogrutan","This is a modal window":"Detta är en dialogruta","This modal can be closed by pressing the Escape key or activating the close button.":"Dialogrutan kan stängas genom att trycka Escape eller klicka på stäng-knappen.",", opens captions settings dialog":", öppnar dialogrutan för inställning av textning",", opens subtitles settings dialog":", öppnar dialogrutan för inställning av undertexter",", opens descriptions settings dialog":", öppnar dialogrutan för inställning av beskrivningar",", selected":", vald","captions settings":"textningsinställningar","subtitles settings":"inställningar för undertexter","descriptions settings":"inställningar för beskrivning","Text":"Text","White":"Vit","Black":"Svart","Red":"Röd","Green":"Grön","Blue":"Blå","Yellow":"Gul","Magenta":"Magenta","Cyan":"Cyan","Background":"Bakgrund","Window":"Fönster","Transparent":"Genomskinlig","Semi-Transparent":"Halvgenomskinlig","Opaque":"Ogenomskinlig","Font Size":"Textstorlek","Text Edge Style":"Textkanter","None":"Ingen","Raised":"Upphöjd","Depressed":"Nedsänkt","Uniform":"Enhetlig","Dropshadow":"Skuggning","Font Family":"Typsnitt","Proportional Sans-Serif":"Proportionerlig sans-serif","Monospace Sans-Serif":"Monospace sans-serif","Proportional Serif":"Proportionerlig serif","Monospace Serif":"Monospace serif","Casual":"Ledig stil","Script":"Skript","Small Caps":"Små kapitäler","Reset":"Återställ","restore all settings to the default values":"återställ alla inställningar till sina standardvärden","Done":"Klar","Caption Settings Dialog":"Dialogruta för textningsinställningar","Beginning of dialog window. Escape will cancel and close the window.":"Början av dialogruta. Tryck Escape för att avbryta och stänga fönstret.","End of dialog window.":"Slut på dialogruta.","{1} is loading.":"{1} laddar.","Quality":"Kvalitet","Auto":"Auto","Speed":"Hastighet","Subtitles/CC":"Undertext","peers":"peers","Go to the video page":"Gå till videosidan","Settings":"Inställningar","Uses P2P, others may know you are watching this video.":"Använder P2P, andra kan veta att du tittar på den här videon.","Copy the video URL":"Kopiera videons URL","Copy the video URL at the current time":"Kopiera videons URL vid den här tidpunkten","Copy embed code":"Kopiera inbäddningskod"} \ No newline at end of file diff --git a/client/src/locale/target/player_zh_Hans_CN.json b/client/src/locale/target/player_zh_Hans_CN.json index b7ed005d8..4d7fcf047 100644 --- a/client/src/locale/target/player_zh_Hans_CN.json +++ b/client/src/locale/target/player_zh_Hans_CN.json @@ -1 +1 @@ -{"Audio Player":"音乐播放器","Video Player":"视频播放器","Play":"播放","Pause":"暂停","Replay":"重放","Current Time":"当前时间","Duration":"时长","Remaining Time":"剩余时间","Stream Type":"媒体流类型","LIVE":"直播","Loaded":"加载完毕","Progress":"进度","Progress Bar":"进度条","progress bar timing: currentTime={1} duration={2}":"已加载 {1},总时长 {2}","Fullscreen":"全屏","Non-Fullscreen":"退出全屏","Mute":"静音","Unmute":"取消静音","Playback Rate":"播放速度","Subtitles":"字幕","subtitles off":"关闭字幕","Captions":"内嵌字幕","captions off":"关闭内嵌字幕","Chapters":"节目段落","Descriptions":"描述","descriptions off":"关闭描述","Audio Track":"音轨","Volume Level":"音量","You aborted the media playback":"视频播放被终止","A network error caused the media download to fail part-way.":"网络错误导致视频下载中途失败。","The media could not be loaded, either because the server or network failed or because the format is not supported.":"视频因格式不支持或者服务器或网络的问题无法加载。","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"由于视频文件损坏或是该视频使用了你的浏览器不支持的功能,播放终止。","No compatible source was found for this media.":"无法找到此视频兼容的源。","The media is encrypted and we do not have the keys to decrypt it.":"视频已加密,无法解密。","Play Video":"播放视频","Close":"关闭","Close Modal Dialog":"关闭弹窗","Modal Window":"弹窗","This is a modal window":"这是一个弹窗","This modal can be closed by pressing the Escape key or activating the close button.":"可以按 ESC 按键或启用关闭按钮来关闭此弹窗。",", opens captions settings dialog":",开启标题设置弹窗",", opens subtitles settings dialog":",开启字幕设置弹窗",", opens descriptions settings dialog":",开启描述设置弹窗",", selected":",选择","captions settings":"内嵌字幕设置","subtitles settings":"字幕设置","descriptions settings":"描述设置","Text":"文字","White":"白","Black":"黑","Red":"红","Green":"绿","Blue":"蓝","Yellow":"黄","Magenta":"紫红","Cyan":"青","Background":"背景","Window":"视窗","Transparent":"透明","Semi-Transparent":"半透明","Opaque":"不透明","Font Size":"字体尺寸","Text Edge Style":"字体边缘样式","None":"无","Raised":"浮雕","Depressed":"压低","Uniform":"均匀","Dropshadow":"下阴影","Font Family":"字体库","Proportional Sans-Serif":"比例无细体","Monospace Sans-Serif":"单间隔无细体","Proportional Serif":"比例细体","Monospace Serif":"单间隔细体","Casual":"舒适","Script":"手写体","Small Caps":"小型大写字体","Reset":"重启","restore all settings to the default values":"恢复全部设置至预设值","Done":"完成","Caption Settings Dialog":"字幕设置弹窗","Beginning of dialog window. Escape will cancel and close the window.":"开始对话弹窗。离开会取消并关闭弹窗。","End of dialog window.":"结束对话弹窗","{1} is loading.":"正在加载 {1}。","Quality":"画质","Auto":"自动","Speed":"速度","Subtitles/CC":"字幕","peers":" 位用户","Go to the video page":"进入视频页面","Settings":"设置","Uses P2P, others may know you are watching this video.":"使用 P2P 时,其他人将能够知道您正在观看此视频。","Copy the video URL":"复制视频网址","Copy the video URL at the current time":"复制当前时间的视频网址","Copy embed code":"复制嵌入代码"} \ No newline at end of file +{"Audio Player":"音乐播放器","Video Player":"视频播放器","Play":"播放","Pause":"暂停","Replay":"重放","Current Time":"当前时间","Duration":"时长","Remaining Time":"剩余时间","Stream Type":"媒体流类型","LIVE":"直播","Loaded":"加载完毕","Progress":"进度","Progress Bar":"进度条","progress bar timing: currentTime={1} duration={2}":"已加载 {1},总时长 {2}","Fullscreen":"全屏","Non-Fullscreen":"退出全屏","Mute":"静音","Unmute":"取消静音","Playback Rate":"播放速度","Subtitles":"字幕","subtitles off":"关闭字幕","Captions":"内嵌字幕","captions off":"关闭内嵌字幕","Chapters":"节目段落","Descriptions":"描述","descriptions off":"关闭描述","Audio Track":"音轨","Volume Level":"音量","You aborted the media playback":"视频播放被终止","A network error caused the media download to fail part-way.":"网络错误导致视频下载中途失败。","The media could not be loaded, either because the server or network failed or because the format is not supported.":"视频因格式不支持或者服务器或网络的问题无法加载。","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"由于视频文件损坏或是该视频使用了你的浏览器不支持的功能,播放终止。","No compatible source was found for this media.":"无法找到此视频兼容的源。","The media is encrypted and we do not have the keys to decrypt it.":"视频已加密,无法解密。","Play Video":"播放视频","Close":"关闭","Close Modal Dialog":"关闭弹窗","Modal Window":"弹窗","This is a modal window":"这是一个弹窗","This modal can be closed by pressing the Escape key or activating the close button.":"可以按 ESC 按键或启用关闭按钮来关闭此弹窗。",", opens captions settings dialog":",开启标题设置弹窗",", opens subtitles settings dialog":",开启字幕设置弹窗",", opens descriptions settings dialog":",开启描述设置弹窗",", selected":",选择","captions settings":"内嵌字幕设置","subtitles settings":"字幕设置","descriptions settings":"描述设置","Text":"文字","White":"白","Black":"黑","Red":"红","Green":"绿","Blue":"蓝","Yellow":"黄","Magenta":"紫红","Cyan":"青","Background":"背景","Window":"视窗","Transparent":"透明","Semi-Transparent":"半透明","Opaque":"不透明","Font Size":"字体尺寸","Text Edge Style":"字体边缘样式","None":"无","Raised":"浮雕","Depressed":"压低","Uniform":"均匀","Dropshadow":"下阴影","Font Family":"字体库","Proportional Sans-Serif":"比例无细体","Monospace Sans-Serif":"单间隔无细体","Proportional Serif":"比例细体","Monospace Serif":"单间隔细体","Casual":"舒适","Script":"手写体","Small Caps":"小型大写字体","Reset":"重启","restore all settings to the default values":"恢复全部设置至预设值","Done":"完成","Caption Settings Dialog":"字幕设置弹窗","Beginning of dialog window. Escape will cancel and close the window.":"开始对话弹窗。离开会取消并关闭弹窗。","End of dialog window.":"结束对话弹窗","{1} is loading.":"正在加载 {1}。","Quality":"画质","Auto":"自动","Speed":"速度","Subtitles/CC":"字幕","peers":"个来源","Go to the video page":"进入视频页面","Settings":"设置","Uses P2P, others may know you are watching this video.":"使用 P2P 时,其他人将能够知道您正在观看此视频。","Copy the video URL":"复制视频网址","Copy the video URL at the current time":"复制当前时间的视频网址","Copy embed code":"复制嵌入代码"} \ No newline at end of file diff --git a/client/src/locale/target/server_ar_001.xml b/client/src/locale/target/server_ar_001.xml index 83ceaae51..ad8a23a32 100644 --- a/client/src/locale/target/server_ar_001.xml +++ b/client/src/locale/target/server_ar_001.xml @@ -43,10 +43,6 @@ Entertainment ترفيه - - News - أخبار - How To كيف diff --git a/client/src/locale/target/server_ca_ES.json b/client/src/locale/target/server_ca_ES.json index 95994e618..f20f0fa61 100644 --- a/client/src/locale/target/server_ca_ES.json +++ b/client/src/locale/target/server_ca_ES.json @@ -1 +1 @@ -{"Music":"Música","Films":"Pel·lícules","Vehicles":"Vehicles","Art":"Art","Sports":"Esports","Travels":"Viatges","Gaming":"Jocs","People":"Gent","Comedy":"Comèdia","Entertainment":"Entreteniment","News":"Notícies","How To":"Com fer","Education":"Educació","Activism":"Activisme","Science & Technology":"Ciència i tecnologia","Animals":"Animals","Kids":"Nens","Food":"Aliments","Attribution":"Atribució","Attribution - Share Alike":"Atribució: Comparteix-ho per igual","Attribution - No Derivatives":"Atribució - Sense Derivats","Attribution - Non Commercial":"Atribució: No Comercial","Attribution - Non Commercial - Share Alike":"Atribució - No Comercial - Compartir per igual","Attribution - Non Commercial - No Derivatives":"Attribution - No Comercial - Sense Derivats","Public Domain Dedication":"Dedicació de Domini Públic","Public":"Públic","Unlisted":"No llistat","Private":"Privat","Misc":"Miscel·lània","Unknown":"Desconegut","Afar":"Àfar","Abkhazian":"Abkhaz","Afrikaans":"Afrikaans","Akan":"Àkan","Amharic":"Amhàric","Arabic":"Àrab","Aragonese":"Aragonès","American Sign Language":"Llengua de Signes Nord-Americana","Assamese":"Assamès","Avaric":"Àvar","Aymara":"Aimara","Azerbaijani":"Àzeri","Bashkir":"Baixkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalí","British Sign Language":"Llengua de Signes Britànica","Bislama":"Bislama","Tibetan":"Tibetà","Bosnian":"Bosnià","Breton":"Bretó","Bulgarian":"Búlgar","Brazilian Sign Language":"Llengua de Signes Brasiler","Catalan":"Català","Czech":"Txec","Chamorro":"Chamorro","Chechen":"Txetxè","Chuvash":"Txuvaix","Cornish":"Korni","Corsican":"Cors","Cree":"Cree","Czech Sign Language":"Llengua de Signes Txec","Chinese Sign Language":"Llengua de Signes Xinesa","Welsh":"Gal·lès","Danish":"Danès","German":"Alemany","Dhivehi":"Divehi","Danish Sign Language":"Llengua de Signes Danesa","Dzongkha":"Dzongka","Modern Greek (1453-)":"Grec modern (1453-)","English":"Anglès","Estonian":"Estonià","Basque":"Basc","Ewe":"Ewe","Faroese":"Feroès","Persian":"Persa","Fijian":"Fijià","Finnish":"Finlandès","French":"Francès","Western Frisian":"Frisó occidental","French Sign Language":"Llengua de Signes Francesa","Fulah":"Ful","Scottish Gaelic":"Gaèlic Escocès","Irish":"Irlandès","Galician":"Gallec","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Llengua de Signes Alemanya","Gujarati":"Gujarati","Haitian":"Haitià","Hausa":"Haussa","Serbo-Croatian":"Serbocroat","Hebrew":"Hebreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Hongarès","Armenian":"Armeni","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonesi","Inupiaq":"Inupiaq","Icelandic":"Islandès","Italian":"Italià","Javanese":"Javanès","Japanese":"Japonès","Japanese Sign Language":"Llengua de Signes Japonesa","Kalaallisut":"Kalaallisut","Kannada":"Kannada","Kashmiri":"Caixmiri","Georgian":"Georgià","Kanuri":"Kanuri","Kazakh":"Kazakh","Khmer":"Khmer","Kikuyu":"Kikuiu","Kinyarwanda":"Ruandès","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Koongo","Korean":"Coreà","Kuanyama":"Kwanyama","Kurdish":"Kurd","Lao":"Laosià","Latvian":"Letó","Limburgan":"Limburgan","Lingala":"Lingala","Lithuanian":"Lituà","Luxembourgish":"Luxemburguès","Luba-Katanga":"Luba","Ganda":"Ganda","Marshallese":"Marshallès","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedoni","Malagasy":"Malgache","Maltese":"Maltès","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malai (macro llengua)","Burmese":"Birmà","Nauru":"Nauruà","Navajo":"Navaho","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalès (macro llengua)","Dutch":"Holandès","Norwegian Nynorsk":"Noruec Nynorsk","Norwegian Bokmål":"Noruec Bokmål","Norwegian":"Noruec","Nyanja":"Nyanga","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macro llengua)","Oromo":"Oromo","Ossetian":"Osset","Panjabi":"Panjabi","Pakistan Sign Language":"Llengua de Signes de Pakistan","Polish":"Polonès","Portuguese":"Portuguès","Pushto":"Paixtu","Quechua":"Quítxua","Romansh":"Romanx","Romanian":"Romanès","Russian Sign Language":"Llengua de Signes Russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Llengua de Signes de l'Aràbia Saudita","South African Sign Language":"Llengua de Signes Sud-Africana","Sinhala":"Singalès","Slovak":"Eslovac","Slovenian":"Eslovè","Northern Sami":"Sami del Nord","Samoan":"Samoà","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho del Sud","Spanish":"Espanyol","Albanian":"Albanès","Sardinian":"Sard","Serbian":"Serbi","Swati":"Swati","Sundanese":"Sundanès","Swahili (macrolanguage)":"Suahili (macro llengua)","Swedish":"Suec","Swedish Sign Language":"Llengua de Signes Sueca","Tahitian":"Tahití","Tamil":"Tàmil","Tatar":"Tàtar","Telugu":"Telugu","Tajik":"Tadjik","Tagalog":"Tagàlog","Thai":"Tailandès","Tigrinya":"Tigrinya","Tonga (Tonga Islands)":"Tongalès (arxipèlag de Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turcman","Turkish":"Turc","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraïnès","Urdu":"Urdú","Uzbek":"Uzbek","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Való","Wolof":"Wòlof","Xhosa":"Xosa","Yiddish":"Jiddisch","Yoruba":"Ioruba","Zhuang":"Zhuang","Chinese":"Xinès","Zulu":"Zulu"} \ No newline at end of file +{"Music":"Música","Films":"Pel·lícules","Vehicles":"Vehicles","Art":"Art","Sports":"Esports","Travels":"Viatges","Gaming":"Jocs","People":"Gent","Comedy":"Comèdia","Entertainment":"Entreteniment","How To":"Com fer","Education":"Educació","Activism":"Activisme","Science & Technology":"Ciència i tecnologia","Animals":"Animals","Kids":"Nens","Food":"Aliments","Attribution":"Atribució","Attribution - Share Alike":"Atribució: Comparteix-ho per igual","Attribution - No Derivatives":"Atribució - Sense Derivats","Attribution - Non Commercial":"Atribució: No Comercial","Attribution - Non Commercial - Share Alike":"Atribució - No Comercial - Compartir per igual","Attribution - Non Commercial - No Derivatives":"Attribution - No Comercial - Sense Derivats","Public Domain Dedication":"Dedicació de Domini Públic","Public":"Públic","Unlisted":"No llistat","Private":"Privat","Misc":"Miscel·lània","Unknown":"Desconegut","Afar":"Àfar","Abkhazian":"Abkhaz","Afrikaans":"Afrikaans","Akan":"Àkan","Amharic":"Amhàric","Arabic":"Àrab","Aragonese":"Aragonès","American Sign Language":"Llengua de Signes Nord-Americana","Assamese":"Assamès","Avaric":"Àvar","Aymara":"Aimara","Azerbaijani":"Àzeri","Bashkir":"Baixkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalí","British Sign Language":"Llengua de Signes Britànica","Bislama":"Bislama","Tibetan":"Tibetà","Bosnian":"Bosnià","Breton":"Bretó","Bulgarian":"Búlgar","Brazilian Sign Language":"Llengua de Signes Brasiler","Catalan":"Català","Czech":"Txec","Chamorro":"Chamorro","Chechen":"Txetxè","Chuvash":"Txuvaix","Cornish":"Korni","Corsican":"Cors","Cree":"Cree","Czech Sign Language":"Llengua de Signes Txec","Chinese Sign Language":"Llengua de Signes Xinesa","Welsh":"Gal·lès","Danish":"Danès","German":"Alemany","Dhivehi":"Divehi","Danish Sign Language":"Llengua de Signes Danesa","Dzongkha":"Dzongka","Modern Greek (1453-)":"Grec modern (1453-)","English":"Anglès","Estonian":"Estonià","Basque":"Basc","Ewe":"Ewe","Faroese":"Feroès","Persian":"Persa","Fijian":"Fijià","Finnish":"Finlandès","French":"Francès","Western Frisian":"Frisó occidental","French Sign Language":"Llengua de Signes Francesa","Fulah":"Ful","Scottish Gaelic":"Gaèlic Escocès","Irish":"Irlandès","Galician":"Gallec","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Llengua de Signes Alemanya","Gujarati":"Gujarati","Haitian":"Haitià","Hausa":"Haussa","Serbo-Croatian":"Serbocroat","Hebrew":"Hebreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Hongarès","Armenian":"Armeni","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonesi","Inupiaq":"Inupiaq","Icelandic":"Islandès","Italian":"Italià","Javanese":"Javanès","Japanese":"Japonès","Japanese Sign Language":"Llengua de Signes Japonesa","Kalaallisut":"Kalaallisut","Kannada":"Kannada","Kashmiri":"Caixmiri","Georgian":"Georgià","Kanuri":"Kanuri","Kazakh":"Kazakh","Khmer":"Khmer","Kikuyu":"Kikuiu","Kinyarwanda":"Ruandès","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Koongo","Korean":"Coreà","Kuanyama":"Kwanyama","Kurdish":"Kurd","Lao":"Laosià","Latvian":"Letó","Limburgan":"Limburgan","Lingala":"Lingala","Lithuanian":"Lituà","Luxembourgish":"Luxemburguès","Luba-Katanga":"Luba","Ganda":"Ganda","Marshallese":"Marshallès","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedoni","Malagasy":"Malgache","Maltese":"Maltès","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malai (macro llengua)","Burmese":"Birmà","Nauru":"Nauruà","Navajo":"Navaho","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalès (macro llengua)","Dutch":"Holandès","Norwegian Nynorsk":"Noruec Nynorsk","Norwegian Bokmål":"Noruec Bokmål","Norwegian":"Noruec","Nyanja":"Nyanga","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macro llengua)","Oromo":"Oromo","Ossetian":"Osset","Panjabi":"Panjabi","Pakistan Sign Language":"Llengua de Signes de Pakistan","Polish":"Polonès","Portuguese":"Portuguès","Pushto":"Paixtu","Quechua":"Quítxua","Romansh":"Romanx","Romanian":"Romanès","Russian Sign Language":"Llengua de Signes Russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Llengua de Signes de l'Aràbia Saudita","South African Sign Language":"Llengua de Signes Sud-Africana","Sinhala":"Singalès","Slovak":"Eslovac","Slovenian":"Eslovè","Northern Sami":"Sami del Nord","Samoan":"Samoà","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho del Sud","Spanish":"Espanyol","Albanian":"Albanès","Sardinian":"Sard","Serbian":"Serbi","Swati":"Swati","Sundanese":"Sundanès","Swahili (macrolanguage)":"Suahili (macro llengua)","Swedish":"Suec","Swedish Sign Language":"Llengua de Signes Sueca","Tahitian":"Tahití","Tamil":"Tàmil","Tatar":"Tàtar","Telugu":"Telugu","Tajik":"Tadjik","Tagalog":"Tagàlog","Thai":"Tailandès","Tigrinya":"Tigrinya","Tonga (Tonga Islands)":"Tongalès (arxipèlag de Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turcman","Turkish":"Turc","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraïnès","Urdu":"Urdú","Uzbek":"Uzbek","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Való","Wolof":"Wòlof","Xhosa":"Xosa","Yiddish":"Jiddisch","Yoruba":"Ioruba","Zhuang":"Zhuang","Chinese":"Xinès","Zulu":"Zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_cs_CZ.json b/client/src/locale/target/server_cs_CZ.json index 593983c46..f78bf2815 100644 --- a/client/src/locale/target/server_cs_CZ.json +++ b/client/src/locale/target/server_cs_CZ.json @@ -1 +1 @@ -{"Music":"Hudba","Films":"Filmy","Vehicles":"Auta","Art":"Umění","Sports":"Sport","Travels":"Cestování","Gaming":"Hry","People":"Lidé","Comedy":"Komedie","Entertainment":"Zábava","News":"Zprávy","How To":"Jak na to","Education":"Výukové","Activism":"Aktivismus","Science & Technology":"Věda a technologie","Animals":"Zvířata","Kids":"Děti","Food":"Jídlo a vaření","Attribution":"Uveďte autora","Attribution - Share Alike":"Uveďte autora - Zachovejte licenci","Attribution - No Derivatives":"Uveďte autora - Nezpracovávejte","Attribution - Non Commercial":"Uveďte autora - Nešiřte dílo komerčně","Attribution - Non Commercial - Share Alike":"Uveďte autora - Nešiřte dílo komerčně - Zachovejte licenci","Attribution - Non Commercial - No Derivatives":"Uveďte autora - Nešiřte dílo komerčně - Nezpracovávejte","Public Domain Dedication":"Volné dílo","Public":"Veřejné","Unlisted":"Nezobrazeno","Private":"Soukromé","Misc":"Různé","Unknown":"Neznámé","Afar":"Afarština","Abkhazian":"Abcházština","Afrikaans":"Afrikánština","Akan":"Akanština","Amharic":"Amharština","Arabic":"Arabština","Aragonese":"Aragonština","American Sign Language":"Americká znaková řeč","Assamese":"Ásámština","Avaric":"Avarština","Kotava":"Kotava","Aymara":"Ajmarština","Azerbaijani":"Ázerbájdžánština","Bashkir":"Baškirština","Bambara":"Bambarština","Belarusian":"Běloruština","Bengali":"Bengálština","British Sign Language":"Britská znaková řeč","Bislama":"Bislamština","Tibetan":"Tibetština","Bosnian":"Bosenština","Breton":"Bretonština","Bulgarian":"Bulharština","Brazilian Sign Language":"Brazilská znaková řeč","Catalan":"Katalánština","Czech":"Čeština","Chamorro":"Chamorro","Chechen":"Čečenština","Chuvash":"Čuvaština","Cornish":"Kornština","Corsican":"Korsičtina","Cree":"Kríjština","Czech Sign Language":"Česká znaková řeč","Chinese Sign Language":"Čínská znaková řeč","Welsh":"Velština","Danish":"Dánština","German":"Němčina","Dhivehi":"Maledivština","Danish Sign Language":"Dánská znaková řeč","Dzongkha":"Dzongkä","Modern Greek (1453-)":"Moderní řečtina","English":"Angličtina","Esperanto":"Esperanto","Estonian":"Estonština","Basque":"Baskičtina","Ewe":"Eveština","Faroese":"Faerština","Persian":"Perština","Fijian":"Fidžijština","Finnish":"Finština","French":"Francouzština","Western Frisian":"Západofríština","French Sign Language":"Francouzská znaková řeč","Fulah":"Fulbština","Scottish Gaelic":"Skotská gaelština","Irish":"Irština","Galician":"Galicijština","Manx":"Manština","Guarani":"Guaranština","German Sign Language":"Německá znaková řeč","Gujarati":"Gudžarátština","Haitian":"Haitská kreolština","Hausa":"Hauština","Serbo-Croatian":"Srcbochorvatšinta","Hebrew":"Hebrejština","Herero":"Herero","Hindi":"Hindština","Hiri Motu":"Hiri Motu","Croatian":"Chorvatština","Hungarian":"Maďarština","Armenian":"Arménština","Igbo":"Igboština","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutština","Indonesian":"Indonéština","Inupiaq":"Inupiaq","Icelandic":"Islandština","Italian":"Italština","Javanese":"Javánština","Lojban":"Lojban","Japanese":"Japonština","Japanese Sign Language":"Japonská znaková řeč","Kalaallisut":"Grónština","Kannada":"Kannadština","Kashmiri":"Kašmírština","Georgian":"Gruzínština","Kanuri":"Kanurijština","Kazakh":"Kazaština","Khmer":"Khmerština","Kikuyu":"Kikujština","Kinyarwanda":"Rwandština","Kirghiz":"Kyrgyzština","Komi":"Komi","Kongo":"Konžština","Korean":"Korejština","Kuanyama":"Kuanyama","Kurdish":"Kurdština","Lao":"Laoština","Latvian":"Lotyština","Limburgan":"Limburština","Lingala":"Ngalština","Lithuanian":"Litevština","Luxembourgish":"Lucemburština","Luba-Katanga":"Luba-Katanga","Ganda":"Gandština","Marshallese":"Maršálština","Malayalam":"Malajálamština","Marathi":"Maráthština","Macedonian":"Makedonština","Malagasy":"Malgaština","Maltese":"Maltština","Mongolian":"Mongolština","Maori":"Maorština","Malay (macrolanguage)":"Malajština","Burmese":"Barmština","Nauru":"Naurština","Navajo":"Navažština","South Ndebele":"Jižní ndebelština","North Ndebele":"Severní ndebelština","Ndonga":"Ndondština","Nepali (macrolanguage)":"Nepálština","Dutch":"Dánština","Norwegian Nynorsk":"Norština Nynorsk","Norwegian Bokmål":"Norština Bokmål","Norwegian":"Norština ","Nyanja":"Čičevština","Occitan":"Okcitánština","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Urijština","Oromo":"Oromština","Ossetian":"Osetština","Panjabi":"Paňdžábština","Pakistan Sign Language":"Pakistánská znaková řeč","Polish":"Polština","Portuguese":"Portugalština","Pushto":"Paštština","Quechua":"Kečuánština","Romansh":"Rétorománština","Romanian":"Rumunština","Russian Sign Language":"Ruská znaková řeč","Rundi":"Kirundi","Russian":"Ruština","Sango":"Sango","Saudi Arabian Sign Language":"Saudská arabská znaková řeč","South African Sign Language":"Jihoafrická znaková řeč","Sinhala":"Sinhálština","Slovak":"Slovenština","Slovenian":"Slovinština","Northern Sami":"Severní sámština","Samoan":"Samojština","Shona":"Shona","Sindhi":"Sindhština","Somali":"Somálština","Southern Sotho":"Jižní sotština","Spanish":"Španělština","Albanian":"Albánština","Sardinian":"Sardínština","Serbian":"Srbština","Swati":"Swati","Sundanese":"Sundština","Swahili (macrolanguage)":"Svahilština","Swedish":"Švédština","Swedish Sign Language":"Švédská znaková řeč","Tahitian":"Tahitština","Tamil":"Tamilština","Tatar":"Tatarština","Telugu":"Telugština","Tajik":"Tádžičtina","Tagalog":"Tagalog","Thai":"Thajština","Tigrinya":"Tigrinya","Klingon":"Klingonština","Tonga (Tonga Islands)":"Tongánština","Tswana":"Setswanština","Tsonga":"Tsongština","Turkmen":"Turkmenština","Turkish":"Turečtina","Twi":"Twi","Uighur":"Ujgurština","Ukrainian":"Ukrajinština","Urdu":"Urdština","Uzbek":"Uzbečtina","Venda":"Vendština","Vietnamese":"Vietnamština","Walloon":"Valonština","Wolof":"Wolof ","Xhosa":"Xhoština","Yiddish":"Jidiš","Yoruba":"Jorubština","Zhuang":"Čuangština","Chinese":"Čínština","Zulu":"Zuluština"} \ No newline at end of file +{"Music":"Hudba","Films":"Filmy","Vehicles":"Auta","Art":"Umění","Sports":"Sport","Travels":"Cestování","Gaming":"Hry","People":"Lidé","Comedy":"Komedie","Entertainment":"Zábava","How To":"Jak na to","Education":"Výukové","Activism":"Aktivismus","Science & Technology":"Věda a technologie","Animals":"Zvířata","Kids":"Děti","Food":"Jídlo a vaření","Attribution":"Uveďte autora","Attribution - Share Alike":"Uveďte autora - Zachovejte licenci","Attribution - No Derivatives":"Uveďte autora - Nezpracovávejte","Attribution - Non Commercial":"Uveďte autora - Nešiřte dílo komerčně","Attribution - Non Commercial - Share Alike":"Uveďte autora - Nešiřte dílo komerčně - Zachovejte licenci","Attribution - Non Commercial - No Derivatives":"Uveďte autora - Nešiřte dílo komerčně - Nezpracovávejte","Public Domain Dedication":"Volné dílo","Public":"Veřejné","Unlisted":"Nezobrazeno","Private":"Soukromé","Misc":"Různé","Unknown":"Neznámé","Afar":"Afarština","Abkhazian":"Abcházština","Afrikaans":"Afrikánština","Akan":"Akanština","Amharic":"Amharština","Arabic":"Arabština","Aragonese":"Aragonština","American Sign Language":"Americká znaková řeč","Assamese":"Ásámština","Avaric":"Avarština","Kotava":"Kotava","Aymara":"Ajmarština","Azerbaijani":"Ázerbájdžánština","Bashkir":"Baškirština","Bambara":"Bambarština","Belarusian":"Běloruština","Bengali":"Bengálština","British Sign Language":"Britská znaková řeč","Bislama":"Bislamština","Tibetan":"Tibetština","Bosnian":"Bosenština","Breton":"Bretonština","Bulgarian":"Bulharština","Brazilian Sign Language":"Brazilská znaková řeč","Catalan":"Katalánština","Czech":"Čeština","Chamorro":"Chamorro","Chechen":"Čečenština","Chuvash":"Čuvaština","Cornish":"Kornština","Corsican":"Korsičtina","Cree":"Kríjština","Czech Sign Language":"Česká znaková řeč","Chinese Sign Language":"Čínská znaková řeč","Welsh":"Velština","Danish":"Dánština","German":"Němčina","Dhivehi":"Maledivština","Danish Sign Language":"Dánská znaková řeč","Dzongkha":"Dzongkä","Modern Greek (1453-)":"Moderní řečtina","English":"Angličtina","Esperanto":"Esperanto","Estonian":"Estonština","Basque":"Baskičtina","Ewe":"Eveština","Faroese":"Faerština","Persian":"Perština","Fijian":"Fidžijština","Finnish":"Finština","French":"Francouzština","Western Frisian":"Západofríština","French Sign Language":"Francouzská znaková řeč","Fulah":"Fulbština","Scottish Gaelic":"Skotská gaelština","Irish":"Irština","Galician":"Galicijština","Manx":"Manština","Guarani":"Guaranština","German Sign Language":"Německá znaková řeč","Gujarati":"Gudžarátština","Haitian":"Haitská kreolština","Hausa":"Hauština","Serbo-Croatian":"Srcbochorvatšinta","Hebrew":"Hebrejština","Herero":"Herero","Hindi":"Hindština","Hiri Motu":"Hiri Motu","Croatian":"Chorvatština","Hungarian":"Maďarština","Armenian":"Arménština","Igbo":"Igboština","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutština","Indonesian":"Indonéština","Inupiaq":"Inupiaq","Icelandic":"Islandština","Italian":"Italština","Javanese":"Javánština","Lojban":"Lojban","Japanese":"Japonština","Japanese Sign Language":"Japonská znaková řeč","Kalaallisut":"Grónština","Kannada":"Kannadština","Kashmiri":"Kašmírština","Georgian":"Gruzínština","Kanuri":"Kanurijština","Kazakh":"Kazaština","Khmer":"Khmerština","Kikuyu":"Kikujština","Kinyarwanda":"Rwandština","Kirghiz":"Kyrgyzština","Komi":"Komi","Kongo":"Konžština","Korean":"Korejština","Kuanyama":"Kuanyama","Kurdish":"Kurdština","Lao":"Laoština","Latvian":"Lotyština","Limburgan":"Limburština","Lingala":"Ngalština","Lithuanian":"Litevština","Luxembourgish":"Lucemburština","Luba-Katanga":"Luba-Katanga","Ganda":"Gandština","Marshallese":"Maršálština","Malayalam":"Malajálamština","Marathi":"Maráthština","Macedonian":"Makedonština","Malagasy":"Malgaština","Maltese":"Maltština","Mongolian":"Mongolština","Maori":"Maorština","Malay (macrolanguage)":"Malajština","Burmese":"Barmština","Nauru":"Naurština","Navajo":"Navažština","South Ndebele":"Jižní ndebelština","North Ndebele":"Severní ndebelština","Ndonga":"Ndondština","Nepali (macrolanguage)":"Nepálština","Dutch":"Dánština","Norwegian Nynorsk":"Norština Nynorsk","Norwegian Bokmål":"Norština Bokmål","Norwegian":"Norština ","Nyanja":"Čičevština","Occitan":"Okcitánština","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Urijština","Oromo":"Oromština","Ossetian":"Osetština","Panjabi":"Paňdžábština","Pakistan Sign Language":"Pakistánská znaková řeč","Polish":"Polština","Portuguese":"Portugalština","Pushto":"Paštština","Quechua":"Kečuánština","Romansh":"Rétorománština","Romanian":"Rumunština","Russian Sign Language":"Ruská znaková řeč","Rundi":"Kirundi","Russian":"Ruština","Sango":"Sango","Saudi Arabian Sign Language":"Saudská arabská znaková řeč","South African Sign Language":"Jihoafrická znaková řeč","Sinhala":"Sinhálština","Slovak":"Slovenština","Slovenian":"Slovinština","Northern Sami":"Severní sámština","Samoan":"Samojština","Shona":"Shona","Sindhi":"Sindhština","Somali":"Somálština","Southern Sotho":"Jižní sotština","Spanish":"Španělština","Albanian":"Albánština","Sardinian":"Sardínština","Serbian":"Srbština","Swati":"Swati","Sundanese":"Sundština","Swahili (macrolanguage)":"Svahilština","Swedish":"Švédština","Swedish Sign Language":"Švédská znaková řeč","Tahitian":"Tahitština","Tamil":"Tamilština","Tatar":"Tatarština","Telugu":"Telugština","Tajik":"Tádžičtina","Tagalog":"Tagalog","Thai":"Thajština","Tigrinya":"Tigrinya","Klingon":"Klingonština","Tonga (Tonga Islands)":"Tongánština","Tswana":"Setswanština","Tsonga":"Tsongština","Turkmen":"Turkmenština","Turkish":"Turečtina","Twi":"Twi","Uighur":"Ujgurština","Ukrainian":"Ukrajinština","Urdu":"Urdština","Uzbek":"Uzbečtina","Venda":"Vendština","Vietnamese":"Vietnamština","Walloon":"Valonština","Wolof":"Wolof ","Xhosa":"Xhoština","Yiddish":"Jidiš","Yoruba":"Jorubština","Zhuang":"Čuangština","Chinese":"Čínština","Zulu":"Zuluština"} \ No newline at end of file diff --git a/client/src/locale/target/server_de_DE.json b/client/src/locale/target/server_de_DE.json index 0f513cbd5..0f98ae65e 100644 --- a/client/src/locale/target/server_de_DE.json +++ b/client/src/locale/target/server_de_DE.json @@ -1 +1 @@ -{"Music":"Musik","Films":"Filme","Vehicles":"Fahrzeuge","Art":"Kunst","Sports":"Sport","Travels":"Reisen","Gaming":"Spiele","People":"Leute","Comedy":"Komödie","Entertainment":"Unterhaltung","News":"Nachrichten","How To":"How-to","Education":"Bildung","Activism":"Aktivismus","Science & Technology":"Wissenschaft und Technologie","Animals":"Tiere","Kids":"Kinder","Food":"Essen","Attribution":"Namensnennung","Attribution - Share Alike":"Namensnennung - Weitergabe unter gleichen Bedingungen","Attribution - No Derivatives":"Namensnennung - Keine Bearbeitung","Attribution - Non Commercial":"Namensnennung - nicht kommerziell","Attribution - Non Commercial - Share Alike":"Namensnennung - nicht kommerziell, Weitergabe unter gleichen Bedingungen","Attribution - Non Commercial - No Derivatives":"Namensnennung - nicht kommerziell, keine Bearbeitung","Public Domain Dedication":"In Gemeinfreiheit entlassen","Public":"Öffentlich","Unlisted":"Nicht gelistet","Private":"Privat","Published":"Veröffentlicht","To transcode":"Zu transkodieren","To import":"Zu importieren","Pending":"Ausstehend","Success":"Erfolg","Failed":"Fehlgeschlagen","Misc":"Verschiedenes","Unknown":"Unbekannt","Afar":"Afar","Abkhazian":"Abchasisch","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharisch","Arabic":"Arabisch","Aragonese":"Aragonesisch","American Sign Language":"Amerikanische Gebärdensprache","Assamese":"Assamesisch","Avaric":"Awarisch","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Aserbeidschanisch","Bashkir":"Baschkirisch","Bambara":"Bambara","Belarusian":"Weißrussisch","Bengali":"Bengali","British Sign Language":"Britische Gebärdensprache","Bislama":"Beach-la-mar","Tibetan":"Tibetisch","Bosnian":"Bosnisch","Breton":"Bretonisch","Bulgarian":"Bulgarisch","Brazilian Sign Language":"Brasilianische Gebärdensprache","Catalan":"Katalanisch","Czech":"Tschechisch","Chamorro":"Chamorro","Chechen":"Tschetschenisch","Chuvash":"Tschuwaschisch","Cornish":"Kornisch","Corsican":"Korsisch","Cree":"Cree","Czech Sign Language":"Tschechische Gebärdensprache","Chinese Sign Language":"Chinesiche Gebärdensprache","Welsh":"Kymrisch","Danish":"Dänisch","German":"Deutsch","Dhivehi":"Maledivisch","Danish Sign Language":"Dänische Gebärdensprache","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Neugriechisch","English":"Englisch","Esperanto":"Esperanto","Estonian":"Estnisch","Basque":"Baskisch","Ewe":"Ewe","Faroese":"Färöisch","Persian":"Persisch","Fijian":"Fidschi","Finnish":"Finnisch","French":"Französisch","Western Frisian":"Friesisch","French Sign Language":"Französiche Gebärdensprache","Fulah":"Ful","Scottish Gaelic":"Gälisch-Schottisch","Irish":"Irisch","Galician":"Galicisch","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Deutsche Gebärdensprache","Gujarati":"Gujarati","Haitian":"Haïtien (Haiti-Kreolisch)","Hausa":"Hausa","Serbo-Croatian":"Serbokroatisch","Hebrew":"Hebräisch","Herero":"Otjiherero","Hindi":"Hindi","Hiri Motu":"Hiri-Motu","Croatian":"Kroatisch","Hungarian":"Ungarisch","Armenian":"Armenisch","Igbo":"Igbo","Sichuan Yi":"Yi","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupik","Icelandic":"Isländisch","Italian":"Italienisch","Javanese":"Javanisch","Lojban":"Lojban","Japanese":"Japanisch","Japanese Sign Language":"Japanische Gebärdensprache","Kalaallisut":"Grönländisch","Kannada":"Kannada","Kashmiri":"Kaschmiri","Georgian":"Georgisch","Kanuri":"Kanuri","Kazakh":"Kasachisch","Khmer":"Kambodschanisch","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirgisisch","Komi":"Komi","Kongo":"Kikongo","Korean":"Koreanisch","Kuanyama":"Kuanyama","Kurdish":"Kurdisch","Lao":"Laotisch","Latvian":"Lettisch","Limburgan":"Limburgisch","Lingala":"Lingala","Lithuanian":"Litauisch","Luxembourgish":"Luxemburgisch","Luba-Katanga":"Kiluba","Ganda":"Luganda","Marshallese":"Marschallesisch","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Makedonisch","Malagasy":"Malagassi","Maltese":"Maltesisch","Mongolian":"Mongolisch","Maori":"Māori","Malay (macrolanguage)":"Malaiisch","Burmese":"Birmanisch","Nauru":"Nauruanisch","Navajo":"Navajo","South Ndebele":"Süd-Ndebele","North Ndebele":"Nord-Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali","Dutch":"Niederländisch","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Norwegisch","Nyanja":"Chichewa","Occitan":"Okzitanisch","Ojibwa":"Ojibwe","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Ossetisch","Panjabi":"Panjabi","Pakistan Sign Language":"Pakistanische Gebärdensprache","Polish":"Polnisch","Portuguese":"Portugiesisch","Pushto":"Paschtu","Quechua":"Quechua","Romansh":"Rätoromanisch","Romanian":"Rumänisch","Russian Sign Language":"Russische Gebärdensprache","Rundi":"Kirundi","Russian":"Russisch","Sango":"Sango","Saudi Arabian Sign Language":"Saudi-arabische Gebärdensprache","South African Sign Language":"Südafrikanische Gebärdensprache","Sinhala":"Singhalesisch","Slovak":"Slowakisch","Slovenian":"Slowenisch","Northern Sami":"Nordsaamisch","Samoan":"Samoanisch","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sesotho","Spanish":"Spanisch","Albanian":"Albanisch","Sardinian":"Sardisch","Serbian":"Serbisch","Swati":"siSwati","Sundanese":"Sundanesisch","Swahili (macrolanguage)":"Swahili","Swedish":"Schwedisch","Swedish Sign Language":"Schwedische Gebärdensprache","Tahitian":"Tahitisch","Tamil":"Tamil","Tatar":"Tatarisch","Telugu":"Telugu","Tajik":"Tadschikisch","Tagalog":"Tagalog","Thai":"Thailändisch","Tigrinya":"Tigrinisch","Klingon":"Klingonisch","Tonga (Tonga Islands)":"Tongaisch","Tswana":"Setswana","Tsonga":"Xitsonga","Turkmen":"Turkmenisch","Turkish":"Türkisch","Twi":"Twi","Uighur":"Uigurisch","Ukrainian":"Ukrainisch","Urdu":"Urdu","Uzbek":"Usbekisch","Venda":"Tshivenda","Vietnamese":"Vietnamesisch","Walloon":"Wallonisch","Wolof":"Wolof","Xhosa":"isiXhosa","Yiddish":"Jiddisch","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinesisch","Zulu":"isiZulu"} \ No newline at end of file +{"Music":"Musik","Films":"Filme","Vehicles":"Fahrzeuge","Art":"Kunst","Sports":"Sport","Travels":"Reisen","Gaming":"Spiele","People":"Menschen","Comedy":"Komödie","Entertainment":"Unterhaltung","How To":"Anleitung","Education":"Bildung","Activism":"Aktivismus","Science & Technology":"Wissenschaft und Technologie","Animals":"Tiere","Kids":"Kinder","Food":"Essen","Attribution":"Namensnennung","Attribution - Share Alike":"Namensnennung - Weitergabe unter gleichen Bedingungen","Attribution - No Derivatives":"Namensnennung - Keine Bearbeitung","Attribution - Non Commercial":"Namensnennung - Nicht kommerziell","Attribution - Non Commercial - Share Alike":"Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen","Attribution - Non Commercial - No Derivatives":"Namensnennung - Nicht-kommerziell - Keine Bearbeitung","Public Domain Dedication":"In Gemeinfreiheit entlassen","Public":"Öffentlich","Unlisted":"Nicht gelistet","Private":"Privat","Published":"Veröffentlicht","To transcode":"Zu transkodieren","To import":"Zu importieren","Pending":"Ausstehend","Success":"Erfolg","Failed":"Fehlgeschlagen","Misc":"Verschiedenes","Unknown":"Unbekannt","Afar":"Afar","Abkhazian":"Abchasisch","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharisch","Arabic":"Arabisch","Aragonese":"Aragonesisch","American Sign Language":"Amerikanische Gebärdensprache","Assamese":"Assamesisch","Avaric":"Awarisch","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Aserbeidschanisch","Bashkir":"Baschkirisch","Bambara":"Bambara","Belarusian":"Weißrussisch","Bengali":"Bengali","British Sign Language":"Britische Gebärdensprache","Bislama":"Beach-la-mar","Tibetan":"Tibetisch","Bosnian":"Bosnisch","Breton":"Bretonisch","Bulgarian":"Bulgarisch","Brazilian Sign Language":"Brasilianische Gebärdensprache","Catalan":"Katalanisch","Czech":"Tschechisch","Chamorro":"Chamorro","Chechen":"Tschetschenisch","Chuvash":"Tschuwaschisch","Cornish":"Kornisch","Corsican":"Korsisch","Cree":"Cree","Czech Sign Language":"Tschechische Gebärdensprache","Chinese Sign Language":"Chinesiche Gebärdensprache","Welsh":"Kymrisch","Danish":"Dänisch","German":"Deutsch","Dhivehi":"Maledivisch","Danish Sign Language":"Dänische Gebärdensprache","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Neugriechisch","English":"Englisch","Esperanto":"Esperanto","Estonian":"Estnisch","Basque":"Baskisch","Ewe":"Ewe","Faroese":"Färöisch","Persian":"Persisch","Fijian":"Fidschi","Finnish":"Finnisch","French":"Französisch","Western Frisian":"Friesisch","French Sign Language":"Französiche Gebärdensprache","Fulah":"Ful","Scottish Gaelic":"Gälisch-Schottisch","Irish":"Irisch","Galician":"Galicisch","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Deutsche Gebärdensprache","Gujarati":"Gujarati","Haitian":"Haïtien (Haiti-Kreolisch)","Hausa":"Hausa","Serbo-Croatian":"Serbokroatisch","Hebrew":"Hebräisch","Herero":"Otjiherero","Hindi":"Hindi","Hiri Motu":"Hiri-Motu","Croatian":"Kroatisch","Hungarian":"Ungarisch","Armenian":"Armenisch","Igbo":"Igbo","Sichuan Yi":"Yi","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupik","Icelandic":"Isländisch","Italian":"Italienisch","Javanese":"Javanisch","Lojban":"Lojban","Japanese":"Japanisch","Japanese Sign Language":"Japanische Gebärdensprache","Kalaallisut":"Grönländisch","Kannada":"Kannada","Kashmiri":"Kaschmiri","Georgian":"Georgisch","Kanuri":"Kanuri","Kazakh":"Kasachisch","Khmer":"Kambodschanisch","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirgisisch","Komi":"Komi","Kongo":"Kikongo","Korean":"Koreanisch","Kuanyama":"Kuanyama","Kurdish":"Kurdisch","Lao":"Laotisch","Latvian":"Lettisch","Limburgan":"Limburgisch","Lingala":"Lingala","Lithuanian":"Litauisch","Luxembourgish":"Luxemburgisch","Luba-Katanga":"Kiluba","Ganda":"Luganda","Marshallese":"Marschallesisch","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Makedonisch","Malagasy":"Malagassi","Maltese":"Maltesisch","Mongolian":"Mongolisch","Maori":"Māori","Malay (macrolanguage)":"Malaiisch","Burmese":"Birmanisch","Nauru":"Nauruanisch","Navajo":"Navajo","South Ndebele":"Süd-Ndebele","North Ndebele":"Nord-Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali","Dutch":"Niederländisch","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Norwegisch","Nyanja":"Chichewa","Occitan":"Okzitanisch","Ojibwa":"Ojibwe","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Ossetisch","Panjabi":"Panjabi","Pakistan Sign Language":"Pakistanische Gebärdensprache","Polish":"Polnisch","Portuguese":"Portugiesisch","Pushto":"Paschtu","Quechua":"Quechua","Romansh":"Rätoromanisch","Romanian":"Rumänisch","Russian Sign Language":"Russische Gebärdensprache","Rundi":"Kirundi","Russian":"Russisch","Sango":"Sango","Saudi Arabian Sign Language":"Saudi-arabische Gebärdensprache","South African Sign Language":"Südafrikanische Gebärdensprache","Sinhala":"Singhalesisch","Slovak":"Slowakisch","Slovenian":"Slowenisch","Northern Sami":"Nordsaamisch","Samoan":"Samoanisch","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sesotho","Spanish":"Spanisch","Albanian":"Albanisch","Sardinian":"Sardisch","Serbian":"Serbisch","Swati":"siSwati","Sundanese":"Sundanesisch","Swahili (macrolanguage)":"Swahili","Swedish":"Schwedisch","Swedish Sign Language":"Schwedische Gebärdensprache","Tahitian":"Tahitisch","Tamil":"Tamil","Tatar":"Tatarisch","Telugu":"Telugu","Tajik":"Tadschikisch","Tagalog":"Tagalog","Thai":"Thailändisch","Tigrinya":"Tigrinisch","Klingon":"Klingonisch","Tonga (Tonga Islands)":"Tongaisch","Tswana":"Setswana","Tsonga":"Xitsonga","Turkmen":"Turkmenisch","Turkish":"Türkisch","Twi":"Twi","Uighur":"Uigurisch","Ukrainian":"Ukrainisch","Urdu":"Urdu","Uzbek":"Usbekisch","Venda":"Tshivenda","Vietnamese":"Vietnamesisch","Walloon":"Wallonisch","Wolof":"Wolof","Xhosa":"isiXhosa","Yiddish":"Jiddisch","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinesisch","Zulu":"isiZulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_eo.json b/client/src/locale/target/server_eo.json index 43cfef5ff..7931161ad 100644 --- a/client/src/locale/target/server_eo.json +++ b/client/src/locale/target/server_eo.json @@ -1 +1 @@ -{"Music":"Muziko","Films":"Filmoj","Vehicles":"Veturiloj","Art":"Arto","Sports":"Sporto","Travels":"Vojaĝado","Gaming":"Ludoj","People":"Homoj","Comedy":"Komedio","Entertainment":"Amuzo","News":"Novaĵoj","How To":"Instrukcioj","Education":"Instruado","Activism":"Aktivismo","Science & Technology":"Scienco ϗ teĥnikaro","Animals":"Bestoj","Kids":"Infanoj","Food":"Manĝo","Attribution":"Atribuite","Attribution - Share Alike":"Atribuite – Samkondiĉe","Attribution - No Derivatives":"Atribuite – Nemodifite","Attribution - Non Commercial":"Atribuite – Nekomerce","Attribution - Non Commercial - Share Alike":"Atribuite – Nekomerce – Samkondiĉe","Attribution - Non Commercial - No Derivatives":"Atribuite – Nekomerce – Nemodifite","Public Domain Dedication":"Dediĉo al publika posedo","Public":"Publika","Unlisted":"Nelistigata","Private":"Privata","Success":"Sukcesis","Failed":"Malsukcesis","Misc":"Diversaĵoj","Unknown":"Nekonata","Afar":"Afara","Abkhazian":"Abĥaza","Afrikaans":"Afrikansa","Akan":"Akana","Amharic":"Amhara","Arabic":"Araba","Aragonese":"Aragona","American Sign Language":"Usona gestlingvo","Assamese":"Asama","Avaric":"Avara","Kotava":"Kotavo","Aymara":"Ajmara","Azerbaijani":"Azerbajĝana","Bashkir":"Baŝkira","Bambara":"Bambara","Belarusian":"Belorusa","Bengali":"Bengala","British Sign Language":"Brita gestlingvo","Bislama":"Bislama","Tibetan":"Tibeta","Bosnian":"Bosna","Breton":"Bretona","Bulgarian":"Bulgara","Brazilian Sign Language":"Brazila gestlingvo","Catalan":"Kataluna","Czech":"Ĉeĥa","Chamorro":"Ĉamora","Chechen":"Ĉeĉena","Chuvash":"Ĉuvaŝa","Cornish":"Kornvala","Corsican":"Korsika","Czech Sign Language":"Ĉeĥa gestlingvo","Chinese Sign Language":"Ĉina gestlingvo","Welsh":"Kimra","Danish":"Dana","German":"Germana","Dhivehi":"Maldiva","Danish Sign Language":"Dana gestlingvo","Dzongkha":"Butana","Modern Greek (1453-)":"Novgreka","English":"Angla","Esperanto":"Esperanto","Estonian":"Estona","Basque":"Eŭska","Ewe":"Evea","Faroese":"Feroa","Persian":"Persa","Fijian":"Fiĝia","Finnish":"Finna","French":"Franca","Western Frisian":"Okcidentfrisa","French Sign Language":"Franca gestlingvo","Fulah":"Fula","Scottish Gaelic":"Skotgaela","Irish":"Irlanda","Galician":"Galega","Manx":"Manksa","Guarani":"Gvarania","German Sign Language":"Germana gestlingvo","Gujarati":"Guĝarata","Haitian":"Haitia","Hausa":"Haŭsa","Serbo-Croatian":"Kroatserba","Hebrew":"Hebrea","Herero":"Herera","Hindi":"Hinda","Hiri Motu":"Hirimotua","Croatian":"Kroata","Hungarian":"Hungara","Armenian":"Armena","Igbo":"Igba","Sichuan Yi":"Jia","Inuktitut":"Inuktituta","Indonesian":"Indonezia","Inupiaq":"Inupiko","Icelandic":"Islanda","Italian":"Itala","Javanese":"Java","Lojban":"Loĵbano","Japanese":"Japana","Japanese Sign Language":"Japana gestlingvo","Kalaallisut":"Gronlanda","Kannada":"Kanara","Kashmiri":"Kaŝmira","Georgian":"Kartvela","Kanuri":"Kanuria","Kazakh":"Kazaĥa","Khmer":"Kmera","Kirghiz":"Kirgiza","Komi":"Komia","Kongo":"Konga","Korean":"Korea","Kuanyama":"Kvanjama","Kurdish":"Kurda","Lao":"Laosa","Latvian":"Latva","Limburgan":"Limburga","Lingala":"Lingala","Lithuanian":"Litova","Luxembourgish":"Luksemburga","Marshallese":"Marŝalinsula","Malayalam":"Malajalama","Marathi":"Marata","Macedonian":"Makedona","Malagasy":"Malgaŝa","Maltese":"Malta","Mongolian":"Mongola","Maori":"Maoria","Malay (macrolanguage)":"Malaja","Burmese":"Birma","Nauru":"Naura","Navajo":"Navajo","South Ndebele":"Sudndebela","North Ndebele":"Nordndebela","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepala","Dutch":"Nederlanda","Norwegian Nynorsk":"Novnorvega","Norwegian Bokmål":"Bukmolo","Norwegian":"Norvega","Nyanja":"Ĉiĉeva","Ojibwa":"Oĝibua","Oriya (macrolanguage)":"Orisa","Oromo":"Oroma","Ossetian":"Oseta","Panjabi":"Panĝaba","Pakistan Sign Language":"Pakistana gestlingvo","Polish":"Pola","Portuguese":"Portugala","Pushto":"Paŝtua","Quechua":"Keĉua","Romansh":"Romanĉa","Romanian":"Rumana","Russian Sign Language":"Rusa gestlingvo","Russian":"Rusa","Saudi Arabian Sign Language":"Saudarabuja gestlingvo","South African Sign Language":"Sudafrika gestlingvo","Sinhala":"Sinhala","Slovak":"Slovaka","Slovenian":"Slovena","Northern Sami":"Nordlapona","Samoan":"Samoa","Shona":"Ŝona","Sindhi":"Sinda","Somali":"Somala","Southern Sotho":"Sudsota","Spanish":"Hispana","Albanian":"Albana","Sardinian":"Sarda","Serbian":"Serba","Swati":"Svazia","Sundanese":"Sunda","Swahili (macrolanguage)":"Svahila","Swedish":"Sveda","Swedish Sign Language":"Sveda gestlingvo","Tahitian":"Tahitia","Tamil":"Tamula","Tatar":"Tatara","Telugu":"Telugua","Tajik":"Taĝika","Tagalog":"Tagaloga","Thai":"Taja","Klingon":"Klingona","Tonga (Tonga Islands)":"Tonga","Tswana":"Cvana","Tsonga":"Conga","Turkmen":"Turkmena","Turkish":"Turka","Uighur":"Ujgura","Ukrainian":"Ukrajna","Urdu":"Urdua","Uzbek":"Uzbeka","Venda":"Vendaa","Vietnamese":"Vjetnama","Walloon":"Valona","Wolof":"Volofa","Xhosa":"Kosa","Yiddish":"Jido","Yoruba":"Joruba","Zhuang":"Ĉuanga","Chinese":"Ĉina","Zulu":"Zulua"} \ No newline at end of file +{"Music":"Muziko","Films":"Filmoj","Vehicles":"Veturiloj","Art":"Arto","Sports":"Sporto","Travels":"Vojaĝado","Gaming":"Ludoj","People":"Homoj","Comedy":"Komedio","Entertainment":"Amuzo","How To":"Instrukcioj","Education":"Instruado","Activism":"Aktivismo","Science & Technology":"Scienco ϗ teĥnikaro","Animals":"Bestoj","Kids":"Infanoj","Food":"Manĝo","Attribution":"Atribuite","Attribution - Share Alike":"Atribuite – Samkondiĉe","Attribution - No Derivatives":"Atribuite – Nemodifite","Attribution - Non Commercial":"Atribuite – Nekomerce","Attribution - Non Commercial - Share Alike":"Atribuite – Nekomerce – Samkondiĉe","Attribution - Non Commercial - No Derivatives":"Atribuite – Nekomerce – Nemodifite","Public Domain Dedication":"Dediĉo al publika posedo","Public":"Publika","Unlisted":"Nelistigata","Private":"Privata","Success":"Sukcesis","Failed":"Malsukcesis","Misc":"Diversaĵoj","Unknown":"Nekonata","Afar":"Afara","Abkhazian":"Abĥaza","Afrikaans":"Afrikansa","Akan":"Akana","Amharic":"Amhara","Arabic":"Araba","Aragonese":"Aragona","American Sign Language":"Usona gestlingvo","Assamese":"Asama","Avaric":"Avara","Kotava":"Kotavo","Aymara":"Ajmara","Azerbaijani":"Azerbajĝana","Bashkir":"Baŝkira","Bambara":"Bambara","Belarusian":"Belorusa","Bengali":"Bengala","British Sign Language":"Brita gestlingvo","Bislama":"Bislama","Tibetan":"Tibeta","Bosnian":"Bosna","Breton":"Bretona","Bulgarian":"Bulgara","Brazilian Sign Language":"Brazila gestlingvo","Catalan":"Kataluna","Czech":"Ĉeĥa","Chamorro":"Ĉamora","Chechen":"Ĉeĉena","Chuvash":"Ĉuvaŝa","Cornish":"Kornvala","Corsican":"Korsika","Czech Sign Language":"Ĉeĥa gestlingvo","Chinese Sign Language":"Ĉina gestlingvo","Welsh":"Kimra","Danish":"Dana","German":"Germana","Dhivehi":"Maldiva","Danish Sign Language":"Dana gestlingvo","Dzongkha":"Butana","Modern Greek (1453-)":"Novgreka","English":"Angla","Esperanto":"Esperanto","Estonian":"Estona","Basque":"Eŭska","Ewe":"Evea","Faroese":"Feroa","Persian":"Persa","Fijian":"Fiĝia","Finnish":"Finna","French":"Franca","Western Frisian":"Okcidentfrisa","French Sign Language":"Franca gestlingvo","Fulah":"Fula","Scottish Gaelic":"Skotgaela","Irish":"Irlanda","Galician":"Galega","Manx":"Manksa","Guarani":"Gvarania","German Sign Language":"Germana gestlingvo","Gujarati":"Guĝarata","Haitian":"Haitia","Hausa":"Haŭsa","Serbo-Croatian":"Kroatserba","Hebrew":"Hebrea","Herero":"Herera","Hindi":"Hinda","Hiri Motu":"Hirimotua","Croatian":"Kroata","Hungarian":"Hungara","Armenian":"Armena","Igbo":"Igba","Sichuan Yi":"Jia","Inuktitut":"Inuktituta","Indonesian":"Indonezia","Inupiaq":"Inupiko","Icelandic":"Islanda","Italian":"Itala","Javanese":"Java","Lojban":"Loĵbano","Japanese":"Japana","Japanese Sign Language":"Japana gestlingvo","Kalaallisut":"Gronlanda","Kannada":"Kanara","Kashmiri":"Kaŝmira","Georgian":"Kartvela","Kanuri":"Kanuria","Kazakh":"Kazaĥa","Khmer":"Kmera","Kirghiz":"Kirgiza","Komi":"Komia","Kongo":"Konga","Korean":"Korea","Kuanyama":"Kvanjama","Kurdish":"Kurda","Lao":"Laosa","Latvian":"Latva","Limburgan":"Limburga","Lingala":"Lingala","Lithuanian":"Litova","Luxembourgish":"Luksemburga","Marshallese":"Marŝalinsula","Malayalam":"Malajalama","Marathi":"Marata","Macedonian":"Makedona","Malagasy":"Malgaŝa","Maltese":"Malta","Mongolian":"Mongola","Maori":"Maoria","Malay (macrolanguage)":"Malaja","Burmese":"Birma","Nauru":"Naura","Navajo":"Navajo","South Ndebele":"Sudndebela","North Ndebele":"Nordndebela","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepala","Dutch":"Nederlanda","Norwegian Nynorsk":"Novnorvega","Norwegian Bokmål":"Bukmolo","Norwegian":"Norvega","Nyanja":"Ĉiĉeva","Ojibwa":"Oĝibua","Oriya (macrolanguage)":"Orisa","Oromo":"Oroma","Ossetian":"Oseta","Panjabi":"Panĝaba","Pakistan Sign Language":"Pakistana gestlingvo","Polish":"Pola","Portuguese":"Portugala","Pushto":"Paŝtua","Quechua":"Keĉua","Romansh":"Romanĉa","Romanian":"Rumana","Russian Sign Language":"Rusa gestlingvo","Russian":"Rusa","Saudi Arabian Sign Language":"Saudarabuja gestlingvo","South African Sign Language":"Sudafrika gestlingvo","Sinhala":"Sinhala","Slovak":"Slovaka","Slovenian":"Slovena","Northern Sami":"Nordlapona","Samoan":"Samoa","Shona":"Ŝona","Sindhi":"Sinda","Somali":"Somala","Southern Sotho":"Sudsota","Spanish":"Hispana","Albanian":"Albana","Sardinian":"Sarda","Serbian":"Serba","Swati":"Svazia","Sundanese":"Sunda","Swahili (macrolanguage)":"Svahila","Swedish":"Sveda","Swedish Sign Language":"Sveda gestlingvo","Tahitian":"Tahitia","Tamil":"Tamula","Tatar":"Tatara","Telugu":"Telugua","Tajik":"Taĝika","Tagalog":"Tagaloga","Thai":"Taja","Klingon":"Klingona","Tonga (Tonga Islands)":"Tonga","Tswana":"Cvana","Tsonga":"Conga","Turkmen":"Turkmena","Turkish":"Turka","Uighur":"Ujgura","Ukrainian":"Ukrajna","Urdu":"Urdua","Uzbek":"Uzbeka","Venda":"Vendaa","Vietnamese":"Vjetnama","Walloon":"Valona","Wolof":"Volofa","Xhosa":"Kosa","Yiddish":"Jido","Yoruba":"Joruba","Zhuang":"Ĉuanga","Chinese":"Ĉina","Zulu":"Zulua"} \ No newline at end of file diff --git a/client/src/locale/target/server_es_ES.json b/client/src/locale/target/server_es_ES.json index 21831df98..77beb9036 100644 --- a/client/src/locale/target/server_es_ES.json +++ b/client/src/locale/target/server_es_ES.json @@ -1 +1 @@ -{"Music":"Música","Films":"Películas","Vehicles":"Transporte","Art":"Arte","Sports":"Deportes","Travels":"Viajes","Gaming":"Juegos","People":"Personalidades","Comedy":"Comedia","Entertainment":"Entretenimiento","News":"Noticias","How To":"Tutorial","Education":"Educación","Activism":"Activismo","Science & Technology":"Cienca & Tecnología","Animals":"Animales","Kids":"Niños","Food":"Cocina","Attribution":"Atribución","Attribution - Share Alike":"Atribución - Compartir Igual","Attribution - No Derivatives":"Atribución - No Derivadas","Attribution - Non Commercial":"Atribución - No Comercial","Attribution - Non Commercial - Share Alike":"Atribución - No Comercial - Compartir Igual","Attribution - Non Commercial - No Derivatives":"Atribución - No Comercial - No Derivadas","Public Domain Dedication":"Dominio Público","Public":"Público","Unlisted":"Sin listar","Private":"Privado","Published":"Pulicados","To transcode":"Para codificar","To import":"Para importar","Pending":"Pendientes","Misc":"Miscelánea","Unknown":"Desconocido","Afar":"Afar","Abkhazian":"Abjasio","Afrikaans":"Afrikáans","Akan":"Acano","Amharic":"Amhárico","Arabic":"Árabe","Aragonese":"Aragonés","American Sign Language":"Lengua de signos americana","Assamese":"Asamés","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerí","Bashkir":"Baskir","Bambara":"Bambara","Belarusian":"Bielorruso","Bengali":"Bengalí","British Sign Language":"Lenga de signos británica","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosnio","Breton":"Bretón","Bulgarian":"Búlgaro","Brazilian Sign Language":"Lengua de signos brasileña","Catalan":"Catalán","Czech":"Checo","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Chuvasio","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lengua de signos checa","Chinese Sign Language":"Lengua de signos china","Welsh":"Gaélico","Danish":"Danés","German":"Alemán","Dhivehi":"Maldivo","Danish Sign Language":"Lengua de signos danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Griego moderno","English":"Inglés","Esperanto":"Esperanto","Estonian":"Estonio","Basque":"Euskera","Ewe":"Ewé","Faroese":"Feroés","Persian":"Persa","Fijian":"Fiyiano","Finnish":"Finés","French":"Francés","Western Frisian":"Frisón occidental","French Sign Language":"Lengua de signos francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico escocés","Irish":"Irlandés","Galician":"Gallego","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lengua de signos alemana","Gujarati":"Gujaratí","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroata","Hebrew":"Hebreo","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armenio","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuit","Indonesian":"Indonesio","Inupiaq":"Iñupiaq","Icelandic":"Islandés","Italian":"Italiano","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lengua de signos japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cachemir","Georgian":"Georgiano","Kanuri":"Kanurí","Kazakh":"Kazajo","Khmer":"Camboyano","Kikuyu":"Kikuyú","Kinyarwanda":"Kiñaruanda","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Kurdo","Lao":"Lao","Latvian":"Letón","Limburgan":"Limburgués","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburgués","Luba-Katanga":"Luba oriental","Ganda":"Luganda","Marshallese":"Mashalés","Malayalam":"Malabar","Marathi":"Maratí","Macedonian":"Macedonio","Malagasy":"Malgache","Maltese":"Maltés","Mongolian":"Mongol","Maori":"Maorí","Malay (macrolanguage)":"Malayo","Burmese":"Birmano","Nauru":"Nauruano","Navajo":"Navajo","South Ndebele":"Ndebele del sur","North Ndebele":"Ndebele del norte","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalí","Dutch":"Neerlandés","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Noruego","Nyanja":"Chichewa","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Osetio","Panjabi":"Panyabí","Pakistan Sign Language":"Lengua de signos pakistaní","Polish":"Polaco","Portuguese":"Portugués","Pushto":"Pastún","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Rumano","Russian Sign Language":"Lengua de signos rusa","Rundi":"Kirundí","Russian":"Ruso","Sango":"Sango","Saudi Arabian Sign Language":"Lengua de signos saudí","South African Sign Language":"Lengua de signos sudafricana","Sinhala":"Cingalés","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami septentrional","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindi","Somali":"Somalí","Southern Sotho":"Soto meridional","Spanish":"Español","Albanian":"Albano","Sardinian":"Sardo","Serbian":"Serbio","Swati":"Suazi","Sundanese":"Sudanés","Swahili (macrolanguage)":"Suajili","Swedish":"Sueco","Swedish Sign Language":"Lengua de signos sueca","Tahitian":"Tahitiano","Tamil":"Támil","Tatar":"Tártaro","Telugu":"Télugu","Tajik":"Tayiko","Tagalog":"Tagalo","Thai":"Tailandés","Tigrinya":"Tigriña","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongano","Tswana":"Setsuana","Tsonga":"Tsonga","Turkmen":"Turcomano","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeko","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valón","Wolof":"Wólof","Xhosa":"Xhosa","Yiddish":"Yidis","Yoruba":"Yoruba","Zhuang":"Chuang","Chinese":"Chino","Zulu":"Zulú"} \ No newline at end of file +{"Music":"Música","Films":"Películas","Vehicles":"Transporte","Art":"Arte","Sports":"Deportes","Travels":"Viajes","Gaming":"Juegos","People":"Personalidades","Comedy":"Comedia","Entertainment":"Entretenimiento","How To":"Tutorial","Education":"Educación","Activism":"Activismo","Science & Technology":"Cienca & Tecnología","Animals":"Animales","Kids":"Niños","Food":"Cocina","Attribution":"Atribución","Attribution - Share Alike":"Atribución - Compartir Igual","Attribution - No Derivatives":"Atribución - No Derivadas","Attribution - Non Commercial":"Atribución - No Comercial","Attribution - Non Commercial - Share Alike":"Atribución - No Comercial - Compartir Igual","Attribution - Non Commercial - No Derivatives":"Atribución - No Comercial - No Derivadas","Public Domain Dedication":"Dominio Público","Public":"Público","Unlisted":"Sin listar","Private":"Privado","Published":"Pulicados","To transcode":"Para codificar","To import":"Para importar","Pending":"Pendientes","Misc":"Miscelánea","Unknown":"Desconocido","Afar":"Afar","Abkhazian":"Abjasio","Afrikaans":"Afrikáans","Akan":"Acano","Amharic":"Amhárico","Arabic":"Árabe","Aragonese":"Aragonés","American Sign Language":"Lengua de signos americana","Assamese":"Asamés","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerí","Bashkir":"Baskir","Bambara":"Bambara","Belarusian":"Bielorruso","Bengali":"Bengalí","British Sign Language":"Lenga de signos británica","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosnio","Breton":"Bretón","Bulgarian":"Búlgaro","Brazilian Sign Language":"Lengua de signos brasileña","Catalan":"Catalán","Czech":"Checo","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Chuvasio","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lengua de signos checa","Chinese Sign Language":"Lengua de signos china","Welsh":"Gaélico","Danish":"Danés","German":"Alemán","Dhivehi":"Maldivo","Danish Sign Language":"Lengua de signos danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Griego moderno","English":"Inglés","Esperanto":"Esperanto","Estonian":"Estonio","Basque":"Euskera","Ewe":"Ewé","Faroese":"Feroés","Persian":"Persa","Fijian":"Fiyiano","Finnish":"Finés","French":"Francés","Western Frisian":"Frisón occidental","French Sign Language":"Lengua de signos francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico escocés","Irish":"Irlandés","Galician":"Gallego","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lengua de signos alemana","Gujarati":"Gujaratí","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroata","Hebrew":"Hebreo","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armenio","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuit","Indonesian":"Indonesio","Inupiaq":"Iñupiaq","Icelandic":"Islandés","Italian":"Italiano","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lengua de signos japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cachemir","Georgian":"Georgiano","Kanuri":"Kanurí","Kazakh":"Kazajo","Khmer":"Camboyano","Kikuyu":"Kikuyú","Kinyarwanda":"Kiñaruanda","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Kurdo","Lao":"Lao","Latvian":"Letón","Limburgan":"Limburgués","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburgués","Luba-Katanga":"Luba oriental","Ganda":"Luganda","Marshallese":"Mashalés","Malayalam":"Malabar","Marathi":"Maratí","Macedonian":"Macedonio","Malagasy":"Malgache","Maltese":"Maltés","Mongolian":"Mongol","Maori":"Maorí","Malay (macrolanguage)":"Malayo","Burmese":"Birmano","Nauru":"Nauruano","Navajo":"Navajo","South Ndebele":"Ndebele del sur","North Ndebele":"Ndebele del norte","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalí","Dutch":"Neerlandés","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Noruego","Nyanja":"Chichewa","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Osetio","Panjabi":"Panyabí","Pakistan Sign Language":"Lengua de signos pakistaní","Polish":"Polaco","Portuguese":"Portugués","Pushto":"Pastún","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Rumano","Russian Sign Language":"Lengua de signos rusa","Rundi":"Kirundí","Russian":"Ruso","Sango":"Sango","Saudi Arabian Sign Language":"Lengua de signos saudí","South African Sign Language":"Lengua de signos sudafricana","Sinhala":"Cingalés","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami septentrional","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindi","Somali":"Somalí","Southern Sotho":"Soto meridional","Spanish":"Español","Albanian":"Albano","Sardinian":"Sardo","Serbian":"Serbio","Swati":"Suazi","Sundanese":"Sudanés","Swahili (macrolanguage)":"Suajili","Swedish":"Sueco","Swedish Sign Language":"Lengua de signos sueca","Tahitian":"Tahitiano","Tamil":"Támil","Tatar":"Tártaro","Telugu":"Télugu","Tajik":"Tayiko","Tagalog":"Tagalo","Thai":"Tailandés","Tigrinya":"Tigriña","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongano","Tswana":"Setsuana","Tsonga":"Tsonga","Turkmen":"Turcomano","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeko","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valón","Wolof":"Wólof","Xhosa":"Xhosa","Yiddish":"Yidis","Yoruba":"Yoruba","Zhuang":"Chuang","Chinese":"Chino","Zulu":"Zulú"} \ No newline at end of file diff --git a/client/src/locale/target/server_eu_ES.json b/client/src/locale/target/server_eu_ES.json index b725d4f55..28c76f31b 100644 --- a/client/src/locale/target/server_eu_ES.json +++ b/client/src/locale/target/server_eu_ES.json @@ -1 +1 @@ -{"Music":"Musika","Films":"Filmak","Vehicles":"Ibilgailuak","Art":"Artea","Sports":"Kirolak","Travels":"Bidaiak","Gaming":"Jolasak","People":"Jendea","Comedy":"Komedia","Entertainment":"Aisia","News":"Berriak","How To":"Argibideak","Education":"Hezkuntza","Activism":"Aktibismoa","Science & Technology":"Zientzia eta teknologia","Animals":"Animaliak","Kids":"Haurrak","Food":"Janaria","Attribution":"Atribuzioa","Attribution - Share Alike":"Atribuzioa - Partekatu berdin","Attribution - No Derivatives":"Atribuzioa - Eratorririk ez","Attribution - Non Commercial":"Atribuzioa - Ez komertziala","Attribution - Non Commercial - Share Alike":"Atribuzioa - Ez komertziala - Partekatu berdin","Attribution - Non Commercial - No Derivatives":"Atribuzioa - Ez komertziala - Eratorririk ez","Public Domain Dedication":"Domeinu publikoa","Public":"Publikoa","Unlisted":"Zerrendatu gabea","Private":"Pribatua","Published":"Argitaratua","To transcode":"Transkodetzeko","To import":"Inportatzeko","Pending":"Egiteke","Success":"Arrakasta","Failed":"Hutsa","Misc":"Denetarik","Unknown":"Ezezaguna","Afar":"Afar","Abkhazian":"Abkhaziera","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharera","Arabic":"Arabiera","Aragonese":"Aragoiera","American Sign Language":"Amerikako zeinu-hizkuntza ","Assamese":"Assamera","Avaric":"Avarera","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerbaijanera","Bashkir":"Baxkirera","Bambara":"Banbara","Belarusian":"Bielorrusiera","Bengali":"Bengalera","British Sign Language":"Britainiako zeinu-hizkuntza","Bislama":"Bislama","Tibetan":"Tibetera","Bosnian":"Bosniera","Breton":"Bretoiera","Bulgarian":"Bulgariera","Brazilian Sign Language":"Brasilgo zeinu-hizkuntza","Catalan":"Katalana","Czech":"Txekiera","Chamorro":"Chamorro","Chechen":"Txetxenera","Chuvash":"Txuvaxera","Cornish":"Kornubiera","Corsican":"Korsikera","Cree":"Cree","Czech Sign Language":"Txekiako zeinu-hizkuntza","Chinese Sign Language":"Txinako zeinu-hizkuntza","Welsh":"Galesa","Danish":"Daniera","German":"Alemana","Dhivehi":"Dhivehi (maldivera) ","Danish Sign Language":"Danimarkako zeinu-hizkuntza","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greziera moernoa (1453-)","English":"Ingelesa","Esperanto":"Esperantoa","Estonian":"Estoniera","Basque":"Euskara","Ewe":"Eweera","Faroese":"Faroera","Persian":"Persiera","Fijian":"Fijiera","Finnish":"Suomiera","French":"Frantsesa","Western Frisian":"Mendebaldeko frisiera","French Sign Language":"Frantziako zeinu-hizkuntza","Fulah":"Fula","Scottish Gaelic":"Eskoziako gaelikoa","Irish":"Irlandera","Galician":"Galiziera","Manx":"Manera","Guarani":"Guaraniera","German Sign Language":"Alemaniako zeinu-hizkuntza","Gujarati":"Gujaratera","Haitian":"Haitiko kreolera","Hausa":"Hausa","Serbo-Croatian":"Serbokroaziera ","Hebrew":"Hebreera","Herero":"Hereroera","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Kroaziera","Hungarian":"Hungariera","Armenian":"Armeniera","Igbo":"Igboera","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutera","Indonesian":"Indonesiera","Inupiaq":"Inupiaq","Icelandic":"Islandiera","Italian":"Italiera","Javanese":"Javera","Lojban":"Lojban","Japanese":"Japoniera","Japanese Sign Language":"Japoniako zeinu-hizkuntza","Kalaallisut":"Groenlandiera","Kannada":"Kannada","Kashmiri":"Kaxmirera","Georgian":"Georgiera / Kartveliera ","Kanuri":"Kanuri","Kazakh":"Kazakhera","Khmer":"Khmerera","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyaruanda","Kirghiz":"Kirgizera","Komi":"Komiera","Kongo":"Kikongo","Korean":"Koreera","Kuanyama":"Kuanyama","Kurdish":"Kurduera","Lao":"Laosera","Latvian":"Letoniera","Limburgan":"Limburgera","Lingala":"Lingala","Lithuanian":"Lituaniera","Luxembourgish":"Luxenburgera","Luba-Katanga":"Luba-Katanga","Ganda":"Luganda","Marshallese":"Marshallera","Malayalam":"Malabarera","Marathi":"Marathera","Macedonian":"Mazedoniera","Malagasy":"Malgaxe","Maltese":"Maltera","Mongolian":"Mongoliera","Maori":"Maoriera","Malay (macrolanguage)":"Malaysiera (makro-hizkuntza)","Burmese":"Birmaniera","Nauru":"Nauruera","Navajo":"Navajoa","South Ndebele":"Hego Ndebele","North Ndebele":"Ipar Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalera (makro-hizkuntza)","Dutch":"Nederlandera","Norwegian Nynorsk":"Norvegiako Nynorsk","Norwegian Bokmål":"Norvegiako Bokmål","Norwegian":"Norvegiera","Nyanja":"Txewera","Occitan":"Okzitaniera","Ojibwa":"Ojibwera","Oriya (macrolanguage)":"Oriya (makro-hizkuntza)","Oromo":"Oromoera","Ossetian":"Osetiera","Panjabi":"Punjabera","Pakistan Sign Language":"Pakistango zeinu-hizkuntza","Polish":"Poloniera","Portuguese":"Portugesa","Pushto":"Paxtuera","Quechua":"Kitxua","Romansh":"Erromantxea","Romanian":"Errumaniera","Russian Sign Language":"Errusiako zeinu-hizkuntza","Rundi":"Kirundi","Russian":"Errusiera","Sango":"Sango","Saudi Arabian Sign Language":"Saudi Arabiako zeinu-hizkuntza","South African Sign Language":"Hego Afrikako zeinu-hizkuntza","Sinhala":"Sinhala","Slovak":"Eslovakiera","Slovenian":"Esloveniera","Northern Sami":"Ipar Samiera","Samoan":"Samoera","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somaliera","Southern Sotho":"Sothoera","Spanish":"Espainiera","Albanian":"Albaniera","Sardinian":"Sardiniera","Serbian":"Serbiera","Swati":"Swaziera","Sundanese":"Sundera","Swahili (macrolanguage)":"Swahili (makro-hizkuntza)","Swedish":"Suediera","Swedish Sign Language":"Suediako zeinu-hizkuntza","Tahitian":"Maoriera","Tamil":"Tamilera","Tatar":"Tatarera","Telugu":"Telugu","Tajik":"Tajikera","Tagalog":"Tagaloa","Thai":"Thailandiera","Tigrinya":"Tigrinyera","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Tonga irlak)","Tswana":"Tswanera","Tsonga":"Tsongera","Turkmen":"Turkmenera","Turkish":"Turkiera","Twi":"Twi","Uighur":"Uigurrera","Ukrainian":"Ukrainera","Urdu":"Urduera","Uzbek":"Uzbekera","Venda":"Vendera","Vietnamese":"Vietnamera","Walloon":"Valoniera","Wolof":"Wolofera","Xhosa":"Xhosera","Yiddish":"Yiddish","Yoruba":"Jorubera","Zhuang":"Zhuang","Chinese":"Txinera","Zulu":"Zuluera"} \ No newline at end of file +{"Music":"Musika","Films":"Filmak","Vehicles":"Ibilgailuak","Art":"Artea","Sports":"Kirolak","Travels":"Bidaiak","Gaming":"Jolasak","People":"Jendea","Comedy":"Komedia","Entertainment":"Aisia","How To":"Argibideak","Education":"Hezkuntza","Activism":"Aktibismoa","Science & Technology":"Zientzia eta teknologia","Animals":"Animaliak","Kids":"Haurrak","Food":"Janaria","Attribution":"Atribuzioa","Attribution - Share Alike":"Atribuzioa - Partekatu berdin","Attribution - No Derivatives":"Atribuzioa - Eratorririk ez","Attribution - Non Commercial":"Atribuzioa - Ez komertziala","Attribution - Non Commercial - Share Alike":"Atribuzioa - Ez komertziala - Partekatu berdin","Attribution - Non Commercial - No Derivatives":"Atribuzioa - Ez komertziala - Eratorririk ez","Public Domain Dedication":"Domeinu publikoa","Public":"Publikoa","Unlisted":"Zerrendatu gabea","Private":"Pribatua","Published":"Argitaratua","To transcode":"Transkodetzeko","To import":"Inportatzeko","Pending":"Egiteke","Success":"Arrakasta","Failed":"Hutsa","Misc":"Denetarik","Unknown":"Ezezaguna","Afar":"Afar","Abkhazian":"Abkhaziera","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharera","Arabic":"Arabiera","Aragonese":"Aragoiera","American Sign Language":"Amerikako zeinu-hizkuntza ","Assamese":"Assamera","Avaric":"Avarera","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerbaijanera","Bashkir":"Baxkirera","Bambara":"Banbara","Belarusian":"Bielorrusiera","Bengali":"Bengalera","British Sign Language":"Britainiako zeinu-hizkuntza","Bislama":"Bislama","Tibetan":"Tibetera","Bosnian":"Bosniera","Breton":"Bretoiera","Bulgarian":"Bulgariera","Brazilian Sign Language":"Brasilgo zeinu-hizkuntza","Catalan":"Katalana","Czech":"Txekiera","Chamorro":"Chamorro","Chechen":"Txetxenera","Chuvash":"Txuvaxera","Cornish":"Kornubiera","Corsican":"Korsikera","Cree":"Cree","Czech Sign Language":"Txekiako zeinu-hizkuntza","Chinese Sign Language":"Txinako zeinu-hizkuntza","Welsh":"Galesa","Danish":"Daniera","German":"Alemana","Dhivehi":"Dhivehi (maldivera) ","Danish Sign Language":"Danimarkako zeinu-hizkuntza","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greziera moernoa (1453-)","English":"Ingelesa","Esperanto":"Esperantoa","Estonian":"Estoniera","Basque":"Euskara","Ewe":"Eweera","Faroese":"Faroera","Persian":"Persiera","Fijian":"Fijiera","Finnish":"Suomiera","French":"Frantsesa","Western Frisian":"Mendebaldeko frisiera","French Sign Language":"Frantziako zeinu-hizkuntza","Fulah":"Fula","Scottish Gaelic":"Eskoziako gaelikoa","Irish":"Irlandera","Galician":"Galiziera","Manx":"Manera","Guarani":"Guaraniera","German Sign Language":"Alemaniako zeinu-hizkuntza","Gujarati":"Gujaratera","Haitian":"Haitiko kreolera","Hausa":"Hausa","Serbo-Croatian":"Serbokroaziera ","Hebrew":"Hebreera","Herero":"Hereroera","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Kroaziera","Hungarian":"Hungariera","Armenian":"Armeniera","Igbo":"Igboera","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutera","Indonesian":"Indonesiera","Inupiaq":"Inupiaq","Icelandic":"Islandiera","Italian":"Italiera","Javanese":"Javera","Lojban":"Lojban","Japanese":"Japoniera","Japanese Sign Language":"Japoniako zeinu-hizkuntza","Kalaallisut":"Groenlandiera","Kannada":"Kannada","Kashmiri":"Kaxmirera","Georgian":"Georgiera / Kartveliera ","Kanuri":"Kanuri","Kazakh":"Kazakhera","Khmer":"Khmerera","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyaruanda","Kirghiz":"Kirgizera","Komi":"Komiera","Kongo":"Kikongo","Korean":"Koreera","Kuanyama":"Kuanyama","Kurdish":"Kurduera","Lao":"Laosera","Latvian":"Letoniera","Limburgan":"Limburgera","Lingala":"Lingala","Lithuanian":"Lituaniera","Luxembourgish":"Luxenburgera","Luba-Katanga":"Luba-Katanga","Ganda":"Luganda","Marshallese":"Marshallera","Malayalam":"Malabarera","Marathi":"Marathera","Macedonian":"Mazedoniera","Malagasy":"Malgaxe","Maltese":"Maltera","Mongolian":"Mongoliera","Maori":"Maoriera","Malay (macrolanguage)":"Malaysiera (makro-hizkuntza)","Burmese":"Birmaniera","Nauru":"Nauruera","Navajo":"Navajoa","South Ndebele":"Hego Ndebele","North Ndebele":"Ipar Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalera (makro-hizkuntza)","Dutch":"Nederlandera","Norwegian Nynorsk":"Norvegiako Nynorsk","Norwegian Bokmål":"Norvegiako Bokmål","Norwegian":"Norvegiera","Nyanja":"Txewera","Occitan":"Okzitaniera","Ojibwa":"Ojibwera","Oriya (macrolanguage)":"Oriya (makro-hizkuntza)","Oromo":"Oromoera","Ossetian":"Osetiera","Panjabi":"Punjabera","Pakistan Sign Language":"Pakistango zeinu-hizkuntza","Polish":"Poloniera","Portuguese":"Portugesa","Pushto":"Paxtuera","Quechua":"Kitxua","Romansh":"Erromantxea","Romanian":"Errumaniera","Russian Sign Language":"Errusiako zeinu-hizkuntza","Rundi":"Kirundi","Russian":"Errusiera","Sango":"Sango","Saudi Arabian Sign Language":"Saudi Arabiako zeinu-hizkuntza","South African Sign Language":"Hego Afrikako zeinu-hizkuntza","Sinhala":"Sinhala","Slovak":"Eslovakiera","Slovenian":"Esloveniera","Northern Sami":"Ipar Samiera","Samoan":"Samoera","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somaliera","Southern Sotho":"Sothoera","Spanish":"Espainiera","Albanian":"Albaniera","Sardinian":"Sardiniera","Serbian":"Serbiera","Swati":"Swaziera","Sundanese":"Sundera","Swahili (macrolanguage)":"Swahili (makro-hizkuntza)","Swedish":"Suediera","Swedish Sign Language":"Suediako zeinu-hizkuntza","Tahitian":"Maoriera","Tamil":"Tamilera","Tatar":"Tatarera","Telugu":"Telugu","Tajik":"Tajikera","Tagalog":"Tagaloa","Thai":"Thailandiera","Tigrinya":"Tigrinyera","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Tonga irlak)","Tswana":"Tswanera","Tsonga":"Tsongera","Turkmen":"Turkmenera","Turkish":"Turkiera","Twi":"Twi","Uighur":"Uigurrera","Ukrainian":"Ukrainera","Urdu":"Urduera","Uzbek":"Uzbekera","Venda":"Vendera","Vietnamese":"Vietnamera","Walloon":"Valoniera","Wolof":"Wolofera","Xhosa":"Xhosera","Yiddish":"Yiddish","Yoruba":"Jorubera","Zhuang":"Zhuang","Chinese":"Txinera","Zulu":"Zuluera"} \ No newline at end of file diff --git a/client/src/locale/target/server_fr_FR.json b/client/src/locale/target/server_fr_FR.json index f575556a2..505ddcf6a 100644 --- a/client/src/locale/target/server_fr_FR.json +++ b/client/src/locale/target/server_fr_FR.json @@ -1 +1 @@ -{"Music":"Musiques","Films":"Films","Vehicles":"Transport","Art":"Art","Sports":"Sports","Travels":"Voyages","Gaming":"Jeux vidéos","People":"Personnalités","Comedy":"Humour","Entertainment":"Divertissement","News":"Actualités","How To":"Tutoriels","Education":"Éducation","Activism":"Militantisme","Science & Technology":"Science & Technologie","Animals":"Animaux","Kids":"Enfants","Food":"Cuisine","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Partage dans les mêmes conditions","Attribution - No Derivatives":"Attribution - Pas d’œuvre dérivée","Attribution - Non Commercial":"Attribution - Utilisation non commerciale","Attribution - Non Commercial - Share Alike":"Attribution - Utilisation non commerciale - Partage dans les mêmes conditions","Attribution - Non Commercial - No Derivatives":"Attribution - Utilisation non commerciale - Pas d’œuvre dérivée","Public Domain Dedication":"Domaine public","Public":"Publique","Unlisted":"Non listée","Private":"Privée","Published":"Publiée","To transcode":"À transcoder","To import":"À importer","Pending":"En cours","Success":"Succès","Failed":"Échoué","Misc":"Divers","Unknown":"Inconnu","Afar":"Afar","Abkhazian":"Abkhaze","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharique","Arabic":"Arabe","Aragonese":"Aragonais","American Sign Language":"Langue des signes américaine","Assamese":"Assamais","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azéri","Bashkir":"Bachkir","Bambara":"Bambara","Belarusian":"Biélorusse","Bengali":"Bengali","British Sign Language":"Langue des signes britannique","Bislama":"Bichlamar","Tibetan":"Tibétain","Bosnian":"Bosniaque","Breton":"Breton","Bulgarian":"Bulgare","Brazilian Sign Language":"Langue des signes brésilienne","Catalan":"Catalan","Czech":"Tchèque","Chamorro":"Chamorro","Chechen":"Tchétchène","Chuvash":"Tchouvache","Cornish":"Cornique","Corsican":"Corse","Cree":"Cree","Czech Sign Language":"Langue des signes tchèque","Chinese Sign Language":"Langue des signes chinoise","Welsh":"Gallois","Danish":"Danois","German":"Allemand","Dhivehi":"Maldivien","Danish Sign Language":"Langue des signes danoise","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grec moderne (après 1453)","English":"Anglais","Esperanto":"Espéranto","Estonian":"Estonien","Basque":"Basque","Ewe":"Éwé","Faroese":"Féroïen","Persian":"Persan","Fijian":"Fidjien","Finnish":"Finnois","French":"Français","Western Frisian":"Frison occidental","French Sign Language":"Langue des signes française","Fulah":"Peul","Scottish Gaelic":"Gaélique","Irish":"Irlandais","Galician":"Galicien","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Langue des signes allemande","Gujarati":"Goudjrati","Haitian":"Haïtien","Hausa":"Haoussa","Serbo-Croatian":"Serbo-croate","Hebrew":"Hébreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croate","Hungarian":"Hongrois","Armenian":"Arménien","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonésien","Inupiaq":"Inupiaq","Icelandic":"Islandais","Italian":"Italien","Javanese":"Javanais","Lojban":"Lojban","Japanese":"Japonais","Japanese Sign Language":"Langue des signes japonaise","Kalaallisut":"Groenlandais","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Géorgien","Kanuri":"Kanouri","Kazakh":"Kazakh","Khmer":"Khmer central","Kikuyu":"Kikuyu","Kinyarwanda":"Rwanda","Kirghiz":"Kirghiz","Komi":"Kom","Kongo":"Kongo","Korean":"Coréen","Kuanyama":"Kuanyama","Kurdish":"Kurde","Lao":"Lao","Latvian":"Letton","Limburgan":"Limbourgeois","Lingala":"Lingala","Lithuanian":"Lituanien","Luxembourgish":"Luxembourgeois","Luba-Katanga":"Luba-katanga","Ganda":"Ganda","Marshallese":"Marshall","Malayalam":"Malayalam","Marathi":"Marathe","Macedonian":"Macédonien","Malagasy":"Malgache","Maltese":"Maltais","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malais","Burmese":"Birman","Nauru":"Nauruan","Navajo":"Navaho","South Ndebele":"Ndébélé du Sud","North Ndebele":"Ndébélé du Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Népalais","Dutch":"Néerlandais","Norwegian Nynorsk":"Norvégien nynorsk","Norwegian Bokmål":"Norvégien bokmål","Norwegian":"Norvégien","Nyanja":"Chichewa","Occitan":"Occitane","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Galla","Ossetian":"Ossète","Panjabi":"Pendjabi","Pakistan Sign Language":"Langue des signes pakistanaise","Polish":"Polonais","Portuguese":"Portugais","Pushto":"Pachto","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Roumain","Russian Sign Language":"Langue des signes russe","Rundi":"Rundi","Russian":"Russe","Sango":"Sango","Saudi Arabian Sign Language":"Langue des signes saoudienne","South African Sign Language":"Langue des signes sud-africaine","Sinhala":"Singhalais","Slovak":"Slovaque","Slovenian":"Slovène","Northern Sami":"Sami du Nord","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho du Sud","Spanish":"Espagnol","Albanian":"Albanais","Sardinian":"Sarde","Serbian":"Serbe","Swati":"Swati","Sundanese":"Soundanais","Swahili (macrolanguage)":"Swahili","Swedish":"Suédois","Swedish Sign Language":"Langue des signes suédoise","Tahitian":"Tahitien","Tamil":"Tamoul","Tatar":"Tatar","Telugu":"Télougou","Tajik":"Tadjik","Tagalog":"Tagalog","Thai":"Thaï","Tigrinya":"Tigrigna","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongan (Îles Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turkmène","Turkish":"Turc","Twi":"Twi","Uighur":"Ouïgour","Ukrainian":"Ukrainien","Urdu":"Ourdou","Uzbek":"Ouszbek","Venda":"Venda","Vietnamese":"Vietnamien","Walloon":"Wallon","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinois","Zulu":"Zoulou"} \ No newline at end of file +{"Music":"Musiques","Films":"Films","Vehicles":"Transport","Art":"Art","Sports":"Sports","Travels":"Voyages","Gaming":"Jeux vidéos","People":"Personnalités","Comedy":"Humour","Entertainment":"Divertissement","How To":"Tutoriels","Education":"Éducation","Activism":"Militantisme","Science & Technology":"Science & Technologie","Animals":"Animaux","Kids":"Enfants","Food":"Cuisine","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Partage dans les mêmes conditions","Attribution - No Derivatives":"Attribution - Pas d’œuvre dérivée","Attribution - Non Commercial":"Attribution - Utilisation non commerciale","Attribution - Non Commercial - Share Alike":"Attribution - Utilisation non commerciale - Partage dans les mêmes conditions","Attribution - Non Commercial - No Derivatives":"Attribution - Utilisation non commerciale - Pas d’œuvre dérivée","Public Domain Dedication":"Domaine public","Public":"Publique","Unlisted":"Non listée","Private":"Privée","Published":"Publiée","To transcode":"À transcoder","To import":"À importer","Pending":"En cours","Success":"Succès","Failed":"Échoué","Misc":"Divers","Unknown":"Inconnu","Afar":"Afar","Abkhazian":"Abkhaze","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharique","Arabic":"Arabe","Aragonese":"Aragonais","American Sign Language":"Langue des signes américaine","Assamese":"Assamais","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azéri","Bashkir":"Bachkir","Bambara":"Bambara","Belarusian":"Biélorusse","Bengali":"Bengali","British Sign Language":"Langue des signes britannique","Bislama":"Bichlamar","Tibetan":"Tibétain","Bosnian":"Bosniaque","Breton":"Breton","Bulgarian":"Bulgare","Brazilian Sign Language":"Langue des signes brésilienne","Catalan":"Catalan","Czech":"Tchèque","Chamorro":"Chamorro","Chechen":"Tchétchène","Chuvash":"Tchouvache","Cornish":"Cornique","Corsican":"Corse","Cree":"Cree","Czech Sign Language":"Langue des signes tchèque","Chinese Sign Language":"Langue des signes chinoise","Welsh":"Gallois","Danish":"Danois","German":"Allemand","Dhivehi":"Maldivien","Danish Sign Language":"Langue des signes danoise","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grec moderne (après 1453)","English":"Anglais","Esperanto":"Espéranto","Estonian":"Estonien","Basque":"Basque","Ewe":"Éwé","Faroese":"Féroïen","Persian":"Persan","Fijian":"Fidjien","Finnish":"Finnois","French":"Français","Western Frisian":"Frison occidental","French Sign Language":"Langue des signes française","Fulah":"Peul","Scottish Gaelic":"Gaélique","Irish":"Irlandais","Galician":"Galicien","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Langue des signes allemande","Gujarati":"Goudjrati","Haitian":"Haïtien","Hausa":"Haoussa","Serbo-Croatian":"Serbo-croate","Hebrew":"Hébreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croate","Hungarian":"Hongrois","Armenian":"Arménien","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonésien","Inupiaq":"Inupiaq","Icelandic":"Islandais","Italian":"Italien","Javanese":"Javanais","Lojban":"Lojban","Japanese":"Japonais","Japanese Sign Language":"Langue des signes japonaise","Kalaallisut":"Groenlandais","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Géorgien","Kanuri":"Kanouri","Kazakh":"Kazakh","Khmer":"Khmer central","Kikuyu":"Kikuyu","Kinyarwanda":"Rwanda","Kirghiz":"Kirghiz","Komi":"Kom","Kongo":"Kongo","Korean":"Coréen","Kuanyama":"Kuanyama","Kurdish":"Kurde","Lao":"Lao","Latvian":"Letton","Limburgan":"Limbourgeois","Lingala":"Lingala","Lithuanian":"Lituanien","Luxembourgish":"Luxembourgeois","Luba-Katanga":"Luba-katanga","Ganda":"Ganda","Marshallese":"Marshall","Malayalam":"Malayalam","Marathi":"Marathe","Macedonian":"Macédonien","Malagasy":"Malgache","Maltese":"Maltais","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malais","Burmese":"Birman","Nauru":"Nauruan","Navajo":"Navaho","South Ndebele":"Ndébélé du Sud","North Ndebele":"Ndébélé du Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Népalais","Dutch":"Néerlandais","Norwegian Nynorsk":"Norvégien nynorsk","Norwegian Bokmål":"Norvégien bokmål","Norwegian":"Norvégien","Nyanja":"Chichewa","Occitan":"Occitane","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Galla","Ossetian":"Ossète","Panjabi":"Pendjabi","Pakistan Sign Language":"Langue des signes pakistanaise","Polish":"Polonais","Portuguese":"Portugais","Pushto":"Pachto","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Roumain","Russian Sign Language":"Langue des signes russe","Rundi":"Rundi","Russian":"Russe","Sango":"Sango","Saudi Arabian Sign Language":"Langue des signes saoudienne","South African Sign Language":"Langue des signes sud-africaine","Sinhala":"Singhalais","Slovak":"Slovaque","Slovenian":"Slovène","Northern Sami":"Sami du Nord","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho du Sud","Spanish":"Espagnol","Albanian":"Albanais","Sardinian":"Sarde","Serbian":"Serbe","Swati":"Swati","Sundanese":"Soundanais","Swahili (macrolanguage)":"Swahili","Swedish":"Suédois","Swedish Sign Language":"Langue des signes suédoise","Tahitian":"Tahitien","Tamil":"Tamoul","Tatar":"Tatar","Telugu":"Télougou","Tajik":"Tadjik","Tagalog":"Tagalog","Thai":"Thaï","Tigrinya":"Tigrigna","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongan (Îles Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turkmène","Turkish":"Turc","Twi":"Twi","Uighur":"Ouïgour","Ukrainian":"Ukrainien","Urdu":"Ourdou","Uzbek":"Ouszbek","Venda":"Venda","Vietnamese":"Vietnamien","Walloon":"Wallon","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinois","Zulu":"Zoulou"} \ No newline at end of file diff --git a/client/src/locale/target/server_gl_ES.xml b/client/src/locale/target/server_gl_ES.xml index 33aaf78dd..6ae3a16b4 100644 --- a/client/src/locale/target/server_gl_ES.xml +++ b/client/src/locale/target/server_gl_ES.xml @@ -43,10 +43,6 @@ Entertainment Entretemento - - News - Novas - How To Manuais diff --git a/client/src/locale/target/server_nl_NL.xml b/client/src/locale/target/server_nl_NL.xml index 7e7ce8f08..797d022c5 100644 --- a/client/src/locale/target/server_nl_NL.xml +++ b/client/src/locale/target/server_nl_NL.xml @@ -43,10 +43,6 @@ Entertainment Entertainment - - News - Nieuws - How To Tutorials diff --git a/client/src/locale/target/server_oc.json b/client/src/locale/target/server_oc.json index 09f7b3d7f..ba6be7139 100644 --- a/client/src/locale/target/server_oc.json +++ b/client/src/locale/target/server_oc.json @@ -1 +1 @@ -{"Music":"Musica","Films":"Films","Vehicles":"Veituras","Art":"Art","Sports":"Espòrts","Travels":"Viatges","Gaming":"Vidèo jòc","People":"Gent","Comedy":"Comèdia","Entertainment":"Léser ","News":"Actualitat","How To":"Demonstracions","Education":"Educacion","Activism":"Activisme","Science & Technology":"Sciéncia & Tecnologia","Animals":"Animals","Kids":"Mainatges","Food":"Manjar","Attribution":"Atribucion","Attribution - Share Alike":"Atribucion - Partejar a l’identic","Attribution - No Derivatives":"Atribucion - Cap de derivacion","Attribution - Non Commercial":"Atribucion - Pas comercial","Attribution - Non Commercial - Share Alike":"Atribucion - Pas comercial - Partejar a l’identic","Attribution - Non Commercial - No Derivatives":"Atribucion - Pas comercial - Cap de derivacion","Public Domain Dedication":"Domeni public","Public":"Public","Unlisted":"Pas listat","Private":"Privat","Published":"Publicada","To transcode":"De transcodar","To import":"D’importar","Pending":"En espèra","Success":"Reüssida","Failed":"Fracàs","Misc":"Divèrs","Unknown":"Desconegut","Afar":"Afar","Abkhazian":"Abcaz","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharic","Arabic":"Arabi","Aragonese":"Aragonés","American Sign Language":"Lenga de signes americana","Assamese":"Assamés","Avaric":"Avaric","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azèri","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalin","British Sign Language":"Lenga de signes britanica","Bislama":"Bislama","Tibetan":"Tibetan","Bosnian":"Bosnian","Breton":"Breton","Bulgarian":"Bulgar","Brazilian Sign Language":"Lenga de signes brasiliana","Catalan":"Catalan","Czech":"Chèc","Chamorro":"Chamorro","Chechen":"Chenchèn","Chuvash":"Chuvash","Cornish":"Cornic","Corsican":"Còrs","Cree":"Cree","Czech Sign Language":"Lenga de signes chèca","Chinese Sign Language":"Lenga de signes chinesa","Welsh":"Galés","Danish":"Danés","German":"Alemand","Danish Sign Language":"Lenga de signes danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grèc","English":"Anglés","Esperanto":"Esperanto","Estonian":"Estonian","Basque":"Basc","Ewe":"Ewe","Faroese":"Faroés","Persian":"Persan","Fijian":"Fijian","Finnish":"Finés","French":"Francés","Western Frisian":"Frison occitendal","French Sign Language":"Lenga de signes francesa","Fulah":"Fulah","Scottish Gaelic":"Gaelic escossés","Irish":"Irlandés","Galician":"Galician","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenga de signes alemanda","Gujarati":"Gujarati","Haitian":"Haitian","Hausa":"Hausa","Serbo-Croatian":"Sèrbocroat","Hebrew":"Ebrieu","Herero":"Herero","Hindi":"Indi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Ongrés","Armenian":"Armèni","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupiaq","Icelandic":"Islandés","Italian":"Italian","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenga de signes japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Georgian":"Georgian","Kanuri":"Kanuri","Kazakh":"Cazac","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Kongo","Korean":"Corean","Kuanyama":"Kuanyama","Kurdish":"Curd","Lao":"Laosian","Latvian":"Leton","Limburgan":"Limborgués","Lingala":"Lingala","Lithuanian":"Lituanian","Luxembourgish":"Luxemborgés","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallés","Marathi":"Marathi","Macedonian":"Macedonian","Malagasy":"Malgash","Maltese":"Maltés","Mongolian":"Mongòl","Maori":"Maòri","Malay (macrolanguage)":"Malai (macrolengatge)","Burmese":"Birman","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nòrd","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali (macrolengatge)","Dutch":"Neerlandés","Norwegian Nynorsk":"Norvegian Nynorsk","Norwegian Bokmål":"Norvegian","Norwegian":"Norwegian","Nyanja":"Nyanja","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolengatge)","Oromo":"Oromo","Panjabi":"Panjabi","Polish":"Polonés","Portuguese":"Portugués","Pushto":"Pushto","Quechua":"Quíchoa","Romansh":"Romanch","Romanian":"Romanés","Russian Sign Language":"Lenga de signes russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","South African Sign Language":"Lenga de signes d’Africa del Sud","Sinhala":"Singalés","Slovak":"Eslovac","Slovenian":"Eslovèn","Northern Sami":"Sami septentrional","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho meridional","Spanish":"Espanhòl","Albanian":"Albanés","Sardinian":"Sard","Serbian":"Sèrbe","Swati":"Swati","Sundanese":"Sodanés","Swahili (macrolanguage)":"Swahili (macrolengatge)","Swedish":"Suedés","Swedish Sign Language":"Lenga de signes suedesa","Tahitian":"Tahician","Tamil":"Tamil","Tatar":"Tatar","Telugu":"Telugu","Tajik":"Tajik","Tagalog":"Tagalòg","Thai":"Tailandés","Tigrinya":"Tigrinya","Klingon":"Klingon","Tonga (Tonga Islands)":"Tònga (islas Tònga)","Tswana":"Tswana","Turkmen":"Turcmèn","Turkish":"Turc","Uighur":"Oigors","Ukrainian":"Ucraïnian","Urdu":"Ordo","Uzbek":"Uzbec","Venda":"Venda","Vietnamese":"Vietnamian","Walloon":"Valon","Wolof":"Wolòf","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinés","Zulu":"Zulu"} \ No newline at end of file +{"Music":"Musica","Films":"Films","Vehicles":"Veituras","Art":"Art","Sports":"Espòrts","Travels":"Viatges","Gaming":"Vidèo jòc","People":"Gent","Comedy":"Comèdia","Entertainment":"Léser ","How To":"Demonstracions","Education":"Educacion","Activism":"Activisme","Science & Technology":"Sciéncia & Tecnologia","Animals":"Animals","Kids":"Mainatges","Food":"Manjar","Attribution":"Atribucion","Attribution - Share Alike":"Atribucion - Partejar a l’identic","Attribution - No Derivatives":"Atribucion - Cap de derivacion","Attribution - Non Commercial":"Atribucion - Pas comercial","Attribution - Non Commercial - Share Alike":"Atribucion - Pas comercial - Partejar a l’identic","Attribution - Non Commercial - No Derivatives":"Atribucion - Pas comercial - Cap de derivacion","Public Domain Dedication":"Domeni public","Public":"Public","Unlisted":"Pas listat","Private":"Privat","Published":"Publicada","To transcode":"De transcodar","To import":"D’importar","Pending":"En espèra","Success":"Reüssida","Failed":"Fracàs","Misc":"Divèrs","Unknown":"Desconegut","Afar":"Afar","Abkhazian":"Abcaz","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharic","Arabic":"Arabi","Aragonese":"Aragonés","American Sign Language":"Lenga de signes americana","Assamese":"Assamés","Avaric":"Avaric","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azèri","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalin","British Sign Language":"Lenga de signes britanica","Bislama":"Bislama","Tibetan":"Tibetan","Bosnian":"Bosnian","Breton":"Breton","Bulgarian":"Bulgar","Brazilian Sign Language":"Lenga de signes brasiliana","Catalan":"Catalan","Czech":"Chèc","Chamorro":"Chamorro","Chechen":"Chenchèn","Chuvash":"Chuvash","Cornish":"Cornic","Corsican":"Còrs","Cree":"Cree","Czech Sign Language":"Lenga de signes chèca","Chinese Sign Language":"Lenga de signes chinesa","Welsh":"Galés","Danish":"Danés","German":"Alemand","Dhivehi":"Maldivian","Danish Sign Language":"Lenga de signes danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grèc","English":"Anglés","Esperanto":"Esperanto","Estonian":"Estonian","Basque":"Basc","Ewe":"Ewe","Faroese":"Faroés","Persian":"Persan","Fijian":"Fijian","Finnish":"Finés","French":"Francés","Western Frisian":"Frison occitendal","French Sign Language":"Lenga de signes francesa","Fulah":"Fulah","Scottish Gaelic":"Gaelic escossés","Irish":"Irlandés","Galician":"Galician","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenga de signes alemanda","Gujarati":"Gujarati","Haitian":"Haitian","Hausa":"Hausa","Serbo-Croatian":"Sèrbocroat","Hebrew":"Ebrieu","Herero":"Herero","Hindi":"Indi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Ongrés","Armenian":"Armèni","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupiaq","Icelandic":"Islandés","Italian":"Italian","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenga de signes japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cashmiri","Georgian":"Georgian","Kanuri":"Kanuri","Kazakh":"Cazac","Khmer":"Cmèr","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Kongo","Korean":"Corean","Kuanyama":"Kuanyama","Kurdish":"Curd","Lao":"Laosian","Latvian":"Leton","Limburgan":"Limborgués","Lingala":"Lingala","Lithuanian":"Lituanian","Luxembourgish":"Luxemborgés","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallés","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedonian","Malagasy":"Malgash","Maltese":"Maltés","Mongolian":"Mongòl","Maori":"Maòri","Malay (macrolanguage)":"Malai (macrolengatge)","Burmese":"Birman","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nòrd","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali (macrolengatge)","Dutch":"Neerlandés","Norwegian Nynorsk":"Norvegian Nynorsk","Norwegian Bokmål":"Norvegian","Norwegian":"Norwegian","Nyanja":"Nyanja","Occitan":"Occitan","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolengatge)","Oromo":"Oromo","Ossetian":"Ossèt","Panjabi":"Panjabi","Pakistan Sign Language":"Lenga de signes de Paquistan","Polish":"Polonés","Portuguese":"Portugués","Pushto":"Pushto","Quechua":"Quíchoa","Romansh":"Romanch","Romanian":"Romanés","Russian Sign Language":"Lenga de signes russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Lenga de signes d'Arabia Saudita","South African Sign Language":"Lenga de signes d’Africa del Sud","Sinhala":"Singalés","Slovak":"Eslovac","Slovenian":"Eslovèn","Northern Sami":"Sami septentrional","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho meridional","Spanish":"Espanhòl","Albanian":"Albanés","Sardinian":"Sard","Serbian":"Sèrbe","Swati":"Swati","Sundanese":"Sodanés","Swahili (macrolanguage)":"Swahili (macrolengatge)","Swedish":"Suedés","Swedish Sign Language":"Lenga de signes suedesa","Tahitian":"Tahician","Tamil":"Tamil","Tatar":"Tatar","Telugu":"Telugu","Tajik":"Tajik","Tagalog":"Tagalòg","Thai":"Tailandés","Tigrinya":"Tigrinya","Klingon":"Klingon","Tonga (Tonga Islands)":"Tònga (islas Tònga)","Tswana":"Tswana","Tsonga":"Tsònga","Turkmen":"Turcmèn","Turkish":"Turc","Twi":"Toï","Uighur":"Oigors","Ukrainian":"Ucraïnian","Urdu":"Ordo","Uzbek":"Uzbec","Venda":"Venda","Vietnamese":"Vietnamian","Walloon":"Valon","Wolof":"Wolòf","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinés","Zulu":"Zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_pl_PL.xml b/client/src/locale/target/server_pl_PL.xml index 30b403986..f5ce3f9ad 100644 --- a/client/src/locale/target/server_pl_PL.xml +++ b/client/src/locale/target/server_pl_PL.xml @@ -43,10 +43,6 @@ Entertainment Rozrywka - - News - Wiadomości - How To Poradniki diff --git a/client/src/locale/target/server_pt_BR.json b/client/src/locale/target/server_pt_BR.json index 375da1829..2bfcbaa59 100644 --- a/client/src/locale/target/server_pt_BR.json +++ b/client/src/locale/target/server_pt_BR.json @@ -1 +1 @@ -{"Music":"Músicas","Films":"Filmes","Vehicles":"Veículos","Art":"Arte","Sports":"Esportes","Travels":"Viagens","Gaming":"Jogos","People":"Pessoas","Comedy":"Comédia","Entertainment":"Entretenimento","News":"Notícias","How To":"Como fazer","Education":"Educação","Activism":"Ativismo","Science & Technology":"Ciência & Tecnologia","Animals":"Animais","Kids":"Infantil","Food":"Comida","Attribution":"Atribuição","Attribution - Share Alike":"Atribuição - Compartilha Igual","Attribution - No Derivatives":"Atribuição - Sem Derivações","Attribution - Non Commercial":"Atribuição - Não Comercial","Attribution - Non Commercial - Share Alike":"Atribuição - Não Comercial - Compartilha Igual","Attribution - Non Commercial - No Derivatives":"Atribuição - Não Comercial - Sem Derivações","Public Domain Dedication":"Dedicação para Domínio Público","Public":"Público","Unlisted":"Não listado","Private":"Privado","Published":"Publicado","To transcode":"Para transcodificar","To import":"Para importar","Pending":"Pendente","Success":"Sucesso","Failed":"Falhou","Misc":"Diversos","Unknown":"Desconhecido","Afar":"Afar","Abkhazian":"Abcázio","Afrikaans":"Africâner","Akan":"Akan","Amharic":"Amárico","Arabic":"Árabe","Aragonese":"Aragonês","American Sign Language":"Língua de sinais americana","Assamese":"Assamês","Avaric":"Avárico","Kotava":"Coreano","Aymara":"Aimará","Azerbaijani":"Azerbaidjano","Bashkir":"Basquir","Bambara":"Bambara","Belarusian":"Bielorusso","Bengali":"Bengali","British Sign Language":"Língua de sinais britânica","Bislama":"Bislamá","Tibetan":"Tibetano","Bosnian":"Bósnio","Breton":"Bretão","Bulgarian":"Búlgaro","Brazilian Sign Language":"Língua de sinais brasileira","Catalan":"Catalão","Czech":"Tcheco","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Tchuvache","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Língua de sinais tcheca","Chinese Sign Language":"Língua de sinais chinesa","Welsh":"Galês","Danish":"Dinamarquês","German":"Alemão","Dhivehi":"Sérvio","Danish Sign Language":"Língua de sinais dinamarquesa","Dzongkha":"Butanês","Modern Greek (1453-)":"Grego, Moderno (1453-)","English":"Inglês","Esperanto":"Esperanto","Estonian":"Estoniano","Basque":"Basco","Ewe":"Jeje","Faroese":"Faroês","Persian":"Persa","Fijian":"Fidjiano","Finnish":"Finlandês","French":"Francês","Western Frisian":"Frísio ocidental","French Sign Language":"Língua de sinais francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico Escocês","Irish":"Irlandês","Galician":"Galego","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Língua de sinais alemã","Gujarati":"Gujerati","Haitian":"Italiano","Hausa":"Hauçá","Serbo-Croatian":"Croata","Hebrew":"Hebraico","Herero":"Hereró","Hindi":"Híndi","Hiri Motu":"Hiri Motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armênio","Igbo":"Ibo","Sichuan Yi":"Lituano","Inuktitut":"Inuktitut","Indonesian":"Indonésio","Inupiaq":"Inupiaque","Icelandic":"Islandês","Italian":"Italiano","Javanese":"Javanês","Lojban":"Lojban","Japanese":"Japonês","Japanese Sign Language":"Língua de sinais japonesa","Kalaallisut":"Groenlandês (Kalaallisut)","Kannada":"Canarês","Kashmiri":"Caxemira","Georgian":"Georgiano","Kanuri":"Canúri","Kazakh":"Cazaque","Khmer":"Khmer","Kikuyu":"Kikuyu","Kinyarwanda":"Ruanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Congo","Korean":"Coreano","Kuanyama":"Cuanhama","Kurdish":"Curdo","Lao":"Laosiano","Latvian":"Letão","Limburgan":"Lituano","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburguês","Luba-Katanga":"Baluba","Ganda":"Nganda","Marshallese":"Marshalês","Malayalam":"Malaiala","Marathi":"Marati","Macedonian":"Macedônio","Malagasy":"Malgaxe","Maltese":"Maltês","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malaiala (macrolíngua)","Burmese":"Birmanês","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele do Sul","North Ndebele":"Ndebele do Norte","Ndonga":"Ovampo","Nepali (macrolanguage)":"Nepalês (macrolíngua)","Dutch":"Holandês","Norwegian Nynorsk":"Norueguês Nynorsk","Norwegian Bokmål":"Norueguês Nynorsk","Norwegian":"Norueguês","Nyanja":"Lituano","Occitan":"Occitano","Ojibwa":"Obíjua","Oriya (macrolanguage)":"Oriá (macrolíngua)","Oromo":"Oromo","Ossetian":"Ossétio","Panjabi":"Panjabi","Pakistan Sign Language":"Língua de sinais paquistanesa","Polish":"Polonês","Portuguese":"Português","Pushto":"Pachto","Quechua":"Quíchua","Romansh":"Romanche","Romanian":"Romeno","Russian Sign Language":"Idiomas de Sinais","Rundi":"Kirundi","Russian":"Russo","Sango":"Sango","Saudi Arabian Sign Language":"Língua de sinais da Arábia Saudita","South African Sign Language":"Língua de sinais da África do Sul","Sinhala":"Cingalês","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami do norte","Samoan":"Samoano","Shona":"Xona","Sindhi":"Síndi","Somali":"Somali","Southern Sotho":"Soto do Sul","Spanish":"Espanhol","Albanian":"Albanês","Sardinian":"Sardo","Serbian":"Sérvio","Swati":"Swati","Sundanese":"Sundanês","Swahili (macrolanguage)":"Suaíli (macrolíngua)","Swedish":"Sueco","Swedish Sign Language":"Língua de sinais sueca","Tahitian":"Taitiano","Tamil":"Tâmil","Tatar":"Tártaro","Telugu":"Télugo","Tajik":"Tadjique","Tagalog":"Tagalo","Thai":"Tailandês","Tigrinya":"Tigrínia","Klingon":"Letão","Tonga (Tonga Islands)":"Tonga","Tswana":"Tsuana","Tsonga":"Tsonga","Turkmen":"Turcomeno","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeque","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valão","Wolof":"Uólofe","Xhosa":"Xhosa","Yiddish":"Iídiche","Yoruba":"Ioruba","Zhuang":"Zuni","Chinese":"Chinês","Zulu":"Zulu"} \ No newline at end of file +{"Music":"Músicas","Films":"Filmes","Vehicles":"Veículos","Art":"Arte","Sports":"Esportes","Travels":"Viagens","Gaming":"Jogos","People":"Pessoas","Comedy":"Comédia","Entertainment":"Entretenimento","How To":"Como fazer","Education":"Educação","Activism":"Ativismo","Science & Technology":"Ciência & Tecnologia","Animals":"Animais","Kids":"Infantil","Food":"Comida","Attribution":"Atribuição","Attribution - Share Alike":"Atribuição - Compartilha Igual","Attribution - No Derivatives":"Atribuição - Sem Derivações","Attribution - Non Commercial":"Atribuição - Não Comercial","Attribution - Non Commercial - Share Alike":"Atribuição - Não Comercial - Compartilha Igual","Attribution - Non Commercial - No Derivatives":"Atribuição - Não Comercial - Sem Derivações","Public Domain Dedication":"Dedicação para Domínio Público","Public":"Público","Unlisted":"Não listado","Private":"Privado","Published":"Publicado","To transcode":"Para transcodificar","To import":"Para importar","Pending":"Pendente","Success":"Sucesso","Failed":"Falhou","Misc":"Diversos","Unknown":"Desconhecido","Afar":"Afar","Abkhazian":"Abcázio","Afrikaans":"Africâner","Akan":"Akan","Amharic":"Amárico","Arabic":"Árabe","Aragonese":"Aragonês","American Sign Language":"Língua de sinais americana","Assamese":"Assamês","Avaric":"Avárico","Kotava":"Coreano","Aymara":"Aimará","Azerbaijani":"Azerbaidjano","Bashkir":"Basquir","Bambara":"Bambara","Belarusian":"Bielorusso","Bengali":"Bengali","British Sign Language":"Língua de sinais britânica","Bislama":"Bislamá","Tibetan":"Tibetano","Bosnian":"Bósnio","Breton":"Bretão","Bulgarian":"Búlgaro","Brazilian Sign Language":"Língua de sinais brasileira","Catalan":"Catalão","Czech":"Tcheco","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Tchuvache","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Língua de sinais tcheca","Chinese Sign Language":"Língua de sinais chinesa","Welsh":"Galês","Danish":"Dinamarquês","German":"Alemão","Dhivehi":"Sérvio","Danish Sign Language":"Língua de sinais dinamarquesa","Dzongkha":"Butanês","Modern Greek (1453-)":"Grego, Moderno (1453-)","English":"Inglês","Esperanto":"Esperanto","Estonian":"Estoniano","Basque":"Basco","Ewe":"Jeje","Faroese":"Faroês","Persian":"Persa","Fijian":"Fidjiano","Finnish":"Finlandês","French":"Francês","Western Frisian":"Frísio ocidental","French Sign Language":"Língua de sinais francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico Escocês","Irish":"Irlandês","Galician":"Galego","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Língua de sinais alemã","Gujarati":"Gujerati","Haitian":"Italiano","Hausa":"Hauçá","Serbo-Croatian":"Croata","Hebrew":"Hebraico","Herero":"Hereró","Hindi":"Híndi","Hiri Motu":"Hiri Motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armênio","Igbo":"Ibo","Sichuan Yi":"Lituano","Inuktitut":"Inuktitut","Indonesian":"Indonésio","Inupiaq":"Inupiaque","Icelandic":"Islandês","Italian":"Italiano","Javanese":"Javanês","Lojban":"Lojban","Japanese":"Japonês","Japanese Sign Language":"Língua de sinais japonesa","Kalaallisut":"Groenlandês (Kalaallisut)","Kannada":"Canarês","Kashmiri":"Caxemira","Georgian":"Georgiano","Kanuri":"Canúri","Kazakh":"Cazaque","Khmer":"Khmer","Kikuyu":"Kikuyu","Kinyarwanda":"Ruanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Congo","Korean":"Coreano","Kuanyama":"Cuanhama","Kurdish":"Curdo","Lao":"Laosiano","Latvian":"Letão","Limburgan":"Lituano","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburguês","Luba-Katanga":"Baluba","Ganda":"Nganda","Marshallese":"Marshalês","Malayalam":"Malaiala","Marathi":"Marati","Macedonian":"Macedônio","Malagasy":"Malgaxe","Maltese":"Maltês","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malaiala (macrolíngua)","Burmese":"Birmanês","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele do Sul","North Ndebele":"Ndebele do Norte","Ndonga":"Ovampo","Nepali (macrolanguage)":"Nepalês (macrolíngua)","Dutch":"Holandês","Norwegian Nynorsk":"Norueguês Nynorsk","Norwegian Bokmål":"Norueguês Nynorsk","Norwegian":"Norueguês","Nyanja":"Lituano","Occitan":"Occitano","Ojibwa":"Obíjua","Oriya (macrolanguage)":"Oriá (macrolíngua)","Oromo":"Oromo","Ossetian":"Ossétio","Panjabi":"Panjabi","Pakistan Sign Language":"Língua de sinais paquistanesa","Polish":"Polonês","Portuguese":"Português","Pushto":"Pachto","Quechua":"Quíchua","Romansh":"Romanche","Romanian":"Romeno","Russian Sign Language":"Idiomas de Sinais","Rundi":"Kirundi","Russian":"Russo","Sango":"Sango","Saudi Arabian Sign Language":"Língua de sinais da Arábia Saudita","South African Sign Language":"Língua de sinais da África do Sul","Sinhala":"Cingalês","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami do norte","Samoan":"Samoano","Shona":"Xona","Sindhi":"Síndi","Somali":"Somali","Southern Sotho":"Soto do Sul","Spanish":"Espanhol","Albanian":"Albanês","Sardinian":"Sardo","Serbian":"Sérvio","Swati":"Swati","Sundanese":"Sundanês","Swahili (macrolanguage)":"Suaíli (macrolíngua)","Swedish":"Sueco","Swedish Sign Language":"Língua de sinais sueca","Tahitian":"Taitiano","Tamil":"Tâmil","Tatar":"Tártaro","Telugu":"Télugo","Tajik":"Tadjique","Tagalog":"Tagalo","Thai":"Tailandês","Tigrinya":"Tigrínia","Klingon":"Letão","Tonga (Tonga Islands)":"Tonga","Tswana":"Tsuana","Tsonga":"Tsonga","Turkmen":"Turcomeno","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeque","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valão","Wolof":"Uólofe","Xhosa":"Xhosa","Yiddish":"Iídiche","Yoruba":"Ioruba","Zhuang":"Zuni","Chinese":"Chinês","Zulu":"Zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_sv_SE.json b/client/src/locale/target/server_sv_SE.json index 6df53199b..f0e85f139 100644 --- a/client/src/locale/target/server_sv_SE.json +++ b/client/src/locale/target/server_sv_SE.json @@ -1 +1 @@ -{"Music":"Musik","Films":"Filmer","Vehicles":"Fordon","Art":"Konst","Sports":"Sport","Travels":"Resor","Gaming":"Spel","People":"Människor","Comedy":"Komedi","Entertainment":"Underhållning","News":"Nyheter","How To":"Instruktioner","Education":"Utbildning","Activism":"Aktivism","Science & Technology":"Vetenskap och teknik","Animals":"Djur","Kids":"Barn","Food":"Mat","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Share Alike","Attribution - No Derivatives":"Attribution - No Derivatives","Attribution - Non Commercial":"Attribution - Non Commercial","Attribution - Non Commercial - Share Alike":"Attribution - Non Commercial - Share Alike","Attribution - Non Commercial - No Derivatives":"Attribution - Non Commercial - No Derivatives","Public Domain Dedication":"Public Domain Dedication","Public":"Offentlig","Unlisted":"Olistad","Private":"Privat","Published":"Publicerad","To transcode":"Att omkoda","To import":"Att importera","Pending":"I kö","Success":"Lyckades","Failed":"Misslyckades","Misc":"Diverse","Unknown":"Okänd","Afar":"afar","Abkhazian":"abchaziska","Afrikaans":"afrikaans","Akan":"akan","Amharic":"amhariska","Arabic":"arabiska","Aragonese":"aragonska","American Sign Language":"amerikanskt teckenspråk","Assamese":"assamesiska","Avaric":"avariska","Kotava":"kotava","Aymara":"aymara","Azerbaijani":"azerbajdzjanska","Bashkir":"basjkiriska","Bambara":"bambara","Belarusian":"vitryska","Bengali":"bengali","British Sign Language":"brittiskt teckenspråk","Bislama":"bislama","Tibetan":"tibetanska","Bosnian":"bosniska","Breton":"bretonska","Bulgarian":"bulgariska","Brazilian Sign Language":"brasilianskt teckenspråk","Catalan":"katalanska","Czech":"tjeckiska","Chamorro":"chamorro","Chechen":"tjetjenska","Chuvash":"tjuvasjiska","Cornish":"korniska","Corsican":"korsikanska","Cree":"cree","Czech Sign Language":"tjeckiskt teckenspråk","Chinese Sign Language":"kinesiskt teckenspråk","Welsh":"kymriska","Danish":"danska","German":"tyska","Dhivehi":"divehi","Danish Sign Language":"danskt teckenspråk","Dzongkha":"dzongkha","Modern Greek (1453-)":"modern grekiska (1453–)","English":"engelska","Esperanto":"esperanto","Estonian":"estniska","Basque":"baskiska","Ewe":"ewe","Faroese":"färöiska","Persian":"persiska","Fijian":"fijianska","Finnish":"finska","French":"franska","Western Frisian":"västfrisiska","French Sign Language":"franskt teckenspråk","Fulah":"fula","Scottish Gaelic":"skotsk gäliska","Irish":"iriska","Galician":"galiciska","Manx":"manx","Guarani":"guaraní","German Sign Language":"tyskt teckenspråk","Gujarati":"gujarati","Haitian":"haitisk kreol","Hausa":"hausa","Serbo-Croatian":"serbokroatiska","Hebrew":"hebreiska","Herero":"herero","Hindi":"hindi","Hiri Motu":"hiri motu","Croatian":"kroatiska","Hungarian":"ungerska","Armenian":"armeniska","Igbo":"igbo","Sichuan Yi":"sichuan yi","Inuktitut":"inuktitut","Indonesian":"indonesiska","Inupiaq":"iñupiaq","Icelandic":"isländska","Italian":"italienska","Javanese":"javanesiska","Lojban":"lojban","Japanese":"japanska","Japanese Sign Language":"japanskt teckenspråk","Kalaallisut":"kalaallisut","Kannada":"kannada","Kashmiri":"kashmiri","Georgian":"georgiska","Kanuri":"kanuri","Kazakh":"kazakiska","Khmer":"khmer","Kikuyu":"kikuyu","Kinyarwanda":"rwanda","Kirghiz":"kirgiziska","Komi":"komi","Kongo":"kikongo","Korean":"koreanska","Kuanyama":"kwanyama","Kurdish":"kurdiska","Lao":"lao","Latvian":"lettiska","Limburgan":"limburgiska","Lingala":"lingala","Lithuanian":"litauiska","Luxembourgish":"luxemburgiska","Luba-Katanga":"luba-katanga","Ganda":"luganda","Marshallese":"marshallesiska","Malayalam":"malayalam","Marathi":"marathi","Macedonian":"makedonska","Malagasy":"malagassiska","Maltese":"maltesiska","Mongolian":"mongoliska","Maori":"maori","Malay (macrolanguage)":"malajiska","Burmese":"burmesiska","Nauru":"nauruanska","Navajo":"navajo","South Ndebele":"sydndebele","North Ndebele":"nordndebele","Ndonga":"ndonga","Nepali (macrolanguage)":"nepali","Dutch":"nederländska","Norwegian Nynorsk":"nynorska","Norwegian Bokmål":"bokmål","Norwegian":"norska","Nyanja":"chichewa","Occitan":"occitanska","Ojibwa":"ojibwa","Oriya (macrolanguage)":"oriya","Oromo":"oromo","Ossetian":"ossetiska","Panjabi":"punjabi","Pakistan Sign Language":"pakistanskt teckenspråk","Polish":"polska","Portuguese":"portugisiska","Pushto":"pashto","Quechua":"quechua","Romansh":"rätoromanska","Romanian":"rumänska","Russian Sign Language":"ryskt teckenspråk","Rundi":"kirundi","Russian":"ryska","Sango":"sango","Saudi Arabian Sign Language":"saudiarabiskt teckenspråk","South African Sign Language":"sydafrikanskt teckenspråk","Sinhala":"singalesiska","Slovak":"slovakiska","Slovenian":"slovenska","Northern Sami":"nordsamiska","Samoan":"samoanska","Shona":"shona","Sindhi":"sindhi","Somali":"somaliska","Southern Sotho":"sesotho","Spanish":"spanska","Albanian":"albanska","Sardinian":"sardiska","Serbian":"serbiska","Swati":"siSwati","Sundanese":"sundanesiska","Swahili (macrolanguage)":"swahili","Swedish":"svenska","Swedish Sign Language":"svenskt teckenspråk","Tahitian":"tahitiska","Tamil":"tamil","Tatar":"tatariska","Telugu":"telugu","Tajik":"tadzjikiska","Tagalog":"tagalog","Thai":"thai","Tigrinya":"tigrinska","Klingon":"klingon","Tonga (Tonga Islands)":"tonganska","Tswana":"setswana","Tsonga":"tsonga","Turkmen":"turkmeniska","Turkish":"turkiska","Twi":"twi","Uighur":"uiguriska","Ukrainian":"ukrainska","Urdu":"urdu","Uzbek":"uzbekiska","Venda":"venda","Vietnamese":"vietnamesiska","Walloon":"vallonska","Wolof":"wolof","Xhosa":"xhosa","Yiddish":"jiddisch","Yoruba":"yoruba","Zhuang":"zhuang","Chinese":"kinesiska","Zulu":"zulu"} \ No newline at end of file +{"Music":"Musik","Films":"Filmer","Vehicles":"Fordon","Art":"Konst","Sports":"Sport","Travels":"Resor","Gaming":"Spel","People":"Människor","Comedy":"Komedi","Entertainment":"Underhållning","How To":"Instruktioner","Education":"Utbildning","Activism":"Aktivism","Science & Technology":"Vetenskap och teknik","Animals":"Djur","Kids":"Barn","Food":"Mat","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Share Alike","Attribution - No Derivatives":"Attribution - No Derivatives","Attribution - Non Commercial":"Attribution - Non Commercial","Attribution - Non Commercial - Share Alike":"Attribution - Non Commercial - Share Alike","Attribution - Non Commercial - No Derivatives":"Attribution - Non Commercial - No Derivatives","Public Domain Dedication":"Public Domain Dedication","Public":"Offentlig","Unlisted":"Olistad","Private":"Privat","Published":"Publicerad","To transcode":"Att omkoda","To import":"Att importera","Pending":"I kö","Success":"Lyckades","Failed":"Misslyckades","Misc":"Diverse","Unknown":"Okänd","Afar":"afar","Abkhazian":"abchaziska","Afrikaans":"afrikaans","Akan":"akan","Amharic":"amhariska","Arabic":"arabiska","Aragonese":"aragonska","American Sign Language":"amerikanskt teckenspråk","Assamese":"assamesiska","Avaric":"avariska","Kotava":"kotava","Aymara":"aymara","Azerbaijani":"azerbajdzjanska","Bashkir":"basjkiriska","Bambara":"bambara","Belarusian":"vitryska","Bengali":"bengali","British Sign Language":"brittiskt teckenspråk","Bislama":"bislama","Tibetan":"tibetanska","Bosnian":"bosniska","Breton":"bretonska","Bulgarian":"bulgariska","Brazilian Sign Language":"brasilianskt teckenspråk","Catalan":"katalanska","Czech":"tjeckiska","Chamorro":"chamorro","Chechen":"tjetjenska","Chuvash":"tjuvasjiska","Cornish":"korniska","Corsican":"korsikanska","Cree":"cree","Czech Sign Language":"tjeckiskt teckenspråk","Chinese Sign Language":"kinesiskt teckenspråk","Welsh":"kymriska","Danish":"danska","German":"tyska","Dhivehi":"divehi","Danish Sign Language":"danskt teckenspråk","Dzongkha":"dzongkha","Modern Greek (1453-)":"modern grekiska (1453–)","English":"engelska","Esperanto":"esperanto","Estonian":"estniska","Basque":"baskiska","Ewe":"ewe","Faroese":"färöiska","Persian":"persiska","Fijian":"fijianska","Finnish":"finska","French":"franska","Western Frisian":"västfrisiska","French Sign Language":"franskt teckenspråk","Fulah":"fula","Scottish Gaelic":"skotsk gäliska","Irish":"iriska","Galician":"galiciska","Manx":"manx","Guarani":"guaraní","German Sign Language":"tyskt teckenspråk","Gujarati":"gujarati","Haitian":"haitisk kreol","Hausa":"hausa","Serbo-Croatian":"serbokroatiska","Hebrew":"hebreiska","Herero":"herero","Hindi":"hindi","Hiri Motu":"hiri motu","Croatian":"kroatiska","Hungarian":"ungerska","Armenian":"armeniska","Igbo":"igbo","Sichuan Yi":"sichuan yi","Inuktitut":"inuktitut","Indonesian":"indonesiska","Inupiaq":"iñupiaq","Icelandic":"isländska","Italian":"italienska","Javanese":"javanesiska","Lojban":"lojban","Japanese":"japanska","Japanese Sign Language":"japanskt teckenspråk","Kalaallisut":"kalaallisut","Kannada":"kannada","Kashmiri":"kashmiri","Georgian":"georgiska","Kanuri":"kanuri","Kazakh":"kazakiska","Khmer":"khmer","Kikuyu":"kikuyu","Kinyarwanda":"rwanda","Kirghiz":"kirgiziska","Komi":"komi","Kongo":"kikongo","Korean":"koreanska","Kuanyama":"kwanyama","Kurdish":"kurdiska","Lao":"lao","Latvian":"lettiska","Limburgan":"limburgiska","Lingala":"lingala","Lithuanian":"litauiska","Luxembourgish":"luxemburgiska","Luba-Katanga":"luba-katanga","Ganda":"luganda","Marshallese":"marshallesiska","Malayalam":"malayalam","Marathi":"marathi","Macedonian":"makedonska","Malagasy":"malagassiska","Maltese":"maltesiska","Mongolian":"mongoliska","Maori":"maori","Malay (macrolanguage)":"malajiska","Burmese":"burmesiska","Nauru":"nauruanska","Navajo":"navajo","South Ndebele":"sydndebele","North Ndebele":"nordndebele","Ndonga":"ndonga","Nepali (macrolanguage)":"nepali","Dutch":"nederländska","Norwegian Nynorsk":"nynorska","Norwegian Bokmål":"bokmål","Norwegian":"norska","Nyanja":"chichewa","Occitan":"occitanska","Ojibwa":"ojibwa","Oriya (macrolanguage)":"oriya","Oromo":"oromo","Ossetian":"ossetiska","Panjabi":"punjabi","Pakistan Sign Language":"pakistanskt teckenspråk","Polish":"polska","Portuguese":"portugisiska","Pushto":"pashto","Quechua":"quechua","Romansh":"rätoromanska","Romanian":"rumänska","Russian Sign Language":"ryskt teckenspråk","Rundi":"kirundi","Russian":"ryska","Sango":"sango","Saudi Arabian Sign Language":"saudiarabiskt teckenspråk","South African Sign Language":"sydafrikanskt teckenspråk","Sinhala":"singalesiska","Slovak":"slovakiska","Slovenian":"slovenska","Northern Sami":"nordsamiska","Samoan":"samoanska","Shona":"shona","Sindhi":"sindhi","Somali":"somaliska","Southern Sotho":"sesotho","Spanish":"spanska","Albanian":"albanska","Sardinian":"sardiska","Serbian":"serbiska","Swati":"siSwati","Sundanese":"sundanesiska","Swahili (macrolanguage)":"swahili","Swedish":"svenska","Swedish Sign Language":"svenskt teckenspråk","Tahitian":"tahitiska","Tamil":"tamil","Tatar":"tatariska","Telugu":"telugu","Tajik":"tadzjikiska","Tagalog":"tagalog","Thai":"thai","Tigrinya":"tigrinska","Klingon":"klingon","Tonga (Tonga Islands)":"tonganska","Tswana":"setswana","Tsonga":"tsonga","Turkmen":"turkmeniska","Turkish":"turkiska","Twi":"twi","Uighur":"uiguriska","Ukrainian":"ukrainska","Urdu":"urdu","Uzbek":"uzbekiska","Venda":"venda","Vietnamese":"vietnamesiska","Walloon":"vallonska","Wolof":"wolof","Xhosa":"xhosa","Yiddish":"jiddisch","Yoruba":"yoruba","Zhuang":"zhuang","Chinese":"kinesiska","Zulu":"zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_zh_Hans_CN.json b/client/src/locale/target/server_zh_Hans_CN.json index 1ba54d276..4d54f364e 100644 --- a/client/src/locale/target/server_zh_Hans_CN.json +++ b/client/src/locale/target/server_zh_Hans_CN.json @@ -1 +1 @@ -{"Music":"音乐","Films":"电影","Vehicles":"汽车","Art":"艺术","Sports":"体育","Travels":"旅游","Gaming":"游戏","People":"人物","Comedy":"喜剧","Entertainment":"娱乐","News":"新闻","How To":"教程","Education":"教育","Activism":"社会活动","Science & Technology":"科学和技术","Animals":"动物","Kids":"儿童","Food":"美食","Attribution":"署名","Attribution - Share Alike":"署名 - 相同方式共享","Attribution - No Derivatives":"署名 - 禁止演绎","Attribution - Non Commercial":"署名 - 非商业性使用","Attribution - Non Commercial - Share Alike":"署名 - 非商业性使用 - 相同方式共享","Attribution - Non Commercial - No Derivatives":"署名 - 非商业性使用 - 禁止演绎","Public Domain Dedication":"公共领域贡献","Public":"公开","Unlisted":"不公开","Private":"私享","Published":"已发布","To transcode":"转码中","To import":"导入中","Pending":"等待中","Success":"成功","Failed":"失败","Misc":"杂项","Unknown":"未知","Afar":"阿法尔语","Abkhazian":"阿布哈兹语","Afrikaans":"阿非利堪斯语","Akan":"阿坎语","Amharic":"阿姆哈拉语","Arabic":"阿拉伯语","Aragonese":"阿拉贡语","American Sign Language":"美国手语","Assamese":"阿萨姆语","Avaric":"阿瓦尔语","Kotava":"科塔瓦语","Aymara":"艾马拉语","Azerbaijani":"阿塞拜疆语","Bashkir":"巴什基尔语","Bambara":"班巴拉语","Belarusian":"白俄罗斯语","Bengali":"孟加拉语","British Sign Language":"英国手语","Bislama":"比斯拉玛语","Tibetan":"藏语","Bosnian":"波斯尼亚语","Breton":"布列塔尼语","Bulgarian":"保加利亚语","Brazilian Sign Language":"巴西手语","Catalan":"加泰隆语","Czech":"捷克语","Chamorro":"查莫罗语","Chechen":"车臣语","Chuvash":"楚瓦什语","Cornish":"康沃尔语","Corsican":"科西嘉语","Cree":"克里语","Czech Sign Language":"捷克手语","Chinese Sign Language":"中国手语","Welsh":"威尔士语","Danish":"丹麦语","German":"德语","Dhivehi":"迪维希语","Danish Sign Language":"丹麦手语","Dzongkha":"不丹语","Modern Greek (1453-)":"现代希腊语","English":"英语","Esperanto":"世界语","Estonian":"爱沙尼亚语","Basque":"巴斯克语","Ewe":"埃维语","Faroese":"法罗斯语","Persian":"波斯语","Fijian":"斐济语","Finnish":"芬兰语","French":"法语","Western Frisian":"弗里西亚语","French Sign Language":"法国手语","Fulah":"富拉语","Scottish Gaelic":"苏格兰盖尔语","Irish":"爱尔兰语","Galician":"加利西亚语","Manx":"马恩岛语","Guarani":"瓜拉尼语","German Sign Language":"德国手语","Gujarati":"古吉拉特语","Haitian":"海地语","Hausa":"豪萨语","Serbo-Croatian":"塞尔维亚-克罗地亚语","Hebrew":"希伯来语","Herero":"赫雷罗语","Hindi":"印地语","Hiri Motu":"希里莫图语","Croatian":"克罗地亚语","Hungarian":"匈牙利语","Armenian":"亚美尼亚语","Igbo":"伊博语","Sichuan Yi":"四川彝语","Inuktitut":"伊努伊特语","Indonesian":"印尼语","Inupiaq":"依努庇克语","Icelandic":"冰岛语","Italian":"意大利语","Javanese":"爪哇语","Lojban":"逻辑语","Japanese":"日语","Japanese Sign Language":"日本手语","Kalaallisut":"格陵兰语","Kannada":"坎纳达语","Kashmiri":"克什米尔语","Georgian":"格鲁吉亚语","Kanuri":"卡努里语","Kazakh":"哈萨克语","Khmer":"高棉语","Kikuyu":"基库尤语","Kinyarwanda":"基尼阿万达语","Kirghiz":"吉尔吉斯语","Komi":"科米语","Kongo":"刚果语","Korean":"朝鲜语","Kuanyama":"宽亚玛语","Kurdish":"库尔德语","Lao":"老挝语","Latvian":"拉脱维亚语","Limburgan":"林堡语","Lingala":"林加拉语","Lithuanian":"立陶宛语","Luxembourgish":"卢森堡语","Luba-Katanga":"卢巴-加丹加语","Ganda":"干达语","Marshallese":"马绍尔语","Malayalam":"马拉亚拉姆语","Marathi":"马拉提语","Macedonian":"马其顿语","Malagasy":"马达加斯加语","Maltese":"马耳他语","Mongolian":"蒙古语","Maori":"毛利语","Malay (macrolanguage)":"马来语(广义)","Burmese":"缅甸语","Nauru":"瑙鲁语","Navajo":"纳瓦霍语","South Ndebele":"南恩德贝勒语","North Ndebele":"北恩德贝勒语","Ndonga":"恩敦加语","Nepali (macrolanguage)":"尼泊尔语(广义)","Dutch":"荷兰语","Norwegian Nynorsk":"新挪威语","Norwegian Bokmål":"挪威布克莫尔语","Norwegian":"挪威语","Nyanja":"尼扬贾语","Occitan":"奥克西唐语","Ojibwa":"奥吉布瓦语","Oriya (macrolanguage)":"奥利亚语(广义)","Oromo":"阿芳·奥洛莫语","Ossetian":"奥塞梯语","Panjabi":"旁遮普语","Pakistan Sign Language":"巴基斯坦手语","Polish":"波兰语","Portuguese":"葡萄牙语","Pushto":"普什图语","Quechua":"凯楚亚语","Romansh":"罗曼什语","Romanian":"罗马尼亚语","Russian Sign Language":"俄罗斯手语","Rundi":"基隆迪语","Russian":"俄语","Sango":"桑戈语","Saudi Arabian Sign Language":"沙特阿拉伯手语","South African Sign Language":"南非手语","Sinhala":"僧加罗语","Slovak":"斯洛伐克语","Slovenian":"斯洛文尼亚语","Northern Sami":"北萨米语","Samoan":"萨摩亚语","Shona":"绍纳语","Sindhi":"信德语","Somali":"索马里语","Southern Sotho":"塞索托语","Spanish":"西班牙语","Albanian":"阿尔巴尼亚语","Sardinian":"撒丁语","Serbian":"塞尔维亚语","Swati":"塞斯瓦替语","Sundanese":"巽他语","Swahili (macrolanguage)":"斯瓦希里语(广义)","Swedish":"瑞典语","Swedish Sign Language":"瑞典手语","Tahitian":"塔希提语","Tamil":"泰米尔语","Tatar":"塔塔尔语","Telugu":"泰卢固语","Tajik":"塔吉克语","Tagalog":"他加禄语","Thai":"泰语","Tigrinya":"提格里尼亚语","Klingon":"克林贡语","Tonga (Tonga Islands)":"汤加语","Tswana":"塞茨瓦纳语","Tsonga":"宗加语","Turkmen":"土库曼语","Turkish":"土耳其语","Twi":"特威语","Uighur":"维吾尔语","Ukrainian":"乌克兰语","Urdu":"乌尔都语","Uzbek":"乌兹别克语","Venda":"文达语","Vietnamese":"越南语","Walloon":"沃伦语","Wolof":"沃洛夫语","Xhosa":"科萨语","Yiddish":"依地语","Yoruba":"约鲁巴语","Zhuang":"壮语","Chinese":"汉语","Zulu":"祖鲁语"} \ No newline at end of file +{"Music":"音乐","Films":"电影","Vehicles":"汽车","Art":"艺术","Sports":"体育","Travels":"旅游","Gaming":"游戏","People":"人物","Comedy":"喜剧","Entertainment":"娱乐","How To":"教程","Education":"教育","Activism":"社会活动","Science & Technology":"科学和技术","Animals":"动物","Kids":"儿童","Food":"美食","Attribution":"署名","Attribution - Share Alike":"署名 - 相同方式共享","Attribution - No Derivatives":"署名 - 禁止演绎","Attribution - Non Commercial":"署名 - 非商业性使用","Attribution - Non Commercial - Share Alike":"署名 - 非商业性使用 - 相同方式共享","Attribution - Non Commercial - No Derivatives":"署名 - 非商业性使用 - 禁止演绎","Public Domain Dedication":"公共领域贡献","Public":"公开","Unlisted":"不公开","Private":"私享","Published":"已发布","To transcode":"转码中","To import":"导入中","Pending":"等待中","Success":"成功","Failed":"失败","Misc":"杂项","Unknown":"未知","Afar":"阿法尔语","Abkhazian":"阿布哈兹语","Afrikaans":"阿非利堪斯语","Akan":"阿坎语","Amharic":"阿姆哈拉语","Arabic":"阿拉伯语","Aragonese":"阿拉贡语","American Sign Language":"美国手语","Assamese":"阿萨姆语","Avaric":"阿瓦尔语","Kotava":"科塔瓦语","Aymara":"艾马拉语","Azerbaijani":"阿塞拜疆语","Bashkir":"巴什基尔语","Bambara":"班巴拉语","Belarusian":"白俄罗斯语","Bengali":"孟加拉语","British Sign Language":"英国手语","Bislama":"比斯拉玛语","Tibetan":"藏语","Bosnian":"波斯尼亚语","Breton":"布列塔尼语","Bulgarian":"保加利亚语","Brazilian Sign Language":"巴西手语","Catalan":"加泰隆语","Czech":"捷克语","Chamorro":"查莫罗语","Chechen":"车臣语","Chuvash":"楚瓦什语","Cornish":"康沃尔语","Corsican":"科西嘉语","Cree":"克里语","Czech Sign Language":"捷克手语","Chinese Sign Language":"中国手语","Welsh":"威尔士语","Danish":"丹麦语","German":"德语","Dhivehi":"迪维希语","Danish Sign Language":"丹麦手语","Dzongkha":"不丹语","Modern Greek (1453-)":"现代希腊语","English":"英语","Esperanto":"世界语","Estonian":"爱沙尼亚语","Basque":"巴斯克语","Ewe":"埃维语","Faroese":"法罗斯语","Persian":"波斯语","Fijian":"斐济语","Finnish":"芬兰语","French":"法语","Western Frisian":"弗里西亚语","French Sign Language":"法国手语","Fulah":"富拉语","Scottish Gaelic":"苏格兰盖尔语","Irish":"爱尔兰语","Galician":"加利西亚语","Manx":"马恩岛语","Guarani":"瓜拉尼语","German Sign Language":"德国手语","Gujarati":"古吉拉特语","Haitian":"海地语","Hausa":"豪萨语","Serbo-Croatian":"塞尔维亚-克罗地亚语","Hebrew":"希伯来语","Herero":"赫雷罗语","Hindi":"印地语","Hiri Motu":"希里莫图语","Croatian":"克罗地亚语","Hungarian":"匈牙利语","Armenian":"亚美尼亚语","Igbo":"伊博语","Sichuan Yi":"四川彝语","Inuktitut":"伊努伊特语","Indonesian":"印尼语","Inupiaq":"依努庇克语","Icelandic":"冰岛语","Italian":"意大利语","Javanese":"爪哇语","Lojban":"逻辑语","Japanese":"日语","Japanese Sign Language":"日本手语","Kalaallisut":"格陵兰语","Kannada":"坎纳达语","Kashmiri":"克什米尔语","Georgian":"格鲁吉亚语","Kanuri":"卡努里语","Kazakh":"哈萨克语","Khmer":"高棉语","Kikuyu":"基库尤语","Kinyarwanda":"基尼阿万达语","Kirghiz":"吉尔吉斯语","Komi":"科米语","Kongo":"刚果语","Korean":"朝鲜语","Kuanyama":"宽亚玛语","Kurdish":"库尔德语","Lao":"老挝语","Latvian":"拉脱维亚语","Limburgan":"林堡语","Lingala":"林加拉语","Lithuanian":"立陶宛语","Luxembourgish":"卢森堡语","Luba-Katanga":"卢巴-加丹加语","Ganda":"干达语","Marshallese":"马绍尔语","Malayalam":"马拉亚拉姆语","Marathi":"马拉提语","Macedonian":"马其顿语","Malagasy":"马达加斯加语","Maltese":"马耳他语","Mongolian":"蒙古语","Maori":"毛利语","Malay (macrolanguage)":"马来语(广义)","Burmese":"缅甸语","Nauru":"瑙鲁语","Navajo":"纳瓦霍语","South Ndebele":"南恩德贝勒语","North Ndebele":"北恩德贝勒语","Ndonga":"恩敦加语","Nepali (macrolanguage)":"尼泊尔语(广义)","Dutch":"荷兰语","Norwegian Nynorsk":"新挪威语","Norwegian Bokmål":"挪威布克莫尔语","Norwegian":"挪威语","Nyanja":"尼扬贾语","Occitan":"奥克西唐语","Ojibwa":"奥吉布瓦语","Oriya (macrolanguage)":"奥利亚语(广义)","Oromo":"阿芳·奥洛莫语","Ossetian":"奥塞梯语","Panjabi":"旁遮普语","Pakistan Sign Language":"巴基斯坦手语","Polish":"波兰语","Portuguese":"葡萄牙语","Pushto":"普什图语","Quechua":"凯楚亚语","Romansh":"罗曼什语","Romanian":"罗马尼亚语","Russian Sign Language":"俄罗斯手语","Rundi":"基隆迪语","Russian":"俄语","Sango":"桑戈语","Saudi Arabian Sign Language":"沙特阿拉伯手语","South African Sign Language":"南非手语","Sinhala":"僧加罗语","Slovak":"斯洛伐克语","Slovenian":"斯洛文尼亚语","Northern Sami":"北萨米语","Samoan":"萨摩亚语","Shona":"绍纳语","Sindhi":"信德语","Somali":"索马里语","Southern Sotho":"塞索托语","Spanish":"西班牙语","Albanian":"阿尔巴尼亚语","Sardinian":"撒丁语","Serbian":"塞尔维亚语","Swati":"塞斯瓦替语","Sundanese":"巽他语","Swahili (macrolanguage)":"斯瓦希里语(广义)","Swedish":"瑞典语","Swedish Sign Language":"瑞典手语","Tahitian":"塔希提语","Tamil":"泰米尔语","Tatar":"塔塔尔语","Telugu":"泰卢固语","Tajik":"塔吉克语","Tagalog":"他加禄语","Thai":"泰语","Tigrinya":"提格里尼亚语","Klingon":"克林贡语","Tonga (Tonga Islands)":"汤加语","Tswana":"塞茨瓦纳语","Tsonga":"宗加语","Turkmen":"土库曼语","Turkish":"土耳其语","Twi":"特威语","Uighur":"维吾尔语","Ukrainian":"乌克兰语","Urdu":"乌尔都语","Uzbek":"乌兹别克语","Venda":"文达语","Vietnamese":"越南语","Walloon":"沃伦语","Wolof":"沃洛夫语","Xhosa":"科萨语","Yiddish":"依地语","Yoruba":"约鲁巴语","Zhuang":"壮语","Chinese":"汉语","Zulu":"祖鲁语"} \ No newline at end of file diff --git a/client/src/locale/target/server_zh_Hant_TW.json b/client/src/locale/target/server_zh_Hant_TW.json index 7b210d564..11bcde412 100644 --- a/client/src/locale/target/server_zh_Hant_TW.json +++ b/client/src/locale/target/server_zh_Hant_TW.json @@ -1 +1 @@ -{"Music":"音樂","Films":"電影","Vehicles":"汽車","Art":"藝術","Sports":"運動","Travels":"旅遊","Gaming":"遊戲","People":"大眾","Comedy":"喜劇","Entertainment":"娛樂","News":"新聞","How To":"How To","Education":"教育","Activism":"行動","Science & Technology":"科學與科技","Animals":"動物","Kids":"兒童","Food":"食物","Attribution":"姓名標示","Attribution - Share Alike":"姓名標示 - 相同方式分享","Attribution - No Derivatives":"姓名標示 - 禁止改作","Attribution - Non Commercial":"姓名標示 - 非商業性","Attribution - Non Commercial - Share Alike":"姓名標示 - 非商業性 - 相同方式分享","Attribution - Non Commercial - No Derivatives":"姓名標示 - 非商業性 - 禁止改作","Public Domain Dedication":"公有領域","Public":"公開","Unlisted":"不列出","Private":"私人","Published":"已發佈","To transcode":"待轉換編碼","To import":"待匯入","Pending":"擱置中","Success":"成功","Failed":"失敗","Misc":"雜項","Unknown":"未知","Afar":"阿法爾語","Abkhazian":"阿布哈茲語","Afrikaans":"南非語","Akan":"阿寒語","Amharic":"阿姆哈拉語","Arabic":"阿拉伯語","Aragonese":"亞拉岡語","American Sign Language":"美國手語","Assamese":"阿薩姆語","Avaric":"阿瓦爾語","Kotava":"Kotava 語","Aymara":"艾馬拉語","Azerbaijani":"亞塞拜然語","Bashkir":"巴什基爾語","Bambara":"班巴拉語","Belarusian":"白俄羅斯語","Bengali":"孟加拉語","British Sign Language":"英國手語","Bislama":"比斯拉馬語","Tibetan":"藏語","Bosnian":"波士尼亞語","Breton":"布列塔尼語","Bulgarian":"保加利亞語","Brazilian Sign Language":"巴西手語","Catalan":"加泰隆尼亞語","Czech":"捷克語","Chamorro":"查莫羅語","Chechen":"車臣語","Chuvash":"楚瓦什語","Cornish":"康瓦爾語","Corsican":"科西嘉語","Cree":"克里語","Czech Sign Language":"捷克手語","Chinese Sign Language":"中國手語","Welsh":"威爾斯語","Danish":"丹麥語","German":"德語","Dhivehi":"迪維西語","Danish Sign Language":"丹麥手語","Dzongkha":"不丹語","Modern Greek (1453-)":"現代希臘語(1453年後)","English":"英語","Esperanto":"世界語","Estonian":"愛沙尼亞語","Basque":"巴斯克語","Ewe":"埃維語","Faroese":"法羅語","Persian":"波斯語","Fijian":"斐濟語","Finnish":"芬蘭語","French":"法語","Western Frisian":"西菲士蘭語","French Sign Language":"法國手語","Fulah":"富拉語","Scottish Gaelic":"蘇格蘭蓋爾語","Irish":"愛爾蘭語","Galician":"加利西亞語","Manx":"曼島語","Guarani":"瓜拉尼語","German Sign Language":"德國手語","Gujarati":"古吉拉特語","Haitian":"海地語","Hausa":"豪薩語","Serbo-Croatian":"塞爾維亞-克羅埃西亞語","Hebrew":"希伯來語","Herero":"赫雷羅語","Hindi":"印地語","Hiri Motu":"希里摩圖語","Croatian":"克羅埃西亞語","Hungarian":"匈牙利語","Armenian":"亞美尼亞語","Igbo":"伊博語","Sichuan Yi":"彝語北部方言","Inuktitut":"因紐特語","Indonesian":"印尼語","Inupiaq":"因紐皮雅特語","Icelandic":"冰島語","Italian":"義大利語","Javanese":"爪哇語","Lojban":"邏輯語","Japanese":"日語","Japanese Sign Language":"日本手語","Kalaallisut":"格陵蘭語","Kannada":"康納達語","Kashmiri":"喀什米爾語","Georgian":"喬治亞語","Kanuri":"卡努里語","Kazakh":"哈薩克語","Khmer":"高棉語","Kikuyu":"基庫尤語","Kinyarwanda":"盧安達語","Kirghiz":"吉爾吉斯語","Komi":"科米語","Kongo":"剛果語","Korean":"韓語","Kuanyama":"Kuanyama 語","Kurdish":"庫德語","Lao":"寮語","Latvian":"拉脫維亞語","Limburgan":"林堡語","Lingala":"林格拉語","Lithuanian":"立陶宛語","Luxembourgish":"盧森堡語","Luba-Katanga":"盧巴卡丹加語","Ganda":"盧干達語","Marshallese":"馬紹爾語","Malayalam":"馬拉雅拉姆語","Marathi":"馬拉提語","Macedonian":"馬其頓語","Malagasy":"馬拉加斯語","Maltese":"馬爾他語","Mongolian":"蒙古語","Maori":"毛利語","Malay (macrolanguage)":"馬來語","Burmese":"緬甸語","Nauru":"諾魯語","Navajo":"納瓦荷語","South Ndebele":"南恩德貝勒語","North Ndebele":"北恩德貝勒語","Ndonga":"恩敦加語","Nepali (macrolanguage)":"尼泊爾語","Dutch":"荷蘭語","Norwegian Nynorsk":"新挪威語","Norwegian Bokmål":"書面挪威語","Norwegian":"挪威語","Nyanja":"尼揚賈語","Occitan":"奧克西當語","Ojibwa":"歐及布威語","Oriya (macrolanguage)":"歐利亞語","Oromo":"奧羅莫語","Ossetian":"奧塞提亞語","Panjabi":"旁遮普語","Pakistan Sign Language":"巴基斯坦手語","Polish":"波蘭語","Portuguese":"葡萄牙語","Pushto":"普什圖語","Quechua":"奇楚瓦語","Romansh":"羅曼什語","Romanian":"羅馬尼亞語","Russian Sign Language":"俄羅斯手語","Rundi":"克倫地語","Russian":"俄語","Sango":"桑戈語","Saudi Arabian Sign Language":"沙烏地阿拉伯手語","South African Sign Language":"南非手語","Sinhala":"僧伽羅語","Slovak":"斯洛伐克語","Slovenian":"斯洛維尼亞語","Northern Sami":"北方薩米語","Samoan":"薩摩亞語","Shona":"修納語","Sindhi":"信德語","Somali":"索馬利亞語","Southern Sotho":"塞索托語","Spanish":"西班牙語","Albanian":"阿爾巴尼亞語","Sardinian":"薩丁尼亞語","Serbian":"塞爾維亞語","Swati":"史瓦濟語","Sundanese":"巽他語","Swahili (macrolanguage)":"斯瓦希里語","Swedish":"瑞典語","Swedish Sign Language":"瑞典手語","Tahitian":"大溪地語","Tamil":"坦米爾語","Tatar":"韃靼語","Telugu":"泰盧固語","Tajik":"塔吉克語","Tagalog":"他加祿語","Thai":"泰語","Tigrinya":"提格利尼亞語","Klingon":"克林貢語","Tonga (Tonga Islands)":"東加語","Tswana":"札那語","Tsonga":"宋加語","Turkmen":"土庫曼語","Turkish":"土耳其語","Twi":"契維語","Uighur":"維吾爾語","Ukrainian":"烏克蘭語","Urdu":"烏爾都語","Uzbek":"烏茲別克語","Venda":"文達語","Vietnamese":"越南語","Walloon":"瓦隆語","Wolof":"沃洛夫語","Xhosa":"科薩語","Yiddish":"意第緒語","Yoruba":"約魯巴語","Zhuang":"壯語","Chinese":"漢語","Zulu":"祖魯語"} \ No newline at end of file +{"Music":"音樂","Films":"電影","Vehicles":"汽車","Art":"藝術","Sports":"運動","Travels":"旅遊","Gaming":"遊戲","People":"大眾","Comedy":"喜劇","Entertainment":"娛樂","How To":"How To","Education":"教育","Activism":"行動","Science & Technology":"科學與科技","Animals":"動物","Kids":"兒童","Food":"食物","Attribution":"姓名標示","Attribution - Share Alike":"姓名標示 - 相同方式分享","Attribution - No Derivatives":"姓名標示 - 禁止改作","Attribution - Non Commercial":"姓名標示 - 非商業性","Attribution - Non Commercial - Share Alike":"姓名標示 - 非商業性 - 相同方式分享","Attribution - Non Commercial - No Derivatives":"姓名標示 - 非商業性 - 禁止改作","Public Domain Dedication":"公有領域","Public":"公開","Unlisted":"不列出","Private":"私人","Published":"已發佈","To transcode":"待轉換編碼","To import":"待匯入","Pending":"擱置中","Success":"成功","Failed":"失敗","Misc":"雜項","Unknown":"未知","Afar":"阿法爾語","Abkhazian":"阿布哈茲語","Afrikaans":"南非語","Akan":"阿寒語","Amharic":"阿姆哈拉語","Arabic":"阿拉伯語","Aragonese":"亞拉岡語","American Sign Language":"美國手語","Assamese":"阿薩姆語","Avaric":"阿瓦爾語","Kotava":"Kotava 語","Aymara":"艾馬拉語","Azerbaijani":"亞塞拜然語","Bashkir":"巴什基爾語","Bambara":"班巴拉語","Belarusian":"白俄羅斯語","Bengali":"孟加拉語","British Sign Language":"英國手語","Bislama":"比斯拉馬語","Tibetan":"藏語","Bosnian":"波士尼亞語","Breton":"布列塔尼語","Bulgarian":"保加利亞語","Brazilian Sign Language":"巴西手語","Catalan":"加泰隆尼亞語","Czech":"捷克語","Chamorro":"查莫羅語","Chechen":"車臣語","Chuvash":"楚瓦什語","Cornish":"康瓦爾語","Corsican":"科西嘉語","Cree":"克里語","Czech Sign Language":"捷克手語","Chinese Sign Language":"中國手語","Welsh":"威爾斯語","Danish":"丹麥語","German":"德語","Dhivehi":"迪維西語","Danish Sign Language":"丹麥手語","Dzongkha":"不丹語","Modern Greek (1453-)":"現代希臘語(1453年後)","English":"英語","Esperanto":"世界語","Estonian":"愛沙尼亞語","Basque":"巴斯克語","Ewe":"埃維語","Faroese":"法羅語","Persian":"波斯語","Fijian":"斐濟語","Finnish":"芬蘭語","French":"法語","Western Frisian":"西菲士蘭語","French Sign Language":"法國手語","Fulah":"富拉語","Scottish Gaelic":"蘇格蘭蓋爾語","Irish":"愛爾蘭語","Galician":"加利西亞語","Manx":"曼島語","Guarani":"瓜拉尼語","German Sign Language":"德國手語","Gujarati":"古吉拉特語","Haitian":"海地語","Hausa":"豪薩語","Serbo-Croatian":"塞爾維亞-克羅埃西亞語","Hebrew":"希伯來語","Herero":"赫雷羅語","Hindi":"印地語","Hiri Motu":"希里摩圖語","Croatian":"克羅埃西亞語","Hungarian":"匈牙利語","Armenian":"亞美尼亞語","Igbo":"伊博語","Sichuan Yi":"彝語北部方言","Inuktitut":"因紐特語","Indonesian":"印尼語","Inupiaq":"因紐皮雅特語","Icelandic":"冰島語","Italian":"義大利語","Javanese":"爪哇語","Lojban":"邏輯語","Japanese":"日語","Japanese Sign Language":"日本手語","Kalaallisut":"格陵蘭語","Kannada":"康納達語","Kashmiri":"喀什米爾語","Georgian":"喬治亞語","Kanuri":"卡努里語","Kazakh":"哈薩克語","Khmer":"高棉語","Kikuyu":"基庫尤語","Kinyarwanda":"盧安達語","Kirghiz":"吉爾吉斯語","Komi":"科米語","Kongo":"剛果語","Korean":"韓語","Kuanyama":"Kuanyama 語","Kurdish":"庫德語","Lao":"寮語","Latvian":"拉脫維亞語","Limburgan":"林堡語","Lingala":"林格拉語","Lithuanian":"立陶宛語","Luxembourgish":"盧森堡語","Luba-Katanga":"盧巴卡丹加語","Ganda":"盧干達語","Marshallese":"馬紹爾語","Malayalam":"馬拉雅拉姆語","Marathi":"馬拉提語","Macedonian":"馬其頓語","Malagasy":"馬拉加斯語","Maltese":"馬爾他語","Mongolian":"蒙古語","Maori":"毛利語","Malay (macrolanguage)":"馬來語","Burmese":"緬甸語","Nauru":"諾魯語","Navajo":"納瓦荷語","South Ndebele":"南恩德貝勒語","North Ndebele":"北恩德貝勒語","Ndonga":"恩敦加語","Nepali (macrolanguage)":"尼泊爾語","Dutch":"荷蘭語","Norwegian Nynorsk":"新挪威語","Norwegian Bokmål":"書面挪威語","Norwegian":"挪威語","Nyanja":"尼揚賈語","Occitan":"奧克西當語","Ojibwa":"歐及布威語","Oriya (macrolanguage)":"歐利亞語","Oromo":"奧羅莫語","Ossetian":"奧塞提亞語","Panjabi":"旁遮普語","Pakistan Sign Language":"巴基斯坦手語","Polish":"波蘭語","Portuguese":"葡萄牙語","Pushto":"普什圖語","Quechua":"奇楚瓦語","Romansh":"羅曼什語","Romanian":"羅馬尼亞語","Russian Sign Language":"俄羅斯手語","Rundi":"克倫地語","Russian":"俄語","Sango":"桑戈語","Saudi Arabian Sign Language":"沙烏地阿拉伯手語","South African Sign Language":"南非手語","Sinhala":"僧伽羅語","Slovak":"斯洛伐克語","Slovenian":"斯洛維尼亞語","Northern Sami":"北方薩米語","Samoan":"薩摩亞語","Shona":"修納語","Sindhi":"信德語","Somali":"索馬利亞語","Southern Sotho":"塞索托語","Spanish":"西班牙語","Albanian":"阿爾巴尼亞語","Sardinian":"薩丁尼亞語","Serbian":"塞爾維亞語","Swati":"史瓦濟語","Sundanese":"巽他語","Swahili (macrolanguage)":"斯瓦希里語","Swedish":"瑞典語","Swedish Sign Language":"瑞典手語","Tahitian":"大溪地語","Tamil":"坦米爾語","Tatar":"韃靼語","Telugu":"泰盧固語","Tajik":"塔吉克語","Tagalog":"他加祿語","Thai":"泰語","Tigrinya":"提格利尼亞語","Klingon":"克林貢語","Tonga (Tonga Islands)":"東加語","Tswana":"札那語","Tsonga":"宋加語","Turkmen":"土庫曼語","Turkish":"土耳其語","Twi":"契維語","Uighur":"維吾爾語","Ukrainian":"烏克蘭語","Urdu":"烏爾都語","Uzbek":"烏茲別克語","Venda":"文達語","Vietnamese":"越南語","Walloon":"瓦隆語","Wolof":"沃洛夫語","Xhosa":"科薩語","Yiddish":"意第緒語","Yoruba":"約魯巴語","Zhuang":"壯語","Chinese":"漢語","Zulu":"祖魯語"} \ No newline at end of file -- cgit v1.2.3 From 0229b014e0101844df028342b8d4dd9ae4e887a4 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 17 Oct 2018 13:10:58 +0200 Subject: Fix tests --- server/helpers/ffmpeg-utils.ts | 16 +++++++++------- server/models/account/user.ts | 1 + shared/models/videos/video-resolution.enum.ts | 6 ++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index 17f35fe8d..a53a7bae4 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -118,11 +118,13 @@ function transcode (options: TranscodeOptions) { return new Promise(async (res, rej) => { let fps = await getVideoFileFPS(options.inputPath) // On small/medium resolutions, limit FPS - if (options.resolution !== undefined && - options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && - fps > VIDEO_TRANSCODING_FPS.AVERAGE) { - fps = VIDEO_TRANSCODING_FPS.AVERAGE - } + // if ( + // options.resolution !== undefined && + // options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && + // fps > VIDEO_TRANSCODING_FPS.AVERAGE + // ) { + // fps = VIDEO_TRANSCODING_FPS.AVERAGE + // } let command = ffmpeg(options.inputPath, { niceness: FFMPEG_NICE.TRANSCODING }) .output(options.outputPath) @@ -321,12 +323,12 @@ async function presetH264 (ffmpeg: ffmpeg, resolution: VideoResolution, fps: num // https://slhck.info/video/2017/03/01/rate-control.html // https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate const targetBitrate = getTargetBitrate(resolution, fps, VIDEO_TRANSCODING_FPS) - localFfmpeg.outputOptions([`-maxrate ${ targetBitrate }`, `-bufsize ${ targetBitrate * 2 }`]) + localFfmpeg = localFfmpeg.outputOptions([`-maxrate ${ targetBitrate }`, `-bufsize ${ targetBitrate * 2 }`]) // Keyframe interval of 2 seconds for faster seeking and resolution switching. // https://streaminglearningcenter.com/blogs/whats-the-right-keyframe-interval.html // https://superuser.com/a/908325 - localFfmpeg.outputOption(`-g ${ fps * 2 }`) + localFfmpeg = localFfmpeg.outputOption(`-g ${ fps * 2 }`) return localFfmpeg } diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 4b4a562fa..34aafa1a7 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -109,6 +109,7 @@ export class UserModel extends Model { nsfwPolicy: NSFWPolicyType @AllowNull(false) + @Default(true) @Is('UserWebTorrentEnabled', value => throwIfNotValid(value, isUserWebTorrentEnabledValid, 'WebTorrent enabled')) @Column webTorrentEnabled: boolean diff --git a/shared/models/videos/video-resolution.enum.ts b/shared/models/videos/video-resolution.enum.ts index 2eee03843..7da5e7100 100644 --- a/shared/models/videos/video-resolution.enum.ts +++ b/shared/models/videos/video-resolution.enum.ts @@ -50,8 +50,7 @@ function getBaseBitrate (resolution: VideoResolution) { * getBaseBitrate() * 1.4. All other values are calculated linearly * between these two points. */ -export function getTargetBitrate (resolution: VideoResolution, fps: number, - fpsTranscodingConstants: VideoTranscodingFPS) { +export function getTargetBitrate (resolution: VideoResolution, fps: number, fpsTranscodingConstants: VideoTranscodingFPS) { const baseBitrate = getBaseBitrate(resolution) // The maximum bitrate, used when fps === VideoTranscodingFPS.MAX // Based on numbers from Youtube, 60 fps bitrate divided by 30 fps bitrate: @@ -71,7 +70,6 @@ export function getTargetBitrate (resolution: VideoResolution, fps: number, /** * The maximum bitrate we expect to see on a transcoded video in bytes per second. */ -export function getMaxBitrate (resolution: VideoResolution, fps: number, - fpsTranscodingConstants: VideoTranscodingFPS) { +export function getMaxBitrate (resolution: VideoResolution, fps: number, fpsTranscodingConstants: VideoTranscodingFPS) { return getTargetBitrate(resolution, fps, fpsTranscodingConstants) * 2 } -- cgit v1.2.3 From 28e51e831bd121f063600a597d7b02f8fd846de9 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 17 Oct 2018 17:58:21 +0200 Subject: Oup's --- server/helpers/ffmpeg-utils.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index a53a7bae4..037bf703a 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -118,13 +118,13 @@ function transcode (options: TranscodeOptions) { return new Promise(async (res, rej) => { let fps = await getVideoFileFPS(options.inputPath) // On small/medium resolutions, limit FPS - // if ( - // options.resolution !== undefined && - // options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && - // fps > VIDEO_TRANSCODING_FPS.AVERAGE - // ) { - // fps = VIDEO_TRANSCODING_FPS.AVERAGE - // } + if ( + options.resolution !== undefined && + options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && + fps > VIDEO_TRANSCODING_FPS.AVERAGE + ) { + fps = VIDEO_TRANSCODING_FPS.AVERAGE + } let command = ffmpeg(options.inputPath, { niceness: FFMPEG_NICE.TRANSCODING }) .output(options.outputPath) -- cgit v1.2.3 From 244b4ae3973bc1511464a08158a123767f83179c Mon Sep 17 00:00:00 2001 From: BO41 Date: Thu, 18 Oct 2018 09:08:59 +0200 Subject: NoImplicitAny flag true (#1157) this enables the `noImplicitAny` flag in the Typescript compiler > When the noImplicitAny flag is true and the TypeScript compiler cannot infer the type, it still generates the JavaScript files, but it also reports an error. Many seasoned developers prefer this stricter setting because type checking catches more unintentional errors at compile time. closes: #1131 replaces #1137 --- .../edit-custom-config.component.ts | 4 +- client/src/app/+admin/users/user-edit/user-edit.ts | 2 +- .../+admin/users/user-list/user-list.component.ts | 4 +- .../my-account-video-channel-update.component.ts | 2 +- .../my-account-videos.component.ts | 9 ++-- .../video-change-ownership.component.ts | 3 +- .../shared/actor-avatar-info.component.ts | 2 +- client/src/app/app.module.ts | 2 +- client/src/app/core/auth/auth.service.ts | 2 +- client/src/app/core/server/server.service.ts | 2 +- client/src/app/core/theme/theme.service.ts | 4 +- client/src/app/menu/menu.component.ts | 2 +- client/src/app/search/advanced-search.model.ts | 4 +- .../shared/buttons/action-dropdown.component.ts | 6 +-- client/src/app/shared/buttons/button.component.ts | 6 +-- .../app/shared/buttons/edit-button.component.ts | 2 +- client/src/app/shared/misc/help.component.ts | 2 +- .../src/app/shared/misc/peertube-local-storage.ts | 6 +-- client/src/app/shared/misc/utils.ts | 2 +- .../app/shared/overview/videos-overview.model.ts | 1 + .../src/app/shared/rest/rest-extractor.service.ts | 4 +- client/src/app/shared/rest/rest.service.ts | 2 +- client/src/app/shared/users/user.model.ts | 1 + client/src/app/shared/video/abstract-video-list.ts | 6 +-- client/src/app/shared/video/video-edit.model.ts | 3 +- .../src/app/shared/video/video-feed.component.ts | 2 +- client/src/app/shared/video/video.service.ts | 2 +- .../shared/video-caption-add-modal.component.ts | 4 +- .../+video-edit/shared/video-edit.component.ts | 6 +-- .../video-import-torrent.component.ts | 2 +- .../+video-edit/video-add-components/video-send.ts | 2 +- .../video-add-components/video-upload.component.ts | 2 +- .../+video-watch/comment/linkifier.service.ts | 6 +-- .../comment/video-comment-add.component.ts | 2 +- .../comment/video-comment.component.ts | 2 +- .../+video-watch/comment/video-comment.model.ts | 2 +- .../+video-watch/comment/video-comment.service.ts | 4 +- .../comment/video-comments.component.ts | 2 +- .../videos/+video-watch/video-watch.component.ts | 14 +++--- client/src/assets/player/peertube-chunk-store.ts | 16 +++---- client/src/assets/player/peertube-link-button.ts | 3 +- .../assets/player/peertube-load-progress-bar.ts | 2 +- client/src/assets/player/peertube-player.ts | 16 +++---- .../src/assets/player/peertube-videojs-plugin.ts | 40 ++++++++--------- .../src/assets/player/peertube-videojs-typings.ts | 6 +-- client/src/assets/player/resolution-menu-button.ts | 3 +- client/src/assets/player/resolution-menu-item.ts | 5 +-- client/src/assets/player/settings-menu-button.ts | 18 ++++---- client/src/assets/player/settings-menu-item.ts | 11 +++-- client/src/assets/player/theater-button.ts | 2 +- client/src/assets/player/utils.ts | 2 +- client/src/assets/player/video-renderer.ts | 18 ++++---- client/src/assets/player/webtorrent-info-button.ts | 2 +- client/src/main.ts | 2 +- client/src/polyfills.ts | 51 +++++++++++----------- client/src/shims/noop.ts | 2 +- client/src/standalone/videos/embed.ts | 4 +- client/src/standalone/videos/test-embed.ts | 6 +-- client/src/typings.d.ts | 1 + client/tsconfig.json | 3 +- shared/models/i18n/i18n.ts | 4 +- shared/models/overviews/videos-overview.ts | 1 + shared/models/server/custom-config.model.ts | 1 + shared/models/users/user.model.ts | 1 + 64 files changed, 181 insertions(+), 174 deletions(-) diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts index 25b303f44..9a9298825 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts @@ -62,7 +62,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { } ngOnInit () { - const formGroupData = { + const formGroupData: any = { instanceName: this.customConfigValidatorsService.INSTANCE_NAME, instanceShortDescription: this.customConfigValidatorsService.INSTANCE_SHORT_DESCRIPTION, instanceDescription: null, @@ -202,7 +202,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { } private updateForm () { - const data = { + const data: any = { instanceName: this.customConfig.instance.name, instanceShortDescription: this.customConfig.instance.shortDescription, instanceDescription: this.customConfig.instance.description, diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts index 99ce5804b..a4d696e69 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.ts +++ b/client/src/app/+admin/users/user-edit/user-edit.ts @@ -7,7 +7,7 @@ export abstract class UserEdit extends FormReactive { videoQuotaOptions: { value: string, label: string }[] = [] videoQuotaDailyOptions: { value: string, label: string }[] = [] - roles = Object.keys(USER_ROLE_LABELS).map(key => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) + roles = Object.keys(USER_ROLE_LABELS).map((key: any) => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) protected abstract serverService: ServerService protected abstract configService: ConfigService diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index ab2250722..0d7f88d2b 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -45,12 +45,12 @@ export class UserListComponent extends RestTable implements OnInit { { label: this.i18n('Ban'), handler: users => this.openBanUserModal(users), - isDisplayed: users => users.every(u => u.blocked === false) + isDisplayed: users => users.every((u: any) => u.blocked === false) }, { label: this.i18n('Unban'), handler: users => this.unbanUsers(users), - isDisplayed: users => users.every(u => u.blocked === true) + isDisplayed: users => users.every((u: any) => u.blocked === true) } ] } diff --git a/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts b/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts index 56697030b..f2b8a4e26 100644 --- a/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts +++ b/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts @@ -17,7 +17,7 @@ import { VideoChannelValidatorsService } from '@app/shared/forms/form-validators styleUrls: [ './my-account-video-channel-edit.component.scss' ] }) export class MyAccountVideoChannelUpdateComponent extends MyAccountVideoChannelEdit implements OnInit, OnDestroy { - @ViewChild('avatarfileInput') avatarfileInput + @ViewChild('avatarfileInput') avatarfileInput: any error: string diff --git a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts index 7560f0128..52307f09e 100644 --- a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts +++ b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts @@ -66,7 +66,7 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni } isInSelectionMode () { - return Object.keys(this.checkedVideos).some(k => this.checkedVideos[ k ] === true) + return Object.keys(this.checkedVideos).some((k: any) => this.checkedVideos[ k ] === true) } getVideosObservable (page: number) { @@ -81,7 +81,7 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni async deleteSelectedVideos () { const toDeleteVideosIds = Object.keys(this.checkedVideos) - .filter(k => this.checkedVideos[ k ] === true) + .filter((k: any) => this.checkedVideos[ k ] === true) .map(k => parseInt(k, 10)) const res = await this.confirmService.confirm( @@ -168,9 +168,10 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni } private spliceVideosById (id: number) { - for (const key of Object.keys(this.loadedPages)) { + let key: any + for (key of Object.keys(this.loadedPages)) { const videos = this.loadedPages[ key ] - const index = videos.findIndex(v => v.id === id) + const index = videos.findIndex((v: any) => v.id === id) if (index !== -1) { videos.splice(index, 1) diff --git a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts index 7437b939a..eb3f9404f 100644 --- a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts +++ b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts @@ -49,7 +49,8 @@ export class VideoChangeOwnershipComponent extends FormReactive implements OnIni .catch((_) => _) // Called when closing (cancel) the modal without validating, do nothing } - search (event) { + // TODO: typing + search (event: any) { const query = event.query this.userService.autocomplete(query) .subscribe( diff --git a/client/src/app/+my-account/shared/actor-avatar-info.component.ts b/client/src/app/+my-account/shared/actor-avatar-info.component.ts index 7b80b1ed4..b4505a7f2 100644 --- a/client/src/app/+my-account/shared/actor-avatar-info.component.ts +++ b/client/src/app/+my-account/shared/actor-avatar-info.component.ts @@ -10,7 +10,7 @@ import { Account } from '@app/shared/account/account.model' styleUrls: [ './actor-avatar-info.component.scss' ] }) export class ActorAvatarInfoComponent { - @ViewChild('avatarfileInput') avatarfileInput + @ViewChild('avatarfileInput') avatarfileInput: any @Input() actor: VideoChannel | Account diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index 34e890b40..371199442 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -69,7 +69,7 @@ export function metaFactory (serverService: ServerService): MetaLoader { providers: [ { provide: TRANSLATIONS, - useFactory: (locale) => { + useFactory: (locale: string) => { // On dev mode, test localization if (isOnDevLocale()) { locale = buildFileLocale(getDevLocale()) diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts index 9c36b946e..5315c8b1d 100644 --- a/client/src/app/core/auth/auth.service.ts +++ b/client/src/app/core/auth/auth.service.ts @@ -221,7 +221,7 @@ export class AuthService { } refreshUserInformation () { - const obj = { + const obj: any = { access_token: this.user.getAccessToken(), refresh_token: null, token_type: this.user.getTokenType(), diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts index 2f1ef1fc2..1663a052c 100644 --- a/client/src/app/core/server/server.service.ts +++ b/client/src/app/core/server/server.service.ts @@ -155,7 +155,7 @@ export class ServerService { .pipe( switchMap(translations => { return this.http.get(ServerService.BASE_VIDEO_URL + attributeName) - .pipe(map(data => ({ data, translations }))) + .pipe(map((data: any) => ({ data, translations }))) }) ) .subscribe(({ data, translations }) => { diff --git a/client/src/app/core/theme/theme.service.ts b/client/src/app/core/theme/theme.service.ts index a6eef0898..50c19ecac 100644 --- a/client/src/app/core/theme/theme.service.ts +++ b/client/src/app/core/theme/theme.service.ts @@ -5,7 +5,7 @@ import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage' export class ThemeService { private theme = document.querySelector('body') private darkTheme = false - private previousTheme = {} + private previousTheme: { [ id: string ]: string } = {} constructor () { // initialise the alternative theme with dark theme colors @@ -33,7 +33,7 @@ export class ThemeService { } } - private switchProperty (property, newValue?) { + private switchProperty (property: string, newValue?: string) { const propertyOldvalue = window.getComputedStyle(this.theme).getPropertyValue('--' + property) this.theme.style.setProperty('--' + property, (newValue) ? newValue : this.previousTheme[property]) this.previousTheme[property] = propertyOldvalue diff --git a/client/src/app/menu/menu.component.ts b/client/src/app/menu/menu.component.ts index 95926f5f0..348700c09 100644 --- a/client/src/app/menu/menu.component.ts +++ b/client/src/app/menu/menu.component.ts @@ -18,7 +18,7 @@ export class MenuComponent implements OnInit { userHasAdminAccess = false helpVisible = false - private routesPerRight = { + private routesPerRight: any = { [UserRight.MANAGE_USERS]: '/admin/users', [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends', [UserRight.MANAGE_VIDEO_ABUSES]: '/admin/moderation/video-abuses', diff --git a/client/src/app/search/advanced-search.model.ts b/client/src/app/search/advanced-search.model.ts index 033fa9bba..1d6c89282 100644 --- a/client/src/app/search/advanced-search.model.ts +++ b/client/src/app/search/advanced-search.model.ts @@ -53,7 +53,7 @@ export class AdvancedSearch { } containsValues () { - const obj = this.toUrlObject() + const obj: any = this.toUrlObject() for (const k of Object.keys(obj)) { if (k === 'sort') continue // Exception @@ -113,7 +113,7 @@ export class AdvancedSearch { size () { let acc = 0 - const obj = this.toUrlObject() + const obj: any = this.toUrlObject() for (const k of Object.keys(obj)) { if (k === 'sort') continue // Exception diff --git a/client/src/app/shared/buttons/action-dropdown.component.ts b/client/src/app/shared/buttons/action-dropdown.component.ts index 022ab5ee8..9877f639d 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.ts +++ b/client/src/app/shared/buttons/action-dropdown.component.ts @@ -2,9 +2,9 @@ import { Component, Input } from '@angular/core' export type DropdownAction = { label?: string - handler?: (T) => any - linkBuilder?: (T) => (string | number)[] - isDisplayed?: (T) => boolean + handler?: (T: any) => any + linkBuilder?: (T: any) => (string | number)[] + isDisplayed?: (T: any) => boolean } @Component({ diff --git a/client/src/app/shared/buttons/button.component.ts b/client/src/app/shared/buttons/button.component.ts index 967cb1409..cccf98bc3 100644 --- a/client/src/app/shared/buttons/button.component.ts +++ b/client/src/app/shared/buttons/button.component.ts @@ -8,9 +8,9 @@ import { Component, Input } from '@angular/core' export class ButtonComponent { @Input() label = '' - @Input() className = undefined - @Input() icon = undefined - @Input() title = undefined + @Input() className: any = undefined + @Input() icon: any = undefined + @Input() title: any = undefined getTitle () { return this.title || this.label diff --git a/client/src/app/shared/buttons/edit-button.component.ts b/client/src/app/shared/buttons/edit-button.component.ts index 7abaacc26..ea552663a 100644 --- a/client/src/app/shared/buttons/edit-button.component.ts +++ b/client/src/app/shared/buttons/edit-button.component.ts @@ -8,5 +8,5 @@ import { Component, Input } from '@angular/core' export class EditButtonComponent { @Input() label: string - @Input() routerLink = [] + @Input() routerLink: any = [] } diff --git a/client/src/app/shared/misc/help.component.ts b/client/src/app/shared/misc/help.component.ts index ba0452e77..ccce1ccfa 100644 --- a/client/src/app/shared/misc/help.component.ts +++ b/client/src/app/shared/misc/help.component.ts @@ -60,7 +60,7 @@ export class HelpComponent implements OnInit, OnChanges { } private createMarkdownList (rules: string[]) { - const rulesToText = { + const rulesToText: any = { 'emphasis': this.i18n('Emphasis'), 'link': this.i18n('Links'), 'newline': this.i18n('New lines'), diff --git a/client/src/app/shared/misc/peertube-local-storage.ts b/client/src/app/shared/misc/peertube-local-storage.ts index 260f994b6..fb5c45acf 100644 --- a/client/src/app/shared/misc/peertube-local-storage.ts +++ b/client/src/app/shared/misc/peertube-local-storage.ts @@ -6,7 +6,7 @@ class MemoryStorage { [key: string]: any [index: number]: string - getItem (key) { + getItem (key: any) { const stringKey = String(key) if (valuesMap.has(key)) { return String(valuesMap.get(stringKey)) @@ -15,11 +15,11 @@ class MemoryStorage { return null } - setItem (key, val) { + setItem (key: any, val: any) { valuesMap.set(String(key), String(val)) } - removeItem (key) { + removeItem (key: any) { valuesMap.delete(key) } diff --git a/client/src/app/shared/misc/utils.ts b/client/src/app/shared/misc/utils.ts index c8b7ebc67..78be2e5dd 100644 --- a/client/src/app/shared/misc/utils.ts +++ b/client/src/app/shared/misc/utils.ts @@ -102,7 +102,7 @@ function objectToFormData (obj: any, form?: FormData, namespace?: string) { return fd } -function lineFeedToHtml (obj: object, keyToNormalize: string) { +function lineFeedToHtml (obj: any, keyToNormalize: string) { return immutableAssign(obj, { [keyToNormalize]: obj[keyToNormalize].replace(/\r?\n|\r/g, '
') }) diff --git a/client/src/app/shared/overview/videos-overview.model.ts b/client/src/app/shared/overview/videos-overview.model.ts index cf02bdb3d..c8eafc8e8 100644 --- a/client/src/app/shared/overview/videos-overview.model.ts +++ b/client/src/app/shared/overview/videos-overview.model.ts @@ -16,4 +16,5 @@ export class VideosOverview implements VideosOverviewServer { tag: string videos: Video[] }[] + [key: string]: any } diff --git a/client/src/app/shared/rest/rest-extractor.service.ts b/client/src/app/shared/rest/rest-extractor.service.ts index 6492aa66d..934f6c618 100644 --- a/client/src/app/shared/rest/rest-extractor.service.ts +++ b/client/src/app/shared/rest/rest-extractor.service.ts @@ -33,7 +33,7 @@ export class RestExtractor { return this.applyToResultListData(result, this.convertDateToHuman, [ fieldsToConvert ]) } - convertDateToHuman (target: object, fieldsToConvert: string[]) { + convertDateToHuman (target: any, fieldsToConvert: string[]) { fieldsToConvert.forEach(field => target[field] = dateToHuman(target[field])) return target @@ -83,7 +83,7 @@ export class RestExtractor { errorMessage = err } - const errorObj = { + const errorObj: any = { message: errorMessage, status: undefined, body: undefined diff --git a/client/src/app/shared/rest/rest.service.ts b/client/src/app/shared/rest/rest.service.ts index 4560c2024..41824a18f 100644 --- a/client/src/app/shared/rest/rest.service.ts +++ b/client/src/app/shared/rest/rest.service.ts @@ -32,7 +32,7 @@ export class RestService { return newParams } - addObjectParams (params: HttpParams, object: object) { + addObjectParams (params: HttpParams, object: any) { for (const name of Object.keys(object)) { const value = object[name] if (!value) continue diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index 7c840ffa7..e6b612054 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -43,6 +43,7 @@ export class User implements UserServerModel { blocked: boolean blockedReason?: string + [key: string]: any constructor (hash: UserConstructorHash) { this.id = hash.id diff --git a/client/src/app/shared/video/abstract-video-list.ts b/client/src/app/shared/video/abstract-video-list.ts index 1f43f974c..87814d4ba 100644 --- a/client/src/app/shared/video/abstract-video-list.ts +++ b/client/src/app/shared/video/abstract-video-list.ts @@ -27,7 +27,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { sort: VideoSortField = '-publishedAt' categoryOneOf?: number defaultSort: VideoSortField = '-publishedAt' - syndicationItems = [] + syndicationItems: any = [] loadOnInit = true marginContent = true @@ -59,7 +59,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { private resizeSubscription: Subscription abstract getVideosObservable (page: number): Observable<{ videos: Video[], totalVideos: number}> - abstract generateSyndicationList () + abstract generateSyndicationList (): any get user () { return this.authService.getUser() @@ -209,7 +209,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { } protected setNewRouteParams () { - const paramsObject = this.buildRouteParams() + const paramsObject: any = this.buildRouteParams() const queryParams = Object.keys(paramsObject).map(p => p + '=' + paramsObject[p]).join('&') this.location.replaceState(this.currentRoute, queryParams) diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts index 0046be964..a62277e04 100644 --- a/client/src/app/shared/video/video-edit.model.ts +++ b/client/src/app/shared/video/video-edit.model.ts @@ -25,6 +25,7 @@ export class VideoEdit implements VideoUpdate { uuid?: string id?: number scheduleUpdate?: VideoScheduleUpdate + [key: string]: any constructor (video?: Video & { tags: string[], commentsEnabled: boolean, support: string, thumbnailUrl: string, previewUrl: string }) { if (video) { @@ -49,7 +50,7 @@ export class VideoEdit implements VideoUpdate { } } - patch (values: Object) { + patch (values: any) { Object.keys(values).forEach((key) => { this[ key ] = values[ key ] }) diff --git a/client/src/app/shared/video/video-feed.component.ts b/client/src/app/shared/video/video-feed.component.ts index 6922153c0..be6c80c3f 100644 --- a/client/src/app/shared/video/video-feed.component.ts +++ b/client/src/app/shared/video/video-feed.component.ts @@ -6,5 +6,5 @@ import { Component, Input } from '@angular/core' templateUrl: './video-feed.component.html' }) export class VideoFeedComponent { - @Input() syndicationItems + @Input() syndicationItems: any } diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts index 724a0bde9..6283cf84d 100644 --- a/client/src/app/shared/video/video.service.ts +++ b/client/src/app/shared/video/video.service.ts @@ -276,7 +276,7 @@ export class VideoService implements VideosProvider { return this.authHttp .get(environment.apiUrl + descriptionPath) .pipe( - map(res => res[ 'description' ]), + map((res: any) => res[ 'description' ]), catchError(err => this.restExtractor.handleError(err)) ) } diff --git a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts index 07c33030a..a2c9237ad 100644 --- a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts +++ b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts @@ -19,7 +19,7 @@ export class VideoCaptionAddModalComponent extends FormReactive implements OnIni @ViewChild('modal') modal: ElementRef - videoCaptionLanguages = [] + videoCaptionLanguages: any = [] private openedModal: NgbModalRef private closingModal = false @@ -73,7 +73,7 @@ export class VideoCaptionAddModalComponent extends FormReactive implements OnIni this.hide() const languageId = this.form.value[ 'language' ] - const languageObject = this.videoCaptionLanguages.find(l => l.id === languageId) + const languageObject = this.videoCaptionLanguages.find((l: any) => l.id === languageId) this.captionAdded.emit({ language: languageObject, diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.ts b/client/src/app/videos/+video-edit/shared/video-edit.component.ts index eb9396d70..a56733e57 100644 --- a/client/src/app/videos/+video-edit/shared/video-edit.component.ts +++ b/client/src/app/videos/+video-edit/shared/video-edit.component.ts @@ -48,7 +48,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { calendarTimezone: string calendarDateFormat: string - private schedulerInterval + private schedulerInterval: any private firstPatchDone = false private initialVideoCaptions: string[] = [] @@ -77,13 +77,13 @@ export class VideoEditComponent implements OnInit, OnDestroy { } updateForm () { - const defaultValues = { + const defaultValues: any = { nsfw: 'false', commentsEnabled: 'true', waitTranscoding: 'true', tags: [] } - const obj = { + const obj: any = { name: this.videoValidatorsService.VIDEO_NAME, privacy: this.videoValidatorsService.VIDEO_PRIVACY, channelId: this.videoValidatorsService.VIDEO_CHANNEL, diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts index 0f7184ff8..9a50e2ab2 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts @@ -23,7 +23,7 @@ import { VideoImportService } from '@app/shared/video-import' }) export class VideoImportTorrentComponent extends VideoSend implements OnInit, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() - @ViewChild('torrentfileInput') torrentfileInput + @ViewChild('torrentfileInput') torrentfileInput: any videoFileName: string magnetUri = '' diff --git a/client/src/app/videos/+video-edit/video-add-components/video-send.ts b/client/src/app/videos/+video-edit/video-add-components/video-send.ts index 6d1bac3f2..cf9d47cbe 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-send.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-send.ts @@ -30,7 +30,7 @@ export abstract class VideoSend extends FormReactive implements OnInit, CanCompo protected videoService: VideoService protected videoCaptionService: VideoCaptionService - abstract canDeactivate () + abstract canDeactivate (): any ngOnInit () { this.buildForm({}) diff --git a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts index 941dc5441..fa6ee0c23 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts @@ -25,7 +25,7 @@ import { VideoCaptionService } from '@app/shared/video-caption' }) export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() - @ViewChild('videofileInput') videofileInput + @ViewChild('videofileInput') videofileInput: any // So that it can be accessed in the template readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY diff --git a/client/src/app/videos/+video-watch/comment/linkifier.service.ts b/client/src/app/videos/+video-watch/comment/linkifier.service.ts index 3f4072efd..9ad419a69 100644 --- a/client/src/app/videos/+video-watch/comment/linkifier.service.ts +++ b/client/src/app/videos/+video-watch/comment/linkifier.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core' import { getAbsoluteAPIUrl } from '@app/shared/misc/utils' -import * as linkify from 'linkifyjs' -import * as linkifyHtml from 'linkifyjs/html' +const linkify = require('linkifyjs') +const linkifyHtml = require('linkifyjs/html') @Injectable() export class LinkifierService { @@ -40,7 +40,7 @@ export class LinkifierService { const TT_UNDERSCORE = TT.UNDERSCORE const TT_DOT = TT.DOT - function MENTION (value) { + function MENTION (value: any) { this.v = value } diff --git a/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts b/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts index fb7de0e04..ba3c0398e 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts @@ -76,7 +76,7 @@ export class VideoCommentAddComponent extends FormReactive implements OnInit { this.formValidated() } - openVisitorModal (event) { + openVisitorModal (event: any) { if (this.user === null) { // we only open it for visitors // fixing ng-bootstrap ModalService and the "Expression Changed After It Has Been Checked" Error event.srcElement.blur() diff --git a/client/src/app/videos/+video-watch/comment/video-comment.component.ts b/client/src/app/videos/+video-watch/comment/video-comment.component.ts index e90008de9..982470786 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.component.ts @@ -26,7 +26,7 @@ export class VideoCommentComponent implements OnInit, OnChanges { @Output() resetReply = new EventEmitter() sanitizedCommentHTML = '' - newParentComments = [] + newParentComments: any = [] constructor ( private linkifierService: LinkifierService, diff --git a/client/src/app/videos/+video-watch/comment/video-comment.model.ts b/client/src/app/videos/+video-watch/comment/video-comment.model.ts index fe591811e..824fb24c3 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.model.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.model.ts @@ -14,7 +14,7 @@ export class VideoComment implements VideoCommentServerModel { account: AccountInterface totalReplies: number by: string - accountAvatarUrl + accountAvatarUrl: string constructor (hash: VideoCommentServerModel) { this.id = hash.id diff --git a/client/src/app/videos/+video-watch/comment/video-comment.service.ts b/client/src/app/videos/+video-watch/comment/video-comment.service.ts index 9bcb4b7de..7d9c2d0ad 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.service.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.service.ts @@ -32,7 +32,7 @@ export class VideoCommentService { return this.authHttp.post(url, normalizedComment) .pipe( - map(data => this.extractVideoComment(data['comment'])), + map((data: any) => this.extractVideoComment(data['comment'])), catchError(err => this.restExtractor.handleError(err)) ) } @@ -43,7 +43,7 @@ export class VideoCommentService { return this.authHttp.post(url, normalizedComment) .pipe( - map(data => this.extractVideoComment(data[ 'comment' ])), + map((data: any) => this.extractVideoComment(data[ 'comment' ])), catchError(err => this.restExtractor.handleError(err)) ) } diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.ts b/client/src/app/videos/+video-watch/comment/video-comments.component.ts index c864d82b7..4c1bdf2dd 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.ts @@ -35,7 +35,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy { threadComments: { [ id: number ]: VideoCommentThreadTree } = {} threadLoading: { [ id: number ]: boolean } = {} - syndicationItems = [] + syndicationItems: any = [] private sub: Subscription 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 c5deddf05..ed5e723c9 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts @@ -7,7 +7,7 @@ import { VideoSupportComponent } from '@app/videos/+video-watch/modal/video-supp import { MetaService } from '@ngx-meta/core' import { NotificationsService } from 'angular2-notifications' import { forkJoin, Subscription } from 'rxjs' -import * as videojs from 'video.js' +const videojs = require('video.js') import 'videojs-hotkeys' import { Hotkey, HotkeysService } from 'angular2-hotkeys' import * as WebTorrent from 'webtorrent' @@ -45,7 +45,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { @ViewChild('videoBlacklistModal') videoBlacklistModal: VideoBlacklistComponent @ViewChild('subscribeButton') subscribeButton: SubscribeButtonComponent - player: videojs.Player + player: any playerElement: HTMLVideoElement userRating: UserVideoRateType = null video: VideoDetails = null @@ -435,7 +435,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { this.zone.runOutsideAngular(async () => { videojs(this.playerElement, videojsOptions, function () { self.player = this - this.on('customError', (event, data) => self.handleError(data.err)) + this.on('customError', (data: any) => self.handleError(data.err)) addContextMenu(self.player, self.video.embedUrl) }) @@ -448,7 +448,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { this.checkUserRating() } - private setRating (nextRating) { + private setRating (nextRating: string) { let method switch (nextRating) { case 'like': @@ -466,11 +466,11 @@ export class VideoWatchComponent implements OnInit, OnDestroy { .subscribe( () => { // Update the video like attribute - this.updateVideoRating(this.userRating, nextRating) - this.userRating = nextRating + this.updateVideoRating(this.userRating, nextRating as VideoRateType) + this.userRating = nextRating as UserVideoRateType }, - err => this.notificationsService.error(this.i18n('Error'), err.message) + (err: any) => this.notificationsService.error(this.i18n('Error'), err.message) ) } diff --git a/client/src/assets/player/peertube-chunk-store.ts b/client/src/assets/player/peertube-chunk-store.ts index 767e46821..ac3f9e654 100644 --- a/client/src/assets/player/peertube-chunk-store.ts +++ b/client/src/assets/player/peertube-chunk-store.ts @@ -40,15 +40,15 @@ export class PeertubeChunkStore extends EventEmitter { // If the store is full private memoryChunks: { [ id: number ]: Buffer | true } = {} private databaseName: string - private putBulkTimeout - private cleanerInterval + private putBulkTimeout: any + private cleanerInterval: any private db: ChunkDatabase private expirationDB: ExpirationDatabase private readonly length: number private readonly lastChunkLength: number private readonly lastChunkIndex: number - constructor (chunkLength: number, opts) { + constructor (chunkLength: number, opts: any) { super() this.databaseName = 'webtorrent-chunks-' @@ -113,13 +113,13 @@ export class PeertubeChunkStore extends EventEmitter { }, PeertubeChunkStore.BUFFERING_PUT_MS) } - get (index: number, opts, cb) { + get (index: number, opts: any, cb: any): any { if (typeof opts === 'function') return this.get(index, null, opts) // IndexDB could be slow, use our memory index first const memoryChunk = this.memoryChunks[index] if (memoryChunk === undefined) { - const err = new Error('Chunk not found') + const err = new Error('Chunk not found') as any err['notFound'] = true return process.nextTick(() => cb(err)) @@ -146,11 +146,11 @@ export class PeertubeChunkStore extends EventEmitter { }) } - close (db) { + close (db: any) { return this.destroy(db) } - async destroy (cb) { + async destroy (cb: any) { try { if (this.pendingPut) { clearTimeout(this.putBulkTimeout) @@ -225,7 +225,7 @@ export class PeertubeChunkStore extends EventEmitter { } } - private nextTick (cb, err, val?) { + private nextTick (cb: any, err: Error, val?: any) { process.nextTick(() => cb(err, val), undefined) } } diff --git a/client/src/assets/player/peertube-link-button.ts b/client/src/assets/player/peertube-link-button.ts index 715207bc0..b03952b47 100644 --- a/client/src/assets/player/peertube-link-button.ts +++ b/client/src/assets/player/peertube-link-button.ts @@ -1,11 +1,10 @@ -import * as videojs from 'video.js' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { buildVideoLink } from './utils' const Button: VideoJSComponentInterface = videojsUntyped.getComponent('Button') class PeerTubeLinkButton extends Button { - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { super(player, options) } diff --git a/client/src/assets/player/peertube-load-progress-bar.ts b/client/src/assets/player/peertube-load-progress-bar.ts index aedc641e4..ee8a6cd81 100644 --- a/client/src/assets/player/peertube-load-progress-bar.ts +++ b/client/src/assets/player/peertube-load-progress-bar.ts @@ -4,7 +4,7 @@ const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Compon class PeerTubeLoadProgressBar extends Component { - constructor (player, options) { + constructor (player: any, options: any) { super(player, options) this.partEls_ = [] this.on(player, 'progress', this.update) diff --git a/client/src/assets/player/peertube-player.ts b/client/src/assets/player/peertube-player.ts index 792662b6c..ef9e7fcc0 100644 --- a/client/src/assets/player/peertube-player.ts +++ b/client/src/assets/player/peertube-player.ts @@ -75,12 +75,12 @@ function getVideojsOptions (options: { enableVolumeScroll: false, enableModifiersForNumbers: false, - fullscreenKey: function (event) { + fullscreenKey: function (event: any) { // fullscreen with the f key or Ctrl+Enter return event.key === 'f' || (event.ctrlKey && event.key === 'Enter') }, - seekStep: function (event) { + seekStep: function (event: any) { // mimic VLC seek behavior, and default to 5 (original value is 5). if (event.ctrlKey && event.altKey) { return 5 * 60 @@ -95,26 +95,26 @@ function getVideojsOptions (options: { customKeys: { increasePlaybackRateKey: { - key: function (event) { + key: function (event: any) { return event.key === '>' }, - handler: function (player) { + handler: function (player: any) { player.playbackRate((player.playbackRate() + 0.1).toFixed(2)) } }, decreasePlaybackRateKey: { - key: function (event) { + key: function (event: any) { return event.key === '<' }, - handler: function (player) { + handler: function (player: any) { player.playbackRate((player.playbackRate() - 0.1).toFixed(2)) } }, frameByFrame: { - key: function (event) { + key: function (event: any) { return event.key === '.' }, - handler: function (player, options, event) { + handler: function (player: any) { player.pause() // Calculate movement distance (assuming 30 fps) const dist = 1 / 30 diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 5cebab6d9..03def186e 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts @@ -1,11 +1,11 @@ -import * as videojs from 'video.js' +const videojs = require('video.js') import * as WebTorrent from 'webtorrent' import { VideoFile } from '../../../../shared/models/videos/video.model' import { renderVideo } from './video-renderer' import './settings-menu-button' import { PeertubePluginOptions, UserWatching, VideoJSCaption, VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution } from './utils' -import * as CacheChunkStore from 'cache-chunk-store' +const CacheChunkStore = require('cache-chunk-store') import { PeertubeChunkStore } from './peertube-chunk-store' import { getAverageBandwidthInStore, @@ -61,11 +61,11 @@ class PeerTubePlugin extends Plugin { private player: any private currentVideoFile: VideoFile - private torrent: WebTorrent.Torrent + private torrent: any private videoCaptions: VideoJSCaption[] - private renderer - private fakeRenderer + private renderer: any + private fakeRenderer: any private destoyingFakeRenderer = false private autoResolution = true @@ -73,17 +73,17 @@ class PeerTubePlugin extends Plugin { private isAutoResolutionObservation = false private playerRefusedP2P = false - private videoViewInterval - private torrentInfoInterval - private autoQualityInterval - private userWatchingVideoInterval - private addTorrentDelay - private qualityObservationTimer - private runAutoQualitySchedulerTimer + private videoViewInterval: any + private torrentInfoInterval: any + private autoQualityInterval: any + private userWatchingVideoInterval: any + private addTorrentDelay: any + private qualityObservationTimer: any + private runAutoQualitySchedulerTimer: any private downloadSpeeds: number[] = [] - constructor (player: videojs.Player, options: PeertubePluginOptions) { + constructor (player: any, options: PeertubePluginOptions) { super(player, options) // Disable auto play on iOS @@ -273,7 +273,7 @@ class PeerTubePlugin extends Plugin { const oldTorrent = this.torrent const torrentOptions = { - store: (chunkLength, storeOpts) => new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { + store: (chunkLength: any, storeOpts: any) => new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { max: 100 }) } @@ -304,7 +304,7 @@ class PeerTubePlugin extends Plugin { if (err) return this.fallbackToHttp(options, done) - return this.tryToPlay(err => { + return this.tryToPlay((err: Error) => { if (err) return done(err) if (options.seek) this.seek(options.seek) @@ -316,7 +316,7 @@ class PeerTubePlugin extends Plugin { }, options.delay || 0) }) - this.torrent.on('error', err => console.error(err)) + this.torrent.on('error', (err: any) => console.error(err)) this.torrent.on('warning', (err: any) => { // We don't support HTTP tracker but we don't care -> we use the web socket tracker @@ -350,7 +350,7 @@ class PeerTubePlugin extends Plugin { const playPromise = this.player.play() if (playPromise !== undefined) { return playPromise.then(done) - .catch(err => { + .catch((err: Error) => { if (err.message.indexOf('The play() request was interrupted by a call to pause()') !== -1) { return } @@ -627,7 +627,7 @@ class PeerTubePlugin extends Plugin { this.player.options_.inactivityTimeout = saveInactivityTimeout } - const settingsDialog = this.player.children_.find(c => c.name_ === 'SettingsDialog') + const settingsDialog = this.player.children_.find((c: any) => c.name_ === 'SettingsDialog') this.player.controlBar.on('mouseenter', () => disableInactivity()) settingsDialog.on('mouseenter', () => disableInactivity()) @@ -641,7 +641,7 @@ class PeerTubePlugin extends Plugin { return this.videoFiles[Math.floor(this.videoFiles.length / 2)] } - private stopTorrent (torrent: WebTorrent.Torrent) { + private stopTorrent (torrent: any) { torrent.pause() // Pause does not remove actual peers (in particular the webseed peer) torrent.removePeer(torrent[ 'ws' ]) @@ -703,7 +703,7 @@ class PeerTubePlugin extends Plugin { const percent = time / this.player_.duration() return percent >= 1 ? 1 : percent } - SeekBar.prototype.handleMouseMove = function handleMouseMove (event) { + SeekBar.prototype.handleMouseMove = function handleMouseMove (event: any) { let newTime = this.calculateDistance(event) * this.player_.duration() if (newTime === this.player_.duration()) { newTime = newTime - 0.1 diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts index b117007af..98a33077d 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -1,4 +1,4 @@ -import * as videojs from 'video.js' +const videojs = require('video.js') import { VideoFile } from '../../../../shared/models/videos/video.model' import { PeerTubePlugin } from './peertube-videojs-plugin' @@ -11,9 +11,9 @@ declare namespace videojs { interface VideoJSComponentInterface { _player: videojs.Player - new (player: videojs.Player, options?: any) + new (player: videojs.Player, options?: any): any - registerComponent (name: string, obj: any) + registerComponent (name: string, obj: any): any } type VideoJSCaption = { diff --git a/client/src/assets/player/resolution-menu-button.ts b/client/src/assets/player/resolution-menu-button.ts index d53a24151..91818efc9 100644 --- a/client/src/assets/player/resolution-menu-button.ts +++ b/client/src/assets/player/resolution-menu-button.ts @@ -1,4 +1,3 @@ -import * as videojs from 'video.js' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { ResolutionMenuItem } from './resolution-menu-item' @@ -7,7 +6,7 @@ const MenuButton: VideoJSComponentInterface = videojsUntyped.getComponent('MenuB class ResolutionMenuButton extends MenuButton { label: HTMLElement - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { super(player, options) this.player = player diff --git a/client/src/assets/player/resolution-menu-item.ts b/client/src/assets/player/resolution-menu-item.ts index 0ab0f53b5..afe490abb 100644 --- a/client/src/assets/player/resolution-menu-item.ts +++ b/client/src/assets/player/resolution-menu-item.ts @@ -1,10 +1,9 @@ -import * as videojs from 'video.js' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' const MenuItem: VideoJSComponentInterface = videojsUntyped.getComponent('MenuItem') class ResolutionMenuItem extends MenuItem { - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { const currentResolutionId = player.peertube().getCurrentResolutionId() options.selectable = true options.selected = options.id === currentResolutionId @@ -18,7 +17,7 @@ class ResolutionMenuItem extends MenuItem { player.peertube().on('autoResolutionUpdate', () => this.updateSelection()) } - handleClick (event) { + handleClick (event: any) { if (this.id === -1 && this.player_.peertube().isAutoResolutionForbidden()) return super.handleClick(event) diff --git a/client/src/assets/player/settings-menu-button.ts b/client/src/assets/player/settings-menu-button.ts index b51c52506..f0ccb5862 100644 --- a/client/src/assets/player/settings-menu-button.ts +++ b/client/src/assets/player/settings-menu-button.ts @@ -1,7 +1,7 @@ // Author: Yanko Shterev // Thanks https://github.com/yshterev/videojs-settings-menu -import * as videojs from 'video.js' +const videojs = require('video.js') import { SettingsMenuItem } from './settings-menu-item' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { toTitleCase } from './utils' @@ -11,7 +11,7 @@ const Menu: VideoJSComponentInterface = videojsUntyped.getComponent('Menu') const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component') class SettingsButton extends Button { - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { super(player, options) this.playerComponent = player @@ -48,7 +48,7 @@ class SettingsButton extends Button { } } - onDisposeSettingsItem (event, name: string) { + onDisposeSettingsItem (name: string) { if (name === undefined) { let children = this.menu.children() @@ -74,7 +74,7 @@ class SettingsButton extends Button { } } - onAddSettingsItem (event, data) { + onAddSettingsItem (data: any) { const [ entry, options ] = data this.addMenuItem(entry, options) @@ -120,7 +120,7 @@ class SettingsButton extends Button { this.resetChildren() } - getComponentSize (element) { + getComponentSize (element: any) { let width: number = null let height: number = null @@ -178,7 +178,7 @@ class SettingsButton extends Button { this.panelChild.addChild(this.menu) } - addMenuItem (entry, options) { + addMenuItem (entry: any, options: any) { const openSubMenu = function () { if (videojsUntyped.dom.hasClass(this.el_, 'open')) { videojsUntyped.dom.removeClass(this.el_, 'open') @@ -218,7 +218,7 @@ class SettingsButton extends Button { } class SettingsPanel extends Component { - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { super(player, options) } @@ -232,7 +232,7 @@ class SettingsPanel extends Component { } class SettingsPanelChild extends Component { - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { super(player, options) } @@ -246,7 +246,7 @@ class SettingsPanelChild extends Component { } class SettingsDialog extends Component { - constructor (player: videojs.Player, options) { + constructor (player: any, options: any) { super(player, options) this.hide() } diff --git a/client/src/assets/player/settings-menu-item.ts b/client/src/assets/player/settings-menu-item.ts index 665ce6fc2..2d752b62e 100644 --- a/client/src/assets/player/settings-menu-item.ts +++ b/client/src/assets/player/settings-menu-item.ts @@ -1,7 +1,6 @@ // Author: Yanko Shterev // Thanks https://github.com/yshterev/videojs-settings-menu -import * as videojs from 'video.js' import { toTitleCase } from './utils' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' @@ -10,7 +9,7 @@ const component: VideoJSComponentInterface = videojsUntyped.getComponent('Compon class SettingsMenuItem extends MenuItem { - constructor (player: videojs.Player, options, entry: string, menuButton: VideoJSComponentInterface) { + constructor (player: any, options: any, entry: string, menuButton: VideoJSComponentInterface) { super(player, options) this.settingsButton = menuButton @@ -55,7 +54,7 @@ class SettingsMenuItem extends MenuItem { this.transitionEndHandler = this.onTransitionEnd.bind(this) } - onSubmenuClick (event) { + onSubmenuClick (event: any) { let target = null if (event.type === 'tap') { @@ -150,7 +149,7 @@ class SettingsMenuItem extends MenuItem { * * @method PrefixedEvent */ - PrefixedEvent (element, type, callback, action = 'addEvent') { + PrefixedEvent (element: any, type: any, callback: any, action = 'addEvent') { let prefix = ['webkit', 'moz', 'MS', 'o', ''] for (let p = 0; p < prefix.length; p++) { @@ -166,7 +165,7 @@ class SettingsMenuItem extends MenuItem { } } - onTransitionEnd (event) { + onTransitionEnd (event: any) { if (event.propertyName !== 'margin-right') { return } @@ -229,7 +228,7 @@ class SettingsMenuItem extends MenuItem { ) } - update (event?: Event) { + update (event?: any) { let target = null let subMenu = this.subMenu.name() diff --git a/client/src/assets/player/theater-button.ts b/client/src/assets/player/theater-button.ts index 5cf0b6425..b761f6030 100644 --- a/client/src/assets/player/theater-button.ts +++ b/client/src/assets/player/theater-button.ts @@ -6,7 +6,7 @@ class TheaterButton extends Button { private static readonly THEATER_MODE_CLASS = 'vjs-theater-enabled' - constructor (player, options) { + constructor (player: any, options: any) { super(player, options) const enabled = getStoredTheater() diff --git a/client/src/assets/player/utils.ts b/client/src/assets/player/utils.ts index cf4f60f55..46081c0d2 100644 --- a/client/src/assets/player/utils.ts +++ b/client/src/assets/player/utils.ts @@ -12,7 +12,7 @@ const dictionaryBytes: Array<{max: number, type: string}> = [ { max: 1073741824, type: 'MB' }, { max: 1.0995116e12, type: 'GB' } ] -function bytes (value) { +function bytes (value: any) { const format = dictionaryBytes.find(d => value < d.max) || dictionaryBytes[dictionaryBytes.length - 1] const calc = Math.floor(value / (format.max / 1024)).toString() diff --git a/client/src/assets/player/video-renderer.ts b/client/src/assets/player/video-renderer.ts index 2cb05a448..a3415937b 100644 --- a/client/src/assets/player/video-renderer.ts +++ b/client/src/assets/player/video-renderer.ts @@ -1,9 +1,9 @@ // Thanks: https://github.com/feross/render-media // TODO: use render-media once https://github.com/feross/render-media/issues/32 is fixed -import * as MediaElementWrapper from 'mediasource' +const MediaElementWrapper = require('mediasource') import { extname } from 'path' -import * as videostream from 'videostream' +const videostream = require('videostream') const VIDEOSTREAM_EXTS = [ '.m4a', @@ -17,7 +17,7 @@ type RenderMediaOptions = { } function renderVideo ( - file, + file: any, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer: any) => void @@ -27,11 +27,11 @@ function renderVideo ( return renderMedia(file, elem, opts, callback) } -function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer?: any) => void) { +function renderMedia (file: any, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer?: any) => void) { const extension = extname(file.name).toLowerCase() - let preparedElem = undefined + let preparedElem: any = undefined let currentTime = 0 - let renderer + let renderer: any try { if (VIDEOSTREAM_EXTS.indexOf(extension) >= 0) { @@ -45,7 +45,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca function useVideostream () { prepareElem() - preparedElem.addEventListener('error', function onError (err) { + preparedElem.addEventListener('error', function onError (err: Error) { preparedElem.removeEventListener('error', onError) return callback(err) @@ -58,7 +58,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca const codecs = getCodec(file.name, useVP9) prepareElem() - preparedElem.addEventListener('error', function onError (err) { + preparedElem.addEventListener('error', function onError (err: Error) { preparedElem.removeEventListener('error', onError) // Try with vp9 before returning an error @@ -102,7 +102,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca } } -function validateFile (file) { +function validateFile (file: any) { if (file == null) { throw new Error('file cannot be null or undefined') } diff --git a/client/src/assets/player/webtorrent-info-button.ts b/client/src/assets/player/webtorrent-info-button.ts index deef253ce..5b9d0a401 100644 --- a/client/src/assets/player/webtorrent-info-button.ts +++ b/client/src/assets/player/webtorrent-info-button.ts @@ -65,7 +65,7 @@ class WebtorrentInfoButton extends Button { subDivHttp.appendChild(subDivHttpText) div.appendChild(subDivHttp) - this.player_.peertube().on('torrentInfo', (event, data) => { + this.player_.peertube().on('torrentInfo', (data: any) => { // We are in HTTP fallback if (!data) { subDivHttp.className = 'vjs-peertube-displayed' diff --git a/client/src/main.ts b/client/src/main.ts index f456e89c5..dee962180 100644 --- a/client/src/main.ts +++ b/client/src/main.ts @@ -8,7 +8,7 @@ import { hmrBootstrap } from './hmr' import { getDevLocale, isOnDevLocale } from '@app/shared/i18n/i18n-utils' import { buildFileLocale } from '../../shared' -let providers = [] +let providers: any[] = [] if (environment.production) { enableProdMode() } diff --git a/client/src/polyfills.ts b/client/src/polyfills.ts index eec30760d..dfe45b591 100644 --- a/client/src/polyfills.ts +++ b/client/src/polyfills.ts @@ -18,24 +18,26 @@ * BROWSER POLYFILLS */ -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +/** + * IE9, IE10 and IE11 requires all of the following polyfills. + */ // For Google Bot -import 'core-js/es6/symbol'; -import 'core-js/es6/object'; -import 'core-js/es6/function'; -import 'core-js/es6/parse-int'; -import 'core-js/es6/parse-float'; -import 'core-js/es6/number'; -import 'core-js/es6/math'; -import 'core-js/es6/string'; -import 'core-js/es6/date'; -import 'core-js/es6/array'; -import 'core-js/es6/regexp'; -import 'core-js/es6/map'; -import 'core-js/es6/weak-map'; -import 'core-js/es6/set'; -import 'core-js/es7/object'; +import 'core-js/es6/symbol' +import 'core-js/es6/object' +import 'core-js/es6/function' +import 'core-js/es6/parse-int' +import 'core-js/es6/parse-float' +import 'core-js/es6/number' +import 'core-js/es6/math' +import 'core-js/es6/string' +import 'core-js/es6/date' +import 'core-js/es6/array' +import 'core-js/es6/regexp' +import 'core-js/es6/map' +import 'core-js/es6/weak-map' +import 'core-js/es6/set' +import 'core-js/es7/object' /** IE10 and IE11 requires the following for NgClass support on SVG elements */ // import 'classlist.js'; // Run `npm install --save classlist.js`. @@ -43,17 +45,18 @@ import 'core-js/es7/object'; /** IE10 and IE11 requires the following for the Reflect API. */ // For Google Bot -import 'core-js/es6/reflect'; +import 'core-js/es6/reflect' -/** Evergreen browsers require these. **/ +/** + * Evergreen browsers require these. + */ // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. import 'core-js/es7/reflect' - /** * Required to support Web Animations `@angular/platform-browser/animations`. * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation - **/ + */ // import 'web-animations-js'; // Run `npm install --save web-animations-js`. /** @@ -70,19 +73,17 @@ import 'core-js/es7/reflect' */ // (window as any).__Zone_enable_cross_context_check = true; - /*************************************************************************************************** * Zone JS is required by default for Angular itself. */ import 'zone.js/dist/zone' // Included with Angular CLI. - /*************************************************************************************************** * APPLICATION IMPORTS */ // global/process polyfills -;(window as any).global = window; -;(window as any).process = require('process/'); -;(window as any).Buffer = require('buffer/').Buffer; +;(window as any).global = window +;(window as any).process = require('process/') +;(window as any).Buffer = require('buffer/').Buffer diff --git a/client/src/shims/noop.ts b/client/src/shims/noop.ts index 899b69bf3..086a60e32 100644 --- a/client/src/shims/noop.ts +++ b/client/src/shims/noop.ts @@ -1,3 +1,3 @@ // Does nothing. Used to shim out node.js modules // which are no-ops in the browser. -export const NOOP = 0 \ No newline at end of file +export const NOOP = 0 diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index ea3436c7c..e5a2d208a 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts @@ -17,7 +17,7 @@ import 'core-js/es6/set' // For google bot that uses Chrome 41 and does not understand fetch import 'whatwg-fetch' -import * as vjs from 'video.js' +const vjs = require('video.js') import * as Channel from 'jschannel' import { peertubeTranslate, ResultList, VideoDetails } from '../../../../shared' @@ -304,7 +304,7 @@ class PeerTubeEmbed { this.playerOptions = videojsOptions this.player = vjs(this.videoContainerId, videojsOptions, () => { - this.player.on('customError', (event, data) => this.handleError(data.err)) + this.player.on('customError', (data: any) => this.handleError(data.err)) window[ 'videojsPlayer' ] = this.player diff --git a/client/src/standalone/videos/test-embed.ts b/client/src/standalone/videos/test-embed.ts index dba331e90..b750c2ee6 100644 --- a/client/src/standalone/videos/test-embed.ts +++ b/client/src/standalone/videos/test-embed.ts @@ -66,11 +66,11 @@ window.addEventListener('load', async () => { updateRates() }) - let updateResolutions = resolutions => { + let updateResolutions = ((resolutions: any) => { let resolutionListEl = document.querySelector('#resolution-list') resolutionListEl.innerHTML = '' - resolutions.forEach(resolution => { + resolutions.forEach((resolution: any) => { if (resolution.active) { let itemEl = document.createElement('strong') itemEl.innerText = `${resolution.label} (active)` @@ -87,7 +87,7 @@ window.addEventListener('load', async () => { resolutionListEl.appendChild(itemEl) } }) - } + }) player.getResolutions().then( resolutions => updateResolutions(resolutions)) diff --git a/client/src/typings.d.ts b/client/src/typings.d.ts index ef5c7bd62..9615434ac 100644 --- a/client/src/typings.d.ts +++ b/client/src/typings.d.ts @@ -2,4 +2,5 @@ declare var module: NodeModule; interface NodeModule { id: string; + [key: string]: any } diff --git a/client/tsconfig.json b/client/tsconfig.json index 431ea7d91..ef80445db 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -7,7 +7,8 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, - "noImplicitAny": false, + "noImplicitAny": true, + "suppressImplicitAnyIndexErrors":true, "alwaysStrict": true, "target": "es5", "typeRoots": [ diff --git a/shared/models/i18n/i18n.ts b/shared/models/i18n/i18n.ts index 5c3249452..9278c043b 100644 --- a/shared/models/i18n/i18n.ts +++ b/shared/models/i18n/i18n.ts @@ -1,6 +1,6 @@ export const LOCALE_FILES = [ 'player', 'server' ] -export const I18N_LOCALES = { +export const I18N_LOCALES: any = { 'en-US': 'English', 'fr-FR': 'Français', 'eu-ES': 'Euskara', @@ -17,7 +17,7 @@ export const I18N_LOCALES = { 'zh-Hans-CN': '简体中文(中国)' } -const I18N_LOCALE_ALIAS = { +const I18N_LOCALE_ALIAS: any = { 'en': 'en-US', 'fr': 'fr-FR', 'eu': 'eu-ES', diff --git a/shared/models/overviews/videos-overview.ts b/shared/models/overviews/videos-overview.ts index ee009d94c..8c8785763 100644 --- a/shared/models/overviews/videos-overview.ts +++ b/shared/models/overviews/videos-overview.ts @@ -15,4 +15,5 @@ export interface VideosOverview { tag: string videos: Video[] }[] + [key: string]: any } diff --git a/shared/models/server/custom-config.model.ts b/shared/models/server/custom-config.model.ts index 3afd36fcd..c5156d9f3 100644 --- a/shared/models/server/custom-config.model.ts +++ b/shared/models/server/custom-config.model.ts @@ -55,6 +55,7 @@ export interface CustomConfig { '480p': boolean '720p': boolean '1080p': boolean + [key: string]: boolean } } diff --git a/shared/models/users/user.model.ts b/shared/models/users/user.model.ts index 8147dc48e..06a660206 100644 --- a/shared/models/users/user.model.ts +++ b/shared/models/users/user.model.ts @@ -20,4 +20,5 @@ export interface User { blockedReason?: string videoQuotaUsed?: number + [key: string]: any } -- cgit v1.2.3 From e27ff5da6ed7bc1f56f50f862b80fb0c7d8a6d98 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 08:48:24 +0200 Subject: AP mimeType -> mediaType --- server/helpers/custom-validators/activitypub/videos.ts | 7 ++++--- server/lib/activitypub/videos.ts | 9 ++++++--- server/models/redundancy/video-redundancy.ts | 1 + server/models/video/video-format-utils.ts | 4 ++++ shared/models/activitypub/objects/common-objects.ts | 12 +++++++++--- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/server/helpers/custom-validators/activitypub/videos.ts b/server/helpers/custom-validators/activitypub/videos.ts index f88d26561..95fe824b9 100644 --- a/server/helpers/custom-validators/activitypub/videos.ts +++ b/server/helpers/custom-validators/activitypub/videos.ts @@ -81,19 +81,20 @@ function isRemoteVideoUrlValid (url: any) { return url.type === 'Link' && ( - ACTIVITY_PUB.URL_MIME_TYPES.VIDEO.indexOf(url.mimeType) !== -1 && + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + ACTIVITY_PUB.URL_MIME_TYPES.VIDEO.indexOf(url.mediaType || url.mimeType) !== -1 && isActivityPubUrlValid(url.href) && validator.isInt(url.height + '', { min: 0 }) && validator.isInt(url.size + '', { min: 0 }) && (!url.fps || validator.isInt(url.fps + '', { min: -1 })) ) || ( - ACTIVITY_PUB.URL_MIME_TYPES.TORRENT.indexOf(url.mimeType) !== -1 && + ACTIVITY_PUB.URL_MIME_TYPES.TORRENT.indexOf(url.mediaType || url.mimeType) !== -1 && isActivityPubUrlValid(url.href) && validator.isInt(url.height + '', { min: 0 }) ) || ( - ACTIVITY_PUB.URL_MIME_TYPES.MAGNET.indexOf(url.mimeType) !== -1 && + ACTIVITY_PUB.URL_MIME_TYPES.MAGNET.indexOf(url.mediaType || url.mimeType) !== -1 && validator.isLength(url.href, { min: 5 }) && validator.isInt(url.height + '', { min: 0 }) ) diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 54cea542f..3da363c0a 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -310,7 +310,8 @@ export { function isActivityVideoUrlObject (url: ActivityUrlObject): url is ActivityVideoUrlObject { const mimeTypes = Object.keys(VIDEO_MIMETYPE_EXT) - return mimeTypes.indexOf(url.mimeType) !== -1 && url.mimeType.startsWith('video/') + const urlMediaType = url.mediaType || url.mimeType + return mimeTypes.indexOf(urlMediaType) !== -1 && urlMediaType.startsWith('video/') } async function createVideo (videoObject: VideoTorrentObject, channelActor: ActorModel, waitThumbnail = false) { @@ -468,7 +469,8 @@ function videoFileActivityUrlToDBAttributes (video: VideoModel, videoObject: Vid for (const fileUrl of fileUrls) { // Fetch associated magnet uri const magnet = videoObject.url.find(u => { - return u.mimeType === 'application/x-bittorrent;x-scheme-handler/magnet' && u.height === fileUrl.height + const mediaType = u.mediaType || u.mimeType + return mediaType === 'application/x-bittorrent;x-scheme-handler/magnet' && (u as any).height === fileUrl.height }) if (!magnet) throw new Error('Cannot find associated magnet uri for file ' + fileUrl.href) @@ -478,8 +480,9 @@ function videoFileActivityUrlToDBAttributes (video: VideoModel, videoObject: Vid throw new Error('Cannot parse magnet URI ' + magnet.href) } + const mediaType = fileUrl.mediaType || fileUrl.mimeType const attribute = { - extname: VIDEO_MIMETYPE_EXT[ fileUrl.mimeType ], + extname: VIDEO_MIMETYPE_EXT[ mediaType ], infoHash: parsed.infoHash, resolution: fileUrl.height, size: fileUrl.size, diff --git a/server/models/redundancy/video-redundancy.ts b/server/models/redundancy/video-redundancy.ts index 2ebe23ef1..cbfc7f7fa 100644 --- a/server/models/redundancy/video-redundancy.ts +++ b/server/models/redundancy/video-redundancy.ts @@ -408,6 +408,7 @@ export class VideoRedundancyModel extends Model { url: { type: 'Link', mimeType: VIDEO_EXT_MIMETYPE[ this.VideoFile.extname ] as any, + mediaType: VIDEO_EXT_MIMETYPE[ this.VideoFile.extname ] as any, href: this.fileUrl, height: this.VideoFile.resolution, size: this.VideoFile.size, diff --git a/server/models/video/video-format-utils.ts b/server/models/video/video-format-utils.ts index 905e84449..e3f8d525b 100644 --- a/server/models/video/video-format-utils.ts +++ b/server/models/video/video-format-utils.ts @@ -208,6 +208,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: VIDEO_EXT_MIMETYPE[ file.extname ] as any, + mediaType: VIDEO_EXT_MIMETYPE[ file.extname ] as any, href: video.getVideoFileUrl(file, baseUrlHttp), height: file.resolution, size: file.size, @@ -217,6 +218,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: 'application/x-bittorrent' as 'application/x-bittorrent', + mediaType: 'application/x-bittorrent' as 'application/x-bittorrent', href: video.getTorrentUrl(file, baseUrlHttp), height: file.resolution }) @@ -224,6 +226,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: 'application/x-bittorrent;x-scheme-handler/magnet' as 'application/x-bittorrent;x-scheme-handler/magnet', + mediaType: 'application/x-bittorrent;x-scheme-handler/magnet' as 'application/x-bittorrent;x-scheme-handler/magnet', href: video.generateMagnetUri(file, baseUrlHttp, baseUrlWs), height: file.resolution }) @@ -233,6 +236,7 @@ function videoModelToActivityPubObject (video: VideoModel): VideoTorrentObject { url.push({ type: 'Link', mimeType: 'text/html', + mediaType: 'text/html', href: CONFIG.WEBSERVER.URL + '/videos/watch/' + video.uuid }) diff --git a/shared/models/activitypub/objects/common-objects.ts b/shared/models/activitypub/objects/common-objects.ts index 1de60da94..118a4f43d 100644 --- a/shared/models/activitypub/objects/common-objects.ts +++ b/shared/models/activitypub/objects/common-objects.ts @@ -19,7 +19,9 @@ export interface ActivityIconObject { export type ActivityVideoUrlObject = { type: 'Link' - mimeType: 'video/mp4' | 'video/webm' | 'video/ogg' + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + mimeType?: 'video/mp4' | 'video/webm' | 'video/ogg' + mediaType: 'video/mp4' | 'video/webm' | 'video/ogg' href: string height: number size: number @@ -31,14 +33,18 @@ export type ActivityUrlObject = | { type: 'Link' - mimeType: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + mimeType?: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' + mediaType: 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' href: string height: number } | { type: 'Link' - mimeType: 'text/html' + // TODO: remove mimeType (backward compatibility, introduced in v1.1.0) + mimeType?: 'text/html' + mediaType: 'text/html' href: string } -- cgit v1.2.3 From cdf4cb9eaf5f6bc71f7c1e1963c07575f1d2593d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 09:44:43 +0200 Subject: Fix transcoding --- package.json | 1 + server/helpers/ffmpeg-utils.ts | 159 +-- server/initializers/checker-before-init.ts | 8 +- server/tests/api/videos/multiple-servers.ts | 8 +- server/tests/api/videos/video-transcoder.ts | 8 +- yarn.lock | 1443 +++++++++++++++++++++++++++ 6 files changed, 1543 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index e5b2bb50e..46c6d5dce 100644 --- a/package.json +++ b/package.json @@ -163,6 +163,7 @@ "@types/config": "^0.0.34", "@types/express": "^4.0.35", "@types/express-rate-limit": "^2.9.3", + "@types/fluent-ffmpeg": "^2.1.8", "@types/fs-extra": "^5.0.4", "@types/libxmljs": "^0.18.0", "@types/lodash": "^4.14.64", diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index 037bf703a..a108d46a0 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -1,6 +1,6 @@ import * as ffmpeg from 'fluent-ffmpeg' import { join } from 'path' -import { VideoResolution, getTargetBitrate } from '../../shared/models/videos' +import { getTargetBitrate, VideoResolution } from '../../shared/models/videos' import { CONFIG, FFMPEG_NICE, VIDEO_TRANSCODING_FPS } from '../initializers' import { processImage } from './image-utils' import { logger } from './logger' @@ -116,46 +116,50 @@ type TranscodeOptions = { function transcode (options: TranscodeOptions) { return new Promise(async (res, rej) => { - let fps = await getVideoFileFPS(options.inputPath) - // On small/medium resolutions, limit FPS - if ( - options.resolution !== undefined && - options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && - fps > VIDEO_TRANSCODING_FPS.AVERAGE - ) { - fps = VIDEO_TRANSCODING_FPS.AVERAGE - } + try { + let fps = await getVideoFileFPS(options.inputPath) + // On small/medium resolutions, limit FPS + if ( + options.resolution !== undefined && + options.resolution < VIDEO_TRANSCODING_FPS.KEEP_ORIGIN_FPS_RESOLUTION_MIN && + fps > VIDEO_TRANSCODING_FPS.AVERAGE + ) { + fps = VIDEO_TRANSCODING_FPS.AVERAGE + } - let command = ffmpeg(options.inputPath, { niceness: FFMPEG_NICE.TRANSCODING }) - .output(options.outputPath) - command = await presetH264(command, options.resolution, fps) + let command = ffmpeg(options.inputPath, { niceness: FFMPEG_NICE.TRANSCODING }) + .output(options.outputPath) + command = await presetH264(command, options.resolution, fps) - if (CONFIG.TRANSCODING.THREADS > 0) { - // if we don't set any threads ffmpeg will chose automatically - command = command.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS) - } + if (CONFIG.TRANSCODING.THREADS > 0) { + // if we don't set any threads ffmpeg will chose automatically + command = command.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS) + } - if (options.resolution !== undefined) { - // '?x720' or '720x?' for example - const size = options.isPortraitMode === true ? `${options.resolution}x?` : `?x${options.resolution}` - command = command.size(size) - } + if (options.resolution !== undefined) { + // '?x720' or '720x?' for example + const size = options.isPortraitMode === true ? `${options.resolution}x?` : `?x${options.resolution}` + command = command.size(size) + } - if (fps) { - // Hard FPS limits - if (fps > VIDEO_TRANSCODING_FPS.MAX) fps = VIDEO_TRANSCODING_FPS.MAX - else if (fps < VIDEO_TRANSCODING_FPS.MIN) fps = VIDEO_TRANSCODING_FPS.MIN + if (fps) { + // Hard FPS limits + if (fps > VIDEO_TRANSCODING_FPS.MAX) fps = VIDEO_TRANSCODING_FPS.MAX + else if (fps < VIDEO_TRANSCODING_FPS.MIN) fps = VIDEO_TRANSCODING_FPS.MIN - command = command.withFPS(fps) - } + command = command.withFPS(fps) + } - command - .on('error', (err, stdout, stderr) => { - logger.error('Error in transcoding job.', { stdout, stderr }) - return rej(err) - }) - .on('end', res) - .run() + command + .on('error', (err, stdout, stderr) => { + logger.error('Error in transcoding job.', { stdout, stderr }) + return rej(err) + }) + .on('end', res) + .run() + } catch (err) { + return rej(err) + } }) } @@ -194,11 +198,10 @@ function getVideoFileStream (path: string) { * and quality. Superfast and ultrafast will give you better * performance, but then quality is noticeably worse. */ -async function presetH264VeryFast (ffmpeg: ffmpeg, resolution: VideoResolution, fps: number): ffmpeg { - const localFfmpeg = await presetH264(ffmpeg, resolution, fps) - localFfmpeg - .outputOption('-preset:v veryfast') - .outputOption(['--aq-mode=2', '--aq-strength=1.3']) +async function presetH264VeryFast (command: ffmpeg.FfmpegCommand, resolution: VideoResolution, fps: number): Promise { + let localCommand = await presetH264(command, resolution, fps) + localCommand = localCommand.outputOption('-preset:v veryfast') + .outputOption([ '--aq-mode=2', '--aq-strength=1.3' ]) /* MAIN reference: https://slhck.info/video/2017/03/01/rate-control.html Our target situation is closer to a livestream than a stream, @@ -210,31 +213,39 @@ async function presetH264VeryFast (ffmpeg: ffmpeg, resolution: VideoResolution, Make up for most of the loss of grain and macroblocking with less computing power. */ + + return localCommand } /** * A preset optimised for a stillimage audio video */ -async function presetStillImageWithAudio (ffmpeg: ffmpeg, resolution: VideoResolution, fps: number): ffmpeg { - const localFfmpeg = await presetH264VeryFast(ffmpeg, resolution, fps) - localFfmpeg - .outputOption('-tune stillimage') +async function presetStillImageWithAudio ( + command: ffmpeg.FfmpegCommand, + resolution: VideoResolution, + fps: number +): Promise { + let localCommand = await presetH264VeryFast(command, resolution, fps) + localCommand = localCommand.outputOption('-tune stillimage') + + return localCommand } /** * A toolbox to play with audio */ namespace audio { - export const get = (_ffmpeg, pos: number | string = 0) => { + export const get = (option: ffmpeg.FfmpegCommand | string) => { // without position, ffprobe considers the last input only // we make it consider the first input only // if you pass a file path to pos, then ffprobe acts on that file directly return new Promise<{ absolutePath: string, audioStream?: any }>((res, rej) => { - _ffmpeg.ffprobe(pos, (err,data) => { + + function parseFfprobe (err: any, data: ffmpeg.FfprobeData) { if (err) return rej(err) if ('streams' in data) { - const audioStream = data['streams'].find(stream => stream['codec_type'] === 'audio') + const audioStream = data.streams.find(stream => stream['codec_type'] === 'audio') if (audioStream) { return res({ absolutePath: data.format.filename, @@ -242,8 +253,15 @@ namespace audio { }) } } + return res({ absolutePath: data.format.filename }) - }) + } + + if (typeof option === 'string') { + return ffmpeg.ffprobe(option, parseFfprobe) + } + + return option.ffprobe(parseFfprobe) }) } @@ -285,8 +303,8 @@ namespace audio { * As for the audio, quality '5' is the highest and ensures 96-112kbps/channel * See https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_vbr */ -async function presetH264 (ffmpeg: ffmpeg, resolution: VideoResolution, fps: number): ffmpeg { - let localFfmpeg = ffmpeg +async function presetH264 (command: ffmpeg.FfmpegCommand, resolution: VideoResolution, fps: number): Promise { + let localCommand = command .format('mp4') .videoCodec('libx264') .outputOption('-level 3.1') // 3.1 is the minimal ressource allocation for our highest supported resolution @@ -294,41 +312,38 @@ async function presetH264 (ffmpeg: ffmpeg, resolution: VideoResolution, fps: num .outputOption('-bf 16') // NOTE: Why 16: https://github.com/Chocobozzz/PeerTube/pull/774. b-strategy 2 -> B-frames<16 .outputOption('-map_metadata -1') // strip all metadata .outputOption('-movflags faststart') - const _audio = await audio.get(localFfmpeg) - if (!_audio.audioStream) { - return localFfmpeg.noAudio() - } + const parsedAudio = await audio.get(localCommand) - // we favor VBR, if a good AAC encoder is available - if ((await checkFFmpegEncoders()).get('libfdk_aac')) { - return localFfmpeg + if (!parsedAudio.audioStream) { + localCommand = localCommand.noAudio() + } else if ((await checkFFmpegEncoders()).get('libfdk_aac')) { // we favor VBR, if a good AAC encoder is available + localCommand = localCommand .audioCodec('libfdk_aac') .audioQuality(5) + } else { + // we try to reduce the ceiling bitrate by making rough correspondances of bitrates + // of course this is far from perfect, but it might save some space in the end + const audioCodecName = parsedAudio.audioStream[ 'codec_name' ] + let bitrate: number + if (audio.bitrate[ audioCodecName ]) { + bitrate = audio.bitrate[ audioCodecName ](parsedAudio.audioStream[ 'bit_rate' ]) + + if (bitrate === -1) localCommand = localCommand.audioCodec('copy') + else if (bitrate !== undefined) localCommand = localCommand.audioBitrate(bitrate) + } } - // we try to reduce the ceiling bitrate by making rough correspondances of bitrates - // of course this is far from perfect, but it might save some space in the end - const audioCodecName = _audio.audioStream['codec_name'] - let bitrate: number - if (audio.bitrate[audioCodecName]) { - bitrate = audio.bitrate[audioCodecName](_audio.audioStream['bit_rate']) - - if (bitrate === -1) return localFfmpeg.audioCodec('copy') - } - - if (bitrate !== undefined) return localFfmpeg.audioBitrate(bitrate) - // Constrained Encoding (VBV) // https://slhck.info/video/2017/03/01/rate-control.html // https://trac.ffmpeg.org/wiki/Limiting%20the%20output%20bitrate const targetBitrate = getTargetBitrate(resolution, fps, VIDEO_TRANSCODING_FPS) - localFfmpeg = localFfmpeg.outputOptions([`-maxrate ${ targetBitrate }`, `-bufsize ${ targetBitrate * 2 }`]) + localCommand = localCommand.outputOptions([`-maxrate ${ targetBitrate }`, `-bufsize ${ targetBitrate * 2 }`]) // Keyframe interval of 2 seconds for faster seeking and resolution switching. // https://streaminglearningcenter.com/blogs/whats-the-right-keyframe-interval.html // https://superuser.com/a/908325 - localFfmpeg = localFfmpeg.outputOption(`-g ${ fps * 2 }`) + localCommand = localCommand.outputOption(`-g ${ fps * 2 }`) - return localFfmpeg + return localCommand } diff --git a/server/initializers/checker-before-init.ts b/server/initializers/checker-before-init.ts index 4f46d406a..9dfb5d68c 100644 --- a/server/initializers/checker-before-init.ts +++ b/server/initializers/checker-before-init.ts @@ -77,7 +77,7 @@ async function checkFFmpeg (CONFIG: { TRANSCODING: { ENABLED: boolean } }) { } } - checkFFmpegEncoders() + return checkFFmpegEncoders() } // Optional encoders, if present, can be used to improve transcoding @@ -95,10 +95,10 @@ async function checkFFmpegEncoders (): Promise> { supportedOptionalEncoders = new Map() for (const encoder of optionalEncoders) { - supportedOptionalEncoders.set(encoder, - encoders[encoder] !== undefined - ) + supportedOptionalEncoders.set(encoder, encoders[encoder] !== undefined) } + + return supportedOptionalEncoders } // --------------------------------------------------------------------------- diff --git a/server/tests/api/videos/multiple-servers.ts b/server/tests/api/videos/multiple-servers.ts index 4553ee855..b9ace2885 100644 --- a/server/tests/api/videos/multiple-servers.ts +++ b/server/tests/api/videos/multiple-servers.ts @@ -987,19 +987,19 @@ describe('Test multiple servers', function () { files: [ { resolution: 720, - size: 36000 + size: 72000 }, { resolution: 480, - size: 21000 + size: 45000 }, { resolution: 360, - size: 17000 + size: 34600 }, { resolution: 240, - size: 13000 + size: 24770 } ] } diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index 0ce5197ea..0a567873c 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts @@ -123,7 +123,7 @@ describe('Test video transcoding', function () { expect(videoDetails.files).to.have.lengthOf(4) const path = join(root(), 'test2', 'videos', video.uuid + '-240.mp4') - const probe = await audio.get(ffmpeg, path) + const probe = await audio.get(path) if (probe.audioStream) { expect(probe.audioStream[ 'codec_name' ]).to.be.equal('aac') @@ -154,7 +154,7 @@ describe('Test video transcoding', function () { expect(videoDetails.files).to.have.lengthOf(4) const path = join(root(), 'test2', 'videos', video.uuid + '-240.mp4') - const probe = await audio.get(ffmpeg, path) + const probe = await audio.get(path) expect(probe).to.not.have.property('audioStream') } }) @@ -179,9 +179,9 @@ describe('Test video transcoding', function () { expect(videoDetails.files).to.have.lengthOf(4) const fixturePath = buildAbsoluteFixturePath(videoAttributes.fixture) - const fixtureVideoProbe = await audio.get(ffmpeg, fixturePath) + const fixtureVideoProbe = await audio.get(fixturePath) const path = join(root(), 'test2', 'videos', video.uuid + '-240.mp4') - const videoProbe = await audio.get(ffmpeg, path) + const videoProbe = await audio.get(path) if (videoProbe.audioStream && fixtureVideoProbe.audioStream) { const toOmit = [ 'max_bit_rate', 'duration', 'duration_ts', 'nb_frames', 'start_time', 'start_pts' ] expect(omit(videoProbe.audioStream, toOmit)).to.be.deep.equal(omit(fixtureVideoProbe.audioStream, toOmit)) diff --git a/yarn.lock b/yarn.lock index 5a67caf25..0ec5427be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,34 +5,41 @@ "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== dependencies: any-observable "^0.3.0" "@types/async-lock@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@types/async-lock/-/async-lock-1.1.0.tgz#002b1ebeebd382aff66b68bed70a74c7bdd06e3e" + integrity sha512-Eo8EXiqmChtkt0ETf6AQ8aiDHT3Tht6OuMSa3/9nfuyqFimp7ZwPMiufsA56A7ZUGBuwFzH860jO0d8n0lETtg== "@types/async@^2.0.40": version "2.0.49" resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0" + integrity sha512-Benr3i5odUkvpFkOpzGqrltGdbSs+EVCkEBGXbuR7uT0VzhXKIkhem6PDzHdx5EonA+rfbB3QvP6aDOw5+zp5Q== "@types/bcrypt@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/bcrypt/-/bcrypt-2.0.0.tgz#74cccef82026341fd786cf2eb9c912c7f9107c55" + integrity sha512-/r/ihQBlYMUYHqcFXix76I3OLYTaUcU8xV2agtB2hCds2rfJI56UyKu0e2LkAW2/4HHmQKmQRFXqM8D6y3Tc5g== "@types/bittorrent-protocol@*": version "2.2.2" resolved "https://registry.yarnpkg.com/@types/bittorrent-protocol/-/bittorrent-protocol-2.2.2.tgz#169e9633e1bd18e6b830d11cf42e611b1972cb83" + integrity sha512-VAPyW8eGh8FjyGxBSKyPSH60Qkxo3r2W4sDYXCQJYfYD49UnA1SUP+5GQ/4MgbdiEDSp9YW4yuebpIR/vstD5Q== dependencies: "@types/node" "*" "@types/bluebird@*", "@types/bluebird@3.5.18", "@types/bluebird@3.5.21": version "3.5.21" resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.21.tgz#567615589cc913e84a28ecf9edb031732bdf2634" + integrity sha512-6UNEwyw+6SGMC/WMI0ld0PS4st7Qq51qgguFrFizOSpGvZiqe9iswztFSdZvwJBEhLOy2JaxNE6VC7yMAlbfyQ== "@types/body-parser@*", "@types/body-parser@^1.16.3": version "1.17.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c" + integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w== dependencies: "@types/connect" "*" "@types/node" "*" @@ -40,6 +47,7 @@ "@types/bull@^3.3.12": version "3.3.20" resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.3.20.tgz#c61a597def297252419cf16ac4effdfb4d82d9c9" + integrity sha512-/dIHEfzyxsd0WZ3enmj+7z5Qg6T9bZpeJk1cfRVgUQdb4ss9vUc4WpfIqC8O0f+QwicAm90yqKxnU33xsRyp2g== dependencies: "@types/bluebird" "*" "@types/ioredis" "*" @@ -47,60 +55,72 @@ "@types/bytes@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.0.0.tgz#549eeacd0a8fecfaa459334583a4edcee738e6db" + integrity sha512-ZF43+CIIlzngQe8/Zo7L1kpY9W8O6rO006VDz3c5iM21ddtXWxCEyOXyft+q4pVF2tGqvrVuVrEDH1+gJEi1fQ== "@types/caseless@*": version "0.12.1" resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.1.tgz#9794c69c8385d0192acc471a540d1f8e0d16218a" + integrity sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A== "@types/chai-json-schema@^1.4.3": version "1.4.3" resolved "https://registry.yarnpkg.com/@types/chai-json-schema/-/chai-json-schema-1.4.3.tgz#1dd1e88ae911dd6e6e1c3c2d0e0397328aab0bfb" + integrity sha1-HdHoiukR3W5uHDwtDgOXMoqrC/s= dependencies: "@types/tv4" "*" "@types/chai-xml@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@types/chai-xml/-/chai-xml-0.3.1.tgz#a9cc5812bd67e9c9221d1e9b4dfb0cca797fd40a" + integrity sha1-qcxYEr1n6ckiHR6bTfsMynl/1Ao= dependencies: "@types/chai" "*" "@types/chai@*", "@types/chai@^4.0.4": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.5.tgz#6163dc60078d215ec46186dc76062ef6ed68d39c" + integrity sha512-nyzJ08qQMY4umgXD6SzbLflQucEnoAf2H5iUxPX5t0euDgXDV+bFTJlEmEepM35/2l07jYHdAfP6YEndeTWM0w== "@types/config@^0.0.34": version "0.0.34" resolved "https://registry.yarnpkg.com/@types/config/-/config-0.0.34.tgz#123f91bdb5afdd702294b9de9ca04d9ea11137b0" + integrity sha512-jWi9DXx77hnzN4kHCNEvP/kab+nchRLTg9yjXYxjTcMBkuc5iBb3QuwJ4sPrb+nzy1GQjrfyfMqZOdR4i7opRQ== "@types/connect@*": version "3.4.32" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28" + integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== dependencies: "@types/node" "*" "@types/continuation-local-storage@*": version "3.2.1" resolved "https://registry.yarnpkg.com/@types/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#a33e0df9dce9b424d1c98fc4fdebd8578dceec7e" + integrity sha1-oz4N+dzptCTRyY/E/evYV43O7H4= dependencies: "@types/node" "*" "@types/cookiejar@*": version "2.1.0" resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.0.tgz#4b7daf2c51696cfc70b942c11690528229d1a1ce" + integrity sha512-EIjmpvnHj+T4nMcKwHwxZKUfDmphIKJc2qnEMhSoOvr1lYEQpuRKRz8orWr//krYIIArS/KGGLfL2YGVUYXmIA== "@types/events@*": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + integrity sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA== "@types/express-rate-limit@^2.9.3": version "2.9.3" resolved "https://registry.yarnpkg.com/@types/express-rate-limit/-/express-rate-limit-2.9.3.tgz#e83a548bf251ad12ca49055c22d3f2da4e16b62d" + integrity sha512-KIiEnkemd20SpTHUvN8Yqr11nddpD1xch3hY5G9GnuaURQ9EnoAi1N2DJQK8n8V0vHBJOcmwnMdufLdWn1GYhQ== dependencies: "@types/express" "*" "@types/express-serve-static-core@*": version "4.16.0" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz#fdfe777594ddc1fe8eb8eccce52e261b496e43e7" + integrity sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w== dependencies: "@types/events" "*" "@types/node" "*" @@ -109,36 +129,50 @@ "@types/express@*", "@types/express@^4.0.35": version "4.16.0" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19" + integrity sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "*" "@types/serve-static" "*" +"@types/fluent-ffmpeg@^2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.8.tgz#a9ffff2140d641ec898ebdddaa1e6e7e962d7943" + integrity sha512-dbEJwEPpKlJPujNTSj7HM03T9rurGDEdrbh/BHR5lJ1A6uYx9VrOP+/GjJMsO5hXjf2hpk/41wBC/H9TmKIm9A== + dependencies: + "@types/events" "*" + "@types/node" "*" + "@types/form-data@*": version "2.2.1" resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-2.2.1.tgz#ee2b3b8eaa11c0938289953606b745b738c54b1e" + integrity sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ== dependencies: "@types/node" "*" "@types/fs-extra@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz#b971134d162cc0497d221adde3dbb67502225599" + integrity sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g== dependencies: "@types/node" "*" "@types/geojson@^1.0.0": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf" + integrity sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w== "@types/ioredis@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.0.1.tgz#dfe9de0d5dce54193975c1909f0d082e5574e2f2" + integrity sha512-pvGlg7THjfjC6hzhOBVNtD0p+B0ph2FYx0wJjDBW7rpDLe9zazQgAt2WRWm3COW6Z0ZXqmCzPkq7WrOJWJklSQ== dependencies: "@types/node" "*" "@types/libxmljs@^0.18.0": version "0.18.2" resolved "https://registry.yarnpkg.com/@types/libxmljs/-/libxmljs-0.18.2.tgz#c424173a07477a7552173d7c779d5ffe77dd8efc" + integrity sha512-D0S5gpn0AFGckaBJj803zFpAOgERx/SiBfCI63U/mUEADr+wuKkDQdsWJadAxUikBSAZ7/ekibaDnjkECUYSBQ== dependencies: "@types/events" "*" "@types/node" "*" @@ -146,60 +180,72 @@ "@types/lodash@*", "@types/lodash@^4.14.64": version "4.14.116" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.116.tgz#5ccf215653e3e8c786a58390751033a9adca0eb9" + integrity sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg== "@types/magnet-uri@*", "@types/magnet-uri@^5.1.1": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/magnet-uri/-/magnet-uri-5.1.1.tgz#861aaf64c92a3137dd848fefc55cd352a8ea851a" + integrity sha1-hhqvZMkqMTfdhI/vxVzTUqjqhRo= dependencies: "@types/node" "*" "@types/maildev@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@types/maildev/-/maildev-0.0.1.tgz#9fe4fa05610f6c6afc10224bcca6b67bc3c56fc0" + integrity sha512-hh2pmc+7TSO2/xCmjhkEc7JQCpHUjJPrXx4OPNF+oXlv5ratDTGp+YamZvxlf8PSVdPLI11ihmcF6VFuzwA5OQ== dependencies: "@types/node" "*" "@types/memoizee@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.2.tgz#a500158999a8144a9b46cf9a9fb49b15f1853573" + integrity sha512-bhdZXZWKfpkQuuiQjVjnPiNeBHpIAC6rfOFqlJXKD3VC35mCcolfVfXYTnk9Ppee5Mkmmz3Llgec7xCdJAbzWw== "@types/mime@*": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b" + integrity sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA== "@types/mkdirp@^0.5.1": version "0.5.2" resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== dependencies: "@types/node" "*" "@types/mocha@^5.0.0": version "5.2.5" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" + integrity sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww== "@types/morgan@^1.7.32": version "1.7.35" resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.7.35.tgz#6358f502931cc2583d7a94248c41518baa688494" + integrity sha512-E9qFi0seOkdlQnCTPv54brNfGWeFdRaEhI5tSue4pdx/V+xfxvMETsxXhOEcj1cYL+0n/jcTEmj/jD2gjzCwMg== dependencies: "@types/express" "*" "@types/multer@^1.3.3": version "1.3.7" resolved "https://registry.yarnpkg.com/@types/multer/-/multer-1.3.7.tgz#9fe1de9f44f401ff2eaf0d4468cf16935a9c6866" + integrity sha512-Lx4rNtGajRGtcVwJe1sKPAkAuBBWq8TOuimKJfOfK7ayY1Jc+18Lx00GjagLeIwaH2+OvFJvCv8tz+pvbt3OoA== dependencies: "@types/express" "*" "@types/node@*", "@types/node@^10.0.8": version "10.10.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.10.1.tgz#d5c96ca246a418404914d180b7fdd625ad18eca6" + integrity sha512-nzsx28VwfaIykfzMAG9TB3jxF5Nn+1/WMKnmVZc8TsB+LMIVvwUscVn7PAq+LFaY5ng5u4jp5mRROSswo76PPA== "@types/node@6.0.41": version "6.0.41" resolved "http://registry.npmjs.org/@types/node/-/node-6.0.41.tgz#578cf53aaec65887bcaf16792f8722932e8ff8ea" + integrity sha1-V4z1Oq7GWIe8rxZ5L4ciky6P+Oo= "@types/nodemailer@^4.3.1": version "4.6.5" resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-4.6.5.tgz#8bb799202f8cfcc8200a1c1627f6a8a74fe71da6" + integrity sha512-cbs2HFLj33TBqzcCqTrs+6/mgTX3xl0odbApv3vTdF2+JERLxh5rDZCasXhvy+YqaiUNBr2I1RjNCdbKGs1Bnw== dependencies: "@types/events" "*" "@types/node" "*" @@ -207,18 +253,21 @@ "@types/oauth2-server@^3.0.8": version "3.0.8" resolved "https://registry.yarnpkg.com/@types/oauth2-server/-/oauth2-server-3.0.8.tgz#0b7f5083790732ea00bf8c5e0b04b9fa1f22f22c" + integrity sha512-+P/rJsQwxMfEBu5sG9CvuqirL4BguCs1KdV3dBYob5PqxJLN6VT4m0Ol9usvCfdY+AHmkpdDaHAltA1rqzE6bw== dependencies: "@types/express" "*" "@types/parse-torrent-file@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/parse-torrent-file/-/parse-torrent-file-4.0.1.tgz#056a6c18f3fac0cd7c6c74540f00496a3225976b" + integrity sha1-BWpsGPP6wM18bHRUDwBJajIll2s= dependencies: "@types/node" "*" "@types/parse-torrent@*": version "5.8.2" resolved "https://registry.yarnpkg.com/@types/parse-torrent/-/parse-torrent-5.8.2.tgz#53ab880e38ced2005a79948f0df0c8762539323e" + integrity sha512-wfXO0N2vNkk/W1CEiPbT+7GPiOe3fnRLecdFBw/HNxPyx6czOGqUYi8bw2dbjEmYqWSsqhMdrajEd6o5ry2p4w== dependencies: "@types/magnet-uri" "*" "@types/node" "*" @@ -227,14 +276,17 @@ "@types/pem@^1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@types/pem/-/pem-1.9.3.tgz#0c864c8b79e43fef6367db895f60fd1edd10e86c" + integrity sha512-+hHbGi9PAyHVeRdMJN6yNuMWoshJ+7oTqYuhBB1/vHq0Tfu46ucbvgxmhwBfe0GCiJZvCa20VHhHsA0mY5W6hQ== "@types/range-parser@*": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.2.tgz#fa8e1ad1d474688a757140c91de6dace6f4abc8d" + integrity sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw== "@types/redis@^2.8.5": version "2.8.6" resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.6.tgz#3674d07a13ad76bccda4c37dc3909e4e95757e7e" + integrity sha512-kaSI4XQwCfJtPiuyCXvLxCaw2N0fMZesdob3Jh01W20vNFct+3lfvJ/4yCJxbSopXOBOzpg+pGxkW6uWZrPZHA== dependencies: "@types/events" "*" "@types/node" "*" @@ -242,6 +294,7 @@ "@types/request@^2.0.3": version "2.47.1" resolved "https://registry.yarnpkg.com/@types/request/-/request-2.47.1.tgz#25410d3afbdac04c91a94ad9efc9824100735824" + integrity sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g== dependencies: "@types/caseless" "*" "@types/form-data" "*" @@ -251,6 +304,7 @@ "@types/sequelize@4.27.24": version "4.27.24" resolved "https://registry.yarnpkg.com/@types/sequelize/-/sequelize-4.27.24.tgz#7d593c062c368f570c68b0217f5c1d4c892ead48" + integrity sha512-5uMFsMa/0hU/7/8znyfBKSJy2Mbd57uRpYk5X1+Phz9dN0MRZLbTbj1JMeB3CJ4R9b1coNQGfp2kXh4OjI9UyA== dependencies: "@types/bluebird" "*" "@types/continuation-local-storage" "*" @@ -260,6 +314,7 @@ "@types/serve-static@*": version "1.13.2" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48" + integrity sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q== dependencies: "@types/express-serve-static-core" "*" "@types/mime" "*" @@ -267,18 +322,21 @@ "@types/sharp@^0.17.6": version "0.17.10" resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.17.10.tgz#4f546861c53fae2b1bffcdd1ae7e691cc68afa52" + integrity sha512-nISitptrYm6hUpiC+vN21cbT8Of54TubXY95N+pcqNCmmXZqd1hRk7fC5HYRRQwWJiKV/NLHx8f4CxPIsIQXqg== dependencies: "@types/node" "*" "@types/simple-peer@*": version "6.1.5" resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-6.1.5.tgz#9353f84cefd052a9684b9a5662c983fc2bcfab41" + integrity sha512-huXri3g0rQpIO5jkG630a2sBrh1WXgsd2Gsoc9MqWTRZ0AWqyMEcMCfLXmw5i8AvrZbjAT6BIxW2gEqvpqSYwA== dependencies: "@types/node" "*" "@types/superagent@*": version "3.8.4" resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-3.8.4.tgz#24a5973c7d1a9c024b4bbda742a79267c33fb86a" + integrity sha512-Dnh0Iw6NO55z1beXvlsvUrfk4cd9eL2nuTmUk+rAhSVCk10PGGFbqCCTwbau9D0d2W3DITiXl4z8VCqppGkMPQ== dependencies: "@types/cookiejar" "*" "@types/node" "*" @@ -286,24 +344,29 @@ "@types/supertest@^2.0.3": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.6.tgz#a0665350c0e36315e1bccdf4785f2b76fcb71b6b" + integrity sha512-qRvPP8dO7IBqJz8LaQ7/Lw2oo/geiDUPAMx/L+CQCkR9sN622O30XCH7RSyUmilyCSyjxyhJ7cEtd3hmwPwvhw== dependencies: "@types/superagent" "*" "@types/tough-cookie@*": version "2.3.3" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.3.tgz#7f226d67d654ec9070e755f46daebf014628e9d9" + integrity sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ== "@types/tv4@*": version "1.2.29" resolved "https://registry.yarnpkg.com/@types/tv4/-/tv4-1.2.29.tgz#4c6d2222b03245dd2104f4fd67f54d1658985911" + integrity sha512-NtJmi+XbYocrLb5Au4Q64srX4FlCPDvrSF/OnK3H0QJwrw40tIUoQPDoUHnZ5wpAB2KThtVyeS+kOEQyZabORg== "@types/validator@*", "@types/validator@^9.4.0": version "9.4.2" resolved "https://registry.yarnpkg.com/@types/validator/-/validator-9.4.2.tgz#9fec264b35f0ea21d0967eeec2dcd6a798b34350" + integrity sha512-v6H2QH+oXVdLKp9keOJi5LQSt6X5/XIOtK1YmbCzvkAT2kHW9WyQkixit9w1UgJpBGrDCqqCZlQ+Qucpmsf8hA== "@types/webtorrent@^0.98.4": version "0.98.4" resolved "https://registry.yarnpkg.com/@types/webtorrent/-/webtorrent-0.98.4.tgz#cf8dbe22e3d5cf6915305f7f970b52bca01bf8b4" + integrity sha1-z42+IuPVz2kVMF9/lwtSvKAb+LQ= dependencies: "@types/bittorrent-protocol" "*" "@types/node" "*" @@ -313,6 +376,7 @@ "@types/ws@^6.0.0": version "6.0.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.1.tgz#ca7a3f3756aa12f62a0a62145ed14c6db25d5a28" + integrity sha512-EzH8k1gyZ4xih/MaZTXwT2xOkPiIMSrhQ9b8wrlX88L0T02eYsddatQlwVFlEPyEqV0ChpdpNnE51QPH6NVT4Q== dependencies: "@types/events" "*" "@types/node" "*" @@ -320,6 +384,7 @@ JSONStream@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e" + integrity sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg== dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -327,10 +392,12 @@ JSONStream@^1.3.4: abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== accepts@1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + integrity sha1-w8p0NJOGSMPg2cHjKN1otiLChMo= dependencies: mime-types "~2.1.11" negotiator "0.6.1" @@ -338,6 +405,7 @@ accepts@1.3.3: accepts@~1.2.12: version "1.2.13" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.2.13.tgz#e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea" + integrity sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo= dependencies: mime-types "~2.1.6" negotiator "0.5.3" @@ -345,6 +413,7 @@ accepts@~1.2.12: accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= dependencies: mime-types "~2.1.18" negotiator "0.6.1" @@ -352,48 +421,58 @@ accepts@~1.3.4, accepts@~1.3.5: acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= dependencies: acorn "^3.0.4" acorn@^3.0.4: version "3.3.0" resolved "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= acorn@^5.5.0: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.4.2: version "1.5.1" resolved "https://registry.yarnpkg.com/addr-to-ip-port/-/addr-to-ip-port-1.5.1.tgz#bfada13fd6aeeeac19f1e9f7d84b4bbab45e5208" + integrity sha512-bA+dyydTNuQtrEDJ0g9eR7XabNhvrM5yZY0hvTbNK3yvoeC73ZqMES6E1cEqH9WPxs4uMtMsOjfwS4FmluhsAA== addressparser@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" + integrity sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y= after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" agentkeepalive@^3.4.1: version "3.5.1" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.1.tgz#4eba75cf2ad258fc09efd506cdb8d8c2971d35a4" + integrity sha512-Cte/sTY9/XcygXjJ0q58v//SnEQ7ViWExKyJpLJlLqomDbQyMLh6Is4KuWJ/wmxzhiwkGRple7Gqv1zf6Syz5w== dependencies: humanize-ms "^1.2.1" ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= ajv@^4.7.0: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -401,6 +480,7 @@ ajv@^4.7.0: ajv@^5.1.0, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" @@ -410,6 +490,7 @@ ajv@^5.1.0, ajv@^5.3.0: alce@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/alce/-/alce-1.2.0.tgz#a8be2dacaac42494612f18dc09db691f3dea4aab" + integrity sha1-qL4trKrEJJRhLxjcCdtpHz3qSqs= dependencies: esprima "^1.2.0" estraverse "^1.5.0" @@ -417,50 +498,61 @@ alce@^1.0.0: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= ansistyles@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" + integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" @@ -468,14 +560,17 @@ anymatch@^2.0.0: append-field@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/append-field/-/append-field-0.1.0.tgz#6ddc58fa083c7bc545d3c5995b2830cc2366d44a" + integrity sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo= application-config-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f" + integrity sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8= application-config@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/application-config/-/application-config-1.0.1.tgz#5aa2e2a5ed6abd2e5d1d473d3596f574044fe9e7" + integrity sha1-WqLipe1qvS5dHUc9NZb1dARP6ec= dependencies: application-config-path "^0.1.0" mkdirp "^0.5.1" @@ -483,18 +578,22 @@ application-config@^1.0.1: aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== "aproba@^1.1.2 || 2": version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -502,154 +601,189 @@ are-we-there-yet@~1.1.2: argparse@^1.0.2, argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-differ@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-0.1.0.tgz#12e2c9b706bed47c8b483b57e487473fb0861f3a" + integrity sha1-EuLJtwa+1HyLSDtX5IdHP7CGHzo= array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-union@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-0.1.0.tgz#ede98088330665e699e1ebf0227cbc6034e627db" + integrity sha1-7emAiDMGZeaZ4evwIny8YDTmJ9s= dependencies: array-uniq "^0.1.0" array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-0.1.1.tgz#5861f3ed4e4bb6175597a4e078e8aa78ebe958c7" + integrity sha1-WGHz7U5LthdVl6TgeOiqeOvpWMc= array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + integrity sha1-8zshWfBTKj8xB6JywMz70a0peco= arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assertion-error@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" + integrity sha1-x/hUOP3UZrx8oWq5DIFRN5el0js= assertion-error@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== async-lock@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.1.3.tgz#e47f1cbb6bec765b73e27ed8961d58006457ec08" + integrity sha512-nxlfFLGfCJ1r7p9zhR5OuL6jYkDd9P7FqSitfLji+C1NdyhCz4+rWW3kiPiyPASHhN7VlsKEvRWWbnME9lYngw== async-lru@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/async-lru/-/async-lru-1.1.2.tgz#abe831f3a52123c87d44273615e203b1ef04692e" + integrity sha512-CXwKC9Wu0GnywJRc8kxjg2HnDHhomhL99DmNGhyV7gna1MmKTJAibE8zp0+ugWEhnIA29xwnZ+FbdEE7yNNkUA== dependencies: lru "^3.1.0" async@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/async/-/async-1.5.1.tgz#b05714f4b11b357bf79adaffdd06da42d0766c10" + integrity sha1-sFcU9LEbNXv3mtr/3QbaQtB2bBA= async@1.5.2, async@^1.5.2, async@~1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= async@>=0.2.9, async@^2.0.0, async@^2.5.0, async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== dependencies: lodash "^4.17.10" async@^0.9.0, async@~0.9.0: version "0.9.2" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= async@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" + integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k= asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.6.0, aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -658,26 +792,32 @@ babel-code-frame@^6.22.0: backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= base64-js@~0.0.6: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + integrity sha1-EQHpVE9KdrG8OybUUsqW16NeeXg= base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -690,26 +830,31 @@ base@^0.11.1: basic-auth@1.1.0: version "1.1.0" resolved "http://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ= basic-auth@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" bcrypt@2: version "2.0.1" resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-2.0.1.tgz#229c5afe09379789f918efe86e5e5b682e509f85" + integrity sha512-DwB7WgJPdskbR+9Y3OTJtwRq09Lmm7Na6b+4ewvXjkD0nfNRi1OozxljHm5ETlDCBq9DTy04lQz+rj+T2ztIJg== dependencies: nan "2.10.0" node-pre-gyp "0.9.1" @@ -717,18 +862,21 @@ bcrypt@2: bencode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bencode/-/bencode-2.0.0.tgz#e72e6b3691d824bd03ea7aa9d752cd1d49a50027" + integrity sha512-wr2HwwrUpfB5c68zmAudOltC7rZ1G0+lQOcnuEcfIM3AWAVnB3rHI3nlgd/2CWTfQ3w3zagKt89zni/M+VLZ8g== dependencies: safe-buffer "^5.1.1" better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= dependencies: callsite "1.0.0" bin-links@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" + integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg== dependencies: bluebird "^3.5.0" cmd-shim "^2.0.2" @@ -739,22 +887,27 @@ bin-links@^1.1.2: binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== binary-search@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/binary-search/-/binary-search-1.3.4.tgz#d15f44ff9226ef309d85247fa0dbfbf659955f56" + integrity sha512-dPxU/vZLnH0tEVjVPgi015oSwqu6oLfCeHywuFRhBE0yM0mYocvleTl8qsdM1YFhRzTRhM1+VzS8XLDVrHPopg== bindings@^1.3.0, bindings@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + integrity sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw== bindings@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" + integrity sha1-FK1hE4EtLTfXLme0ystLtyZQXxE= bitcore-lib@^0.13.7: version "0.13.19" resolved "https://registry.yarnpkg.com/bitcore-lib/-/bitcore-lib-0.13.19.tgz#48af1e9bda10067c1ab16263472b5add2000f3dc" + integrity sha1-SK8em9oQBnwasWJjRyta3SAA89w= dependencies: bn.js "=2.0.4" bs58 "=2.0.0" @@ -772,10 +925,12 @@ bitcore-lib@^0.13.7: bitfield@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bitfield/-/bitfield-2.0.0.tgz#fbe6767592fe5b4c87ecf1d04126294cc1bfa837" + integrity sha512-4xM4DYejOHQ/qWBfeqBXNA4mJ12PwcOibFYnH1kYh5U9BHciCqEJBqGNVnMJXUhm8mflujNRLSv7IiVQxovgjw== bittorrent-dht@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/bittorrent-dht/-/bittorrent-dht-9.0.0.tgz#08d5ebb51ed91d7e3eea5c275554f4323fb523e5" + integrity sha512-X5ax4G/PLtEPfqOUjqDZ2nmPENndWRMK4sT2jcQ4sXor904zhR40r4KqTyTvWYAljh5/hPPqM9DCUUtqWzRXoQ== dependencies: bencode "^2.0.0" buffer-equals "^1.0.3" @@ -793,10 +948,12 @@ bittorrent-dht@^9.0.0: bittorrent-peerid@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/bittorrent-peerid/-/bittorrent-peerid-1.3.0.tgz#a435d3b267c887c586c528b53359845905d7c158" + integrity sha512-SYd5H3RbN1ex+TrWAKXkEkASFWxAR7Tk6iLt9tfAT9ehBvZb/Y3AQDVRVJynlrixcWpnmsLYKI7tkRWgp7ORoQ== bittorrent-protocol@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/bittorrent-protocol/-/bittorrent-protocol-3.0.1.tgz#d3948f4d2b09d538095f7e5f93f64ba5df6b5c2a" + integrity sha512-hnvOzAu9u+2H0OLLL5byoFdz6oz5f3bx5f7R+ItUohTHMq9TgUhEJfcjo7xWtQHSKOVciYWwYTJ4EjczF5RX2A== dependencies: bencode "^2.0.0" bitfield "^2.0.0" @@ -810,6 +967,7 @@ bittorrent-protocol@^3.0.0: bittorrent-tracker@^9.0.0: version "9.10.1" resolved "https://registry.yarnpkg.com/bittorrent-tracker/-/bittorrent-tracker-9.10.1.tgz#5de14aac012a287af394d3cc9eda1ec6cc956f11" + integrity sha512-n5zTL/g6Wt0rb2EnkiyiaGYhth7I/N0/xMqGUpvGX/7g1scDGBVPhJnXR8lfp3/OMj681fv40o4q/otECMtZSA== dependencies: bencode "^2.0.0" bittorrent-peerid "^1.0.2" @@ -841,6 +999,7 @@ bittorrent-tracker@^9.0.0: bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -848,14 +1007,17 @@ bl@^1.0.0: blob-to-buffer@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.8.tgz#78eeeb332f1280ed0ca6fb2b60693a8c6d36903a" + integrity sha512-re0AIxakF504MgeMtIyJkVcZ8T5aUxtp/QmTMlmjyb3P44E1BEv5x3LATBGApWAJATyXHtkXRD+gWTmeyYLiQA== blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= block-stream2@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/block-stream2/-/block-stream2-1.1.0.tgz#c738e3a91ba977ebb5e1fef431e13ca11d8639e2" + integrity sha1-xzjjqRupd+u14f70MeE8oR2GOeI= dependencies: defined "^1.0.0" inherits "^2.0.1" @@ -864,36 +1026,44 @@ block-stream2@^1.0.0: block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: inherits "~2.0.0" bluebird@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= bluebird@^2.10.0: version "2.11.0" resolved "http://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= bluebird@^3.0.5, bluebird@^3.3.4, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== bn.js@=2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.0.4.tgz#220a7cd677f7f1bfa93627ff4193776fe7819480" + integrity sha1-Igp81nf38b+pNif/QZN3b+eBlIA= bn.js@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-2.2.0.tgz#12162bc2ae71fc40a5626c33438f3a875cd37625" + integrity sha1-EhYrwq5x/EClYmwzQ486h1zTdiU= bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= dependencies: bytes "3.0.0" content-type "~1.0.4" @@ -909,6 +1079,7 @@ body-parser@1.18.2: body-parser@^1.12.4: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= dependencies: bytes "3.0.0" content-type "~1.0.4" @@ -924,6 +1095,7 @@ body-parser@^1.12.4: body@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" + integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= dependencies: continuable-cache "^0.3.1" error "^7.0.0" @@ -933,10 +1105,12 @@ body@^5.1.0: boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -949,6 +1123,7 @@ boxen@^1.2.1: brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -956,6 +1131,7 @@ brace-expansion@^1.0.0, brace-expansion@^1.1.7: braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -971,26 +1147,32 @@ braces@^2.3.0, braces@^2.3.1: brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserify-package-json@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-package-json/-/browserify-package-json-1.0.1.tgz#98dde8aa5c561fd6d3fe49bbaa102b74b396fdea" + integrity sha1-mN3oqlxWH9bT/km7qhArdLOW/eo= bs58@=2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.0.tgz#72b713bed223a0ac518bbda0e3ce3f4817f39eb5" + integrity sha1-crcTvtIjoKxRi72g484/SBfznrU= buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" @@ -998,44 +1180,54 @@ buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: buffer-compare@=1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.0.0.tgz#acaa7a966e98eee9fae14b31c39a5f158fb3c4a2" + integrity sha1-rKp6lm6Y7un64Usxw5pfFY+zxKI= buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= buffer-equals@^1.0.3, buffer-equals@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5" + integrity sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U= buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-writer@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08" + integrity sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg= bufferutil@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.0.tgz#a5078160e443751a4e83b6f4d6d7e26c058326a0" + integrity sha512-jpnqMVLo7sqfUY2W92RC4jjj9TuiOSkjB0k43TxPcrBSntZwXUOl8Krfd3eVEdApuScpSTwYKntm/dXU2T8gnw== dependencies: node-gyp-build "~3.4.0" builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= bull@^3.4.2: version "3.4.8" resolved "https://registry.yarnpkg.com/bull/-/bull-3.4.8.tgz#bd25ae82f47e0a092c0b06b6a13b875fa5b41bc0" + integrity sha512-dO/Dxbe7gpq8hyYlQfkLFz+N7JxTLM7KlEppViOdaaq8JSq15GgQo1wARG7E223MB6Ji9u9xTRcqXi/SwVvI1Q== dependencies: bluebird "^3.5.0" cron-parser "^2.5.0" @@ -1048,6 +1240,7 @@ bull@^3.4.2: busboy@^0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" + integrity sha1-bCpiLvz0fFe7vh4qnDetNseSVFM= dependencies: dicer "0.2.5" readable-stream "1.1.x" @@ -1055,22 +1248,27 @@ busboy@^0.2.11: byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.3.tgz#b7c095efc68eadf82985fccd9a2df43a74fa2ccd" + integrity sha512-JGC3EV2bCzJH/ENSh3afyJrH4vwxbHTuO5ljLoI5+2iJOcEpMgP8T782jH9b5qGxf2mSUIp1lfGnfKNrRHpvVg== bytes@1: version "1.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" + integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= bytes@3.0.0, bytes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1089,6 +1287,7 @@ cacache@^10.0.4: cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1108,6 +1307,7 @@ cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -1122,24 +1322,29 @@ cache-base@^1.0.1: call-limit@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" + integrity sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o= caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= dependencies: callsites "^0.2.0" callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= dependencies: camelcase "^2.0.0" map-obj "^1.0.0" @@ -1147,34 +1352,42 @@ camelcase-keys@^2.0.0: camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= camelize@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c= caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= chai-json-schema@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/chai-json-schema/-/chai-json-schema-1.5.0.tgz#6960719e40f71fd5b377c9282e5c9a46799474f6" + integrity sha1-aWBxnkD3H9Wzd8koLlyaRnmUdPY= dependencies: jsonpointer.js "0.4.0" tv4 "~1.2.7" @@ -1182,6 +1395,7 @@ chai-json-schema@^1.5.0: chai-xml@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/chai-xml/-/chai-xml-0.3.2.tgz#61d0776aa8fd936a2178769adcaabf3bfb52b8b1" + integrity sha512-HAyFPmJE0MEleo+sjWhJUxj+/aYBoUQg5EF/eGhbv1IZtx8mNGyGKD4jKlohhD4DsZaH5jay+Y/xtzBacBLdHw== dependencies: chai "^1.9.1" xml2js "^0.4.4" @@ -1189,6 +1403,7 @@ chai-xml@^0.3.2: chai@^1.9.1: version "1.10.0" resolved "https://registry.yarnpkg.com/chai/-/chai-1.10.0.tgz#e4031cc87654461a75943e5a35ab46eaf39c1eb9" + integrity sha1-5AMcyHZURhp1lD5aNatG6vOcHrk= dependencies: assertion-error "1.0.0" deep-eql "0.1.3" @@ -1196,6 +1411,7 @@ chai@^1.9.1: chai@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" + integrity sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw= dependencies: assertion-error "^1.0.1" check-error "^1.0.1" @@ -1207,6 +1423,7 @@ chai@^4.1.1: chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1217,6 +1434,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -1225,18 +1443,22 @@ chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@~2.4.1: charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= charset-detector@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charset-detector/-/charset-detector-0.0.2.tgz#1cd5ddaf56e83259c6ef8e906ccf06f75fe9a1b2" + integrity sha1-HNXdr1boMlnG746QbM8G91/pobI= check-error@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= cheerio@^0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.19.0.tgz#772e7015f2ee29965096d71ea4175b75ab354925" + integrity sha1-dy5wFfLuKZZQltcepBdbdas1SSU= dependencies: css-select "~1.0.0" dom-serializer "~0.1.0" @@ -1247,6 +1469,7 @@ cheerio@^0.19.0: chokidar@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: anymatch "^2.0.0" async-each "^1.0.0" @@ -1266,14 +1489,17 @@ chokidar@^2.0.2: chownr@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== chownr@~1.0.1: version "1.0.1" resolved "http://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= chunk-store-stream@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/chunk-store-stream/-/chunk-store-stream-3.0.1.tgz#8e0d739226dcb386f44447b82a005b597a1d41d9" + integrity sha512-GA1NIFDZKElhkjiO6QOyzfK1QbUt6M3gFhUU/aR05JYaDqXbU5d7U92cLvGKdItJEDfojky6NQefy5VL5PpDBA== dependencies: block-stream2 "^1.0.0" readable-stream "^2.0.5" @@ -1281,26 +1507,31 @@ chunk-store-stream@^3.0.1: ci-info@^1.4.0, ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== cidr-regex@^2.0.10: version "2.0.10" resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" + integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== dependencies: ip-regex "^2.1.0" circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== clarify@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/clarify/-/clarify-1.0.5.tgz#3ac7b2341a21615e8fca6e28301fcf9598c61466" + integrity sha1-OseyNBohYV6Pym4oMB/PlZjGFGY= dependencies: stack-chain "1.3.x" class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -1310,16 +1541,19 @@ class-utils@^0.3.5: clean-css@~4.1.1: version "4.1.11" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" + integrity sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo= dependencies: source-map "0.5.x" cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-columns@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" + integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= dependencies: string-width "^2.0.0" strip-ansi "^3.0.1" @@ -1327,12 +1561,14 @@ cli-columns@^3.1.2: cli-cursor@^1.0.1, cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= dependencies: restore-cursor "^1.0.1" cli-table3@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== dependencies: object-assign "^4.1.0" string-width "^2.1.1" @@ -1342,12 +1578,14 @@ cli-table3@^0.5.0: cli-table@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= dependencies: colors "1.0.3" cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= dependencies: slice-ansi "0.0.4" string-width "^1.0.1" @@ -1355,10 +1593,12 @@ cli-truncate@^0.2.1: cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= cli@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" + integrity sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ= dependencies: exit "0.1.2" glob "^7.1.1" @@ -1366,6 +1606,7 @@ cli@~1.0.0: cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -1374,6 +1615,7 @@ cliui@^3.2.0: cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -1382,14 +1624,17 @@ cliui@^4.0.0: clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= closest-to@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/closest-to/-/closest-to-2.0.0.tgz#bb2a860edb7769b62d04821748ae50da24dbefaa" + integrity sha1-uyqGDtt3abYtBIIXSK5Q2iTb76o= cls-bluebird@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cls-bluebird/-/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee" + integrity sha1-N+8eCAqP+1XC9BZPU28ZGeeWiu4= dependencies: is-bluebird "^1.0.2" shimmer "^1.1.0" @@ -1397,10 +1642,12 @@ cls-bluebird@^2.1.0: cluster-key-slot@^1.0.6: version "1.0.12" resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.0.12.tgz#d5deff2a520717bc98313979b687309b2d368e29" + integrity sha512-21O0kGmvED5OJ7ZTdqQ5lQQ+sjuez33R+d35jZKLwqUb5mqcPHUsxOSzj61+LHVtxGZd1kShbQM3MjB/gBJkVg== cmd-shim@^2.0.2, cmd-shim@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= dependencies: graceful-fs "^4.1.2" mkdirp "~0.5.0" @@ -1408,6 +1655,7 @@ cmd-shim@^2.0.2, cmd-shim@~2.0.2: co-bluebird@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/co-bluebird/-/co-bluebird-1.1.0.tgz#c8b9f3a9320a7ed30987dcca1a5c3cff59655c7c" + integrity sha1-yLnzqTIKftMJh9zKGlw8/1llXHw= dependencies: bluebird "^2.10.0" co-use "^1.1.0" @@ -1415,28 +1663,34 @@ co-bluebird@^1.1.0: co-use@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/co-use/-/co-use-1.1.0.tgz#c6bb3cdf10cb735ecaa9daeeda46d725c94a4e62" + integrity sha1-xrs83xDLc17Kqdru2kbXJclKTmI= co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= coffee-script@~1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.7.1.tgz#62996a861780c75e6d5069d13822723b73404bfc" + integrity sha1-YplqhheAx15tUGnROCJyO3NAS/w= dependencies: mkdirp "~0.3.5" coffeescript@~1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.10.0.tgz#e7aa8301917ef621b35d8a39f348dcdd1db7e33e" + integrity sha1-56qDAZF+9iGzXYo580jc3R234z4= collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -1444,16 +1698,19 @@ collection-visit@^1.0.0: color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3, color-name@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-string@^1.5.2: version "1.5.3" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -1461,6 +1718,7 @@ color-string@^1.5.2: color@3.0.x, color@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== dependencies: color-convert "^1.9.1" color-string "^1.5.2" @@ -1468,22 +1726,27 @@ color@3.0.x, color@^3.0.0: colornames@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" + integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y= colors@1.0.3, colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= colors@^1.1.2, colors@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" + integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ== colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= colorspace@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" + integrity sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw== dependencies: color "3.0.x" text-hex "1.0.x" @@ -1491,6 +1754,7 @@ colorspace@1.1.x: columnify@~1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= dependencies: strip-ansi "^3.0.0" wcwidth "^1.0.0" @@ -1498,66 +1762,80 @@ columnify@~1.5.4: combined-stream@1.0.6: version "1.0.6" resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= dependencies: delayed-stream "~1.0.0" combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== dependencies: delayed-stream "~1.0.0" command-exists@^1.2.2: version "1.2.7" resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.7.tgz#16828f0c3ff2b0c58805861ef211b64fc15692a8" + integrity sha512-doWDvhXCcW5LK0cIUWrOQ8oMFXJv3lEQCkJpGVjM8v9SV0uhqYXB943538tEA2CiaWqSyuYUGAm5ezDwEx9xlw== commander@*, commander@^2.12.1, commander@^2.13.0, commander@^2.14.1, commander@^2.8.1, commander@^2.9.0: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== commander@2.15.1: version "2.15.1" resolved "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== commander@2.9.0: version "2.9.0" resolved "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= dependencies: graceful-readlink ">= 1.0.0" commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== compact2string@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/compact2string/-/compact2string-1.4.0.tgz#a99cd96ea000525684b269683ae2222d6eea7b49" + integrity sha1-qZzZbqAAUlaEsmloOuIiLW7qe0k= dependencies: ipaddr.js ">= 0.1.5" component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= component-emitter@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + integrity sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM= component-emitter@1.2.1, component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@1.6.2, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -1567,6 +1845,7 @@ concat-stream@1.6.2, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^ concurrently@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.0.1.tgz#f6310fbadf2f476dd95df952edb5c0ab789f672c" + integrity sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q== dependencies: chalk "^2.4.1" date-fns "^1.23.0" @@ -1581,6 +1860,7 @@ concurrently@^4.0.1: config-chain@~1.1.11, config-chain@~1.1.5: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -1588,12 +1868,14 @@ config-chain@~1.1.11, config-chain@~1.1.5: config@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/config/-/config-2.0.1.tgz#995ccc8175460578d646ac0a2e4018ffa44ca046" + integrity sha512-aTaviJnC8ZjQYx8kQf4u6tWqIxWolyQQ3LqXgnCLAsIb78JrUshHG0YuzIarzTaVVe1Pazms3TXImfYra8UsyQ== dependencies: json5 "^1.0.1" configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: dot-prop "^4.1.0" graceful-fs "^4.1.2" @@ -1605,10 +1887,12 @@ configstore@^3.0.0: connect-livereload@^0.5.0: version "0.5.4" resolved "https://registry.yarnpkg.com/connect-livereload/-/connect-livereload-0.5.4.tgz#80157d1371c9f37cc14039ab1895970d119dc3bc" + integrity sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w= connect@^3.4.0: version "3.6.6" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= dependencies: debug "2.6.9" finalhandler "1.1.0" @@ -1618,36 +1902,44 @@ connect@^3.4.0: console-browserify@1.1.x: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= dependencies: date-now "^0.1.4" console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= content-disposition@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" + integrity sha1-h0dsamfI2qh+Muh2Ft+IO6f7Bxs= content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= content-security-policy-builder@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz#8749a1d542fcbe82237281ea9f716ce68b394dd2" + integrity sha512-j+Nhmj1yfZAikJLImCvPJFE29x/UuBi+/MWqggGGc515JKaZrjuei2RhULJmy0MsstW3E3htl002bwmBNMKr7w== content-type@~1.0.1, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== continuable-cache@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" + integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= cookie-parser@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.3.tgz#0fe31fa19d000b95f4aadf1f53fdc2b8a203baa5" + integrity sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU= dependencies: cookie "0.3.1" cookie-signature "1.0.6" @@ -1655,22 +1947,27 @@ cookie-parser@^1.4.3: cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= cookie@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.5.tgz#6ab9948a4b1ae21952cd2588530a4722d4044d7c" + integrity sha1-armUiksa4hlSzSWIUwpHItQETXw= cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= cookiejar@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -1682,14 +1979,17 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cors@^2.8.1: version "2.8.4" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" + integrity sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY= dependencies: object-assign "^4" vary "^1" @@ -1697,6 +1997,7 @@ cors@^2.8.1: cosmiconfig@^5.0.2, cosmiconfig@^5.0.6: version "5.0.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" + integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== dependencies: is-directory "^0.3.1" js-yaml "^3.9.0" @@ -1705,12 +2006,14 @@ cosmiconfig@^5.0.2, cosmiconfig@^5.0.6: create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: capture-stack-trace "^1.0.0" create-torrent@^3.24.5, create-torrent@^3.33.0: version "3.33.0" resolved "https://registry.yarnpkg.com/create-torrent/-/create-torrent-3.33.0.tgz#8a7a2aa2213a799c266c40e4c12f1468ede25105" + integrity sha512-KMd0KuvwVUg1grlRd5skG9ZkSbBYDDkAjDUMLnvxdRn0rL7ph3IwoOk7I8u1yLX4HYjGiLVlWYO55YWNNPjJFA== dependencies: bencode "^2.0.0" block-stream2 "^1.0.0" @@ -1729,6 +2032,7 @@ create-torrent@^3.24.5, create-torrent@^3.33.0: cron-parser@^2.5.0: version "2.6.0" resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.6.0.tgz#ae2514ceda9ccb540256e201bdd23ae814e03674" + integrity sha512-KGfDDTjBIx85MnVYcdhLccoJH/7jcYW+5Z/t3Wsg2QlJhmmjf+97z+9sQftS71lopOYYapjEKEvmWaCsym5Z4g== dependencies: is-nan "^1.2.1" moment-timezone "^0.5.0" @@ -1736,6 +2040,7 @@ cron-parser@^2.5.0: cross-spawn@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= dependencies: lru-cache "^4.0.1" which "^1.2.9" @@ -1743,6 +2048,7 @@ cross-spawn@^3.0.0: cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -1751,6 +2057,7 @@ cross-spawn@^5.0.1: cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -1761,14 +2068,17 @@ cross-spawn@^6.0.0: crypt@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= css-select@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.0.0.tgz#b1121ca51848dd264e2244d058cee254deeb44b0" + integrity sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA= dependencies: boolbase "~1.0.0" css-what "1.0" @@ -1778,48 +2088,58 @@ css-select@~1.0.0: css-what@1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-1.0.0.tgz#d7cc2df45180666f99d2b14462639469e00f736c" + integrity sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w= currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: array-find-index "^1.0.1" cycle@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI= cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= dependencies: es5-ext "^0.10.9" dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" dasherize@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dasherize/-/dasherize-2.0.0.tgz#6d809c9cd0cf7bb8952d80fc84fa13d47ddb1308" + integrity sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg= date-fns@^1.23.0, date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + integrity sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw== date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= dateformat@~1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= dependencies: get-stdin "^4.0.1" meow "^3.3.0" @@ -1827,6 +2147,7 @@ dateformat@~1.0.12: deasync@^0.1.4: version "0.1.13" resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea" + integrity sha512-/6ngYM7AapueqLtvOzjv9+11N2fHDSrkxeMF1YPE20WIfaaawiBg+HZH1E5lHrcJxlKR42t6XPOEmMmqcAsU1g== dependencies: bindings "~1.2.1" nan "^2.0.7" @@ -1834,116 +2155,138 @@ deasync@^0.1.4: debug@2.2.0, debug@~2.2.0: version "2.2.0" resolved "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo= dependencies: ms "0.7.1" debug@2.3.3: version "2.3.3" resolved "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + integrity sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w= dependencies: ms "0.7.2" debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" debug@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== dependencies: ms "^2.1.1" debuglog@^1.0.0, debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decamelize@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== dependencies: xregexp "4.0.0" decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-eql@0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI= dependencies: type-detect "0.1.1" deep-eql@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: type-detect "^4.0.0" deep-equal@~0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.2.2.tgz#84b745896f34c684e98f2ce0e42abaf43bba017d" + integrity sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= deep-object-diff@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a" + integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw== defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= dependencies: clone "^1.0.2" define-properties@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" @@ -1951,10 +2294,12 @@ define-property@^2.0.2: defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -1967,48 +2312,59 @@ del@^2.0.2: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= denque@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/denque/-/denque-1.3.0.tgz#681092ef44a630246d3f6edb2a199230eae8e76b" + integrity sha512-4SRaSj+PqmrS1soW5/Avd7eJIM2JJIqLLmwhRqIGleZM/8KwZq80njbSS2Iqas+6oARkSkLDHEk4mm78q3JlIg== depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= depd@^1.1.0, depd@~1.1.0, depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= descrevit@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/descrevit/-/descrevit-0.1.1.tgz#c0f5840de0a0f7b1b8b4078569b173327947d5da" + integrity sha1-wPWEDeCg97G4tAeFabFzMnlH1do= dependencies: deasync "^0.1.4" destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-indent@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= dezalgo@^1.0.0, dezalgo@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= dependencies: asap "^2.0.0" wrappy "1" @@ -2016,6 +2372,7 @@ dezalgo@^1.0.0, dezalgo@~1.0.3: diagnostics@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" + integrity sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ== dependencies: colorspace "1.1.x" enabled "1.0.x" @@ -2024,6 +2381,7 @@ diagnostics@^1.1.1: dicer@0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" + integrity sha1-WZbAhrszIYyBLAkL3cCc0S+stw8= dependencies: readable-stream "1.1.x" streamsearch "0.1.2" @@ -2031,18 +2389,22 @@ dicer@0.2.5: diff@3.5.0, diff@^3.1.0, diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== dns-prefetch-control@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz#60ddb457774e178f1f9415f0cabb0e85b0b300b2" + integrity sha1-YN20V3dOF48flBXwyrsOhbCzALI= docopt@~0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11" + integrity sha1-so6eIiDaXsSffqW7JKR3h0Be6xE= doctrine@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" + integrity sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= dependencies: esutils "^1.1.6" isarray "0.0.1" @@ -2050,6 +2412,7 @@ doctrine@0.7.2: doctrine@^1.2.2: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -2057,6 +2420,7 @@ doctrine@^1.2.2: dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= dependencies: domelementtype "~1.1.1" entities "~1.1.1" @@ -2064,38 +2428,45 @@ dom-serializer@0, dom-serializer@~0.1.0: domelementtype@1: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= domhandler@2.2: version "2.2.1" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.2.1.tgz#59df9dcd227e808b365ae73e1f6684ac3d946fc2" + integrity sha1-Wd+dzSJ+gIs2Wuc+H2aErD2Ub8I= dependencies: domelementtype "1" domhandler@2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= dependencies: domelementtype "1" domutils@1.3: version "1.3.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.3.0.tgz#9ad4d59b5af6ca684c62fe6d768ef170e70df192" + integrity sha1-mtTVm1r2ymhMYv5tdo7xcOcN8ZI= dependencies: domelementtype "1" domutils@1.4: version "1.4.3" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.4.3.tgz#0865513796c6b306031850e175516baf80b72a6f" + integrity sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8= dependencies: domelementtype "1" domutils@1.5: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= dependencies: dom-serializer "0" domelementtype "1" @@ -2103,10 +2474,12 @@ domutils@1.5: dont-sniff-mimetype@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz#5932890dc9f4e2f19e5eb02a20026e5e5efc8f58" + integrity sha1-WTKJDcn04vGeXrAqIAJuXl78j1g= dot-json@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/dot-json/-/dot-json-1.0.4.tgz#b5c5818eb526a7917ac02df017fe9fba37b11195" + integrity sha1-tcWBjrUmp5F6wC3wF/6fujexEZU= dependencies: docopt "~0.6.2" underscore-keypath "~0.0.22" @@ -2114,32 +2487,39 @@ dot-json@^1.0.3: dot-prop@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== dependencies: is-obj "^1.0.0" dotenv@^5.0.1: version "5.0.1" resolved "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== dottie@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0" + integrity sha1-2hkZgci41xPKARXViYzzl8Lw3dA= double-ended-queue@^2.1.0-0: version "2.1.0-0" resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -2149,6 +2529,7 @@ duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -2156,24 +2537,29 @@ ecc-jsbn@~0.1.1: ecdsa-sig-formatter@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + integrity sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM= dependencies: safe-buffer "^5.0.1" editor@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I= ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= elliptic@=3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-3.0.3.tgz#865c9b420bfbe55006b9f969f97a0d2c44966595" + integrity sha1-hlybQgv75VAGuflp+XoNLESWZZU= dependencies: bn.js "^2.0.0" brorand "^1.0.1" @@ -2183,28 +2569,33 @@ elliptic@=3.0.3: enabled@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" + integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M= dependencies: env-variable "0.0.x" encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= encoding@^0.1.11, encoding@^0.1.12, encoding@~0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= dependencies: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" engine.io-client@1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + integrity sha1-F5jtk0USRkU9TG9jXXogH+lA1as= dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -2222,6 +2613,7 @@ engine.io-client@1.8.3: engine.io-parser@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + integrity sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo= dependencies: after "0.8.2" arraybuffer.slice "0.0.6" @@ -2233,6 +2625,7 @@ engine.io-parser@1.3.2: engine.io@1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + integrity sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q= dependencies: accepts "1.3.3" base64id "1.0.0" @@ -2244,34 +2637,41 @@ engine.io@1.8.3: entities@1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= env-variable@0.0.x: version "0.0.4" resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.4.tgz#0d6280cf507d84242befe35a512b5ae4be77c54e" + integrity sha512-+jpGxSWG4vr6gVxUHOc4p+ilPnql7NzZxOZBxNldsKGjCF+97df3CbuX7XMaDa5oAVkKQj4rKp38rYdC4VcpDg== err-code@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" error@^7.0.0: version "7.0.2" resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI= dependencies: string-template "~0.2.1" xtend "~4.0.0" @@ -2279,6 +2679,7 @@ error@^7.0.0: es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: version "0.10.46" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw== dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" @@ -2287,6 +2688,7 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~ es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" @@ -2295,6 +2697,7 @@ es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: es6-map@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= dependencies: d "1" es5-ext "~0.10.14" @@ -2306,20 +2709,24 @@ es6-map@^0.1.3: es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= dependencies: es6-promise "^4.0.3" es6-promisify@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.0.tgz#b526a75eaa5ca600e960bf3d5ad98c40d75c7203" + integrity sha512-8Tbqjrb8lC85dd81haajYwuRmiU2rkqNAFnlvQOJeeKqdUloIlI+JcUqeJruV4rCm5Y7oNU7jfs2FbmxhRR/2g== es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= dependencies: d "1" es5-ext "~0.10.14" @@ -2330,10 +2737,12 @@ es6-set@~0.1.5: es6-shim@0.35.3: version "0.35.3" resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.3.tgz#9bfb7363feffff87a6cdb6cd93e405ec3c4b6f26" + integrity sha1-m/tzY/7//4emzbbNk+QF7DxLbyY= es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= dependencies: d "1" es5-ext "~0.10.14" @@ -2341,6 +2750,7 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= dependencies: d "1" es5-ext "^0.10.14" @@ -2350,14 +2760,17 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escope@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= dependencies: es6-map "^0.1.3" es6-weak-map "^2.0.1" @@ -2367,6 +2780,7 @@ escope@^3.6.0: eslint@^2.7.0: version "2.13.1" resolved "http://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" + integrity sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE= dependencies: chalk "^1.1.3" concat-stream "^1.4.6" @@ -2405,6 +2819,7 @@ eslint@^2.7.0: espree@^3.1.6: version "3.5.4" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== dependencies: acorn "^5.5.0" acorn-jsx "^3.0.0" @@ -2412,48 +2827,59 @@ espree@^3.1.6: esprima@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" + integrity sha1-CZNQL+r2aBODJXVvMPmlH+7sEek= esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^1.5.0: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" + integrity sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= etag@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" + integrity sha1-A9MLX2fdbmMtKUXTDWZScxo01dg= etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= event-emitter@^0.3.5, event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= dependencies: d "1" es5-ext "~0.10.14" @@ -2461,6 +2887,7 @@ event-emitter@^0.3.5, event-emitter@~0.3.5: event-stream@~3.3.0: version "3.3.6" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz#cac1230890e07e73ec9cacd038f60a5b66173eef" + integrity sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g== dependencies: duplexer "^0.1.1" flatmap-stream "^0.1.0" @@ -2474,10 +2901,12 @@ event-stream@~3.3.0: eventemitter2@~0.4.13: version "0.4.14" resolved "http://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== dependencies: cross-spawn "^6.0.0" get-stream "^3.0.0" @@ -2490,6 +2919,7 @@ execa@^0.10.0: execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -2502,6 +2932,7 @@ execa@^0.7.0: execa@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01" + integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA== dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -2514,14 +2945,17 @@ execa@^0.9.0: exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= exit@0.1.2, exit@0.1.x, exit@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -2534,14 +2968,17 @@ expand-brackets@^2.1.4: expand-template@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" + integrity sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg== expect-ct@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.1.1.tgz#de84476a2dbcb85000d5903737e9bc8a5ba7b897" + integrity sha512-ngXzTfoRGG7fYens3/RMb6yYoVLvLMfmsSllP/mZPxNHgFq41TmPSLF/nLY7fwoclI2vElvAmILFWGUYqdjfCg== express-oauth-server@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/express-oauth-server/-/express-oauth-server-2.0.0.tgz#57b08665c1201532f52c4c02f19709238b99a48d" + integrity sha1-V7CGZcEgFTL1LEwC8ZcJI4uZpI0= dependencies: bluebird "^3.0.5" express "^4.13.3" @@ -2550,12 +2987,14 @@ express-oauth-server@^2.0.0: express-rate-limit@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-3.2.0.tgz#92368aab15a6b17c68399d4d4b4289850f13c4fe" + integrity sha512-oJpdtmt+mJivUCS9TVnlDAh/otWno4AaKz2cZkhbfpBna4CXB/pQjyUfWv2G7/09T3HqOIvB/93kU+eSmbeeTw== dependencies: defaults "^1.0.3" express-validator@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/express-validator/-/express-validator-5.3.0.tgz#18a4e4a6e6410e3b9d492fb4ffcb4556fec51806" + integrity sha512-HYVtPt21zp2bHS4+xwxYNF63dlq/23kh+ZRVfyo7SBObhOpRyZ0vWolm/v9KPUfCyLqX8j7ZP42dbB0MWjCCcA== dependencies: lodash "^4.17.10" validator "^10.4.0" @@ -2563,6 +3002,7 @@ express-validator@^5.0.0: express@4.13.4: version "4.13.4" resolved "http://registry.npmjs.org/express/-/express-4.13.4.tgz#3c0b76f3c77590c8345739061ec0bd3ba067ec24" + integrity sha1-PAt288d1kMg0VzkGHsC9O6Bn7CQ= dependencies: accepts "~1.2.12" array-flatten "1.1.1" @@ -2593,6 +3033,7 @@ express@4.13.4: express@^4.12.4, express@^4.13.3: version "4.16.3" resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= dependencies: accepts "~1.3.5" array-flatten "1.1.1" @@ -2628,12 +3069,14 @@ express@^4.12.4, express@^4.13.3: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -2641,10 +3084,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0, extend@~3.0.0, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -2658,6 +3103,7 @@ extglob@^2.0.4: extract-zip@^1.6.5: version "1.6.7" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= dependencies: concat-stream "1.6.2" debug "2.6.9" @@ -2667,54 +3113,66 @@ extract-zip@^1.6.5: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= eyes@0.1.x: version "0.1.8" resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-safe-stringify@^2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2" + integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg== faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= dependencies: websocket-driver ">=0.5.1" fd-slicer@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= dependencies: pend "~1.2.0" fecha@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" + integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== figgy-pudding@^3.0.0, figgy-pudding@^3.1.0, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^1.0.1, figures@^1.3.5, figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= dependencies: escape-string-regexp "^1.0.5" object-assign "^4.1.0" @@ -2722,6 +3180,7 @@ figures@^1.0.1, figures@^1.3.5, figures@^1.7.0: file-entry-cache@^1.1.1: version "1.3.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" + integrity sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g= dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" @@ -2729,10 +3188,12 @@ file-entry-cache@^1.1.1: file-sync-cmp@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b" + integrity sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs= filestream@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/filestream/-/filestream-4.1.3.tgz#948fcaade8221f715f5ecaddc54862faaacc9325" + integrity sha1-lI/KregiH3FfXsrdxUhi+qrMkyU= dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -2742,6 +3203,7 @@ filestream@^4.0.0: fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -2751,6 +3213,7 @@ fill-range@^4.0.0: finalhandler@0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.1.tgz#85a17c6c59a94717d262d61230d4b0ebe3d4a14d" + integrity sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0= dependencies: debug "~2.2.0" escape-html "~1.0.3" @@ -2760,6 +3223,7 @@ finalhandler@0.4.1: finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= dependencies: debug "2.6.9" encodeurl "~1.0.1" @@ -2772,6 +3236,7 @@ finalhandler@1.1.0: finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== dependencies: debug "2.6.9" encodeurl "~1.0.2" @@ -2784,14 +3249,17 @@ finalhandler@1.1.1: find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" + integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -2799,24 +3267,28 @@ find-up@^1.0.0: find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" findup-sync@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" + integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= dependencies: glob "~5.0.0" flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= dependencies: circular-json "^0.3.1" del "^2.0.2" @@ -2826,24 +3298,29 @@ flat-cache@^1.2.1: flat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== dependencies: is-buffer "~2.0.3" flatmap-stream@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.0.tgz#ed54e01422cd29281800914fcb968d58b685d5f1" + integrity sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA== flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= flexbuffer@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/flexbuffer/-/flexbuffer-0.0.6.tgz#039fdf23f8823e440c38f3277e6fef1174215b30" + integrity sha1-A5/fI/iCPkQMOPMnfm/vEXQhWzA= fluent-ffmpeg@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" + integrity sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ= dependencies: async ">=0.2.9" which "^1.1.1" @@ -2851,6 +3328,7 @@ fluent-ffmpeg@^2.1.0: flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== dependencies: inherits "^2.0.1" readable-stream "^2.0.4" @@ -2858,14 +3336,17 @@ flush-write-stream@^1.0.0: for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@^2.3.1, form-data@~2.3.1, form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= dependencies: asynckit "^0.4.0" combined-stream "1.0.6" @@ -2874,14 +3355,17 @@ form-data@^2.3.1, form-data@~2.3.1, form-data@~2.3.2: formidable@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" + integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg== forwarded@~0.1.0, forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= foundation-sites@^6.4.1: version "6.4.3" resolved "https://registry.yarnpkg.com/foundation-sites/-/foundation-sites-6.4.3.tgz#ea89eb599badf6f03dd526c51f00bdb942a844f6" + integrity sha1-6onrWZut9vA91SbFHwC9uUKoRPY= dependencies: jquery ">=3.0.0" what-input "^4.1.3" @@ -2889,24 +3373,29 @@ foundation-sites@^6.4.1: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" frameguard@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/frameguard/-/frameguard-3.0.0.tgz#7bcad469ee7b96e91d12ceb3959c78235a9272e9" + integrity sha1-e8rUae57lukdEs6zlZx4I1qScuk= fresh@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" + integrity sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8= fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= from2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" + integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0= dependencies: inherits "~2.0.1" readable-stream "~1.1.10" @@ -2914,6 +3403,7 @@ from2@^1.3.0: from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -2921,16 +3411,19 @@ from2@^2.1.0: from@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= front-matter@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb" + integrity sha1-91mDufL0E75ljJPf172M5AePXNs= dependencies: js-yaml "^3.4.6" fs-chunk-store@^1.6.2: version "1.7.0" resolved "https://registry.yarnpkg.com/fs-chunk-store/-/fs-chunk-store-1.7.0.tgz#1c4bcbe93c99af10aa04b65348f2bb27377a4010" + integrity sha512-KhjJmZAs2eqfhCb6PdPx4RcZtheGTz86tpTC5JTvqBn/xda+Nb+0C7dCyjOSN7T76H6a56LvH0SVXQMchLXDRw== dependencies: mkdirp "^0.5.1" random-access-file "^2.0.1" @@ -2942,14 +3435,17 @@ fs-chunk-store@^1.6.2: fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-copy-file-sync@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fs-copy-file-sync/-/fs-copy-file-sync-1.1.1.tgz#11bf32c096c10d126e5f6b36d06eece776062918" + integrity sha512-2QY5eeqVv4m2PfyMiEuy9adxNP+ajf+8AR05cEi+OAzPcOj90hvFImeZhTmKLBgSd9EvG33jsD7ZRxsx9dThkQ== fs-extra@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA= dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -2958,6 +3454,7 @@ fs-extra@^1.0.0: fs-extra@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= dependencies: graceful-fs "^4.1.2" jsonfile "^3.0.0" @@ -2966,6 +3463,7 @@ fs-extra@^3.0.1: fs-extra@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" + integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -2974,12 +3472,14 @@ fs-extra@^7.0.0: fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: minipass "^2.2.1" fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: version "1.2.10" resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= dependencies: graceful-fs "^4.1.2" path-is-inside "^1.0.1" @@ -2988,6 +3488,7 @@ fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -2997,10 +3498,12 @@ fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" @@ -3008,6 +3511,7 @@ fsevents@^1.2.2: fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -3017,6 +3521,7 @@ fstream@^1.0.0, fstream@^1.0.2: gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -3030,32 +3535,38 @@ gauge@~2.7.3: gaze@^1.0.0, gaze@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== dependencies: globule "^1.0.0" generate-function@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== dependencies: is-property "^1.0.2" generate-object-property@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= dependencies: is-property "^1.0.0" generic-pool@^3.4.0: version "3.4.2" resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59" + integrity sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag== genfun@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" + integrity sha1-7RAEHy5KfxsKOEZtF6XD4n3x38E= gentle-fs@^2.0.0, gentle-fs@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" + integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew== dependencies: aproba "^1.1.2" fs-vacuum "^1.2.10" @@ -3069,56 +3580,69 @@ gentle-fs@^2.0.0, gentle-fs@^2.0.1: get-browser-rtc@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" + integrity sha1-u81AyEUaftTvXDc7gWmkCd0dEdk= get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= get-own-enumerable-property-symbols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" + integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug== get-port@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getobject@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -3126,6 +3650,7 @@ glob-parent@^3.1.0: glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3137,6 +3662,7 @@ glob@7.1.2: glob@^4.0.2: version "4.5.3" resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8= dependencies: inflight "^1.0.4" inherits "2" @@ -3146,6 +3672,7 @@ glob@^4.0.2: glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3157,6 +3684,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, gl glob@~5.0.0: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= dependencies: inflight "^1.0.4" inherits "2" @@ -3167,6 +3695,7 @@ glob@~5.0.0: glob@~7.0.0: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3178,16 +3707,19 @@ glob@~7.0.0: global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= dependencies: ini "^1.3.4" globals@^9.2.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globby@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-0.1.1.tgz#cbec63df724b4bea458b79a16cc0e3b1f2ca8620" + integrity sha1-y+xj33JLS+pFi3mhbMDjsfLKhiA= dependencies: array-differ "^0.1.0" array-union "^0.1.0" @@ -3197,6 +3729,7 @@ globby@^0.1.1: globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -3208,6 +3741,7 @@ globby@^5.0.0: globule@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== dependencies: glob "~7.1.1" lodash "~4.17.10" @@ -3216,12 +3750,14 @@ globule@^1.0.0: gonzales-pe-sl@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz#6a868bc380645f141feeb042c6f97fcc71b59fe6" + integrity sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y= dependencies: minimist "1.1.x" got@^6.7.1: version "6.7.1" resolved "http://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" duplexer3 "^0.1.4" @@ -3238,28 +3774,34 @@ got@^6.7.1: graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.11: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= graceful-fs@~2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0" + integrity sha1-fNLNsiiko/Nule+mzBQt59GhNtA= "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= graphlib@^2.1.1: version "2.1.5" resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.5.tgz#6afe1afcc5148555ec799e499056795bd6938c87" + integrity sha512-XvtbqCcw+EM5SqQrIetIKKD+uZVNQtDPD1goIg7K73RuRZtVI5rYMdcCVSHm/AS1sCBZ7vt0p5WgXouucHQaOA== dependencies: lodash "^4.11.1" growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== grunt-cli@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" + integrity sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg= dependencies: findup-sync "~0.3.0" grunt-known-options "~1.1.0" @@ -3269,6 +3811,7 @@ grunt-cli@~1.2.0: grunt-compile-handlebars@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/grunt-compile-handlebars/-/grunt-compile-handlebars-2.0.2.tgz#b9f60263771f7dd7f17bcc05e6e1e329e2772cc3" + integrity sha1-ufYCY3cffdfxe8wF5uHjKeJ3LMM= dependencies: alce "^1.0.0" handlebars ">= 1" @@ -3278,6 +3821,7 @@ grunt-compile-handlebars@^2.0.0: grunt-contrib-clean@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz#564abf2d0378a983a15b9e3f30ee75b738c40638" + integrity sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg= dependencies: async "^1.5.2" rimraf "^2.5.1" @@ -3285,6 +3829,7 @@ grunt-contrib-clean@^1.1.0: grunt-contrib-concat@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz#61509863084e871d7e86de48c015259ed97745bd" + integrity sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0= dependencies: chalk "^1.0.0" source-map "^0.5.3" @@ -3292,6 +3837,7 @@ grunt-contrib-concat@^1.0.1: grunt-contrib-connect@^1.0.2: version "1.0.2" resolved "http://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz#5cf933b91a67386044273c0b2444603cd98879ba" + integrity sha1-XPkzuRpnOGBEJzwLJERgPNmIebo= dependencies: async "^1.5.2" connect "^3.4.0" @@ -3306,6 +3852,7 @@ grunt-contrib-connect@^1.0.2: grunt-contrib-copy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz#7060c6581e904b8ab0d00f076e0a8f6e3e7c3573" + integrity sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM= dependencies: chalk "^1.1.1" file-sync-cmp "^0.1.0" @@ -3313,6 +3860,7 @@ grunt-contrib-copy@^1.0.0: grunt-contrib-cssmin@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/grunt-contrib-cssmin/-/grunt-contrib-cssmin-2.2.1.tgz#64cbebe60134bc1270ca4154514ec4007cc16f7f" + integrity sha512-IXNomhQ5ekVZbDbj/ik5YccoD9khU6LT2fDXqO1+/Txjq8cp0tQKjVS8i8EAbHOrSDkL7/UD6A7b+xj98gqh9w== dependencies: chalk "^1.0.0" clean-css "~4.1.1" @@ -3321,6 +3869,7 @@ grunt-contrib-cssmin@^2.2.1: grunt-contrib-handlebars@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/grunt-contrib-handlebars/-/grunt-contrib-handlebars-1.0.0.tgz#a683cdda9dbd5cfdf5291c7581add85125717a3d" + integrity sha1-poPN2p29XP31KRx1ga3YUSVxej0= dependencies: chalk "^1.0.0" handlebars "~4.0.0" @@ -3329,6 +3878,7 @@ grunt-contrib-handlebars@^1.0.0: grunt-contrib-jshint@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz#369d909b2593c40e8be79940b21340850c7939ac" + integrity sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw= dependencies: chalk "^1.1.1" hooker "^0.2.3" @@ -3337,6 +3887,7 @@ grunt-contrib-jshint@^1.1.0: grunt-contrib-uglify@^3.3.0: version "3.4.0" resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-3.4.0.tgz#8a51ab330be05ef62b11b2833abd3e955e85af03" + integrity sha512-UXsTpeP0pytpTYlmll3RDndsRXfdwmrf1tI/AtD/PrArQAzGmKMvj83aVt3D8egWlE6KqPjsJBLCCvfC52LI/A== dependencies: chalk "^1.0.0" maxmin "^2.1.0" @@ -3346,6 +3897,7 @@ grunt-contrib-uglify@^3.3.0: grunt-contrib-watch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz#c143ca5b824b288a024b856639a5345aedb78ed4" + integrity sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg== dependencies: async "^2.6.0" gaze "^1.1.0" @@ -3355,16 +3907,19 @@ grunt-contrib-watch@^1.1.0: grunt-embed@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/grunt-embed/-/grunt-embed-0.2.1.tgz#ea96e929e9b12f5aaf9479bf1a84f373c716b02e" + integrity sha1-6pbpKemxL1qvlHm/GoTzc8cWsC4= dependencies: resource-embedder "~0.2.1" grunt-known-options@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" + integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ== grunt-legacy-log-utils@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz#d2f442c7c0150065d9004b08fd7410d37519194e" + integrity sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA== dependencies: chalk "~2.4.1" lodash "~4.17.10" @@ -3372,6 +3927,7 @@ grunt-legacy-log-utils@~2.0.0: grunt-legacy-log@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz#c8cd2c6c81a4465b9bbf2d874d963fef7a59ffb9" + integrity sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw== dependencies: colors "~1.1.2" grunt-legacy-log-utils "~2.0.0" @@ -3381,6 +3937,7 @@ grunt-legacy-log@~2.0.0: grunt-legacy-util@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz#e10624e7c86034e5b870c8a8616743f0a0845e42" + integrity sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A== dependencies: async "~1.5.2" exit "~0.1.1" @@ -3393,6 +3950,7 @@ grunt-legacy-util@~1.1.1: grunt-prettify@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/grunt-prettify/-/grunt-prettify-0.4.0.tgz#fc853db4245d4908ab6e35afb5277213eddc194b" + integrity sha1-/IU9tCRdSQirbjWvtSdyE+3cGUs= dependencies: async "~0.9.0" globby "^0.1.1" @@ -3403,10 +3961,12 @@ grunt-prettify@^0.4.0: grunt-sass@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/grunt-sass/-/grunt-sass-3.0.1.tgz#2760207d7b78db84429d9fa77d22289a6fc903a0" + integrity sha512-eKmtsPmtO+cjE1wT0EkvgavsQCzT2x+2J1tS4SuoBu3j0CDpI6o3cJUJ5CxrbjaWULpLlsu0GFiOa6nYetnaqQ== grunt@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.3.tgz#b3c99260c51d1b42835766e796527b60f7bba374" + integrity sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g== dependencies: coffeescript "~1.10.0" dateformat "~1.0.12" @@ -3429,12 +3989,14 @@ grunt@^1.0.3: gzip-size@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= dependencies: duplexer "^0.1.1" "handlebars@>= 1", handlebars@^4.0.5, handlebars@~4.0.0: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== dependencies: async "^2.5.0" optimist "^0.6.1" @@ -3445,10 +4007,12 @@ gzip-size@^3.0.0: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= dependencies: ajv "^5.1.0" har-schema "^2.0.0" @@ -3456,6 +4020,7 @@ har-validator@~5.0.3: har-validator@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== dependencies: ajv "^5.3.0" har-schema "^2.0.0" @@ -3463,34 +4028,41 @@ har-validator@~5.1.0: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-binary@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + integrity sha1-aOYesWIQyVRaClzOBqhzkS/h5ow= dependencies: isarray "0.0.1" has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-unicode@^2.0.0, has-unicode@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -3499,6 +4071,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -3507,10 +4080,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -3518,6 +4093,7 @@ has-values@^1.0.0: hash.js@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -3525,6 +4101,7 @@ hash.js@^1.0.0: hasha@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + integrity sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE= dependencies: is-stream "^1.0.1" pinkie-promise "^2.0.0" @@ -3532,20 +4109,24 @@ hasha@^2.2.0: hashish@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/hashish/-/hashish-0.0.4.tgz#6d60bc6ffaf711b6afd60e426d077988014e6554" + integrity sha1-bWC8b/r3Ebav1g5CbQd5iAFOZVQ= dependencies: traverse ">=0.2.4" he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= helmet-crossdomain@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/helmet-crossdomain/-/helmet-crossdomain-0.3.0.tgz#707e2df930f13ad61f76ed08e1bb51ab2b2e85fa" + integrity sha512-YiXhj0E35nC4Na5EPE4mTfoXMf9JTGpN4OtB4aLqShKuH9d2HNaJX5MQoglO6STVka0uMsHyG5lCut5Kzsy7Lg== helmet-csp@2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-2.7.1.tgz#e8e0b5186ffd4db625cfcce523758adbfadb9dca" + integrity sha512-sCHwywg4daQ2mY0YYwXSZRsgcCeerUwxMwNixGA7aMLkVmPTYBl7gJoZDHOZyXkqPrtuDT3s2B1A+RLI7WxSdQ== dependencies: camelize "1.0.0" content-security-policy-builder "2.0.0" @@ -3555,6 +4136,7 @@ helmet-csp@2.7.1: helmet@^3.12.1: version "3.13.0" resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.13.0.tgz#d6d46763538f77b437be77f06d0af42078b2c656" + integrity sha512-rCYnlbOBkeP6fCo4sXZNu91vIAWlbVgolwnUANtnzPANRf2kJZ2a6yjRnCqG23Tyl2/ExvJ8bDg4xUdNCIWnrw== dependencies: dns-prefetch-control "0.1.0" dont-sniff-mimetype "1.0.0" @@ -3573,36 +4155,44 @@ helmet@^3.12.1: hh-mm-ss@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hh-mm-ss/-/hh-mm-ss-1.2.0.tgz#6d0f0b8280824a634cb1d1f20e0bc7bc8b689948" + integrity sha512-f4I9Hz1dLpX/3mrEs7yq30+FiuO3tt5NWAqAGeBTaoeoBfB8vhcQ3BphuDc5DjZb/K809agqrAaFlP0jhEU/8w== dependencies: zero-fill "^2.2.3" hide-powered-by@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hide-powered-by/-/hide-powered-by-1.0.0.tgz#4a85ad65881f62857fc70af7174a1184dccce32b" + integrity sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys= highlight.js@^9.1.0: version "9.12.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" + integrity sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4= hooker@^0.2.3, hooker@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" + integrity sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk= hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== hpkp@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hpkp/-/hpkp-2.0.0.tgz#10e142264e76215a5d30c44ec43de64dee6d1672" + integrity sha1-EOFCJk52IVpdMMROxD3mTe5tFnI= hsts@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hsts/-/hsts-2.1.0.tgz#cbd6c918a2385fee1dd5680bfb2b3a194c0121cc" + integrity sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA== htmlparser2@3.8.x, htmlparser2@~3.8.1: version "3.8.3" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= dependencies: domelementtype "1" domhandler "2.3" @@ -3613,6 +4203,7 @@ htmlparser2@3.8.x, htmlparser2@~3.8.1: htmlparser2@~3.5.0: version "3.5.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.5.1.tgz#6f42f7657dd19c13f7d65de9118417394a0be6d0" + integrity sha1-b0L3ZX3RnBP31l3pEYQXOUoL5tA= dependencies: domelementtype "1" domhandler "2.2" @@ -3622,6 +4213,7 @@ htmlparser2@~3.5.0: http-basic@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-2.5.1.tgz#8ce447bdb5b6c577f8a63e3fa78056ec4bb4dbfb" + integrity sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s= dependencies: caseless "~0.11.0" concat-stream "^1.4.6" @@ -3630,10 +4222,12 @@ http-basic@^2.5.1: http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== http-errors@1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= dependencies: depd "1.1.1" inherits "2.0.3" @@ -3643,6 +4237,7 @@ http-errors@1.6.2: http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" @@ -3652,6 +4247,7 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: http-errors@~1.3.1: version "1.3.1" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" + integrity sha1-GX4izevUGYWF6GlO9nhhl7ke2UI= dependencies: inherits "~2.0.1" statuses "1" @@ -3659,10 +4255,12 @@ http-errors@~1.3.1: http-parser-js@>=0.4.0: version "0.4.13" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" + integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== dependencies: agent-base "4" debug "3.1.0" @@ -3670,10 +4268,12 @@ http-proxy-agent@^2.1.0: http-response-object@^1.0.0, http-response-object@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-1.1.0.tgz#a7c4e75aae82f3bb4904e4f43f615673b4d518c3" + integrity sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM= http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -3682,10 +4282,12 @@ http-signature@~1.2.0: http2@^3.3.4: version "3.3.7" resolved "https://registry.yarnpkg.com/http2/-/http2-3.3.7.tgz#78396eb1e0bcd1db1f4b138d997c682e23414fbc" + integrity sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ== https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== dependencies: agent-base "^4.1.0" debug "^3.1.0" @@ -3693,12 +4295,14 @@ https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: ms "^2.0.0" husky@^1.0.0-rc.4: version "1.0.0-rc.14" resolved "https://registry.yarnpkg.com/husky/-/husky-1.0.0-rc.14.tgz#e1380575fe4cf17e1ca98791395c1baafa8064c7" + integrity sha512-lxdl0+FrKhRXvhOW978oCHCiaXQAtwoR0hdaPY1CwKd+dgbtktepEvk/3DXwQ7L1YriuG/9HDc4AHlzQ0T6cNw== dependencies: cosmiconfig "^5.0.6" execa "^0.9.0" @@ -3714,86 +4318,105 @@ husky@^1.0.0-rc.4: i@0.3.x: version "0.3.6" resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d" + integrity sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0= iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ienoopen@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ienoopen/-/ienoopen-1.0.0.tgz#346a428f474aac8f50cf3784ea2d0f16f62bda6b" + integrity sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms= iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= iferr@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" + integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== dependencies: minimatch "^3.0.4" ignore@^3.1.2: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== immediate-chunk-store@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/immediate-chunk-store/-/immediate-chunk-store-2.0.0.tgz#f313fd0cc71396d8911ad031179e1cccfda3da18" + integrity sha512-5s6NiCGbtWc+OQA60jrre54w12U7tynIyUNjO5LJjNA5lWwvCv6640roq8Wk/wIuaqnd4Pgtp453OyJ7hbONkQ== import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= in-publish@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= dependencies: repeating "^2.0.0" indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= inflection@1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" + integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -3801,18 +4424,22 @@ inflight@^1.0.4, inflight@~1.0.6: inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inherits@=2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== init-package-json@^1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== dependencies: glob "^7.1.1" npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" @@ -3826,6 +4453,7 @@ init-package-json@^1.10.3: inquirer@^0.12.0: version "0.12.0" resolved "http://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34= dependencies: ansi-escapes "^1.1.0" ansi-regex "^2.0.0" @@ -3844,14 +4472,17 @@ inquirer@^0.12.0: invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ioredis@^3.1.4: version "3.2.2" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-3.2.2.tgz#b7d5ff3afd77bb9718bb2821329b894b9a44c00b" + integrity sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA== dependencies: bluebird "^3.3.4" cluster-key-slot "^1.0.6" @@ -3880,112 +4511,135 @@ ioredis@^3.1.4: ip-anonymize@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/ip-anonymize/-/ip-anonymize-0.0.6.tgz#d2c513e448e874e8cc380d03404691b94b018e68" + integrity sha1-0sUT5EjodOjMOA0DQEaRuUsBjmg= ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip-set@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ip-set/-/ip-set-1.0.1.tgz#633b66d0bd6c8d0de968d053263c9120d3b6727e" + integrity sha1-Yztm0L1sjQ3paNBTJjyRINO2cn4= dependencies: ip "^1.1.3" ip@^1.0.1, ip@^1.1.3, ip@^1.1.4, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.0.5.tgz#5fa78cf301b825c78abc3042d812723049ea23c7" + integrity sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c= ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= ipaddr.js@1.8.1, "ipaddr.js@>= 0.1.5", ipaddr.js@^1.0.1: version "1.8.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= ipv6-normalize@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ipv6-normalize/-/ipv6-normalize-1.0.1.tgz#1b3258290d365fa83239e89907dde4592e7620a8" + integrity sha1-GzJYKQ02X6gyOeiZB93kWS52IKg= is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-ascii@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-ascii/-/is-ascii-1.0.0.tgz#f02ad0259a0921cd199ff21ce1b09e0f6b4e3929" + integrity sha1-8CrQJZoJIc0Zn/Ic4bCeD2tOOSk= is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-bluebird@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2" + integrity sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI= is-buffer@^1.1.5, is-buffer@~1.1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== is-builtin-module@^1.0.0: version "1.0.0" resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" is-ci@^1.0.10, is-ci@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: ci-info "^1.5.0" is-cidr@^2.0.5, is-cidr@^2.0.6: version "2.0.7" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.7.tgz#0fd4b863c26b2eb2d157ed21060c4f3f8dd356ce" + integrity sha512-YfOm5liUO1RoYfFh+lhiGNYtbLzem7IXzFqvfjXh+zLCEuAiznTBlQ2QcMWxsgYeOFmjzljOxJfmZID4/cRBAQ== dependencies: cidr-regex "^2.0.10" is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -3994,6 +4648,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -4002,60 +4657,72 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596" + integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY= is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-generator@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" + integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: is-extglob "^2.1.1" is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= dependencies: global-dirs "^0.1.0" is-path-inside "^1.0.0" @@ -4063,10 +4730,12 @@ is-installed-globally@^0.1.0: is-my-ip-valid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== is-my-json-valid@^2.10.0: version "2.19.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" + integrity sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q== dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" @@ -4077,128 +4746,156 @@ is-my-json-valid@^2.10.0: is-nan@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" + integrity sha1-n69ltvttskt/XAYoR16nH5iEAeI= dependencies: define-properties "^1.1.1" is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== dependencies: symbol-observable "^1.1.0" is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: path-is-inside "^1.0.1" is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-property@^1.0.0, is-property@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== isarray@0.0.1, isarray@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= iso-639-3@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/iso-639-3/-/iso-639-3-1.1.0.tgz#83722daf55490a707c318ae18a33ba3bab06c843" + integrity sha512-l3BAnxNpyRIZA4mEzI2md/YVrxQ3hI8hiQe7TFyQknjyOh8vCzobZuAXTFHELco0FBkYRx4FkAlIqkKrHhnzgw== isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isstream@0.1.x, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== jest-validate@^23.5.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" + integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" @@ -4208,14 +4905,17 @@ jest-validate@^23.5.0: jquery@>=3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" + integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg== js-base64@^2.1.8: version "2.4.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" + integrity sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ== js-beautify@~1.5.4: version "1.5.10" resolved "http://registry.npmjs.org/js-beautify/-/js-beautify-1.5.10.tgz#4d95371702699344a516ca26bf59f0a27bb75719" + integrity sha1-TZU3FwJpk0SlFsomv1nwonu3Vxk= dependencies: config-chain "~1.1.5" mkdirp "~0.5.0" @@ -4224,10 +4924,12 @@ js-beautify@~1.5.4: js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.7.0, js-yaml@^3.8.2, js-yaml@^3.8.3, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4235,6 +4937,7 @@ js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.7.0, js-yaml@^3.8.2, js-yaml@~3.5.2: version "3.5.5" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" + integrity sha1-A3fDgBfKvHMisNH7zSWkkWQfL74= dependencies: argparse "^1.0.2" esprima "^2.6.0" @@ -4242,10 +4945,12 @@ js-yaml@~3.5.2: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jshint@~2.9.4: version "2.9.6" resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.9.6.tgz#19b34e578095a34928fe006135a6cb70137b9c08" + integrity sha512-KO9SIAKTlJQOM4lE64GQUtGBRpTOuvbrRrSZw3AhUxMNG266nX9hK2cKA4SBhXOj0irJGyNyGSLT62HGOVDEOA== dependencies: cli "~1.0.0" console-browserify "1.1.x" @@ -4263,10 +4968,12 @@ jshint@~2.9.4: json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-refs@^2.1.6: version "2.1.7" resolved "https://registry.yarnpkg.com/json-refs/-/json-refs-2.1.7.tgz#b9eb01fe29f5ea3e92878f15aea10ad38b5acf89" + integrity sha1-uesB/in16j6Sh48VrqEK04taz4k= dependencies: commander "^2.9.0" graphlib "^2.1.1" @@ -4279,52 +4986,62 @@ json-refs@^2.1.6: json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 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" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= dependencies: jsonify "~0.0.0" json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" jsonfile@^2.1.0: version "2.4.0" resolved "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= optionalDependencies: graceful-fs "^4.1.6" jsonfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: graceful-fs "^4.1.6" jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= "jsonld-signatures@https://github.com/Chocobozzz/jsonld-signatures#rsa2017": version "1.2.2-2" @@ -4338,6 +5055,7 @@ jsonify@~0.0.0: jsonld@^0.5.12: version "0.5.21" resolved "http://registry.npmjs.org/jsonld/-/jsonld-0.5.21.tgz#4d5b78d717eb92bcd1ac9d88e34efad95370c0bf" + integrity sha512-1dQhaw1Eb3p7Cz5ECE2DNPwLvTmK+f6D45hACBdonJaFKP1bN9zlKLZWbPZQeZtduAc/LNv10J4ML0IiTBVahw== dependencies: rdf-canonize "^0.2.1" request "^2.83.0" @@ -4347,6 +5065,7 @@ jsonld@^0.5.12: jsonld@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/jsonld/-/jsonld-1.1.0.tgz#afcb168c44557a7bddead4d4513c3cbcae3bc5b9" + integrity sha512-tx87xNtu2hGabr7mhSyXTI8q+Fz3pl+50B/JislFPwAz8ud0KTTQpNjU74tJIegFAHve9UFYzzj4YVTIrac0Hw== dependencies: rdf-canonize "^0.2.1" request "^2.83.0" @@ -4356,18 +5075,22 @@ jsonld@^1.0.1: jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsonpointer.js@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/jsonpointer.js/-/jsonpointer.js-0.4.0.tgz#002cb123f767aafdeb0196132ce5c4f9941ccaba" + integrity sha1-ACyxI/dnqv3rAZYTLOXE+ZQcyro= jsonpointer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -4377,10 +5100,12 @@ jsprim@^1.2.2: junk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/junk/-/junk-2.1.0.tgz#f431b4b7f072dc500a5f10ce7f4ec71930e70134" + integrity sha1-9DG0t/By3FAKXxDOf07HGTDnATQ= jwa@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" + integrity sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw== dependencies: buffer-equal-constant-time "1.0.1" ecdsa-sig-formatter "1.0.10" @@ -4389,6 +5114,7 @@ jwa@^1.1.5: jws@^3.1.4: version "3.1.5" resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" + integrity sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ== dependencies: jwa "^1.1.5" safe-buffer "^5.0.1" @@ -4396,6 +5122,7 @@ jws@^3.1.4: k-bucket@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-4.0.1.tgz#3fc2e5693f0b7bff90d7b6b476edd6087955d542" + integrity sha512-YvDpmY3waI999h1zZoW1rJ04fZrgZ+5PAlVmvwDHT6YO/Q1AOhdel07xsKy9eAvJjQ9xZV1wz3rXKqEfaWvlcQ== dependencies: inherits "^2.0.1" randombytes "^2.0.3" @@ -4403,12 +5130,14 @@ k-bucket@^4.0.0: k-bucket@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-5.0.0.tgz#ef7a401fcd4c37cd31dceaa6ae4440ca91055e01" + integrity sha512-r/q+wV/Kde62/tk+rqyttEJn6h0jR7x+incdMVSYTqK73zVxVrzJa70kJL49cIKen8XjIgUZKSvk8ktnrQbK4w== dependencies: randombytes "^2.0.3" k-rpc-socket@^1.7.2: version "1.8.0" resolved "https://registry.yarnpkg.com/k-rpc-socket/-/k-rpc-socket-1.8.0.tgz#9a4dd6a4f3795ed847ffa156579cc389990bd1f2" + integrity sha512-f/9TynsO8YYjZ6JjNNtSSH7CJcIHcio1buy3zqByGxb/GX8AWLdL6FZEWTrN8V3/J7W4/E0ZTQQ+Jt2rVq7ELg== dependencies: bencode "^2.0.0" buffer-equals "^1.0.4" @@ -4417,6 +5146,7 @@ k-rpc-socket@^1.7.2: k-rpc@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/k-rpc/-/k-rpc-5.0.0.tgz#a72651860c96db440579e4c9f38dce8a42b481a8" + integrity sha512-vCH2rQdfMOS+MlUuTSuar1pS2EMrltURf9LmAR9xR6Jik0XPlMX3vEixgqMn17wKmFVCublJqSJ4hJIP7oKZ3Q== dependencies: buffer-equals "^1.0.3" k-bucket "^4.0.0" @@ -4427,76 +5157,91 @@ k-rpc@^5.0.0: kew@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + integrity sha1-edk9LTM2PW/dKXCzNdkUGtWR15s= kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= optionalDependencies: graceful-fs "^4.1.9" known-css-properties@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" + integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ== kuler@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.0.tgz#904ad31c373b781695854d32be33818bf1d60250" + integrity sha512-oyy6pu/yWRjiVfCoJebNUKFL061sNtrs9ejKTbirIwY3oiHmENVCSkHhxDV85Dkm7JYR/czMCBeoM87WilTdSg== dependencies: colornames "^1.1.1" last-one-wins@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/last-one-wins/-/last-one-wins-1.0.4.tgz#c1bfd0cbcb46790ec9156b8d1aee8fcb86cda22a" + integrity sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio= latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= dependencies: package-json "^4.0.0" lazy-property@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" + integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: invert-kv "^1.0.0" lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -4504,6 +5249,7 @@ levn@^0.3.0, levn@~0.3.0: libcipm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-2.0.2.tgz#4f38c2b37acf2ec156936cef1cbf74636568fc7b" + integrity sha512-9uZ6/LAflVEijksTRq/RX0e+pGA4mr8tND9Cmk2JMg7j2fFUBrs8PpFX2DOAJR/XoxPzz+5h8bkWmtIYLunKAg== dependencies: bin-links "^1.1.2" bluebird "^3.5.1" @@ -4523,6 +5269,7 @@ libcipm@^2.0.2: libnpmhook@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-4.0.1.tgz#63641654de772cbeb96a88527a7fd5456ec3c2d7" + integrity sha512-3qqpfqvBD1712WA6iGe0stkG40WwAeoWcujA6BlC0Be1JArQbqwabnEnZ0CRcD05Tf1fPYJYdCbSfcfedEJCOg== dependencies: figgy-pudding "^3.1.0" npm-registry-fetch "^3.0.0" @@ -4530,6 +5277,7 @@ libnpmhook@^4.0.1: libnpx@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.0.tgz#1bf4a1c9f36081f64935eb014041da10855e3102" + integrity sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ== dependencies: dotenv "^5.0.1" npm-package-arg "^6.0.0" @@ -4543,6 +5291,7 @@ libnpx@^10.2.0: libxmljs@0.19.3: version "0.19.3" resolved "https://registry.yarnpkg.com/libxmljs/-/libxmljs-0.19.3.tgz#3f7232a4123952b338f5334e55ea1396fa0d9cd2" + integrity sha512-0fpvneF7qpOe6PLbwFXZx+deZ/U2nethmnVLUZ9aH0Pz9Nfha9S+rlIGIS4ixtmUjwtA0VSE4LvIjVCEvboPpw== dependencies: bindings "~1.3.0" nan "~2.10.0" @@ -4551,6 +5300,7 @@ libxmljs@0.19.3: lint-staged@^7.1.0: version "7.3.0" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d" + integrity sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw== dependencies: chalk "^2.3.1" commander "^2.14.1" @@ -4578,10 +5328,12 @@ lint-staged@^7.1.0: listr-silent-renderer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= listr-update-renderer@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + integrity sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc= dependencies: chalk "^1.1.3" cli-truncate "^0.2.1" @@ -4595,6 +5347,7 @@ listr-update-renderer@^0.4.0: listr-verbose-renderer@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU= dependencies: chalk "^1.1.3" cli-cursor "^1.0.2" @@ -4604,6 +5357,7 @@ listr-verbose-renderer@^0.4.0: listr@^0.14.1: version "0.14.2" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.2.tgz#cbe44b021100a15376addfc2d79349ee430bfe14" + integrity sha512-vmaNJ1KlGuGWShHI35X/F8r9xxS0VTHh9GejVXwSN20fG5xpq3Jh4bJbnumoT6q5EDM/8/YP1z3YMtQbFmhuXw== dependencies: "@samverschueren/stream-to-observable" "^0.3.0" is-observable "^1.1.0" @@ -4618,10 +5372,12 @@ listr@^0.14.1: livereload-js@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.3.0.tgz#c3ab22e8aaf5bf3505d80d098cbad67726548c9a" + integrity sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg== load-ip-set@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/load-ip-set/-/load-ip-set-2.1.0.tgz#2d50b737cae41de4e413d213991d4083a3e1784b" + integrity sha512-taz7U6B+F7Zq90dfIKwqsB1CrFKelSEmMGC68OUqem8Cgd1QZygQBYb2Fk9i6muBSfH4xwF/Pjt4KKlAdOyWZw== dependencies: ip-set "^1.0.0" netmask "^1.0.6" @@ -4632,6 +5388,7 @@ load-ip-set@^2.1.0: load-json-file@^1.0.0: version "1.1.0" resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -4642,6 +5399,7 @@ load-json-file@^1.0.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -4649,6 +5407,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" @@ -4656,6 +5415,7 @@ locate-path@^3.0.0: lock-verify@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.0.2.tgz#148e4f85974915c9e3c34d694b7de9ecb18ee7a8" + integrity sha512-QNVwK0EGZBS4R3YQ7F1Ox8p41Po9VGl2QG/2GsuvTbkJZYSsPeWHKMbbH6iZMCHWSMww5nrJroZYnGzI4cePuw== dependencies: npm-package-arg "^5.1.2 || 6" semver "^5.4.1" @@ -4663,28 +5423,34 @@ lock-verify@^2.0.2: lockfile@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== dependencies: signal-exit "^3.0.2" lodash._arraycopy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" + integrity sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE= lodash._arrayeach@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + integrity sha1-urFWsqkNPxu9XGU0AzSeXlkz754= lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= lodash._basefor@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" + integrity sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI= lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg= dependencies: lodash._createset "~4.0.0" lodash._root "~3.0.0" @@ -4692,14 +5458,17 @@ lodash._baseuniq@~4.6.0: lodash._basevalues@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= lodash._bindcallback@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= lodash._createassigner@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" + integrity sha1-g4pbri/aymOsIt7o4Z+k5taXCxE= dependencies: lodash._bindcallback "^3.0.0" lodash._isiterateecall "^3.0.0" @@ -4708,74 +5477,92 @@ lodash._createassigner@^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" + integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= lodash.bind@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= lodash.capitalize@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" + integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk= lodash.clone@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= lodash.difference@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= lodash.foreach@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= lodash.isplainobject@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz#9a8238ae16b200432960cd7346512d0123fbf4c5" + integrity sha1-moI4rhayAEMpYM1zRlEtASP79MU= dependencies: lodash._basefor "^3.0.0" lodash.isarguments "^3.0.0" @@ -4784,14 +5571,17 @@ lodash.isplainobject@^3.0.0: lodash.istypedarray@^3.0.0: version "3.0.6" resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62" + integrity sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I= lodash.kebabcase@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= dependencies: lodash._getnative "^3.0.0" lodash.isarguments "^3.0.0" @@ -4800,10 +5590,12 @@ lodash.keys@^3.0.0: lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" + integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= lodash.keysin@^3.0.0: version "3.0.8" resolved "https://registry.yarnpkg.com/lodash.keysin/-/lodash.keysin-3.0.8.tgz#22c4493ebbedb1427962a54b445b2c8a767fb47f" + integrity sha1-IsRJPrvtsUJ5YqVLRFssinZ/tH8= dependencies: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" @@ -4811,6 +5603,7 @@ lodash.keysin@^3.0.0: lodash.merge@^3.0.0: version "3.3.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-3.3.2.tgz#0d90d93ed637b1878437bb3e21601260d7afe994" + integrity sha1-DZDZPtY3sYeEN7s+IWASYNev6ZQ= dependencies: lodash._arraycopy "^3.0.0" lodash._arrayeach "^3.0.0" @@ -4827,34 +5620,42 @@ lodash.merge@^3.0.0: lodash.mergewith@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== lodash.noop@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash.noop/-/lodash.noop-3.0.1.tgz#38188f4d650a3a474258439b96ec45b32617133c" + integrity sha1-OBiPTWUKOkdCWEObluxFsyYXEzw= lodash.partial@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.partial/-/lodash.partial-4.2.1.tgz#49f3d8cfdaa3bff8b3a91d127e923245418961d4" + integrity sha1-SfPYz9qjv/izqR0SfpIyRUGJYdQ= lodash.pick@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= lodash.sample@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.sample/-/lodash.sample-4.2.1.tgz#5e4291b0c753fa1abeb0aab8fb29df1b66f07f6d" + integrity sha1-XkKRsMdT+hq+sKq4+ynfG2bwf20= lodash.shuffle@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz#145b5053cf875f6f5c2a33f48b6e9948c6ec7b4b" + integrity sha1-FFtQU8+HX29cKjP0i26ZSMbse0s= lodash.toarray@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-3.0.2.tgz#2b204f0fa4f51c285c6f00c81d1cea5a23041179" + integrity sha1-KyBPD6T1HChcbwDIHRzqWiMEEXk= dependencies: lodash._arraycopy "^3.0.0" lodash._basevalues "^3.0.0" @@ -4863,6 +5664,7 @@ lodash.toarray@^3.0.0: lodash.toplainobject@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz#28790ad942d293d78aa663a07ecf7f52ca04198d" + integrity sha1-KHkK2ULSk9eKpmOgfs9/UsoEGY0= dependencies: lodash._basecopy "^3.0.0" lodash.keysin "^3.0.0" @@ -4870,50 +5672,61 @@ lodash.toplainobject@^3.0.0: lodash.union@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= lodash.uniq@~4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= lodash.values@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" + integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= lodash.without@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= lodash@4.17.4: version "4.17.4" resolved "http://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= lodash@=3.10.1, lodash@^3.2.0: version "3.10.1" resolved "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= lodash@^4.0.0, lodash@^4.11.1, lodash@^4.17.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.2, lodash@~4.17.10, lodash@~4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== lodash@~2.4.1: version "2.4.2" resolved "http://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + integrity sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= dependencies: chalk "^1.0.0" log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: chalk "^2.0.1" log-update@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= dependencies: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" @@ -4921,6 +5734,7 @@ log-update@^1.0.2: logform@^1.9.1: version "1.10.0" resolved "https://registry.yarnpkg.com/logform/-/logform-1.10.0.tgz#c9d5598714c92b546e23f4e78147c40f1e02012e" + integrity sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg== dependencies: colors "^1.2.1" fast-safe-stringify "^2.0.4" @@ -4931,6 +5745,7 @@ logform@^1.9.1: loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" @@ -4938,10 +5753,12 @@ loud-rejection@^1.0.0: lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -4949,18 +5766,21 @@ lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= dependencies: es5-ext "~0.10.2" lru@^3.0.0, lru@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lru/-/lru-3.1.0.tgz#ea7fb8546d83733396a13091d76cfeb4c06837d5" + integrity sha1-6n+4VG2DczOWoTCR12z+tMBoN9U= dependencies: inherits "^2.0.1" magnet-uri@^5.1.3, magnet-uri@^5.1.4: version "5.2.4" resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-5.2.4.tgz#7afe5b736af04445aff744c93a890a3710077688" + integrity sha512-VYaJMxhr8B9BrCiNINUsuhaEe40YnG+AQBwcqUKO66lSVaI9I3A1iH/6EmEwRI8OYUg5Gt+4lLE7achg676lrg== dependencies: thirty-two "^1.0.1" uniq "^1.0.1" @@ -4968,6 +5788,7 @@ magnet-uri@^5.1.3, magnet-uri@^5.1.4: maildev@^1.0.0-rc3: version "1.0.0-rc3" resolved "https://registry.yarnpkg.com/maildev/-/maildev-1.0.0-rc3.tgz#89429d47b07633e3269a74e484991eecdf3a3857" + integrity sha512-5Ve6V3GlS8QOAwUtwsWzR1S0P7Kzw+p5syfgpGyUZXGOuGbfV+qDpZ9grg/FJqm49iqWeWjvYj1Va8XMNcLrxg== dependencies: async "1.5.1" commander "2.9.0" @@ -4982,6 +5803,7 @@ maildev@^1.0.0-rc3: mailparser@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/mailparser/-/mailparser-0.6.2.tgz#03c486039bdf4df6cd3b6adcaaac4107dfdbc068" + integrity sha1-A8SGA5vfTfbNO2rcqqxBB9/bwGg= dependencies: encoding "^0.1.12" mime "^1.3.4" @@ -4991,16 +5813,19 @@ mailparser@0.6.2: make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" make-error@^1.1.1: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== "make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" + integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ== dependencies: agentkeepalive "^3.4.1" cacache "^11.0.1" @@ -5017,6 +5842,7 @@ make-error@^1.1.1: make-fetch-happen@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-3.0.0.tgz#7b661d2372fc4710ab5cc8e1fa3c290eea69a961" + integrity sha512-FmWY7gC0mL6Z4N86vE14+m719JKE4H0A+pyiOH18B025gF/C113pyfb4gHDDYP5cqnRMHOz06JGdmffC/SES+w== dependencies: agentkeepalive "^3.4.1" cacache "^10.0.4" @@ -5033,34 +5859,41 @@ make-fetch-happen@^3.0.0: map-age-cleaner@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" + integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" marked@^0.3.5: version "0.3.19" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== maxmin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" + integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY= dependencies: chalk "^1.0.0" figures "^1.0.1" @@ -5070,6 +5903,7 @@ maxmin@^2.1.0: md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= dependencies: charenc "~0.0.1" crypt "~0.0.1" @@ -5078,14 +5912,17 @@ md5@^2.2.1: meant@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" + integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= mediasource@^2.0.0, mediasource@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.2.2.tgz#2fe826f14e51da97fa4bf87be7b808a0b11d3a4c" + integrity sha512-yIyAJMcu1mudTkxZ0jDAKnZJJba4eWPCxxtZRMpoaA4/AI7m7nqbRjmdxmi+x3hKTohb5vC9Yd3IBF/SUzp1vQ== dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -5094,12 +5931,14 @@ mediasource@^2.0.0, mediasource@^2.1.0: mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= dependencies: mimic-fn "^1.0.0" mem@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^1.0.0" @@ -5108,6 +5947,7 @@ mem@^4.0.0: memoizee@^0.4.14: version "0.4.14" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== dependencies: d "1" es5-ext "^0.10.45" @@ -5121,10 +5961,12 @@ memoizee@^0.4.14: memory-chunk-store@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/memory-chunk-store/-/memory-chunk-store-1.3.0.tgz#ae99e7e3b58b52db43d49d94722930d39459d0c4" + integrity sha512-6LsOpHKKhxYrLhHmOJdBCUtSO7op5rUs1pag0fhjHo0QiXRyna0bwYf4EmQuL7InUeF2J7dUMPr6VMogRyf9NA== meow@^3.3.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= dependencies: camelcase-keys "^2.0.0" decamelize "^1.1.2" @@ -5140,18 +5982,22 @@ meow@^3.3.0, meow@^3.7.0: merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -5170,32 +6016,39 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: mime-db@~1.36.0: version "1.36.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.6: version "2.1.20" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== dependencies: mime-db "~1.36.0" mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM= mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== mime@^1.3.4, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== mimelib@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/mimelib/-/mimelib-0.3.1.tgz#787add2415d827acb3af6ec4bca1ea9596418853" + integrity sha1-eHrdJBXYJ6yzr27EvKHqlZZBiFM= dependencies: addressparser "~1.0.1" encoding "~0.1.12" @@ -5203,46 +6056,56 @@ mimelib@^0.3.0: mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== "minimatch@2 || 3", minimatch@3.0.4, 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" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimatch@^2.0.1: version "2.0.10" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc= dependencies: brace-expansion "^1.0.0" minimist@0.0.8: version "0.0.8" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@1.1.x: version "1.1.3" resolved "http://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" + integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" + integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -5250,12 +6113,14 @@ minipass@^2.2.1, minipass@^2.3.3: minizlib@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== dependencies: minipass "^2.2.1" mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -5271,6 +6136,7 @@ mississippi@^2.0.0: mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -5286,6 +6152,7 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -5293,16 +6160,19 @@ mixin-deep@^1.2.0: mkdirp@0.5.1, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" mkdirp@~0.3.5: version "0.3.5" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + integrity sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc= mocha@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== dependencies: browser-stdout "1.3.1" commander "2.15.1" @@ -5319,16 +6189,19 @@ mocha@^5.0.0: moment-timezone@^0.5.0, moment-timezone@^0.5.14: version "0.5.21" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.21.tgz#3cba247d84492174dbf71de2a9848fa13207b845" + integrity sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A== dependencies: moment ">= 2.9.0" "moment@>= 2.9.0", moment@^2.20.0: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= morgan@^1.5.3, morgan@^1.6.1: version "1.9.1" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" + integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA== dependencies: basic-auth "~2.0.0" debug "2.6.9" @@ -5339,6 +6212,7 @@ morgan@^1.5.3, morgan@^1.6.1: move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -5350,6 +6224,7 @@ move-concurrently@^1.0.1: mp4-box-encoding@^1.1.0, mp4-box-encoding@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/mp4-box-encoding/-/mp4-box-encoding-1.3.0.tgz#2a6f750947ff68c3a498fd76cd6424c53d995d48" + integrity sha512-U4pMLpjT/UzB8d36dxj6Mf1bG9xypEvgbuRIa1fztRXNKKTCAtRxsnFZhNOd7YDFOKtjBgssYGvo4H/Q3ZY1MA== dependencies: buffer-alloc "^1.2.0" buffer-from "^1.1.0" @@ -5358,6 +6233,7 @@ mp4-box-encoding@^1.1.0, mp4-box-encoding@^1.3.0: mp4-stream@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/mp4-stream/-/mp4-stream-2.0.3.tgz#30acee07709d323f8dcd87a07b3ce9c3c4bfb364" + integrity sha512-5NzgI0+bGakoZEwnIYINXqB3mnewkt3Y7jcvkXsTubnCNUSdM8cpP0Vemxf6FLg0qUN8fydTgNMVAc3QU8B92g== dependencies: buffer-alloc "^1.1.0" inherits "^2.0.1" @@ -5368,22 +6244,27 @@ mp4-stream@^2.0.0: ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg= ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + integrity sha1-riXPJRKziFodldfwN4aNhDESR2U= ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.0.0, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multer@^1.1.0: version "1.3.1" resolved "https://registry.yarnpkg.com/multer/-/multer-1.3.1.tgz#c3fb3b35f50c7eefe873532f90d3dde02ce6e040" + integrity sha512-JHdEoxkA/5NgZRo91RNn4UT+HdcJV9XUo01DTkKC7vo1erNIngtuaw9Y0WI8RdTlyi+wMIbunflhghzVLuGJyw== dependencies: append-field "^0.1.0" busboy "^0.2.11" @@ -5397,6 +6278,7 @@ multer@^1.1.0: multistream@^2.0.2, multistream@^2.0.5: version "2.1.1" resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c" + integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ== dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -5404,22 +6286,27 @@ multistream@^2.0.2, multistream@^2.0.5: mute-stream@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= nan@2.10.0, nan@~2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== nan@^2.0.7, nan@^2.10.0, nan@^2.11.0, nan@^2.9.2: version "2.11.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" + integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -5436,14 +6323,17 @@ nanomatch@^1.2.9: native-promise-only@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + integrity sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE= ncp@1.0.x: version "1.0.1" resolved "http://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246" + integrity sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY= needle@^2.2.0, needle@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" + integrity sha512-GPL22d/U9cai87FcCPO6e+MT3vyHS2j+zwotakDc7kE2DtUAqFKMXLJCTtRp+5S75vXIwQPvIxkvlctxf9q4gQ== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -5452,18 +6342,22 @@ needle@^2.2.0, needle@^2.2.1: negotiator@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" + integrity sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g= negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= netrc-parser@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/netrc-parser/-/netrc-parser-3.1.6.tgz#7243c9ec850b8e805b9bdc7eae7b1450d4a96e72" + integrity sha512-lY+fmkqSwntAAjfP63jB4z5p5WbuZwyMCD3pInT7dpHU/Gc6Vv90SAC6A0aNiqaRGHiuZFBtiwu+pu8W/Eyotw== dependencies: debug "^3.1.0" execa "^0.10.0" @@ -5471,28 +6365,34 @@ netrc-parser@^3.1.6: next-event@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-event/-/next-event-1.0.0.tgz#e7778acde2e55802e0ad1879c39cf6f75eda61d8" + integrity sha1-53eKzeLlWALgrRh5w5z2917aYdg= next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nocache@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.0.0.tgz#202b48021a0c4cbde2df80de15a17443c8b43980" + integrity sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA= node-abi@^2.2.0: version "2.4.4" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.4.tgz#410d8968809fe616dc078a181c44a370912f12fd" + integrity sha512-DQ9Mo2mf/XectC+s6+grPPRQ1Z9gI3ZbrGv6nyXRkjwT3HrE0xvtvrfnH7YHYBLgC/KLadg+h3XHnhZw1sv88A== dependencies: semver "^5.4.1" node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" @@ -5501,14 +6401,17 @@ node-fetch-npm@^2.0.2: node-forge@^0.7.1: version "0.7.6" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" + integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== node-gyp-build@~3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.4.0.tgz#f8f62507e65f152488b28aac25d04b9d79748cf7" + integrity sha512-YoviGBJYGrPdLOKDIQB0sKxuKy/EEsxzooNkOZak4vSTKT/qH0Pa6dj3t1MJjEQGsefih61IyHDmO1WW7xOFfw== node-gyp@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -5526,6 +6429,7 @@ node-gyp@^3.8.0: node-pre-gyp@0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" + integrity sha1-8RwHUW3ZL4cZnbx+GDjqt81WyeA= dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5541,6 +6445,7 @@ node-pre-gyp@0.9.1: node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5556,6 +6461,7 @@ node-pre-gyp@^0.10.0: node-pre-gyp@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" + integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5571,6 +6477,7 @@ node-pre-gyp@~0.11.0: node-sass@^4.9.0: version "4.9.3" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" + integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -5595,30 +6502,36 @@ node-sass@^4.9.0: nodemailer-fetch@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.3.0.tgz#9f37f6a5b80c1cb5d697ca2bfbde41a6582a50b0" + integrity sha1-nzf2pbgMHLXWl8or+95BplgqULA= nodemailer-fetch@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" + integrity sha1-ecSQihwPXzdbc/6IjamCj23JY6Q= nodemailer-shared@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.0.4.tgz#8b5c5c35bfb29a47dda7d38303f3a4fb47ba38ae" + integrity sha1-i1xcNb+ymkfdp9ODA/Ok+0e6OK4= dependencies: nodemailer-fetch "1.3.0" nodemailer-shared@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" + integrity sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA= dependencies: nodemailer-fetch "1.6.0" nodemailer@^4.4.2: version "4.6.8" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.8.tgz#f82fb407828bf2e76d92acc34b823d83e774f89c" + integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== nodemon@^1.11.0: version "1.18.4" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.4.tgz#873f65fdb53220eb166180cf106b1354ac5d714d" + integrity sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg== dependencies: chokidar "^2.0.2" debug "^3.1.0" @@ -5634,16 +6547,19 @@ nodemon@^1.11.0: noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= "nopt@2 || 3", nopt@~3.0.1, nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: abbrev "1" nopt@^4.0.1, nopt@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" @@ -5651,12 +6567,14 @@ nopt@^4.0.1, nopt@~4.0.1: nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= dependencies: abbrev "1" normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -5666,12 +6584,14 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" npm-audit-report@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.1.tgz#e79ea1fcb5ffaf3031102b389d5222c2b0459632" + integrity sha512-SjTF8ZP4rOu3JiFrTMi4M1CmVo2tni2sP4TzhyCMHwnMGf6XkdGLZKt9cdZ12esKf0mbQqFyU9LtY0SoeahL7g== dependencies: cli-table3 "^0.5.0" console-control-strings "^1.1.0" @@ -5679,20 +6599,24 @@ npm-audit-report@^1.3.1: npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== npm-cache-filename@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= npm-install-checks@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" + integrity sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc= dependencies: semver "^2.3.0 || 3.x || 4 || 5" npm-lifecycle@^2.0.3, npm-lifecycle@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569" + integrity sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g== dependencies: byline "^5.0.0" graceful-fs "^4.1.11" @@ -5706,10 +6630,12 @@ npm-lifecycle@^2.0.3, npm-lifecycle@^2.1.0: npm-logical-tree@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" + integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^5.1.2 || 6", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== dependencies: hosted-git-info "^2.6.0" osenv "^0.1.5" @@ -5719,6 +6645,7 @@ npm-logical-tree@^1.2.1: npm-packlist@^1.1.10, npm-packlist@^1.1.11, npm-packlist@^1.1.6: version "1.1.11" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -5726,12 +6653,14 @@ npm-packlist@^1.1.10, npm-packlist@^1.1.11, npm-packlist@^1.1.6: npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== dependencies: which "^1.2.10" npm-pick-manifest@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.1.0.tgz#dc381bdd670c35d81655e1d5a94aa3dd4d87fce5" + integrity sha512-q9zLP8cTr8xKPmMZN3naxp1k/NxVFsjxN6uWuO1tiw9gxg7wZWQ/b5UTfzD0ANw2q1lQxdLKTeCCksq+bPSgbQ== dependencies: npm-package-arg "^6.0.0" semver "^5.4.1" @@ -5739,6 +6668,7 @@ npm-pick-manifest@^2.1.0: npm-profile@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-3.0.2.tgz#58d568f1b56ef769602fd0aed8c43fa0e0de0f57" + integrity sha512-rEJOFR6PbwOvvhGa2YTNOJQKNuc6RovJ6T50xPU7pS9h/zKPNCJ+VHZY2OFXyZvEi+UQYtHRTp8O/YM3tUD20A== dependencies: aproba "^1.1.2 || 2" make-fetch-happen "^2.5.0 || 3 || 4" @@ -5746,6 +6676,7 @@ npm-profile@^3.0.2: npm-registry-client@^8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" + integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg== dependencies: concat-stream "^1.5.2" graceful-fs "^4.1.6" @@ -5764,6 +6695,7 @@ npm-registry-client@^8.6.0: npm-registry-fetch@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-1.1.1.tgz#710bc5947d9ee2c549375072dab6d5d17baf2eb2" + integrity sha512-ev+zxOXsgAqRsR8Rk+ErjgWOlbrXcqGdme94/VNdjDo1q8TSy10Pp8xgDv/ZmMk2jG/KvGtXUNG4GS3+l6xbDw== dependencies: bluebird "^3.5.1" figgy-pudding "^3.0.0" @@ -5775,6 +6707,7 @@ npm-registry-fetch@^1.1.0: npm-registry-fetch@^3.0.0: version "3.8.0" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz#aa7d9a7c92aff94f48dba0984bdef4bd131c88cc" + integrity sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" @@ -5786,16 +6719,19 @@ npm-registry-fetch@^3.0.0: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npm-user-validate@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" + integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= npm-which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= dependencies: commander "^2.9.0" npm-path "^2.0.2" @@ -5804,6 +6740,7 @@ npm-which@^3.0.1: npm@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/npm/-/npm-6.4.1.tgz#4f39f9337b557a28faed4a771d5c8802d6b4288b" + integrity sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg== dependencies: JSONStream "^1.3.4" abbrev "~1.1.1" @@ -5918,6 +6855,7 @@ npm@^6.4.1: "npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -5927,28 +6865,34 @@ npm@^6.4.1: nsdeclare@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/nsdeclare/-/nsdeclare-0.1.0.tgz#10daa153642382d3cf2c01a916f4eb20a128b19f" + integrity sha1-ENqhU2QjgtPPLAGpFvTrIKEosZ8= nth-check@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= dependencies: boolbase "~1.0.0" number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== oauth2-server@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/oauth2-server/-/oauth2-server-3.0.0.tgz#c46276b74c3d28634d59ee981f76b58a6459cc28" + integrity sha1-xGJ2t0w9KGNNWe6YH3a1imRZzCg= dependencies: basic-auth "1.1.0" bluebird "3.5.0" @@ -5960,22 +6904,27 @@ oauth2-server@3.0.0: object-assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -5984,54 +6933,65 @@ object-copy@^0.1.0: object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" on-finished@^2.3.0, on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" one-time@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" + integrity sha1-+M33eISCb+Tf+T46nMN7HkSAdC4= onetime@^1.0.0: version "1.1.0" resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= open@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" + integrity sha1-QsPhjslUZra/DcQvOilFw/DK2Pw= opener@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== opn@^4.0.0: version "4.0.2" resolved "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + integrity sha1-erwi5kTf9jsKltWrfyeQwPAavJU= dependencies: object-assign "^4.0.1" pinkie-promise "^2.0.0" @@ -6039,6 +6999,7 @@ opn@^4.0.0: optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -6046,6 +7007,7 @@ optimist@^0.6.1: optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -6057,20 +7019,24 @@ optionator@^0.8.1: options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^1.4.0: version "1.4.0" resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= dependencies: lcid "^1.0.0" os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== dependencies: execa "^0.7.0" lcid "^1.0.0" @@ -6079,6 +7045,7 @@ os-locale@^2.0.0: os-locale@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== dependencies: execa "^0.10.0" lcid "^2.0.0" @@ -6087,10 +7054,12 @@ os-locale@^3.0.0: os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -6098,60 +7067,72 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5: p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-is-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== dependencies: p-try "^2.0.0" p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== package-json-versionify@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/package-json-versionify/-/package-json-versionify-1.0.4.tgz#5860587a944873a6b7e6d26e8e51ffb22315bf17" + integrity sha1-WGBYepRIc6a35tJujlH/siMVvxc= dependencies: browserify-package-json "^1.0.0" package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -6161,10 +7142,12 @@ package-json@^4.0.0: packet-reader@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz#cd62e60af8d7fea8a705ec4ff990871c46871f27" + integrity sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc= pacote@^8.1.6: version "8.1.6" resolved "https://registry.yarnpkg.com/pacote/-/pacote-8.1.6.tgz#8e647564d38156367e7a9dc47a79ca1ab278d46e" + integrity sha512-wTOOfpaAQNEQNtPEx92x9Y9kRWVu45v583XT8x2oEV2xRB74+xdqMZIeGW4uFvAyZdmSBtye+wKdyyLaT8pcmw== dependencies: bluebird "^3.5.1" cacache "^11.0.2" @@ -6195,6 +7178,7 @@ pacote@^8.1.6: parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -6203,12 +7187,14 @@ parallel-transform@^1.1.0: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -6216,10 +7202,12 @@ parse-json@^4.0.0: parse-numeric-range@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz#b4f09d413c7adbcd987f6e9233c7b4b210c938e4" + integrity sha1-tPCdQTx6282Yf26SM8e0shDJOOQ= parse-torrent@^6.0.0, parse-torrent@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-6.1.2.tgz#99da5bdd23435a1cb7e8e7a63847c4efb21b1956" + integrity sha512-Z/vig84sHwtrTEbOzisT4xnYTFlOgAaLQccPruMPgRahZUppVE/BUXzAos3jZM7c64o0lfukQdQ4ozWa5lN39w== dependencies: bencode "^2.0.0" blob-to-buffer "^1.2.6" @@ -6232,64 +7220,77 @@ parse-torrent@^6.0.0, parse-torrent@^6.1.2: parsejson@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + integrity sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs= dependencies: better-assert "~1.0.0" parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= dependencies: better-assert "~1.0.0" parseuri@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= dependencies: better-assert "~1.0.0" parseurl@~1.3.1, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= password-generator@^2.0.2: version "2.2.0" resolved "https://registry.yarnpkg.com/password-generator/-/password-generator-2.2.0.tgz#fc75cff795110923e054a5a71623433240bf5e49" + integrity sha1-/HXP95URCSPgVKWnFiNDMkC/Xkk= dependencies: yargs-parser "^8.0.0" path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0, path-is-absolute@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-loader@^1.0.2: version "1.0.9" resolved "https://registry.yarnpkg.com/path-loader/-/path-loader-1.0.9.tgz#4f204ada1a477db2a572fce382029c3f24dc5237" + integrity sha512-pD37gArtr+/72Tst9oJoDB9k7gB9A09Efj7yyBi5HDUqaxqULXBWW8Rnw2TfNF+3sN7QZv0ZNdW1Qx2pFGW5Jg== dependencies: native-promise-only "^0.8.1" superagent "^3.8.3" @@ -6297,14 +7298,17 @@ path-loader@^1.0.2: path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= dependencies: graceful-fs "^4.1.2" pify "^2.0.0" @@ -6313,16 +7317,19 @@ path-type@^1.0.0: pathval@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= pause-stream@^0.0.11: version "0.0.11" resolved "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= dependencies: through "~2.3" peek-stream@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" + integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== dependencies: buffer-from "^1.0.0" duplexify "^3.5.0" @@ -6331,6 +7338,7 @@ peek-stream@^1.1.1: pem@^1.12.3: version "1.13.1" resolved "https://registry.yarnpkg.com/pem/-/pem-1.13.1.tgz#57dd3e0c044fbcf709db026a737e1aad7dc8330f" + integrity sha512-gA/kl8/MWWBaVRRv8M4iRkaJXEbp0L9NyG5ggZlbvQxylZAq5K5wGesAZifs89kwL/m4EGdekXtBMOzXM9rv7w== dependencies: es6-promisify "^6.0.0" md5 "^2.2.1" @@ -6340,34 +7348,41 @@ pem@^1.12.3: pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= pfeed@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/pfeed/-/pfeed-1.1.6.tgz#0de2a1c40b116fa236227237fa264c7956c185e8" + integrity sha512-C3WYILHWOXXlBNqsUhaYdg8ZCHfcEJj7VDbfEXZAru06jI5C9IeRFhSGTl3eRaC8jE8My1mM0xdIGfaEkGaHzA== dependencies: xml "^1.0.1" pg-connection-string@0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz#da1847b20940e42ee1492beaf65d49d91b245df7" + integrity sha1-2hhHsglA5C7hSSvq9l1J2RskXfc= pg-hstore@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/pg-hstore/-/pg-hstore-2.3.2.tgz#f7ef053e7b9b892ae986af2f7cbe86432dfcf24f" + integrity sha1-9+8FPnubiSrphq8vfL6GQy388k8= dependencies: underscore "^1.7.0" pg-pool@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.3.tgz#c022032c8949f312a4f91fb6409ce04076be3257" + integrity sha1-wCIDLIlJ8xKk+R+2QJzgQHa+Mlc= pg-types@~1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-1.12.1.tgz#d64087e3903b58ffaad279e7595c52208a14c3d2" + integrity sha1-1kCH45A7WP+q0nnnWVxSIIoUw9I= dependencies: postgres-array "~1.0.0" postgres-bytea "~1.0.0" @@ -6377,6 +7392,7 @@ pg-types@~1.12.1: pg@^7.4.1: version "7.4.3" resolved "https://registry.yarnpkg.com/pg/-/pg-7.4.3.tgz#f7b6f93f5340ecc2596afbb94a13e3d6b609834b" + integrity sha1-97b5P1NA7MJZavu5ShPj1rYJg0s= dependencies: buffer-writer "1.0.1" packet-reader "0.3.1" @@ -6389,12 +7405,14 @@ pg@^7.4.1: pgpass@1.x: version "1.0.2" resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" + integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= dependencies: split "^1.0.0" phantom@~4.0.1: version "4.0.12" resolved "https://registry.yarnpkg.com/phantom/-/phantom-4.0.12.tgz#78d18cf3f2a76fea4909f6160fcabf2742d7dbf0" + integrity sha512-Tz82XhtPmwCk1FFPmecy7yRGZG2btpzY2KI9fcoPT7zT9det0CcMyfBFPp1S8DqzsnQnm8ZYEfdy528mwVtksA== dependencies: phantomjs-prebuilt "^2.1.16" split "^1.0.1" @@ -6403,6 +7421,7 @@ phantom@~4.0.1: phantomjs-prebuilt@^2.1.16, phantomjs-prebuilt@~2.1.7: version "2.1.16" resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef" + integrity sha1-79ISpKOWbTZHaE6ouniFSb4q7+8= dependencies: es6-promise "^4.0.3" extract-zip "^1.6.5" @@ -6417,68 +7436,82 @@ phantomjs-prebuilt@^2.1.16, phantomjs-prebuilt@~2.1.7: piece-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/piece-length/-/piece-length-1.0.0.tgz#4db7167157fd69fef14caf7262cd39f189b24508" + integrity sha1-TbcWcVf9af7xTK9yYs058YmyRQg= dependencies: closest-to "~2.0.0" pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pkginfo@0.3.x: version "0.3.1" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" + integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE= pkginfo@0.x.x: version "0.4.1" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" + integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= platform@1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444" + integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q== please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" + integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== dependencies: semver-compare "^1.0.0" pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= portscanner@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-1.2.0.tgz#b14bbda257d14c310fa9cc09682af02d40961802" + integrity sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI= dependencies: async "1.5.2" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss@~0.3.2: version "0.3.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-0.3.5.tgz#5073a3d062ef3ce592ac4a5fe6b8c2862ab83ceb" + integrity sha1-UHOj0GLvPOWSrEpf5rjChiq4POs= dependencies: base64-js "~0.0.6" source-map "~0.1.33" @@ -6486,24 +7519,29 @@ postcss@~0.3.2: postgres-array@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.3.tgz#c561fc3b266b21451fc6555384f4986d78ec80f5" + integrity sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ== postgres-bytea@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= postgres-date@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz#e2d89702efdb258ff9d9cee0fe91bd06975257a8" + integrity sha1-4tiXAu/bJY/52c7g/pG9BpdSV6g= postgres-interval@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz#bf71ff902635f21cb241a013fc421d81d1db15a9" + integrity sha512-fC3xNHeTskCxL1dC8KOtxXt7YeFmlbTYtn7ul8MkVERuTmf7pI4DrkAxcw3kh1fQ9uz4wQmd03a1mRiXUZChfQ== dependencies: xtend "^4.0.0" prebuild-install@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-4.0.0.tgz#206ce8106ce5efa4b6cf062fc8a0a7d93c17f3a8" + integrity sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA== dependencies: detect-libc "^1.0.3" expand-template "^1.0.2" @@ -6524,20 +7562,24 @@ prebuild-install@^4.0.0: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= pretty-bytes@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8= dependencies: number-is-nan "^1.0.0" pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -6545,18 +7587,22 @@ pretty-format@^23.6.0: process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= promise-inflight@^1.0.1, promise-inflight@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise-retry@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= dependencies: err-code "^1.0.0" retry "^0.10.0" @@ -6564,12 +7610,14 @@ promise-retry@^1.1.1: promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" promisify-any@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/promisify-any/-/promisify-any-2.0.1.tgz#403e00a8813f175242ab50fe33a69f8eece47305" + integrity sha1-QD4AqIE/F1JCq1D+M6afjuzkcwU= dependencies: bluebird "^2.10.0" co-bluebird "^1.1.0" @@ -6578,6 +7626,7 @@ promisify-any@2.0.1: prompt@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.0.0.tgz#8e57123c396ab988897fb327fd3aedc3e735e4fe" + integrity sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4= dependencies: colors "^1.1.2" pkginfo "0.x.x" @@ -6589,22 +7638,26 @@ prompt@^1.0.0: promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= dependencies: read "1" proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= protoduck@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.0.tgz#752145e6be0ad834cb25716f670a713c860dce70" + integrity sha512-agsGWD8/RZrS4ga6v82Fxb0RHIS2RZnbsSue6A9/MBRhB/jcqOANAMNrqM9900b8duj+Gx+T/JMy5IowDoO/hQ== dependencies: genfun "^4.0.1" proxy-addr@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.0.10.tgz#0d40a82f801fc355567d2ecb65efe3f077f121c5" + integrity sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU= dependencies: forwarded "~0.1.0" ipaddr.js "1.0.5" @@ -6612,6 +7665,7 @@ proxy-addr@~1.0.10: proxy-addr@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== dependencies: forwarded "~0.1.2" ipaddr.js "1.8.0" @@ -6619,30 +7673,36 @@ proxy-addr@~2.0.3: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= ps-tree@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= dependencies: event-stream "~3.3.0" pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== pstree.remy@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.0.tgz#f2af27265bd3e5b32bbfcc10e80bac55ba78688b" + integrity sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q== dependencies: ps-tree "^1.1.0" pump@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6650,6 +7710,7 @@ pump@^1.0.0: pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6657,6 +7718,7 @@ pump@^2.0.0, pump@^2.0.1: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6664,6 +7726,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" inherits "^2.0.3" @@ -6672,30 +7735,37 @@ pumpify@^1.3.3: punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qrcode-terminal@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" + integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== qs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" + integrity sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc= qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== qs@6.5.2, qs@^6.1.0, qs@^6.4.0, qs@^6.5.1, qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.1.0.tgz#01e7d69f6a0940dac67a937d6c6325647aa4532a" + integrity sha512-pNB/Gr8SA8ff8KpUFM36o/WFAlthgaThka5bV19AD9PNTH20Pwq5Zxodif2YyHwrctp6SkL4GqlOot0qR/wGaw== dependencies: decode-uri-component "^0.2.0" strict-uri-encode "^2.0.0" @@ -6703,10 +7773,12 @@ query-string@^6.1.0: qw@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" + integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= random-access-file@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/random-access-file/-/random-access-file-2.0.1.tgz#dc22de79270e9a84cb36a2419b759725930dcaeb" + integrity sha512-nb4fClpzoUY+v1SHrro+9yykN90eMA1rc+xM39tnZ5R3BgFY+J/NxPZ0KuUpishEsvnwou9Fvm2wa3cjeuG7vg== dependencies: mkdirp "^0.5.1" random-access-storage "^1.1.1" @@ -6714,30 +7786,36 @@ random-access-file@^2.0.1: random-access-storage@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/random-access-storage/-/random-access-storage-1.3.0.tgz#d27e4d897b79dc4358afc2bbe553044e5c8cfe35" + integrity sha512-pdS9Mcb9TB7oICypPRALlheaSuszuAKmLVEPKJMuYor7R/zDuHh5ALuQoS+ox31XRwQUL+tDwWH2GPdyspwelA== dependencies: inherits "^2.0.3" random-iterate@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/random-iterate/-/random-iterate-1.0.1.tgz#f7d97d92dee6665ec5f6da08c7f963cad4b2ac99" + integrity sha1-99l9kt7mZl7F9toIx/ljytSyrJk= randombytes@^2.0.3, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" range-parser@^1.2.0, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= range-parser@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" + integrity sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU= range-slice-stream@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-1.2.0.tgz#01ba954276052b783900e63d6118d8fcf3875d7f" + integrity sha1-AbqVQnYFK3g5AOY9YRjY/POHXX8= dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -6745,6 +7823,7 @@ range-slice-stream@^1.2.0: raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= dependencies: bytes "3.0.0" http-errors "1.6.2" @@ -6754,6 +7833,7 @@ raw-body@2.3.2: raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== dependencies: bytes "3.0.0" http-errors "1.6.3" @@ -6763,6 +7843,7 @@ raw-body@2.3.3: raw-body@~1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" + integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= dependencies: bytes "1" string_decoder "0.10" @@ -6770,6 +7851,7 @@ raw-body@~1.1.0: rc@^1.0.1, rc@^1.1.6, rc@^1.1.7, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" ini "~1.3.0" @@ -6779,6 +7861,7 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7, rc@^1.2.7: rdf-canonize@^0.2.1: version "0.2.4" resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-0.2.4.tgz#1b46eb01500b6800348ac5fe0953c1be226b1446" + integrity sha512-xwAEHJt8FTe4hP9CjFgwQPFdszu4iwEintk31+9eh0rljC28vm9EhoaIlC1rQx5LaCB5oHom4+yoei4+DTdRjQ== dependencies: bindings "^1.3.0" nan "^2.10.0" @@ -6788,12 +7871,14 @@ rdf-canonize@^0.2.1: read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= dependencies: graceful-fs "^4.1.2" read-installed@~4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= dependencies: debuglog "^1.0.1" read-package-json "^2.0.0" @@ -6807,6 +7892,7 @@ read-installed@~4.0.3: "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" + integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" @@ -6818,6 +7904,7 @@ read-installed@~4.0.3: read-package-tree@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.1.tgz#6218b187d6fac82289ce4387bbbaf8eef536ad63" + integrity sha512-2CNoRoh95LxY47LvqrehIAfUVda2JbuFE/HaGYs42bNrGG+ojbw1h3zOcPcQ+1GQ3+rkzNndZn85u1XyZ3UsIA== dependencies: debuglog "^1.0.1" dezalgo "^1.0.0" @@ -6828,6 +7915,7 @@ read-package-tree@^5.2.1: read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= dependencies: find-up "^1.0.0" read-pkg "^1.0.0" @@ -6835,6 +7923,7 @@ read-pkg-up@^1.0.1: read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" @@ -6843,6 +7932,7 @@ read-pkg@^1.0.0: read-pkg@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= dependencies: normalize-package-data "^2.3.2" parse-json "^4.0.0" @@ -6851,12 +7941,14 @@ read-pkg@^4.0.1: read@1, read@1.0.x, read@~1.0.1, read@~1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= dependencies: mute-stream "~0.0.4" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.3, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.2, readable-stream@^2.3.4, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -6869,6 +7961,7 @@ read@1, read@1.0.x, read@~1.0.1, read@~1.0.7: readable-stream@1.1: version "1.1.13" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -6878,6 +7971,7 @@ readable-stream@1.1: readable-stream@1.1.x, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.1.13-1, readable-stream@~1.1.10: version "1.1.14" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -6887,6 +7981,7 @@ readable-stream@1.1.x, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1 "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -6896,6 +7991,7 @@ readable-stream@1.1.x, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1 readable-stream@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.3.tgz#a4db8813e3e0b87abdc01d5d5dbae828e59744b5" + integrity sha512-CzN1eAu5Pmh4EaDlJp1g5E37LIHR24b82XlMWRQlPFjhvOYKa4HhClRsQO21zhdDWUpdWfiKt9/L/ZL2+vwxCw== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -6904,12 +8000,14 @@ readable-stream@^3.0.2: readable-wrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/readable-wrap/-/readable-wrap-1.0.0.tgz#3b5a211c631e12303a54991c806c17e7ae206bff" + integrity sha1-O1ohHGMeEjA6VJkcgGwX564ga/8= dependencies: readable-stream "^1.1.13-1" 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" + integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c= dependencies: debuglog "^1.0.1" dezalgo "^1.0.0" @@ -6919,6 +8017,7 @@ readdir-scoped-modules@^1.0.0: readdirp@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" micromatch "^3.1.10" @@ -6927,6 +8026,7 @@ readdirp@^2.0.0: readline2@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -6935,10 +8035,12 @@ readline2@^1.0.1: record-cache@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.0.tgz#f8a467a691a469584b26e88d36b18afdb3932037" + integrity sha512-u8rbtLEJV7HRacl/ZYwSBFD8NFyB3PfTTfGLP37IW3hftQCwu6z4Q2RLyxo1YJUNRTEzJfpLpGwVuEYdaIkG9Q== redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= dependencies: indent-string "^2.1.0" strip-indent "^1.0.1" @@ -6946,14 +8048,17 @@ redent@^1.0.0: redis-commands@^1.2.0: version "1.3.5" resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" + integrity sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA== redis-parser@^2.4.0, redis-parser@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" + integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs= redis@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" + integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A== dependencies: double-ended-queue "^2.1.0-0" redis-commands "^1.2.0" @@ -6962,14 +8067,17 @@ redis@^2.8.0: referrer-policy@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/referrer-policy/-/referrer-policy-1.1.0.tgz#35774eb735bf50fb6c078e83334b472350207d79" + integrity sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk= reflect-metadata@^0.1.10: version "0.1.12" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" + integrity sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A== regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -6977,6 +8085,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" safe-buffer "^5.0.1" @@ -6984,16 +8093,19 @@ registry-auth-token@^3.0.1: registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= dependencies: rc "^1.0.1" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= render-media@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/render-media/-/render-media-3.1.3.tgz#aa8c8cd3f720049370067180709b551d3c566254" + integrity sha512-K7ziKKlIcgYpAovRsABDiSaNn7TzDDyyuFGpRwM52cloNcajInB6sCxFPUEzOuTJUeyvKCqT/k5INOjpKLCjhQ== dependencies: debug "^3.1.0" is-ascii "^1.0.0" @@ -7004,32 +8116,38 @@ render-media@^3.0.0: reorient-css@~0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/reorient-css/-/reorient-css-0.2.2.tgz#6f66fc49f6a214400e0221d14c965d1abd21ac96" + integrity sha1-b2b8SfaiFEAOAiHRTJZdGr0hrJY= dependencies: postcss "~0.3.2" repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" request-progress@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + integrity sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg= dependencies: throttleit "^1.0.0" request@2.87.0: version "2.87.0" resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -7055,6 +8173,7 @@ request@2.87.0: request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -7080,14 +8199,17 @@ request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0, request@^2.8 require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= require-uncached@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" @@ -7095,28 +8217,34 @@ require-uncached@^1.0.2: resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" resolve@~1.1.0: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resource-embedder@~0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/resource-embedder/-/resource-embedder-0.2.2.tgz#20688fb5143737ec33a23b372c9144cb48196426" + integrity sha1-IGiPtRQ3N+wzojs3LJFEy0gZZCY= dependencies: coffee-script "~1.7.1" graceful-fs "~2.0.2" @@ -7127,6 +8255,7 @@ resource-embedder@~0.2.1: restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= dependencies: exit-hook "^1.0.0" onetime "^1.0.0" @@ -7134,10 +8263,12 @@ restore-cursor@^1.0.1: ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retry-as-promised@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-2.3.2.tgz#cd974ee4fd9b5fe03cbf31871ee48221c07737b7" + integrity sha1-zZdO5P2bX+A8vzGHHuSCIcB3N7c= dependencies: bluebird "^3.4.6" debug "^2.6.9" @@ -7145,94 +8276,114 @@ retry-as-promised@^2.3.2: retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= revalidator@0.1.x: version "0.1.8" resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" + integrity sha1-/s5hv6DBtSoga9axgZgYS91SOjs= rimraf@2, rimraf@2.x.x, rimraf@^2.2.8, rimraf@^2.4.2, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" run-async@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= dependencies: once "^1.3.0" run-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== run-parallel-limit@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.0.5.tgz#c29a4fd17b4df358cb52a8a697811a63c984f1b7" + integrity sha512-NsY+oDngvrvMxKB3G8ijBzIema6aYbQMD2bHOamvN52BysbIGTnEY2xsNyfrcr9GhY995/t/0nQN3R3oZvaDlg== run-parallel@^1.0.0, run-parallel@^1.1.2, run-parallel@^1.1.6: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" run-series@^1.0.2: version "1.1.8" resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.8.tgz#2c4558f49221e01cd6371ff4e0a1e203e460fc36" + integrity sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg== rusha@^0.8.1: version "0.8.13" resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.13.tgz#9a084e7b860b17bff3015b92c67a6a336191513a" + integrity sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo= rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= rxjs@6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" + integrity sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ== dependencies: tslib "^1.9.0" rxjs@^6.1.0: version "6.3.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" + integrity sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw== dependencies: tslib "^1.9.0" safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== safe-buffer@5.1.2, safe-buffer@^5.0.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-json-parse@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" + integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= dependencies: glob "^7.0.0" lodash "^4.0.0" @@ -7242,6 +8393,7 @@ sass-graph@^2.2.4: sass-lint@^1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/sass-lint/-/sass-lint-1.12.1.tgz#630f69c216aa206b8232fb2aa907bdf3336b6d83" + integrity sha1-Yw9pwhaqIGuCMvsqqQe98zNrbYM= dependencies: commander "^2.8.1" eslint "^2.7.0" @@ -7261,10 +8413,12 @@ sass-lint@^1.12.1: sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scripty@^1.5.0: version "1.7.2" resolved "https://registry.yarnpkg.com/scripty/-/scripty-1.7.2.tgz#92367b724cb77b086729691f7b01aa57f3ddd356" + integrity sha1-kjZ7cky3ewhnKWkfewGqV/Pd01Y= dependencies: async "^1.5.2" glob "^7.0.3" @@ -7273,6 +8427,7 @@ scripty@^1.5.0: scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= dependencies: js-base64 "^2.1.8" source-map "^0.4.2" @@ -7280,28 +8435,34 @@ scss-tokenizer@^0.2.3: semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= dependencies: semver "^5.0.3" "semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== semver@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" + integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= send@0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/send/-/send-0.13.1.tgz#a30d5f4c82c8a9bae9ad00a1d9b1bdbe6f199ed7" + integrity sha1-ow1fTILIqbrprQCh2bG9vm8Zntc= dependencies: debug "~2.2.0" depd "~1.1.0" @@ -7319,6 +8480,7 @@ send@0.13.1: send@0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" + integrity sha1-dl52B8gFVFK7pvCwUllTUJhgNt4= dependencies: debug "~2.2.0" depd "~1.1.0" @@ -7336,6 +8498,7 @@ send@0.13.2: send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== dependencies: debug "2.6.9" depd "~1.1.2" @@ -7354,6 +8517,7 @@ send@0.16.2: sequelize-typescript@0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/sequelize-typescript/-/sequelize-typescript-0.6.6.tgz#926037b542dae9f4eff20609d095cc5e3a3640f3" + integrity sha512-WGJTaNuHyYwUM8itxZvMVLeNEb7xSjisbVN1Q5rxLaIf2w67Xaf1GX6Jb+9840bjcNPvMsKgC2aR88zmw7UlcQ== dependencies: "@types/bluebird" "3.5.18" "@types/node" "6.0.41" @@ -7364,6 +8528,7 @@ sequelize-typescript@0.6.6: sequelize@4.38.0: version "4.38.0" resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.38.0.tgz#330c1aa445d4e46b80a97d895603c01666cdc357" + integrity sha512-ZCcV2HuzU+03xunWgVeyXnPa/RYY5D2U/WUNpq+xF8VmDTLnSDsHl+pEwmiWrpZD7KdBqDczCeTgjToYyVzYQg== dependencies: bluebird "^3.5.0" cls-bluebird "^2.1.0" @@ -7386,6 +8551,7 @@ sequelize@4.38.0: serve-index@^1.7.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= dependencies: accepts "~1.3.4" batch "0.6.1" @@ -7398,6 +8564,7 @@ serve-index@^1.7.1: serve-static@1.13.2, serve-static@^1.10.0: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -7407,6 +8574,7 @@ serve-static@1.13.2, serve-static@^1.10.0: serve-static@~1.10.2: version "1.10.3" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz#ce5a6ecd3101fed5ec09827dac22a9c29bfb0535" + integrity sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU= dependencies: escape-html "~1.0.3" parseurl "~1.3.1" @@ -7415,10 +8583,12 @@ serve-static@~1.10.2: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -7428,6 +8598,7 @@ set-value@^0.4.3: set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -7437,14 +8608,17 @@ set-value@^2.0.0: setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== sha@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" + integrity sha1-YDCCL70smCOUn49y7WQR7lzyWq4= dependencies: graceful-fs "^4.1.2" readable-stream "^2.0.2" @@ -7452,6 +8626,7 @@ sha@~2.0.1: sharp@^0.20.0: version "0.20.8" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.20.8.tgz#e853f10b53b730824f0c3c5e453c79fa0812a48b" + integrity sha512-A8NaPGWRDKpmHTi8sl2xzozYXhTQWBb/GaJ8ZPU7L/vKW8wVvd4Yq+isJ0c7p9sX5gnjPQcM3eOfHuvvnZ2fOQ== dependencies: color "^3.0.0" detect-libc "^1.0.3" @@ -7467,36 +8642,44 @@ sharp@^0.20.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shelljs@0.3.x: version "0.3.0" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" + integrity sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E= shelljs@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" + integrity sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg= shimmer@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.0.tgz#f966f7555789763e74d8841193685a5e78736665" + integrity sha512-xTCx2vohXC2EWWDqY/zb4+5Mu28D+HYNSOuFzsyRDRvI/e1ICb69afwaUwfjr+25ZXldbOLyp+iDUZHq8UnTag== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= simple-get@^2.7.0, simple-get@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== dependencies: decompress-response "^3.3.0" once "^1.3.1" @@ -7505,6 +8688,7 @@ simple-get@^2.7.0, simple-get@^2.8.1: simple-get@^3.0.0, simple-get@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.0.3.tgz#924528ac3f9d7718ce5e9ec1b1a69c0be4d62efa" + integrity sha512-Wvre/Jq5vgoz31Z9stYWPLn0PqRqmBDpFSdypAnHu5AvRVCYPRYGnvryNLiXu8GOBNDH82J2FRHUGMjjHUpXFw== dependencies: decompress-response "^3.3.0" once "^1.3.1" @@ -7513,6 +8697,7 @@ simple-get@^3.0.0, simple-get@^3.0.1: simple-peer@^9.0.0: version "9.1.2" resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.1.2.tgz#f8afa5eb83f8a17d66e437e5ac54c1221eca4b39" + integrity sha512-MUWWno5o5cvISKOH4pYQ18PQJLpDaNWoKUbrPPKuspCLCkkh+zhtuQyTE8h2U2Ags+/OUN5wnUe92+9B8/Sm2Q== dependencies: debug "^3.1.0" get-browser-rtc "^1.0.0" @@ -7523,18 +8708,21 @@ simple-peer@^9.0.0: simple-sha1@^2.0.0, simple-sha1@^2.0.8, simple-sha1@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/simple-sha1/-/simple-sha1-2.1.1.tgz#93f3b7f2e8dfdc056c32793e5d47b58d311b140d" + integrity sha512-pFMPd+I/lQkpf4wFUeS/sED5IqdIG1lUlrQviBMV4u4mz8BRAcB5fvUx5Ckfg3kBigEglAjHg7E9k/yy2KlCqA== dependencies: rusha "^0.8.1" simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= dependencies: is-arrayish "^0.3.1" simple-websocket@^7.0.1: version "7.2.0" resolved "https://registry.yarnpkg.com/simple-websocket/-/simple-websocket-7.2.0.tgz#c3190555d74399372b96b51435f2d8c4b04611df" + integrity sha512-wdxFg1fHw1yqFKWDcw+yNb4VIYqtl+vknZMlpLhvZSlR6l7/iVuwozqo+Qtl73mB1IH5QnXzonD1S+hAaLNTvQ== dependencies: debug "^3.1.0" inherits "^2.0.1" @@ -7545,36 +8733,44 @@ simple-websocket@^7.0.1: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= smart-buffer@^1.0.13: version "1.1.15" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY= smart-buffer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" + integrity sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg== smtp-connection@2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.3.1.tgz#d169c8f1c9a73854134cdabe6fb818237dfc4fba" + integrity sha1-0WnI8cmnOFQTTNq+b7gYI338T7o= dependencies: nodemailer-shared "1.0.4" smtp-server@1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/smtp-server/-/smtp-server-1.16.1.tgz#91d2dbd5e8bb9ed395b1a1774e8b60dd7b24e453" + integrity sha1-kdLb1ei7ntOVsaF3Totg3Xsk5FM= dependencies: ipv6-normalize "^1.0.1" nodemailer-shared "^1.1.0" @@ -7582,6 +8778,7 @@ smtp-server@1.16.1: snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -7590,12 +8787,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" @@ -7609,6 +8808,7 @@ snapdragon@^0.8.1: socket.io-adapter@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + integrity sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s= dependencies: debug "2.3.3" socket.io-parser "2.3.1" @@ -7616,6 +8816,7 @@ socket.io-adapter@0.5.0: socket.io-client@1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + integrity sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c= dependencies: backo2 "1.0.2" component-bind "1.0.0" @@ -7632,6 +8833,7 @@ socket.io-client@1.7.3: socket.io-parser@2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + integrity sha1-3VMgJRA85Clpcya+/WQAX8/ltKA= dependencies: component-emitter "1.1.2" debug "2.2.0" @@ -7641,6 +8843,7 @@ socket.io-parser@2.3.1: socket.io@1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + integrity sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs= dependencies: debug "2.3.3" engine.io "1.8.3" @@ -7653,6 +8856,7 @@ socket.io@1.7.3: socks-proxy-agent@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + integrity sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA== dependencies: agent-base "^4.1.0" socks "^1.1.10" @@ -7660,6 +8864,7 @@ socks-proxy-agent@^3.0.1: socks-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" + integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== dependencies: agent-base "~4.2.0" socks "~2.2.0" @@ -7667,6 +8872,7 @@ socks-proxy-agent@^4.0.0: socks@^1.1.10: version "1.1.10" resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + integrity sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o= dependencies: ip "^1.1.4" smart-buffer "^1.0.13" @@ -7674,6 +8880,7 @@ socks@^1.1.10: socks@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" + integrity sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w== dependencies: ip "^1.1.5" smart-buffer "^4.0.1" @@ -7681,10 +8888,12 @@ socks@~2.2.0: sorted-object@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw= sorted-union-stream@~2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" + integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc= dependencies: from2 "^1.3.0" stream-iterate "^1.1.0" @@ -7692,6 +8901,7 @@ sorted-union-stream@~2.1.3: source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: atob "^2.1.1" decode-uri-component "^0.2.0" @@ -7702,6 +8912,7 @@ source-map-resolve@^0.5.0: source-map-support@^0.5.0, source-map-support@^0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7709,34 +8920,41 @@ source-map-support@^0.5.0, source-map-support@^0.5.6: source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= dependencies: amdefine ">=0.0.4" source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@~0.1.33: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= dependencies: amdefine ">=0.0.4" spawn-command@^0.0.2-1: version "0.0.2-1" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= spdx-correct@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -7744,10 +8962,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" @@ -7755,10 +8975,12 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" + integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== spectacle-docs@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/spectacle-docs/-/spectacle-docs-1.0.6.tgz#ab59e5ac4ed7474039ae7e2bc492e78cd9031ca4" + integrity sha512-mVkOAzgBtwVWhiZy58KoigNGuKMbqb4tWza6uFNXlOl2GZohXDRdgcdKFAmV0Vz0Pn+iKzAhn15mt2FUN9TvyA== dependencies: bluebird "^3.4.7" cheerio "^0.19.0" @@ -7794,36 +9016,43 @@ spectacle-docs@^1.0.2: speedometer@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934" + integrity sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split2@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/split2/-/split2-0.2.1.tgz#02ddac9adc03ec0bb78c1282ec079ca6e85ae900" + integrity sha1-At2smtwD7Au3jBKC7Aecpuha6QA= dependencies: through2 "~0.6.1" split@^1.0.0, split@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + integrity sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw= sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= srt-to-vtt@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/srt-to-vtt/-/srt-to-vtt-1.1.3.tgz#a9bc16cde5412e000e59ffda469f3e9befed5dde" + integrity sha512-QHy2syDTGUzQiDtKwqSunVdh0H5dhtVt9bh/Z+yTcminD69UKk3RFVhUtBjoCh/W5OYX36Igwv5qy2JZPISwgQ== dependencies: duplexify "^3.2.0" minimist "^1.1.0" @@ -7835,6 +9064,7 @@ srt-to-vtt@^1.1.2: sshpk@^1.7.0: version "1.14.2" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" + integrity sha1-xvxhZIo9nE52T9P8306hBeSSupg= dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -7850,30 +9080,36 @@ sshpk@^1.7.0: ssri@^5.2.4: version "5.3.0" resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== dependencies: safe-buffer "^5.1.1" ssri@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" stack-chain@1.3.x, stack-chain@~1.3.1: version "1.3.7" resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" + integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU= stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= staged-git-files@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b" + integrity sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A== static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -7881,28 +9117,34 @@ static-extend@^0.1.1: statuses@1, "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= statuses@1.3.1, statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= statuses@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" + integrity sha1-3e1FzBglbVHtQK7BQkidXGECbSg= statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== stdout-stream@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== dependencies: readable-stream "^2.0.1" stream-combiner@^0.2.2: version "0.2.2" resolved "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= dependencies: duplexer "~0.1.1" through "~2.3.4" @@ -7910,6 +9152,7 @@ stream-combiner@^0.2.2: stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -7917,6 +9160,7 @@ stream-each@^1.1.0: stream-iterate@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" + integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE= dependencies: readable-stream "^2.1.5" stream-shift "^1.0.0" @@ -7924,10 +9168,12 @@ stream-iterate@^1.1.0: stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= stream-splicer@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-1.3.2.tgz#3c0441be15b9bf4e226275e6dc83964745546661" + integrity sha1-PARBvhW5v04iYnXm3IOWR0VUZmE= dependencies: indexof "0.0.1" inherits "^2.0.1" @@ -7939,46 +9185,55 @@ stream-splicer@^1.3.1: stream-to-blob-url@^2.0.0, stream-to-blob-url@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/stream-to-blob-url/-/stream-to-blob-url-2.1.1.tgz#e1ac97f86ca8e9f512329a48e7830ce9a50beef2" + integrity sha512-DKJPEmCmIZoBfGVle9IhSfERiWaN5cuOtmfPxP2dZbLDRZxkBWZ4QbYxEJOSALk1Kf+WjBgedAMO6qkkf7Lmrg== dependencies: stream-to-blob "^1.0.0" stream-to-blob@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-to-blob/-/stream-to-blob-1.0.1.tgz#2dc1e09b71677a234d00445f8eb7ff70c4fe9948" + integrity sha512-aRy4neA4rf+qMtLT9fCRLPGWdrsIKtCx4kUdNTIPgPQ2hkHkdxbViVAvABMx9oRM6yCWfngHx6pwXfbYkVuPuw== dependencies: once "^1.3.3" stream-with-known-length-to-buffer@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-with-known-length-to-buffer/-/stream-with-known-length-to-buffer-1.0.2.tgz#b8ea5a92086a1ed5d27fc4c529636682118c945b" + integrity sha512-UxSISjxmguvfYzZdq6d4XAjc3gAocqTIOS1CjgwkDkkGT/LMTsIYiV8agIw42IHFFHf8k4lPOoroCCf4W9oqzg== dependencies: once "^1.3.3" streamify@^0.2.9: version "0.2.9" resolved "https://registry.yarnpkg.com/streamify/-/streamify-0.2.9.tgz#8938b14db491e2b6be4f8d99cc4133c9f0384f0b" + integrity sha512-8pUxeLEef9UO1FxtTt5iikAiyzGI4SZRnGuJ3sz8axZ5Xk+/7ezEV5kuJQsMEFxw7AKYw3xp0Ow+20mmSaJbQQ== dependencies: hashish "~0.0.4" streamsearch@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" + integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= string-argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= string-template@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -7987,6 +9242,7 @@ string-width@^1.0.1, string-width@^1.0.2: "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -7994,6 +9250,7 @@ string-width@^1.0.1, string-width@^1.0.2: string2compact@^1.1.1, string2compact@^1.2.5: version "1.3.0" resolved "https://registry.yarnpkg.com/string2compact/-/string2compact-1.3.0.tgz#22d946127b082d1203c51316af60117a337423c3" + integrity sha512-004ulKKANDuQilQsNxy2lisrpMG0qUJxBU+2YCEF7KziRyNR0Nredm2qk0f1V82nva59H3y9GWeHXE63HzGRFw== dependencies: addr-to-ip-port "^1.0.1" ipaddr.js "^1.0.1" @@ -8001,16 +9258,19 @@ string2compact@^1.1.1, string2compact@^1.2.5: string_decoder@0.10, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" stringify-object@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" + integrity sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg== dependencies: get-own-enumerable-property-symbols "^2.0.1" is-obj "^1.0.1" @@ -8019,46 +9279,55 @@ stringify-object@^3.2.2: stringify-package@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" + integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g== strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 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" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= dependencies: get-stdin "^4.0.1" strip-json-comments@1.0.x, strip-json-comments@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E= strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= summon-install@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/summon-install/-/summon-install-0.4.3.tgz#fa98fca67c57c9cf214ac7c48f33b9a49a6f5d97" + integrity sha512-YlcD+qgWa2oRbIM3M/RJvkJpQtXpgk2e0YFl5bmJy1oAd3fmXwNpXdwcfqlGhzFpmVdHnIyBuA6RgAamZshXtA== dependencies: descrevit "^0.1.1" dot-json "^1.0.3" @@ -8067,6 +9336,7 @@ summon-install@^0.4.3: superagent@^3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== dependencies: component-emitter "^1.2.0" cookiejar "^2.1.0" @@ -8082,6 +9352,7 @@ superagent@^3.8.3: supertest@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/supertest/-/supertest-3.3.0.tgz#79b27bd7d34392974ab33a31fa51a3e23385987e" + integrity sha512-dMQSzYdaZRSANH5LL8kX3UpgK9G1LRh/jnggs/TI0W2Sz7rkMx9Y48uia3K9NgcaWEV28tYkBnXE4tiFC77ygQ== dependencies: methods "^1.1.2" superagent "^3.8.3" @@ -8089,32 +9360,38 @@ supertest@^3.0.0: supports-color@5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== dependencies: has-flag "^3.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= dependencies: has-flag "^2.0.0" supports-color@^5.2.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== sync-request@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-4.1.0.tgz#324b4e506fb994d2afd2a0021a455f800725f07a" + integrity sha512-iFbOBWYaznBNbheIKaMkj+3EabpEsXbuwcTVuYkRjoav+Om5L8VXXLIXms0cHxkouXMRCQaSfhfau9/HyIbM2Q== dependencies: command-exists "^1.2.2" concat-stream "^1.6.0" @@ -8125,6 +9402,7 @@ sync-request@^4.1.0: table@^3.7.8: version "3.8.3" resolved "http://registry.npmjs.org/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8= dependencies: ajv "^4.7.0" ajv-keywords "^1.0.0" @@ -8136,6 +9414,7 @@ table@^3.7.8: tar-fs@^1.13.0: version "1.16.3" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== dependencies: chownr "^1.0.1" mkdirp "^0.5.1" @@ -8145,6 +9424,7 @@ tar-fs@^1.13.0: tar-stream@^1.1.2: version "1.6.1" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + integrity sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA== dependencies: bl "^1.0.0" buffer-alloc "^1.1.0" @@ -8157,6 +9437,7 @@ tar-stream@^1.1.2: tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= dependencies: block-stream "*" fstream "^1.0.2" @@ -8165,6 +9446,7 @@ tar@^2.0.0: tar@^4, tar@^4.4.3, tar@^4.4.6: version "4.4.6" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" @@ -8177,12 +9459,14 @@ tar@^4, tar@^4.4.3, tar@^4.4.6: term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" terraformer-wkt-parser@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/terraformer-wkt-parser/-/terraformer-wkt-parser-1.2.0.tgz#c9d6ac3dff25f4c0bd344e961f42694961834c34" + integrity sha512-QU3iA54St5lF8Za1jg1oj4NYc8sn5tCZ08aNSWDeGzrsaV48eZk1iAVWasxhNspYBoCqdHuoot1pUTUrE1AJ4w== dependencies: "@types/geojson" "^1.0.0" terraformer "~1.0.5" @@ -8190,20 +9474,24 @@ terraformer-wkt-parser@^1.1.2: terraformer@~1.0.5: version "1.0.9" resolved "https://registry.yarnpkg.com/terraformer/-/terraformer-1.0.9.tgz#77851fef4a49c90b345dc53cf26809fdf29dcda6" + integrity sha512-YlmQ1fsMWTkKGDGibCRWgmLzrpDRUr63Q025LJ/taYQ6j1Yb8q9McKF7NBi6ACAyUXO6F/bl9w6v4MY307y5Ag== optionalDependencies: "@types/geojson" "^1.0.0" text-hex@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= then-request@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/then-request/-/then-request-2.2.0.tgz#6678b32fa0ca218fe569981bbd8871b594060d81" + integrity sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE= dependencies: caseless "~0.11.0" concat-stream "^1.4.7" @@ -8215,14 +9503,17 @@ then-request@^2.2.0: thirty-two@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" + integrity sha1-TKL//AKlEpDSdEueP1V2k8prYno= throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= through2@^0.6.3, through2@~0.6.1: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= dependencies: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" @@ -8230,6 +9521,7 @@ through2@^0.6.3, through2@~0.6.1: through2@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/through2/-/through2-1.1.1.tgz#0847cbc4449f3405574dbdccd9bb841b83ac3545" + integrity sha1-CEfLxESfNAVXTb3M2buEG4OsNUU= dependencies: readable-stream ">=1.1.13-1 <1.2.0-0" xtend ">=4.0.0 <4.1.0-0" @@ -8237,6 +9529,7 @@ through2@^1.0.0: through2@^2.0.0, through2@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= dependencies: readable-stream "^2.1.5" xtend "~4.0.1" @@ -8244,18 +9537,22 @@ through2@^2.0.0, through2@^2.0.3: through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: version "2.3.8" resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-ext@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.5.tgz#77147dd4e76b660c2abb8785db96574cbbd12922" + integrity sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg== dependencies: es5-ext "~0.10.14" next-tick "1" @@ -8263,6 +9560,7 @@ timers-ext@^0.1.5: tiny-lr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" + integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== dependencies: body "^5.1.0" debug "^3.1.0" @@ -8274,40 +9572,48 @@ tiny-lr@^1.1.1: tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" + integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== tmp@0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + integrity sha1-jzirlDjhcxXl29izZX6L+yd65Kc= dependencies: os-tmpdir "~1.0.1" tmp@0.0.x: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= to-arraybuffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-buffer@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -8315,6 +9621,7 @@ to-regex-range@^2.1.0: to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" @@ -8324,6 +9631,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: to-utf-8@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/to-utf-8/-/to-utf-8-1.3.0.tgz#b2af7be9e003f4c3817cc116d3baed2a054993c9" + integrity sha1-sq976eAD9MOBfMEW07rtKgVJk8k= dependencies: charset-detector "0.0.2" iconv-lite "^0.4.4" @@ -8334,10 +9642,12 @@ to-utf-8@^1.2.0: toposort-class@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" + integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= torrent-discovery@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/torrent-discovery/-/torrent-discovery-9.1.1.tgz#56704e6747b24fe00dbb75b442d202051f78d37d" + integrity sha512-3mHf+bxVCVLrlkPJdAoMbPMY1hpTZVeWw5hNc2pPFm+HCc2DS0HgVFTBTSWtB8vQPWA1hSEZpqJ+3QfdXxDE1g== dependencies: bittorrent-dht "^9.0.0" bittorrent-tracker "^9.0.0" @@ -8347,22 +9657,26 @@ torrent-discovery@^9.1.1: torrent-piece@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/torrent-piece/-/torrent-piece-2.0.0.tgz#6598ae67d93699e887f178db267ba16d89d7ec9b" + integrity sha512-H/Z/yCuvZJj1vl1IQHI8dvF2QrUuXRJoptT5DW5967/dsLpXlCg+uyhFR5lfNj5mNaYePUbKtnL+qKWZGXv4Nw== touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== dependencies: punycode "^1.4.1" tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" punycode "^1.4.1" @@ -8370,34 +9684,41 @@ tough-cookie@~2.4.3: trace@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/trace/-/trace-1.2.0.tgz#fc294988fe9b37bf66e41f5f5cd69413fd28159f" + integrity sha1-/ClJiP6bN79m5B9fXNaUE/0oFZ8= dependencies: stack-chain "~1.3.1" traverse@>=0.2.4: version "0.6.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= tree-kill@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= triple-beam@^1.2.0, triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== "true-case-path@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== dependencies: glob "^7.1.2" ts-node@7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" + integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== dependencies: arrify "^1.0.0" buffer-from "^1.1.0" @@ -8411,20 +9732,24 @@ ts-node@7.0.1: tslib@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tslint-config-standard@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-8.0.1.tgz#e4dd3128e84b0e34b51990b68715a641f2b417e4" + integrity sha512-OWG+NblgjQlVuUS/Dmq3ax2v5QDZwRx4L0kEuDi7qFY9UI6RJhhNfoCV1qI4el8Fw1c5a5BTrjQJP0/jhGXY/Q== dependencies: tslint-eslint-rules "^5.3.1" tslint-eslint-rules@^5.3.1: version "5.4.0" resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" + integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== dependencies: doctrine "0.7.2" tslib "1.9.0" @@ -8433,6 +9758,7 @@ tslint-eslint-rules@^5.3.1: tslint@^5.7.0: version "5.11.0" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" + integrity sha1-mPMMAurjzecAYgHkwzywi0hYHu0= dependencies: babel-code-frame "^6.22.0" builtin-modules "^1.1.1" @@ -8450,46 +9776,55 @@ tslint@^5.7.0: tsutils@^2.27.2: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== dependencies: tslib "^1.8.1" tsutils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.0.0.tgz#0c5070a17a0503e056da038c48b5a1870a50a9ad" + integrity sha512-LjHBWR0vWAUHWdIAoTjoqi56Kz+FDKBgVEuL+gVPG/Pv7QW5IdaDDeK9Txlr6U0Cmckp5EgCIq1T25qe3J6hyw== dependencies: tslib "^1.8.1" tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tv4@~1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.2.7.tgz#bd29389afc73ade49ae5f48142b5d544bf68d120" + integrity sha1-vSk4mvxzreSa5fSBQrXVRL9o0SA= tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-detect@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= type-detect@^4.0.0: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-is@1.6.15: version "1.6.15" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + integrity sha1-yrEPtJCeRByChC6v4a1kbIGARBA= dependencies: media-typer "0.3.0" mime-types "~2.1.15" @@ -8497,6 +9832,7 @@ type-is@1.6.15: type-is@^1.6.4, type-is@~1.6.15, type-is@~1.6.16, type-is@~1.6.6: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== dependencies: media-typer "0.3.0" mime-types "~2.1.18" @@ -8504,20 +9840,24 @@ type-is@^1.6.4, type-is@~1.6.15, type-is@~1.6.16, type-is@~1.6.6: typedarray-to-buffer@^3.0.0: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^2.5.2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== uglify-js@^3.1.4, uglify-js@~3.4.0: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -8525,40 +9865,48 @@ uglify-js@^3.1.4, uglify-js@~3.4.0: uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= uint64be@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/uint64be/-/uint64be-2.0.2.tgz#ef4a179752fe8f9ddaa29544ecfc13490031e8e5" + integrity sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ== dependencies: buffer-alloc "^1.1.0" ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= umask@^1.1.0, umask@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= undefsafe@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" + integrity sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY= dependencies: debug "^2.2.0" underscore-keypath@~0.0.22: version "0.0.22" resolved "https://registry.yarnpkg.com/underscore-keypath/-/underscore-keypath-0.0.22.tgz#48a528392bb6efc424be1caa56da4b5faccf264d" + integrity sha1-SKUoOSu278QkvhyqVtpLX6zPJk0= dependencies: underscore "*" underscore.string@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d" + integrity sha1-ccCL9rQosRM/N+ePo6Icgvcymw0= underscore.string@~3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + integrity sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s= dependencies: sprintf-js "^1.0.3" util-deprecate "^1.0.2" @@ -8566,14 +9914,17 @@ underscore.string@~3.3.4: underscore@*, underscore@^1.7.0: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== unicode-5.2.0@^0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/unicode-5.2.0/-/unicode-5.2.0-0.7.5.tgz#e0df129431a28a95263d8c480fb5e9ab2b0973f0" + integrity sha512-KVGLW1Bri30x00yv4HNM8kBxoqFXr0Sbo55735nvrlsx4PYBZol3UtoWgO492fSwmsetzPEZzy73rbU8OGXJcA== union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -8583,40 +9934,48 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-filename@^1.1.0, unique-filename@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= dependencies: imurmurhash "^0.1.4" unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= dependencies: crypto-random-string "^1.0.0" universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unordered-array-remove@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz#c546e8f88e317a0cf2644c97ecb57dba66d250ef" + integrity sha1-xUbo+I4xegzyZEyX7LV9umbSUO8= unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -8624,14 +9983,17 @@ unset-value@^1.0.0: unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== dependencies: boxen "^1.2.1" chalk "^2.0.1" @@ -8647,36 +10009,43 @@ update-notifier@^2.3.0, update-notifier@^2.5.0: uri-js@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" + integrity sha1-+QuFhQf4HepNz7s8TD2/orVX+qo= dependencies: punycode "^2.1.0" uri-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32" + integrity sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI= urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: prepend-http "^1.0.1" use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + integrity sha1-nHC/2Babwdy/SGBODwS4tJzenp8= dependencies: os-homedir "^1.0.0" useragent@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== dependencies: lru-cache "4.1.x" tmp "0.0.x" @@ -8684,6 +10053,7 @@ useragent@^2.3.0: ut_metadata@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/ut_metadata/-/ut_metadata-3.3.0.tgz#a0e0e861ebc39ed96e506601d1463ade3b548a7e" + integrity sha512-IK+ke9yL6a4oPLz/3oSW9TW7m9Wr4RG+5kW5aS2YulzEU1QDGAtago/NnOlno91fo3fSO7mnsqzn3NXNXdv8nA== dependencies: bencode "^2.0.0" bitfield "^2.0.0" @@ -8693,6 +10063,7 @@ ut_metadata@^3.3.0: ut_pex@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ut_pex/-/ut_pex-1.2.1.tgz#472ed0ea5e9bbc9148b833339d56d7b17cf3dad0" + integrity sha512-ZrxMCbffYtxQDqvREN9kBXK2CB9tPnd5PylHoqQX9ai+3HV9/S39FnA5JnhLOC82dxIQQg0nTN2wmhtAdGNtOA== dependencies: bencode "^2.0.0" compact2string "^1.2.0" @@ -8702,26 +10073,31 @@ ut_pex@^1.1.1: utf-8-validate@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.1.tgz#cef1f9011ba4b216f4d7c6ddf5189d750599ff8b" + integrity sha512-Qef1AuiWWxQeZ1Oa4DTV3ArRafpZvsK+CLrlB8khLfsV+9mwhj58hNSGmel0ns5jYP+3yEwav6vxxW7Gz85bVw== dependencies: node-gyp-build "~3.4.0" util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util-extend@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" utile@0.3.x: version "0.3.0" resolved "https://registry.yarnpkg.com/utile/-/utile-0.3.0.tgz#1352c340eb820e4d8ddba039a4fbfaa32ed4ef3a" + integrity sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo= dependencies: async "~0.9.0" deep-equal "~0.2.1" @@ -8733,14 +10109,17 @@ utile@0.3.x: utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg= utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= uue@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/uue/-/uue-3.1.2.tgz#e99368414e87200012eb37de4dbaebaa1c742ad2" + integrity sha512-axKLXVqwtdI/czrjG0X8hyV1KLgeWx8F4KvSbvVCnS+RUvsQMGRjx0kfuZDXXqj0LYvVJmx3B9kWlKtEdRrJLg== dependencies: escape-string-regexp "~1.0.5" extend "~3.0.0" @@ -8748,10 +10127,12 @@ uue@^3.1.0: uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -8759,24 +10140,29 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" validator@^10.2.0, validator@^10.4.0: version "10.7.1" resolved "https://registry.yarnpkg.com/validator/-/validator-10.7.1.tgz#dd4cc750c2134ce4a15a2acfc7b233669d659c5b" + integrity sha512-tbB5JrTczfeHKLw3PnFRzGFlF1xUAwSgXEDb66EuX1ffCirspYpDEZo3Vc9j38gPdL4JKrDc5UPFfgYiw1IWRQ== vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vary@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" + integrity sha1-meSYFWaihhGN+yuBc1ffeZM3bRA= verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -8785,6 +10171,7 @@ verror@1.10.0: videostream@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/videostream/-/videostream-2.5.1.tgz#993a8f3efe277e5c8d26a7814ba0c68f79b20688" + integrity sha512-S3f34WE6NB1d/YUAa/EYcTURTkGaxsUqcDmsGWV1jQpQQJxeagc79/XA7ygNjzBf3DoQQ1MKTD+SocPsWSniAg== dependencies: binary-search "^1.3.4" inherits "^2.0.1" @@ -8798,18 +10185,21 @@ videostream@^2.5.1: wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: defaults "^1.0.3" webfinger.js@^2.6.6: version "2.6.6" resolved "https://registry.yarnpkg.com/webfinger.js/-/webfinger.js-2.6.6.tgz#52ebdc85da8c8fb6beb690e8e32594c99d2ff4ae" + integrity sha512-dQpuL01XtluQ9Ndgu62o3pEmIe/ssDoIE0CQsOyavGl04xyHal+Ge4gFerw5V0BFoLTQpD8ZZqaDzb43hG9atw== dependencies: xhr2 "^0.1.4" websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= dependencies: http-parser-js ">=0.4.0" websocket-extensions ">=0.1.1" @@ -8817,10 +10207,12 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== webtorrent@^0.102.1: version "0.102.4" resolved "https://registry.yarnpkg.com/webtorrent/-/webtorrent-0.102.4.tgz#0902f5dddb244c4ca8137d5d678546b733adeb2f" + integrity sha512-Oa7NatbPlESqf5ETwgVUOXAbUjiZr7XNFbHhd88BRm+4vN9u3JgeIbF9Gnuxb5s26cHxPYpGJRVTtBsc6Z6w9Q== dependencies: addr-to-ip-port "^1.4.2" bitfield "^2.0.0" @@ -8866,44 +10258,53 @@ webtorrent@^0.102.1: what-input@^4.1.3: version "4.3.1" resolved "https://registry.yarnpkg.com/what-input/-/what-input-4.3.1.tgz#b8ea7554ba1d9171887c4c6addf28185fec3d31d" + integrity sha512-7KD71RWNRWI9M08shZ8+n/2UjO5amwsG9PMSXWz0iIlH8H2DVbHE8Z2tW1RqQa0kIwdeqdUIffFz7crDfkcbAw== which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which-pm-runs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= which@1, which@^1.1.1, which@^1.2.10, which@^1.2.9, which@^1.3.0, which@^1.3.1, which@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" widest-line@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + integrity sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM= dependencies: string-width "^2.1.1" wildstring@1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/wildstring/-/wildstring-1.0.8.tgz#80b5f85b7f8aa98bc19cc230e60ac7f5e0dd226d" + integrity sha1-gLX4W3+KqYvBnMIw5grH9eDdIm0= winston-transport@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.2.0.tgz#a20be89edf2ea2ca39ba25f3e50344d73e6520e5" + integrity sha512-0R1bvFqxSlK/ZKTH86nymOuKv/cT1PQBMuDdA7k7f0S9fM44dNH6bXnuxwXPrN8lefJgtZq08BKdyZ0DZIy/rg== dependencies: readable-stream "^2.3.6" triple-beam "^1.2.0" @@ -8911,6 +10312,7 @@ winston-transport@^4.2.0: winston@2.1.x: version "2.1.1" resolved "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz#3c9349d196207fd1bdff9d4bc43ef72510e3a12e" + integrity sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4= dependencies: async "~1.0.0" colors "1.0.x" @@ -8923,6 +10325,7 @@ winston@2.1.x: winston@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/winston/-/winston-3.1.0.tgz#80724376aef164e024f316100d5b178d78ac5331" + integrity sha512-FsQfEE+8YIEeuZEYhHDk5cILo1HOcWkGwvoidLrDgPog0r4bser1lEIOco2dN9zpDJ1M88hfDgZvxe5z4xNcwg== dependencies: async "^2.6.0" diagnostics "^1.1.1" @@ -8937,6 +10340,7 @@ winston@3.1.0: winston@^2.4.0: version "2.4.4" resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.4.tgz#a01e4d1d0a103cf4eada6fc1f886b3110d71c34b" + integrity sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q== dependencies: async "~1.0.0" colors "1.0.x" @@ -8948,26 +10352,31 @@ winston@^2.4.0: wkx@^0.4.1: version "0.4.5" resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.4.5.tgz#a85e15a6e69d1bfaec2f3c523be3dfa40ab861d0" + integrity sha512-01dloEcJZAJabLO5XdcRgqdKpmnxS0zIT02LhkdWOZX2Zs2tPM6hlZ4XG9tWaWur1Qd1OO4kJxUbe2+5BofvnA== dependencies: "@types/node" "*" wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= worker-farm@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== dependencies: errno "~0.1.7" wrap-ansi@^2.0.0: version "2.1.0" resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -8975,10 +10384,12 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -8987,12 +10398,14 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= dependencies: mkdirp "^0.5.1" ws@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + integrity sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8= dependencies: options ">=0.0.5" ultron "1.0.x" @@ -9000,40 +10413,48 @@ ws@1.1.2: ws@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" + integrity sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w== dependencies: async-limiter "~1.0.0" wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + integrity sha1-OS2LotDxw00e4tYw8V0O+2jhBIo= x-xss-protection@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.1.0.tgz#4f1898c332deb1e7f2be1280efb3e2c53d69c1a7" + integrity sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg== xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= xhr2@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" + integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= xliff@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/xliff/-/xliff-4.1.0.tgz#32ea268a6442c122e132e6abf874539b1fc9c6b3" + integrity sha512-BlqCVTd16GLNx4TAll1Ebs1Gswh6g/Mx/9z6cXmbNTVqy7iqXAAwZjmhE2G1fX+++xoXy0IufPp+DOv8tJC/pA== dependencies: xml-js "1.6.7" xml-js@1.6.7: version "1.6.7" resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.7.tgz#a99b40c18a16d3e06537b3ae026a27bd60ffe8ab" + integrity sha512-1hn0xwwfMcWywnJxqiOXiv+pZaOJyf/YWcUeqJICF0BFb+IOkRFSkKyeA0V62WqTHXNdBxNuCFHhS/w2DtYpoA== dependencies: sax "^1.2.4" xml2js@^0.4.4: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== dependencies: sax ">=0.6.0" xmlbuilder "~9.0.1" @@ -9041,70 +10462,85 @@ xml2js@^0.4.4: xml@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= xmlbuilder@~9.0.1: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= xmldom@0.1.19: version "0.1.19" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.19.tgz#631fc07776efd84118bf25171b37ed4d075a0abc" + integrity sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw= xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + integrity sha1-GFqIjATspGw+QHDZn3tJ3jUomS0= xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= dependencies: camelcase "^3.0.0" yargs-parser@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== dependencies: camelcase "^4.1.0" yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= dependencies: camelcase "^4.1.0" yargs@^11.0.0: version "11.1.0" resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -9122,6 +10558,7 @@ yargs@^11.0.0: yargs@^12.0.1: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== dependencies: cliui "^4.0.0" decamelize "^2.0.0" @@ -9139,6 +10576,7 @@ yargs@^12.0.1: yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -9157,20 +10595,24 @@ yargs@^7.0.0: yauzl@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= dependencies: fd-slicer "~1.0.1" yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= yn@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= youtube-dl@^1.12.2: version "1.12.2" resolved "https://registry.yarnpkg.com/youtube-dl/-/youtube-dl-1.12.2.tgz#11985268564c92b229f62b43d97374f86a605d1d" + integrity sha512-TDGmUxzEsQCp1Ux3IEkEhJ2LfRlUjBo5AaaGmW5Hqm8uX8jd2sB+Rq37S9vy505qnFhpy05uUSQsBtpvBuQBYA== dependencies: hh-mm-ss "^1.2.0" mkdirp "^0.5.1" @@ -9180,3 +10622,4 @@ youtube-dl@^1.12.2: zero-fill@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/zero-fill/-/zero-fill-2.2.3.tgz#a3def06ba5e39ae644850bb4ca2ad4112b4855e9" + integrity sha1-o97wa6XjmuZEhQu0yirUEStIVek= -- cgit v1.2.3 From c199c427d4ae586339822320f20f512a7a19dc3f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 14:35:31 +0200 Subject: Better typings --- client/e2e/src/po/video-watch.po.ts | 2 +- client/package.json | 2 +- .../edit-custom-config.component.ts | 4 +- client/src/app/+admin/users/user-edit/user-edit.ts | 2 +- .../+admin/users/user-list/user-list.component.ts | 6 +- .../my-account-video-channel-update.component.ts | 6 +- .../my-account-videos.component.ts | 11 +- .../video-change-ownership.component.ts | 3 +- .../shared/actor-avatar-info.component.ts | 4 +- client/src/app/core/auth/auth.service.ts | 2 +- client/src/app/core/server/server.service.ts | 4 +- client/src/app/menu/menu.component.ts | 2 +- client/src/app/search/advanced-search.model.ts | 4 +- .../shared/buttons/action-dropdown.component.ts | 6 +- client/src/app/shared/buttons/button.component.ts | 6 +- .../app/shared/buttons/edit-button.component.ts | 2 +- .../shared/guards/can-deactivate-guard.service.ts | 4 +- client/src/app/shared/misc/help.component.ts | 2 +- .../src/app/shared/rest/rest-extractor.service.ts | 4 +- client/src/app/shared/rest/rest.service.ts | 2 +- client/src/app/shared/shared.module.ts | 6 +- client/src/app/shared/users/user.model.ts | 1 - .../src/app/shared/video/abstract-video-list.html | 2 +- .../src/app/shared/video/abstract-video-list.scss | 2 +- client/src/app/shared/video/abstract-video-list.ts | 11 +- client/src/app/shared/video/feed.component.html | 10 + client/src/app/shared/video/feed.component.scss | 19 + client/src/app/shared/video/feed.component.ts | 11 + client/src/app/shared/video/syndication.model.ts | 7 + client/src/app/shared/video/video-edit.model.ts | 5 +- .../src/app/shared/video/video-feed.component.html | 10 - .../src/app/shared/video/video-feed.component.scss | 19 - .../src/app/shared/video/video-feed.component.ts | 10 - client/src/app/shared/video/video.service.ts | 4 +- .../shared/video-caption-add-modal.component.ts | 5 +- .../video-import-torrent.component.ts | 6 +- .../+video-edit/video-add-components/video-send.ts | 6 +- .../video-add-components/video-upload.component.ts | 6 +- .../+video-watch/comment/linkifier.service.ts | 1 + .../comment/video-comment.component.ts | 2 +- .../+video-watch/comment/video-comment.service.ts | 8 +- .../comment/video-comments.component.html | 2 +- .../comment/video-comments.component.scss | 2 +- .../comment/video-comments.component.ts | 3 +- .../videos/+video-watch/video-watch.component.scss | 2 +- .../videos/+video-watch/video-watch.component.ts | 16 +- client/src/assets/player/peertube-chunk-store.ts | 12 +- client/src/assets/player/peertube-link-button.ts | 5 +- .../assets/player/peertube-load-progress-bar.ts | 5 +- client/src/assets/player/peertube-player.ts | 20 +- .../src/assets/player/peertube-videojs-plugin.ts | 20 +- .../src/assets/player/peertube-videojs-typings.ts | 5 +- client/src/assets/player/resolution-menu-button.ts | 6 +- client/src/assets/player/resolution-menu-item.ts | 6 +- client/src/assets/player/settings-menu-button.ts | 17 +- client/src/assets/player/settings-menu-item.ts | 8 +- client/src/assets/player/theater-button.ts | 6 +- client/src/assets/player/utils.ts | 2 +- client/src/assets/player/webtorrent-info-button.ts | 2 +- client/src/standalone/videos/embed.ts | 7 +- client/src/standalone/videos/test-embed.ts | 6 +- client/src/typings.d.ts | 6 +- client/yarn.lock | 1420 +++++++++++++++++++- shared/models/i18n/i18n.ts | 4 +- shared/models/overviews/videos-overview.ts | 1 - shared/models/server/custom-config.model.ts | 1 - shared/models/users/user.model.ts | 1 - 67 files changed, 1635 insertions(+), 179 deletions(-) create mode 100644 client/src/app/shared/video/feed.component.html create mode 100644 client/src/app/shared/video/feed.component.scss create mode 100644 client/src/app/shared/video/feed.component.ts create mode 100644 client/src/app/shared/video/syndication.model.ts delete mode 100644 client/src/app/shared/video/video-feed.component.html delete mode 100644 client/src/app/shared/video/video-feed.component.scss delete mode 100644 client/src/app/shared/video/video-feed.component.ts diff --git a/client/e2e/src/po/video-watch.po.ts b/client/e2e/src/po/video-watch.po.ts index e17aebc29..d1e2a73b8 100644 --- a/client/e2e/src/po/video-watch.po.ts +++ b/client/e2e/src/po/video-watch.po.ts @@ -23,7 +23,7 @@ export class VideoWatchPage { getVideosListName () { return element.all(by.css('.videos .video-miniature .video-miniature-name')) .getText() - .then((texts: any) => texts.map(t => t.trim())) + .then((texts: any) => texts.map((t: any) => t.trim())) } waitWatchVideoName (videoName: string, isMobileDevice: boolean, isSafari: boolean) { diff --git a/client/package.json b/client/package.json index 0c5734c55..e7be66bff 100644 --- a/client/package.json +++ b/client/package.json @@ -94,7 +94,7 @@ "@types/markdown-it": "^0.0.5", "@types/node": "^10.9.2", "@types/sanitize-html": "1.18.0", - "@types/video.js": "6.2.7", + "@types/video.js": "^7.2.5", "@types/webtorrent": "^0.98.4", "angular2-hotkeys": "^2.1.2", "angular2-notifications": "^1.0.2", diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts index 9a9298825..f48b6fc1a 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts @@ -62,7 +62,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { } ngOnInit () { - const formGroupData: any = { + const formGroupData: { [key: string]: any } = { instanceName: this.customConfigValidatorsService.INSTANCE_NAME, instanceShortDescription: this.customConfigValidatorsService.INSTANCE_SHORT_DESCRIPTION, instanceDescription: null, @@ -202,7 +202,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit { } private updateForm () { - const data: any = { + const data: { [key: string]: any } = { instanceName: this.customConfig.instance.name, instanceShortDescription: this.customConfig.instance.shortDescription, instanceDescription: this.customConfig.instance.description, diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts index a4d696e69..99ce5804b 100644 --- a/client/src/app/+admin/users/user-edit/user-edit.ts +++ b/client/src/app/+admin/users/user-edit/user-edit.ts @@ -7,7 +7,7 @@ export abstract class UserEdit extends FormReactive { videoQuotaOptions: { value: string, label: string }[] = [] videoQuotaDailyOptions: { value: string, label: string }[] = [] - roles = Object.keys(USER_ROLE_LABELS).map((key: any) => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) + roles = Object.keys(USER_ROLE_LABELS).map(key => ({ value: key.toString(), label: USER_ROLE_LABELS[key] })) protected abstract serverService: ServerService protected abstract configService: ConfigService diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index 0d7f88d2b..3859af9ff 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -23,7 +23,7 @@ export class UserListComponent extends RestTable implements OnInit { pagination: RestPagination = { count: this.rowsPerPage, start: 0 } selectedUsers: User[] = [] - bulkUserActions: DropdownAction[] = [] + bulkUserActions: DropdownAction[] = [] constructor ( private notificationsService: NotificationsService, @@ -45,12 +45,12 @@ export class UserListComponent extends RestTable implements OnInit { { label: this.i18n('Ban'), handler: users => this.openBanUserModal(users), - isDisplayed: users => users.every((u: any) => u.blocked === false) + isDisplayed: users => users.every(u => u.blocked === false) }, { label: this.i18n('Unban'), handler: users => this.unbanUsers(users), - isDisplayed: users => users.every((u: any) => u.blocked === true) + isDisplayed: users => users.every(u => u.blocked === true) } ] } diff --git a/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts b/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts index f2b8a4e26..5d43956f2 100644 --- a/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts +++ b/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core' +import { Component, OnDestroy, OnInit } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' import { NotificationsService } from 'angular2-notifications' import { MyAccountVideoChannelEdit } from './my-account-video-channel-edit' @@ -17,11 +17,9 @@ import { VideoChannelValidatorsService } from '@app/shared/forms/form-validators styleUrls: [ './my-account-video-channel-edit.component.scss' ] }) export class MyAccountVideoChannelUpdateComponent extends MyAccountVideoChannelEdit implements OnInit, OnDestroy { - @ViewChild('avatarfileInput') avatarfileInput: any - error: string - videoChannelToUpdate: VideoChannel + private paramsSub: Subscription constructor ( diff --git a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts index 52307f09e..2d88ac760 100644 --- a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts +++ b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts @@ -66,7 +66,7 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni } isInSelectionMode () { - return Object.keys(this.checkedVideos).some((k: any) => this.checkedVideos[ k ] === true) + return Object.keys(this.checkedVideos).some(k => this.checkedVideos[ k ] === true) } getVideosObservable (page: number) { @@ -81,7 +81,7 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni async deleteSelectedVideos () { const toDeleteVideosIds = Object.keys(this.checkedVideos) - .filter((k: any) => this.checkedVideos[ k ] === true) + .filter(k => this.checkedVideos[ k ] === true) .map(k => parseInt(k, 10)) const res = await this.confirmService.confirm( @@ -168,10 +168,9 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni } private spliceVideosById (id: number) { - let key: any - for (key of Object.keys(this.loadedPages)) { - const videos = this.loadedPages[ key ] - const index = videos.findIndex((v: any) => v.id === id) + for (const key of Object.keys(this.loadedPages)) { + const videos: Video[] = this.loadedPages[ key ] + const index = videos.findIndex(v => v.id === id) if (index !== -1) { videos.splice(index, 1) diff --git a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts index eb3f9404f..9f94f3c13 100644 --- a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts +++ b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts @@ -49,8 +49,7 @@ export class VideoChangeOwnershipComponent extends FormReactive implements OnIni .catch((_) => _) // Called when closing (cancel) the modal without validating, do nothing } - // TODO: typing - search (event: any) { + search (event: { query: string }) { const query = event.query this.userService.autocomplete(query) .subscribe( diff --git a/client/src/app/+my-account/shared/actor-avatar-info.component.ts b/client/src/app/+my-account/shared/actor-avatar-info.component.ts index b4505a7f2..54bacc212 100644 --- a/client/src/app/+my-account/shared/actor-avatar-info.component.ts +++ b/client/src/app/+my-account/shared/actor-avatar-info.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core' +import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core' import { ServerService } from '../../core/server' import { NotificationsService } from 'angular2-notifications' import { VideoChannel } from '@app/shared/video-channel/video-channel.model' @@ -10,7 +10,7 @@ import { Account } from '@app/shared/account/account.model' styleUrls: [ './actor-avatar-info.component.scss' ] }) export class ActorAvatarInfoComponent { - @ViewChild('avatarfileInput') avatarfileInput: any + @ViewChild('avatarfileInput') avatarfileInput: ElementRef @Input() actor: VideoChannel | Account diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts index 5315c8b1d..443772c9e 100644 --- a/client/src/app/core/auth/auth.service.ts +++ b/client/src/app/core/auth/auth.service.ts @@ -221,7 +221,7 @@ export class AuthService { } refreshUserInformation () { - const obj: any = { + const obj: UserLoginWithUsername = { access_token: this.user.getAccessToken(), refresh_token: null, token_type: this.user.getTokenType(), diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts index 1663a052c..da8bd26db 100644 --- a/client/src/app/core/server/server.service.ts +++ b/client/src/app/core/server/server.service.ts @@ -154,8 +154,8 @@ export class ServerService { this.localeObservable .pipe( switchMap(translations => { - return this.http.get(ServerService.BASE_VIDEO_URL + attributeName) - .pipe(map((data: any) => ({ data, translations }))) + return this.http.get<{ [id: string]: string }>(ServerService.BASE_VIDEO_URL + attributeName) + .pipe(map(data => ({ data, translations }))) }) ) .subscribe(({ data, translations }) => { diff --git a/client/src/app/menu/menu.component.ts b/client/src/app/menu/menu.component.ts index 348700c09..371beb4a5 100644 --- a/client/src/app/menu/menu.component.ts +++ b/client/src/app/menu/menu.component.ts @@ -18,7 +18,7 @@ export class MenuComponent implements OnInit { userHasAdminAccess = false helpVisible = false - private routesPerRight: any = { + private routesPerRight: { [ role in UserRight ]?: string } = { [UserRight.MANAGE_USERS]: '/admin/users', [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends', [UserRight.MANAGE_VIDEO_ABUSES]: '/admin/moderation/video-abuses', diff --git a/client/src/app/search/advanced-search.model.ts b/client/src/app/search/advanced-search.model.ts index 1d6c89282..033fa9bba 100644 --- a/client/src/app/search/advanced-search.model.ts +++ b/client/src/app/search/advanced-search.model.ts @@ -53,7 +53,7 @@ export class AdvancedSearch { } containsValues () { - const obj: any = this.toUrlObject() + const obj = this.toUrlObject() for (const k of Object.keys(obj)) { if (k === 'sort') continue // Exception @@ -113,7 +113,7 @@ export class AdvancedSearch { size () { let acc = 0 - const obj: any = this.toUrlObject() + const obj = this.toUrlObject() for (const k of Object.keys(obj)) { if (k === 'sort') continue // Exception diff --git a/client/src/app/shared/buttons/action-dropdown.component.ts b/client/src/app/shared/buttons/action-dropdown.component.ts index 9877f639d..d8026ef41 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.ts +++ b/client/src/app/shared/buttons/action-dropdown.component.ts @@ -2,9 +2,9 @@ import { Component, Input } from '@angular/core' export type DropdownAction = { label?: string - handler?: (T: any) => any - linkBuilder?: (T: any) => (string | number)[] - isDisplayed?: (T: any) => boolean + handler?: (a: T) => any + linkBuilder?: (a: T) => (string | number)[] + isDisplayed?: (a: T) => boolean } @Component({ diff --git a/client/src/app/shared/buttons/button.component.ts b/client/src/app/shared/buttons/button.component.ts index cccf98bc3..1a1162f09 100644 --- a/client/src/app/shared/buttons/button.component.ts +++ b/client/src/app/shared/buttons/button.component.ts @@ -8,9 +8,9 @@ import { Component, Input } from '@angular/core' export class ButtonComponent { @Input() label = '' - @Input() className: any = undefined - @Input() icon: any = undefined - @Input() title: any = undefined + @Input() className: string = undefined + @Input() icon: string = undefined + @Input() title: string = undefined getTitle () { return this.title || this.label diff --git a/client/src/app/shared/buttons/edit-button.component.ts b/client/src/app/shared/buttons/edit-button.component.ts index ea552663a..1fe4f7b30 100644 --- a/client/src/app/shared/buttons/edit-button.component.ts +++ b/client/src/app/shared/buttons/edit-button.component.ts @@ -8,5 +8,5 @@ import { Component, Input } from '@angular/core' export class EditButtonComponent { @Input() label: string - @Input() routerLink: any = [] + @Input() routerLink: string[] = [] } diff --git a/client/src/app/shared/guards/can-deactivate-guard.service.ts b/client/src/app/shared/guards/can-deactivate-guard.service.ts index e2a79e8c4..3a35fcfb3 100644 --- a/client/src/app/shared/guards/can-deactivate-guard.service.ts +++ b/client/src/app/shared/guards/can-deactivate-guard.service.ts @@ -4,8 +4,10 @@ import { Observable } from 'rxjs' import { ConfirmService } from '../../core/index' import { I18n } from '@ngx-translate/i18n-polyfill' +export type CanComponentDeactivateResult = { text?: string, canDeactivate: Observable | boolean } + export interface CanComponentDeactivate { - canDeactivate: () => { text?: string, canDeactivate: Observable | boolean } + canDeactivate: () => CanComponentDeactivateResult } @Injectable() diff --git a/client/src/app/shared/misc/help.component.ts b/client/src/app/shared/misc/help.component.ts index ccce1ccfa..ba0452e77 100644 --- a/client/src/app/shared/misc/help.component.ts +++ b/client/src/app/shared/misc/help.component.ts @@ -60,7 +60,7 @@ export class HelpComponent implements OnInit, OnChanges { } private createMarkdownList (rules: string[]) { - const rulesToText: any = { + const rulesToText = { 'emphasis': this.i18n('Emphasis'), 'link': this.i18n('Links'), 'newline': this.i18n('New lines'), diff --git a/client/src/app/shared/rest/rest-extractor.service.ts b/client/src/app/shared/rest/rest-extractor.service.ts index 934f6c618..f149569ef 100644 --- a/client/src/app/shared/rest/rest-extractor.service.ts +++ b/client/src/app/shared/rest/rest-extractor.service.ts @@ -33,7 +33,7 @@ export class RestExtractor { return this.applyToResultListData(result, this.convertDateToHuman, [ fieldsToConvert ]) } - convertDateToHuman (target: any, fieldsToConvert: string[]) { + convertDateToHuman (target: { [ id: string ]: string }, fieldsToConvert: string[]) { fieldsToConvert.forEach(field => target[field] = dateToHuman(target[field])) return target @@ -83,7 +83,7 @@ export class RestExtractor { errorMessage = err } - const errorObj: any = { + const errorObj: { message: string, status: string, body: string } = { message: errorMessage, status: undefined, body: undefined diff --git a/client/src/app/shared/rest/rest.service.ts b/client/src/app/shared/rest/rest.service.ts index 41824a18f..e6d4e6e5e 100644 --- a/client/src/app/shared/rest/rest.service.ts +++ b/client/src/app/shared/rest/rest.service.ts @@ -32,7 +32,7 @@ export class RestService { return newParams } - addObjectParams (params: HttpParams, object: any) { + addObjectParams (params: HttpParams, object: { [ name: string ]: any }) { for (const name of Object.keys(object)) { const value = object[name] if (!value) continue diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts index 40e05fcc7..0ec2a9b15 100644 --- a/client/src/app/shared/shared.module.ts +++ b/client/src/app/shared/shared.module.ts @@ -25,7 +25,7 @@ import { VideoAbuseService } from './video-abuse' import { VideoBlacklistService } from './video-blacklist' import { VideoOwnershipService } from './video-ownership' import { VideoMiniatureComponent } from './video/video-miniature.component' -import { VideoFeedComponent } from './video/video-feed.component' +import { FeedComponent } from './video/feed.component' import { VideoThumbnailComponent } from './video/video-thumbnail.component' import { VideoService } from './video/video.service' import { AccountService } from '@app/shared/account/account.service' @@ -82,7 +82,7 @@ import { BlocklistService } from '@app/shared/blocklist' LoaderComponent, VideoThumbnailComponent, VideoMiniatureComponent, - VideoFeedComponent, + FeedComponent, ButtonComponent, DeleteButtonComponent, EditButtonComponent, @@ -122,7 +122,7 @@ import { BlocklistService } from '@app/shared/blocklist' LoaderComponent, VideoThumbnailComponent, VideoMiniatureComponent, - VideoFeedComponent, + FeedComponent, ButtonComponent, DeleteButtonComponent, EditButtonComponent, diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index e6b612054..7c840ffa7 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -43,7 +43,6 @@ export class User implements UserServerModel { blocked: boolean blockedReason?: string - [key: string]: any constructor (hash: UserConstructorHash) { this.id = hash.id diff --git a/client/src/app/shared/video/abstract-video-list.html b/client/src/app/shared/video/abstract-video-list.html index 69a619b76..29492351b 100644 --- a/client/src/app/shared/video/abstract-video-list.html +++ b/client/src/app/shared/video/abstract-video-list.html @@ -3,7 +3,7 @@
{{ titlePage }}
- +
- abstract generateSyndicationList (): any + abstract generateSyndicationList (): void get user () { return this.authService.getUser() @@ -209,9 +210,11 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { } protected setNewRouteParams () { - const paramsObject: any = this.buildRouteParams() + const paramsObject = this.buildRouteParams() - const queryParams = Object.keys(paramsObject).map(p => p + '=' + paramsObject[p]).join('&') + const queryParams = Object.keys(paramsObject) + .map(p => p + '=' + paramsObject[p]) + .join('&') this.location.replaceState(this.currentRoute, queryParams) } diff --git a/client/src/app/shared/video/feed.component.html b/client/src/app/shared/video/feed.component.html new file mode 100644 index 000000000..16116ba88 --- /dev/null +++ b/client/src/app/shared/video/feed.component.html @@ -0,0 +1,10 @@ +
+ + + + {{ item.label }} + +
\ No newline at end of file diff --git a/client/src/app/shared/video/feed.component.scss b/client/src/app/shared/video/feed.component.scss new file mode 100644 index 000000000..385764be0 --- /dev/null +++ b/client/src/app/shared/video/feed.component.scss @@ -0,0 +1,19 @@ +@import '_mixins'; + +.video-feed { + a { + color: black; + display: block; + } + + .icon { + @include icon(12px); + + &.icon-syndication { + position: relative; + top: -2px; + background-color: var(--mainForegroundColor); + mask-image: url('../../../assets/images/global/syndication.svg'); + } + } +} \ No newline at end of file diff --git a/client/src/app/shared/video/feed.component.ts b/client/src/app/shared/video/feed.component.ts new file mode 100644 index 000000000..12507458f --- /dev/null +++ b/client/src/app/shared/video/feed.component.ts @@ -0,0 +1,11 @@ +import { Component, Input } from '@angular/core' +import { Syndication } from '@app/shared/video/syndication.model' + +@Component({ + selector: 'my-feed', + styleUrls: [ './feed.component.scss' ], + templateUrl: './feed.component.html' +}) +export class FeedComponent { + @Input() syndicationItems: Syndication[] +} diff --git a/client/src/app/shared/video/syndication.model.ts b/client/src/app/shared/video/syndication.model.ts new file mode 100644 index 000000000..a52b5771b --- /dev/null +++ b/client/src/app/shared/video/syndication.model.ts @@ -0,0 +1,7 @@ +import { FeedFormat } from '../../../../../shared/models/feeds/feed-format.enum' + +export interface Syndication { + format: FeedFormat, + label: string, + url: string +} \ No newline at end of file diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts index a62277e04..fc772a3cf 100644 --- a/client/src/app/shared/video/video-edit.model.ts +++ b/client/src/app/shared/video/video-edit.model.ts @@ -25,7 +25,6 @@ export class VideoEdit implements VideoUpdate { uuid?: string id?: number scheduleUpdate?: VideoScheduleUpdate - [key: string]: any constructor (video?: Video & { tags: string[], commentsEnabled: boolean, support: string, thumbnailUrl: string, previewUrl: string }) { if (video) { @@ -50,14 +49,14 @@ export class VideoEdit implements VideoUpdate { } } - patch (values: any) { + patch (values: { [ id: string ]: string }) { Object.keys(values).forEach((key) => { this[ key ] = values[ key ] }) // If schedule publication, the video is private and will be changed to public privacy if (parseInt(values['privacy'], 10) === VideoEdit.SPECIAL_SCHEDULED_PRIVACY) { - const updateAt = (values['schedulePublicationAt'] as Date) + const updateAt = new Date(values['schedulePublicationAt']) updateAt.setSeconds(0) this.privacy = VideoPrivacy.PRIVATE diff --git a/client/src/app/shared/video/video-feed.component.html b/client/src/app/shared/video/video-feed.component.html deleted file mode 100644 index 16116ba88..000000000 --- a/client/src/app/shared/video/video-feed.component.html +++ /dev/null @@ -1,10 +0,0 @@ -
- - - - {{ item.label }} - -
\ No newline at end of file diff --git a/client/src/app/shared/video/video-feed.component.scss b/client/src/app/shared/video/video-feed.component.scss deleted file mode 100644 index 385764be0..000000000 --- a/client/src/app/shared/video/video-feed.component.scss +++ /dev/null @@ -1,19 +0,0 @@ -@import '_mixins'; - -.video-feed { - a { - color: black; - display: block; - } - - .icon { - @include icon(12px); - - &.icon-syndication { - position: relative; - top: -2px; - background-color: var(--mainForegroundColor); - mask-image: url('../../../assets/images/global/syndication.svg'); - } - } -} \ 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 deleted file mode 100644 index be6c80c3f..000000000 --- a/client/src/app/shared/video/video-feed.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component, Input } from '@angular/core' - -@Component({ - selector: 'my-video-feed', - styleUrls: [ './video-feed.component.scss' ], - templateUrl: './video-feed.component.html' -}) -export class VideoFeedComponent { - @Input() syndicationItems: any -} diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts index 6283cf84d..65297d7a1 100644 --- a/client/src/app/shared/video/video.service.ts +++ b/client/src/app/shared/video/video.service.ts @@ -274,9 +274,9 @@ export class VideoService implements VideosProvider { loadCompleteDescription (descriptionPath: string) { return this.authHttp - .get(environment.apiUrl + descriptionPath) + .get<{ description: string }>(environment.apiUrl + descriptionPath) .pipe( - map((res: any) => res[ 'description' ]), + map(res => res.description), catchError(err => this.restExtractor.handleError(err)) ) } diff --git a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts index a2c9237ad..796fbe531 100644 --- a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts +++ b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts @@ -5,6 +5,7 @@ import { VideoCaptionsValidatorsService } from '@app/shared/forms/form-validator import { ServerService } from '@app/core' import { VideoCaptionEdit } from '@app/shared/video-caption/video-caption-edit.model' import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' +import { VideoConstant } from '../../../../../../shared' @Component({ selector: 'my-video-caption-add-modal', @@ -19,7 +20,7 @@ export class VideoCaptionAddModalComponent extends FormReactive implements OnIni @ViewChild('modal') modal: ElementRef - videoCaptionLanguages: any = [] + videoCaptionLanguages: VideoConstant[] = [] private openedModal: NgbModalRef private closingModal = false @@ -73,7 +74,7 @@ export class VideoCaptionAddModalComponent extends FormReactive implements OnIni this.hide() const languageId = this.form.value[ 'language' ] - const languageObject = this.videoCaptionLanguages.find((l: any) => l.id === languageId) + const languageObject = this.videoCaptionLanguages.find(l => l.id === languageId) this.captionAdded.emit({ language: languageObject, diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts index 9a50e2ab2..e13c06ce9 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core' +import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core' import { Router } from '@angular/router' import { NotificationsService } from 'angular2-notifications' import { VideoPrivacy, VideoUpdate } from '../../../../../../shared/models/videos' @@ -23,7 +23,7 @@ import { VideoImportService } from '@app/shared/video-import' }) export class VideoImportTorrentComponent extends VideoSend implements OnInit, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() - @ViewChild('torrentfileInput') torrentfileInput: any + @ViewChild('torrentfileInput') torrentfileInput: ElementRef videoFileName: string magnetUri = '' @@ -64,7 +64,7 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca } fileChange () { - const torrentfile = this.torrentfileInput.nativeElement.files[0] as File + const torrentfile = this.torrentfileInput.nativeElement.files[0] if (!torrentfile) return this.importVideo(torrentfile) diff --git a/client/src/app/videos/+video-edit/video-add-components/video-send.ts b/client/src/app/videos/+video-edit/video-add-components/video-send.ts index cf9d47cbe..1bf22e1a9 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-send.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-send.ts @@ -3,7 +3,6 @@ import { LoadingBarService } from '@ngx-loading-bar/core' import { NotificationsService } from 'angular2-notifications' import { catchError, switchMap, tap } from 'rxjs/operators' import { FormReactive } from '@app/shared' -import { CanComponentDeactivate } from '@app/shared/guards/can-deactivate-guard.service' import { VideoConstant, VideoPrivacy } from '../../../../../../shared' import { AuthService, ServerService } from '@app/core' import { VideoService } from '@app/shared/video/video.service' @@ -11,8 +10,9 @@ import { VideoCaptionEdit } from '@app/shared/video-caption/video-caption-edit.m import { VideoCaptionService } from '@app/shared/video-caption' import { VideoEdit } from '@app/shared/video/video-edit.model' import { populateAsyncUserVideoChannels } from '@app/shared/misc/utils' +import { CanComponentDeactivateResult } from '@app/shared/guards/can-deactivate-guard.service' -export abstract class VideoSend extends FormReactive implements OnInit, CanComponentDeactivate { +export abstract class VideoSend extends FormReactive implements OnInit { userVideoChannels: { id: number, label: string, support: string }[] = [] videoPrivacies: VideoConstant[] = [] videoCaptions: VideoCaptionEdit[] = [] @@ -30,7 +30,7 @@ export abstract class VideoSend extends FormReactive implements OnInit, CanCompo protected videoService: VideoService protected videoCaptionService: VideoCaptionService - abstract canDeactivate (): any + abstract canDeactivate (): CanComponentDeactivateResult ngOnInit () { this.buildForm({}) diff --git a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts index fa6ee0c23..8e2d0deaf 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts @@ -1,5 +1,5 @@ import { HttpEventType, HttpResponse } from '@angular/common/http' -import { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core' +import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core' import { Router } from '@angular/router' import { LoadingBarService } from '@ngx-loading-bar/core' import { NotificationsService } from 'angular2-notifications' @@ -25,7 +25,7 @@ import { VideoCaptionService } from '@app/shared/video-caption' }) export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() - @ViewChild('videofileInput') videofileInput: any + @ViewChild('videofileInput') videofileInput: ElementRef // So that it can be accessed in the template readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY @@ -110,7 +110,7 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy } uploadFirstStep () { - const videofile = this.videofileInput.nativeElement.files[0] as File + const videofile = this.videofileInput.nativeElement.files[0] if (!videofile) return // Cannot upload videos > 8GB for now diff --git a/client/src/app/videos/+video-watch/comment/linkifier.service.ts b/client/src/app/videos/+video-watch/comment/linkifier.service.ts index 9ad419a69..4f4ec1e5d 100644 --- a/client/src/app/videos/+video-watch/comment/linkifier.service.ts +++ b/client/src/app/videos/+video-watch/comment/linkifier.service.ts @@ -1,5 +1,6 @@ import { Injectable } from '@angular/core' import { getAbsoluteAPIUrl } from '@app/shared/misc/utils' +// FIXME: use @types/linkify when https://github.com/DefinitelyTyped/DefinitelyTyped/pull/29682/files is merged? const linkify = require('linkifyjs') const linkifyHtml = require('linkifyjs/html') diff --git a/client/src/app/videos/+video-watch/comment/video-comment.component.ts b/client/src/app/videos/+video-watch/comment/video-comment.component.ts index 982470786..00f0460a1 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.component.ts @@ -26,7 +26,7 @@ export class VideoCommentComponent implements OnInit, OnChanges { @Output() resetReply = new EventEmitter() sanitizedCommentHTML = '' - newParentComments: any = [] + newParentComments: VideoComment[] = [] constructor ( private linkifierService: LinkifierService, diff --git a/client/src/app/videos/+video-watch/comment/video-comment.service.ts b/client/src/app/videos/+video-watch/comment/video-comment.service.ts index 7d9c2d0ad..921447d5b 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.service.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.service.ts @@ -30,9 +30,9 @@ export class VideoCommentService { const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comment-threads' const normalizedComment = lineFeedToHtml(comment, 'text') - return this.authHttp.post(url, normalizedComment) + return this.authHttp.post<{ comment: VideoCommentServerModel }>(url, normalizedComment) .pipe( - map((data: any) => this.extractVideoComment(data['comment'])), + map(data => this.extractVideoComment(data.comment)), catchError(err => this.restExtractor.handleError(err)) ) } @@ -41,9 +41,9 @@ export class VideoCommentService { const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comments/' + inReplyToCommentId const normalizedComment = lineFeedToHtml(comment, 'text') - return this.authHttp.post(url, normalizedComment) + return this.authHttp.post<{ comment: VideoCommentServerModel }>(url, normalizedComment) .pipe( - map((data: any) => this.extractVideoComment(data[ 'comment' ])), + map(data => this.extractVideoComment(data.comment)), catchError(err => this.restExtractor.handleError(err)) ) } diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.html b/client/src/app/videos/+video-watch/comment/video-comments.component.html index 42e129d65..44016d8ad 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.html +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.html @@ -4,7 +4,7 @@ Comments
- + diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.scss b/client/src/app/videos/+video-watch/comment/video-comments.component.scss index dbb44c66c..575e331e4 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.scss +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.scss @@ -23,7 +23,7 @@ margin-right: 0; } -my-video-feed { +my-feed { display: inline-block; margin-left: 5px; } diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.ts b/client/src/app/videos/+video-watch/comment/video-comments.component.ts index 4c1bdf2dd..8850eccd8 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.ts @@ -12,6 +12,7 @@ import { VideoDetails } from '../../../shared/video/video-details.model' import { VideoComment } from './video-comment.model' import { VideoCommentService } from './video-comment.service' import { I18n } from '@ngx-translate/i18n-polyfill' +import { Syndication } from '@app/shared/video/syndication.model' @Component({ selector: 'my-video-comments', @@ -35,7 +36,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy { threadComments: { [ id: number ]: VideoCommentThreadTree } = {} threadLoading: { [ id: number ]: boolean } = {} - syndicationItems: any = [] + syndicationItems: Syndication[] = [] private sub: Subscription diff --git a/client/src/app/videos/+video-watch/video-watch.component.scss b/client/src/app/videos/+video-watch/video-watch.component.scss index f31e4694a..2586a2204 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.scss +++ b/client/src/app/videos/+video-watch/video-watch.component.scss @@ -162,7 +162,7 @@ $other-videos-width: 260px; } } - my-video-feed { + my-feed { margin-left: 5px; margin-top: 1px; } 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 ed5e723c9..65b974037 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts @@ -7,7 +7,9 @@ import { VideoSupportComponent } from '@app/videos/+video-watch/modal/video-supp import { MetaService } from '@ngx-meta/core' import { NotificationsService } from 'angular2-notifications' import { forkJoin, Subscription } from 'rxjs' -const videojs = require('video.js') +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import videojs from 'video.js' import 'videojs-hotkeys' import { Hotkey, HotkeysService } from 'angular2-hotkeys' import * as WebTorrent from 'webtorrent' @@ -45,7 +47,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { @ViewChild('videoBlacklistModal') videoBlacklistModal: VideoBlacklistComponent @ViewChild('subscribeButton') subscribeButton: SubscribeButtonComponent - player: any + player: videojs.Player playerElement: HTMLVideoElement userRating: UserVideoRateType = null video: VideoDetails = null @@ -435,7 +437,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { this.zone.runOutsideAngular(async () => { videojs(this.playerElement, videojsOptions, function () { self.player = this - this.on('customError', (data: any) => self.handleError(data.err)) + this.on('customError', ({ err }: { err: any }) => self.handleError(err)) addContextMenu(self.player, self.video.embedUrl) }) @@ -448,7 +450,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { this.checkUserRating() } - private setRating (nextRating: string) { + private setRating (nextRating: VideoRateType) { let method switch (nextRating) { case 'like': @@ -466,11 +468,11 @@ export class VideoWatchComponent implements OnInit, OnDestroy { .subscribe( () => { // Update the video like attribute - this.updateVideoRating(this.userRating, nextRating as VideoRateType) - this.userRating = nextRating as UserVideoRateType + this.updateVideoRating(this.userRating, nextRating) + this.userRating = nextRating }, - (err: any) => this.notificationsService.error(this.i18n('Error'), err.message) + (err: { message: string }) => this.notificationsService.error(this.i18n('Error'), err.message) ) } diff --git a/client/src/assets/player/peertube-chunk-store.ts b/client/src/assets/player/peertube-chunk-store.ts index ac3f9e654..54cc0ea64 100644 --- a/client/src/assets/player/peertube-chunk-store.ts +++ b/client/src/assets/player/peertube-chunk-store.ts @@ -76,7 +76,7 @@ export class PeertubeChunkStore extends EventEmitter { this.runCleaner() } - put (index: number, buf: Buffer, cb: Function) { + put (index: number, buf: Buffer, cb: (err?: Error) => void) { const isLastChunk = (index === this.lastChunkIndex) if (isLastChunk && buf.length !== this.lastChunkLength) { return this.nextTick(cb, new Error('Last chunk length must be ' + this.lastChunkLength)) @@ -113,7 +113,7 @@ export class PeertubeChunkStore extends EventEmitter { }, PeertubeChunkStore.BUFFERING_PUT_MS) } - get (index: number, opts: any, cb: any): any { + get (index: number, opts: any, cb: (err?: Error, buf?: Buffer) => void): void { if (typeof opts === 'function') return this.get(index, null, opts) // IndexDB could be slow, use our memory index first @@ -146,11 +146,11 @@ export class PeertubeChunkStore extends EventEmitter { }) } - close (db: any) { - return this.destroy(db) + close (cb: (err?: Error) => void) { + return this.destroy(cb) } - async destroy (cb: any) { + async destroy (cb: (err?: Error) => void) { try { if (this.pendingPut) { clearTimeout(this.putBulkTimeout) @@ -225,7 +225,7 @@ export class PeertubeChunkStore extends EventEmitter { } } - private nextTick (cb: any, err: Error, val?: any) { + private nextTick (cb: (err?: Error, val?: T) => void, err: Error, val?: T) { process.nextTick(() => cb(err, val), undefined) } } diff --git a/client/src/assets/player/peertube-link-button.ts b/client/src/assets/player/peertube-link-button.ts index b03952b47..de9a49de9 100644 --- a/client/src/assets/player/peertube-link-button.ts +++ b/client/src/assets/player/peertube-link-button.ts @@ -1,10 +1,13 @@ import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { buildVideoLink } from './utils' +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import { Player } from 'video.js' const Button: VideoJSComponentInterface = videojsUntyped.getComponent('Button') class PeerTubeLinkButton extends Button { - constructor (player: any, options: any) { + constructor (player: Player, options: any) { super(player, options) } diff --git a/client/src/assets/player/peertube-load-progress-bar.ts b/client/src/assets/player/peertube-load-progress-bar.ts index ee8a6cd81..af276d1b2 100644 --- a/client/src/assets/player/peertube-load-progress-bar.ts +++ b/client/src/assets/player/peertube-load-progress-bar.ts @@ -1,10 +1,13 @@ import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import { Player } from 'video.js' const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component') class PeerTubeLoadProgressBar extends Component { - constructor (player: any, options: any) { + constructor (player: Player, options: any) { super(player, options) this.partEls_ = [] this.on(player, 'progress', this.update) diff --git a/client/src/assets/player/peertube-player.ts b/client/src/assets/player/peertube-player.ts index ef9e7fcc0..db63071cb 100644 --- a/client/src/assets/player/peertube-player.ts +++ b/client/src/assets/player/peertube-player.ts @@ -14,6 +14,10 @@ import { UserWatching, VideoJSCaption, videojsUntyped } from './peertube-videojs import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils' import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models/i18n/i18n' +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import { Player } from 'video.js' + // Change 'Playback Rate' to 'Speed' (smaller for our settings menu) videojsUntyped.getComponent('PlaybackRateMenuButton').prototype.controlText_ = 'Speed' // Change Captions to Subtitles/CC @@ -75,12 +79,12 @@ function getVideojsOptions (options: { enableVolumeScroll: false, enableModifiersForNumbers: false, - fullscreenKey: function (event: any) { + fullscreenKey: function (event: KeyboardEvent) { // fullscreen with the f key or Ctrl+Enter return event.key === 'f' || (event.ctrlKey && event.key === 'Enter') }, - seekStep: function (event: any) { + seekStep: function (event: KeyboardEvent) { // mimic VLC seek behavior, and default to 5 (original value is 5). if (event.ctrlKey && event.altKey) { return 5 * 60 @@ -95,26 +99,26 @@ function getVideojsOptions (options: { customKeys: { increasePlaybackRateKey: { - key: function (event: any) { + key: function (event: KeyboardEvent) { return event.key === '>' }, - handler: function (player: any) { + handler: function (player: Player) { player.playbackRate((player.playbackRate() + 0.1).toFixed(2)) } }, decreasePlaybackRateKey: { - key: function (event: any) { + key: function (event: KeyboardEvent) { return event.key === '<' }, - handler: function (player: any) { + handler: function (player: Player) { player.playbackRate((player.playbackRate() - 0.1).toFixed(2)) } }, frameByFrame: { - key: function (event: any) { + key: function (event: KeyboardEvent) { return event.key === '.' }, - handler: function (player: any) { + handler: function (player: Player) { player.pause() // Calculate movement distance (assuming 30 fps) const dist = 1 / 30 diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 03def186e..40da5f1f7 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts @@ -1,11 +1,13 @@ -const videojs = require('video.js') +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import * as videojs from 'video.js' + import * as WebTorrent from 'webtorrent' import { VideoFile } from '../../../../shared/models/videos/video.model' import { renderVideo } from './video-renderer' import './settings-menu-button' import { PeertubePluginOptions, UserWatching, VideoJSCaption, VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution } from './utils' -const CacheChunkStore = require('cache-chunk-store') import { PeertubeChunkStore } from './peertube-chunk-store' import { getAverageBandwidthInStore, @@ -17,6 +19,8 @@ import { saveVolumeInStore } from './peertube-player-local-storage' +const CacheChunkStore = require('cache-chunk-store') + type PlayOptions = { forcePlay?: boolean, seek?: number, @@ -61,7 +65,7 @@ class PeerTubePlugin extends Plugin { private player: any private currentVideoFile: VideoFile - private torrent: any + private torrent: WebTorrent.Torrent private videoCaptions: VideoJSCaption[] private renderer: any @@ -83,7 +87,7 @@ class PeerTubePlugin extends Plugin { private downloadSpeeds: number[] = [] - constructor (player: any, options: PeertubePluginOptions) { + constructor (player: videojs.Player, options: PeertubePluginOptions) { super(player, options) // Disable auto play on iOS @@ -273,7 +277,7 @@ class PeerTubePlugin extends Plugin { const oldTorrent = this.torrent const torrentOptions = { - store: (chunkLength: any, storeOpts: any) => new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { + store: (chunkLength: number, storeOpts: any) => new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { max: 100 }) } @@ -304,7 +308,7 @@ class PeerTubePlugin extends Plugin { if (err) return this.fallbackToHttp(options, done) - return this.tryToPlay((err: Error) => { + return this.tryToPlay(err => { if (err) return done(err) if (options.seek) this.seek(options.seek) @@ -344,7 +348,7 @@ class PeerTubePlugin extends Plugin { }) } - private tryToPlay (done?: Function) { + private tryToPlay (done?: (err?: Error) => void) { if (!done) done = function () { /* empty */ } const playPromise = this.player.play() @@ -641,7 +645,7 @@ class PeerTubePlugin extends Plugin { return this.videoFiles[Math.floor(this.videoFiles.length / 2)] } - private stopTorrent (torrent: any) { + private stopTorrent (torrent: WebTorrent.Torrent) { torrent.pause() // Pause does not remove actual peers (in particular the webseed peer) torrent.removePeer(torrent[ 'ws' ]) diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts index 98a33077d..d127230fa 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts @@ -1,4 +1,7 @@ -const videojs = require('video.js') +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import * as videojs from 'video.js' + import { VideoFile } from '../../../../shared/models/videos/video.model' import { PeerTubePlugin } from './peertube-videojs-plugin' diff --git a/client/src/assets/player/resolution-menu-button.ts b/client/src/assets/player/resolution-menu-button.ts index 91818efc9..a3c1108ca 100644 --- a/client/src/assets/player/resolution-menu-button.ts +++ b/client/src/assets/player/resolution-menu-button.ts @@ -1,3 +1,7 @@ +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import { Player } from 'video.js' + import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { ResolutionMenuItem } from './resolution-menu-item' @@ -6,7 +10,7 @@ const MenuButton: VideoJSComponentInterface = videojsUntyped.getComponent('MenuB class ResolutionMenuButton extends MenuButton { label: HTMLElement - constructor (player: any, options: any) { + constructor (player: Player, options: any) { super(player, options) this.player = player diff --git a/client/src/assets/player/resolution-menu-item.ts b/client/src/assets/player/resolution-menu-item.ts index afe490abb..b54fd91ef 100644 --- a/client/src/assets/player/resolution-menu-item.ts +++ b/client/src/assets/player/resolution-menu-item.ts @@ -1,9 +1,13 @@ +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import { Player } from 'video.js' + import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' const MenuItem: VideoJSComponentInterface = videojsUntyped.getComponent('MenuItem') class ResolutionMenuItem extends MenuItem { - constructor (player: any, options: any) { + constructor (player: Player, options: any) { const currentResolutionId = player.peertube().getCurrentResolutionId() options.selectable = true options.selected = options.id === currentResolutionId diff --git a/client/src/assets/player/settings-menu-button.ts b/client/src/assets/player/settings-menu-button.ts index f0ccb5862..aa7281727 100644 --- a/client/src/assets/player/settings-menu-button.ts +++ b/client/src/assets/player/settings-menu-button.ts @@ -1,7 +1,10 @@ // Author: Yanko Shterev // Thanks https://github.com/yshterev/videojs-settings-menu -const videojs = require('video.js') +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import * as videojs from 'video.js' + import { SettingsMenuItem } from './settings-menu-item' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { toTitleCase } from './utils' @@ -11,7 +14,7 @@ const Menu: VideoJSComponentInterface = videojsUntyped.getComponent('Menu') const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component') class SettingsButton extends Button { - constructor (player: any, options: any) { + constructor (player: videojs.Player, options: any) { super(player, options) this.playerComponent = player @@ -48,7 +51,7 @@ class SettingsButton extends Button { } } - onDisposeSettingsItem (name: string) { + onDisposeSettingsItem (event: any, name: string) { if (name === undefined) { let children = this.menu.children() @@ -74,7 +77,7 @@ class SettingsButton extends Button { } } - onAddSettingsItem (data: any) { + onAddSettingsItem (event: any, data: any) { const [ entry, options ] = data this.addMenuItem(entry, options) @@ -218,7 +221,7 @@ class SettingsButton extends Button { } class SettingsPanel extends Component { - constructor (player: any, options: any) { + constructor (player: videojs.Player, options: any) { super(player, options) } @@ -232,7 +235,7 @@ class SettingsPanel extends Component { } class SettingsPanelChild extends Component { - constructor (player: any, options: any) { + constructor (player: videojs.Player, options: any) { super(player, options) } @@ -246,7 +249,7 @@ class SettingsPanelChild extends Component { } class SettingsDialog extends Component { - constructor (player: any, options: any) { + constructor (player: videojs.Player, options: any) { super(player, options) this.hide() } diff --git a/client/src/assets/player/settings-menu-item.ts b/client/src/assets/player/settings-menu-item.ts index 2d752b62e..698f4627a 100644 --- a/client/src/assets/player/settings-menu-item.ts +++ b/client/src/assets/player/settings-menu-item.ts @@ -1,6 +1,10 @@ // Author: Yanko Shterev // Thanks https://github.com/yshterev/videojs-settings-menu +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import * as videojs from 'video.js' + import { toTitleCase } from './utils' import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' @@ -9,7 +13,7 @@ const component: VideoJSComponentInterface = videojsUntyped.getComponent('Compon class SettingsMenuItem extends MenuItem { - constructor (player: any, options: any, entry: string, menuButton: VideoJSComponentInterface) { + constructor (player: videojs.Player, options: any, entry: string, menuButton: VideoJSComponentInterface) { super(player, options) this.settingsButton = menuButton @@ -229,7 +233,7 @@ class SettingsMenuItem extends MenuItem { } update (event?: any) { - let target = null + let target: HTMLElement = null let subMenu = this.subMenu.name() if (event && event.type === 'tap') { diff --git a/client/src/assets/player/theater-button.ts b/client/src/assets/player/theater-button.ts index b761f6030..4f8fede3d 100644 --- a/client/src/assets/player/theater-button.ts +++ b/client/src/assets/player/theater-button.ts @@ -1,3 +1,7 @@ +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import * as videojs from 'video.js' + import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' import { saveTheaterInStore, getStoredTheater } from './peertube-player-local-storage' @@ -6,7 +10,7 @@ class TheaterButton extends Button { private static readonly THEATER_MODE_CLASS = 'vjs-theater-enabled' - constructor (player: any, options: any) { + constructor (player: videojs.Player, options: any) { super(player, options) const enabled = getStoredTheater() diff --git a/client/src/assets/player/utils.ts b/client/src/assets/player/utils.ts index 46081c0d2..c87287482 100644 --- a/client/src/assets/player/utils.ts +++ b/client/src/assets/player/utils.ts @@ -12,7 +12,7 @@ const dictionaryBytes: Array<{max: number, type: string}> = [ { max: 1073741824, type: 'MB' }, { max: 1.0995116e12, type: 'GB' } ] -function bytes (value: any) { +function bytes (value: number) { const format = dictionaryBytes.find(d => value < d.max) || dictionaryBytes[dictionaryBytes.length - 1] const calc = Math.floor(value / (format.max / 1024)).toString() diff --git a/client/src/assets/player/webtorrent-info-button.ts b/client/src/assets/player/webtorrent-info-button.ts index 5b9d0a401..c3c1af951 100644 --- a/client/src/assets/player/webtorrent-info-button.ts +++ b/client/src/assets/player/webtorrent-info-button.ts @@ -65,7 +65,7 @@ class WebtorrentInfoButton extends Button { subDivHttp.appendChild(subDivHttpText) div.appendChild(subDivHttp) - this.player_.peertube().on('torrentInfo', (data: any) => { + this.player_.peertube().on('torrentInfo', (event: any, data: any) => { // We are in HTTP fallback if (!data) { subDivHttp.className = 'vjs-peertube-displayed' diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index e5a2d208a..7b269eeb9 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts @@ -17,7 +17,10 @@ import 'core-js/es6/set' // For google bot that uses Chrome 41 and does not understand fetch import 'whatwg-fetch' -const vjs = require('video.js') +// FIXME: something weird with our path definition in tsconfig and typings +// @ts-ignore +import vjs from 'video.js' + import * as Channel from 'jschannel' import { peertubeTranslate, ResultList, VideoDetails } from '../../../../shared' @@ -304,7 +307,7 @@ class PeerTubeEmbed { this.playerOptions = videojsOptions this.player = vjs(this.videoContainerId, videojsOptions, () => { - this.player.on('customError', (data: any) => this.handleError(data.err)) + this.player.on('customError', (event: any, data: any) => this.handleError(data.err)) window[ 'videojsPlayer' ] = this.player diff --git a/client/src/standalone/videos/test-embed.ts b/client/src/standalone/videos/test-embed.ts index b750c2ee6..30a298573 100644 --- a/client/src/standalone/videos/test-embed.ts +++ b/client/src/standalone/videos/test-embed.ts @@ -1,6 +1,6 @@ import './test-embed.scss' import { PeerTubePlayer } from '../player/player' -import { PlayerEventType } from '../player/definitions' +import { PeerTubeResolution, PlayerEventType } from '../player/definitions' window.addEventListener('load', async () => { const urlParts = window.location.href.split('/') @@ -66,11 +66,11 @@ window.addEventListener('load', async () => { updateRates() }) - let updateResolutions = ((resolutions: any) => { + let updateResolutions = ((resolutions: PeerTubeResolution[]) => { let resolutionListEl = document.querySelector('#resolution-list') resolutionListEl.innerHTML = '' - resolutions.forEach((resolution: any) => { + resolutions.forEach(resolution => { if (resolution.active) { let itemEl = document.createElement('strong') itemEl.innerText = `${resolution.label} (active)` diff --git a/client/src/typings.d.ts b/client/src/typings.d.ts index 9615434ac..ef6c9f2f5 100644 --- a/client/src/typings.d.ts +++ b/client/src/typings.d.ts @@ -1,6 +1,6 @@ /* SystemJS module definition */ -declare var module: NodeModule; +declare var module: NodeModule + interface NodeModule { - id: string; - [key: string]: any + id: string } diff --git a/client/yarn.lock b/client/yarn.lock index cbd06d57f..da5a86da4 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -5,6 +5,7 @@ "@angular-devkit/architect@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.8.3.tgz#320c7de2e2e7b984a0e4be51dc60dfe12d4c973e" + integrity sha512-cFku50grgEJPg1CZZ0DXt4CkA6WnV6zN3hCXzpWbOfc/Id923Mml/jsEaoByeXHsRqb5rIZKZAhz7R509ya8OQ== dependencies: "@angular-devkit/core" "0.8.3" rxjs "~6.2.0" @@ -12,6 +13,7 @@ "@angular-devkit/build-angular@^0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.8.3.tgz#e302fdf0f11d589bc518f93afaa7fe5f967bde94" + integrity sha512-NWwWV+6apvCGmllWjwwy9Pmj5uK5tVGL/xIVQgSGC5waLmW/vFWNRXCI50ji5UPP+vAeRi/pWdXWMxuoVA08FA== dependencies: "@angular-devkit/architect" "0.8.3" "@angular-devkit/build-optimizer" "0.8.3" @@ -67,6 +69,7 @@ "@angular-devkit/build-optimizer@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.8.3.tgz#6fdc56bc29313ef9f80af095d5234af750b3277e" + integrity sha512-uvscKyKHkC2NhGt1M+bbHkEESKumiYB0j6NfVpGjYvBPQnXvsm2/shzTkwOb13kEmtaMpnT/iV9EQuODbsh7Rw== dependencies: loader-utils "^1.1.0" source-map "^0.5.6" @@ -76,6 +79,7 @@ "@angular-devkit/build-webpack@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.8.3.tgz#df8fd2195b0304acfd0c64c8af95ec543ec28593" + integrity sha512-PiMKlhUhaAl0G8dbhTTRZB3RpHOE0SuMjnimyCmZt6U6/dM46KPXd2GFtwtDjwpMJEvz6ep9gIPgF2bJMnwzJg== dependencies: "@angular-devkit/architect" "0.8.3" "@angular-devkit/core" "0.8.3" @@ -84,6 +88,7 @@ "@angular-devkit/core@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.8.3.tgz#a7158195dc90997de62ec0b12af3325870182c3b" + integrity sha512-2KHt5osMs3zACYXev20ZU5SXdWoinoKwZkj2caj2LCj9W7QNHmsz34QvaygNq7YdJzF3jkXkdy0GSUgUgDke0w== dependencies: ajv "~6.4.0" chokidar "^2.0.3" @@ -93,6 +98,7 @@ "@angular-devkit/schematics@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.8.3.tgz#32f2e99b43c39864ec63301963329c9190d7c5d2" + integrity sha512-NzsRc0O6nlwCviynZbbkrSWPvTSICviqyYxCXkmEkrbiXqvvahJjSQ/sXQQV0TRkgyTFdhnDF4WIwpeJM4UDeg== dependencies: "@angular-devkit/core" "0.8.3" rxjs "~6.2.0" @@ -100,12 +106,14 @@ "@angular/animations@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-6.1.8.tgz#a1861c7f63aca5bd18ba48e0c736ee7b1f2dac36" + integrity sha512-OUetZPkEfUz0o58bVmx42Jdd/ep+KcgV5xaFvRTwXI/mVbTYgODJUos7aaoyBz6J2EPB/pTA4NMyZU3XFKjDiw== dependencies: tslib "^1.9.0" "@angular/cli@~6.2.3": version "6.2.3" resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-6.2.3.tgz#212e11cd5e2eed994b33feb93c550a84a0e38ba8" + integrity sha512-6cKPEwtVXWRipDcWmJns32TY9LmbsUPhzWh/y7DLW+FzzJv/5amX1/mdMqUS0hTdq4gKm7hZ/muVx6bLooVPxA== dependencies: "@angular-devkit/architect" "0.8.3" "@angular-devkit/core" "0.8.3" @@ -122,12 +130,14 @@ "@angular/common@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/common/-/common-6.1.8.tgz#e9106cecd448f24e3a553a6ea9431e113fe3becd" + integrity sha512-v8U49a7w2hXKX229WCLNF40RYY3v26+QKlN/jxdzKpP4wu5dguX6s6d3+AJdtywvsE8WS1NwOTHWCCWuMiVxrg== dependencies: tslib "^1.9.0" "@angular/compiler-cli@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-6.1.8.tgz#b31842b42a6cee90d0f61f3849fbd15fc6f5ddbf" + integrity sha512-oL7ghO1Yjfp+J349hWrOqsrwJZ6ZAC0mRsXY0SkadnPI3oLzcmysmZV91UUjjZ43KR6lmXXkxo52Gt8bIRYEWQ== dependencies: chokidar "^1.4.2" minimist "^1.2.0" @@ -137,68 +147,80 @@ "@angular/compiler@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-6.1.8.tgz#bbbb70961724c6e5755e05fc5d7f4b39d3bb4a0c" + integrity sha512-a+OblYNKzjBVsYy3FlZd8QkZvWpsDlqb8xGCfUBPazPFlbeDGp4Bvz5KdX0uCTv46OQyh6jeAmKWPt0PVxLrhg== dependencies: tslib "^1.9.0" "@angular/core@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/core/-/core-6.1.8.tgz#2de584e184dc148a55ec153f8125acdf3e88eae6" + integrity sha512-6bMVQmPqpKJZspjNRIEMaGOxCmDWrAZENlofXNgPhQ0mUNh17iTH7XpqjKbW7UWtnTqGcdnDC9dI++P08ggD3g== dependencies: tslib "^1.9.0" "@angular/forms@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-6.1.8.tgz#058429b99fc4c6554fe4943a23d4d6221cb1d9ac" + integrity sha512-S+spi72wxXTTIdB+02xgYdl8UlCYMJ13ast0dfCGStwx/fRUsgo0sWppDpMJz9sseC7xKEJ4U5tsfjTiCQ9dqw== dependencies: tslib "^1.9.0" "@angular/http@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/http/-/http-6.1.8.tgz#8c627a879285a366e960edc15522006474f4ec6f" + integrity sha512-WqOm3mAjU9SdPazi7DTJzPosRzb4+3Dk3gdzMpKwDNP40Zg940UBt62udVmK2ERReIQlQbHgq/+JLiPe3q5O5A== dependencies: tslib "^1.9.0" "@angular/language-service@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-6.1.8.tgz#2b076eca1e415204a4e2e8e4b066d258a7fe16fd" + integrity sha512-AQpjHDlhGuuRvBuWEpq/u49lcaEL/PO2tLMMU5gRqBFYido9wP/6Flz0Oxgu1g5Xjj19Kj00j9uNGgSGc4UCyQ== "@angular/platform-browser-dynamic@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.8.tgz#a0c523857e9e55343e6e1747052141d870d4e870" + integrity sha512-rXsyY6xpeuBTGyEmgx3KFMv1PTgaa1efA1bo8I3KIuUn595GnQamszpXISSySGeMYxEhKFeQWafb/ZDnSg0vWQ== dependencies: tslib "^1.9.0" "@angular/platform-browser@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-6.1.8.tgz#2a0340995ee4b67809f10e039a872afb7f228403" + integrity sha512-ZjnlnKj6K+Z+LvA9dbzckOfB0CwaamTkQGxyODXdYpwEJ/7YOoz+v+LYf6BpKdyqiDHEyVQnkU0YiniNNy+CWA== dependencies: tslib "^1.9.0" "@angular/router@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/router/-/router-6.1.8.tgz#7106a55392e9f920358544f431dace2ef3715630" + integrity sha512-0J7xkN8l4vdmtFETgJFYqHYxUPZz9grTnjeKmEkBSogxpOfJE5doDkAcBraRzB/Nb95MSb+zc4rIjx9Otx2IjA== dependencies: tslib "^1.9.0" "@angular/service-worker@~6.1.4": version "6.1.8" resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-6.1.8.tgz#1f8be0db90d28a019cfeaa684ff00bfe739f3dda" + integrity sha512-hlMRCciD+kCB8Z3DWWUHjYFUK/xVh/gPGrKJu2yw76R+5BwCntre2NyTL/CR9fppxp5PqDrMI3Vzb1Br5ynXxg== dependencies: tslib "^1.9.0" "@angularclass/hmr@^2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@angularclass/hmr/-/hmr-2.1.3.tgz#34e658ed3da37f23b0a200e2da5a89be92bb209f" + integrity sha1-NOZY7T2jfyOwogDi2lqJvpK7IJ8= "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" "@babel/generator@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" + integrity sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q== dependencies: "@babel/types" "^7.0.0" jsesc "^2.5.1" @@ -209,6 +231,7 @@ "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== dependencies: "@babel/helper-get-function-arity" "^7.0.0" "@babel/template" "^7.1.0" @@ -217,18 +240,21 @@ "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== dependencies: "@babel/types" "^7.0.0" "@babel/helper-split-export-declaration@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== dependencies: "@babel/types" "^7.0.0" "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -237,10 +263,12 @@ "@babel/parser@^7.0.0", "@babel/parser@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.0.tgz#a7cd42cb3c12aec52e24375189a47b39759b783e" + integrity sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg== "@babel/template@^7.0.0", "@babel/template@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.0.tgz#58cc9572e1bfe24fe1537fdf99d839d53e517e22" + integrity sha512-yZ948B/pJrwWGY6VxG6XRFsVTee3IQ7bihq9zFpM00Vydu6z5Xwg0C3J644kxI9WOTzd+62xcIsQ+AT1MGhqhA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.1.0" @@ -249,6 +277,7 @@ "@babel/traverse@^7.0.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.0.tgz#503ec6669387efd182c3888c4eec07bcc45d91b2" + integrity sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.0.0" @@ -263,6 +292,7 @@ "@babel/types@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" + integrity sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -271,16 +301,19 @@ "@neos21/bootstrap3-glyphicons@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@neos21/bootstrap3-glyphicons/-/bootstrap3-glyphicons-1.0.1.tgz#e5eeec43e0153d4b51effd9ecb58cdf7029924d7" + integrity sha1-5e7sQ+AVPUtR7/2ey1jN9wKZJNc= "@ng-bootstrap/ng-bootstrap@^3.1.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-3.2.0.tgz#d44b5ed18ad6f489125074b0f6099668cdce841d" + integrity sha512-P+baWRj0Fs2Hm6ZKN2Mtw/xdC6yeuQ0wv2pXGkI231vUb7Jaso28n+9Qc9HSSkfup2Xpm9WVQzhv8AJ4KUOpyA== dependencies: tslib "^1.9.0" "@ngtools/webpack@6.2.3": version "6.2.3" resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-6.2.3.tgz#88313131079d14f6c7e07940e807bb445db6a0aa" + integrity sha512-nRc0qXUO2PfilTFaqfkCy6qdXyq+I3NZCaR4jzJbhlQnaHwd+AWMa5f1tyIjmDq9VT0Xnr/JnArWRhbOwcHt7Q== dependencies: "@angular-devkit/core" "0.8.3" rxjs "~6.2.0" @@ -290,12 +323,14 @@ "@ngx-loading-bar/core@2.2.0", "@ngx-loading-bar/core@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ngx-loading-bar/core/-/core-2.2.0.tgz#ad313bbbd69e4c52cc2d6f0a8b5911272371d16a" + integrity sha512-0jcnEzuhqE/c+4iAumJ/0D4GBWm4RRVas0+qXpX4Wm225SJoE5KupUOlMrvLnJNK2bn8NW31dEj80kJ+UzhE5A== dependencies: tslib "^1.7.1" "@ngx-loading-bar/http-client@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ngx-loading-bar/http-client/-/http-client-2.2.0.tgz#4b5443feed5c53bc5b5f06119f771edbe89799f4" + integrity sha512-+eilxs10KncQWg7DQJLK2AoWnmTPidhVHNxfTOPHJVnmcyAFmTtk+lQbf5Ke3aC4d/KXZklkRyBizqDfvRvc9w== dependencies: "@ngx-loading-bar/core" "2.2.0" tslib "^1.7.1" @@ -303,6 +338,7 @@ "@ngx-loading-bar/router@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ngx-loading-bar/router/-/router-2.2.0.tgz#c13c1a05c620a9da102102322685b671d3c9a1ba" + integrity sha512-/lrWc0ZwGcpmuoa26/h0rC7SRVKgCtsikhy0mVXwrb1VVJ+sRU8vNKbq7aidcvEY5vdi3l0Z7DcVq9+JV/i/BQ== dependencies: "@ngx-loading-bar/core" "2.2.0" tslib "^1.7.1" @@ -310,12 +346,14 @@ "@ngx-meta/core@^6.0.0-rc.1": version "6.0.0" resolved "https://registry.yarnpkg.com/@ngx-meta/core/-/core-6.0.0.tgz#3cdc176e810fbe7b9b2d0d09abc5c8606ec61023" + integrity sha512-44BZrKeJsvAsnJHIgp2PG5RyM/GrkvPbE2HxFhMBgOpHBtNcsosbr3FmdhYMwKDim3fsd6HnNEE21nqEMI9+Nw== dependencies: tslib "~1.9.0" "@ngx-translate/i18n-polyfill@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@ngx-translate/i18n-polyfill/-/i18n-polyfill-1.0.0.tgz#145edb28bcfc1332e1bc25279eadf9d4ed0a20f8" + integrity sha512-+UKmSr6cWBJiMDex6w2FwVjEeVnlEsINDGYvTgRaFRI3/IKZrsSVcfISDcBX2wWr6m4jumfOyCcimIl2TxcaoA== dependencies: glob "7.1.2" tslib "^1.9.0" @@ -324,6 +362,7 @@ "@schematics/angular@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.8.3.tgz#f4b661c5a196a06c050c0ae56809e6dbcfbf9f98" + integrity sha512-kAax08neZQhIsWfqnNdmpSekWbLku+po+1ndfxOMDIhQOAgS/3QTc2mxfSRz/JyQMw1UMSDiXHG8F2Q7gkFIZw== dependencies: "@angular-devkit/core" "0.8.3" "@angular-devkit/schematics" "0.8.3" @@ -332,6 +371,7 @@ "@schematics/update@0.8.3": version "0.8.3" resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.8.3.tgz#e8ca76066fa14a9db732e20cf41ec540c8ee7a13" + integrity sha512-Cf9cRimaPd8s5ew8uT1EUFfmoYm3YUDFPyDKZUuNZS3+OU/j1HMGpGBsuDOvjqA5zB1V3B0OvyfNFOhJem35xg== dependencies: "@angular-devkit/core" "0.8.3" "@angular-devkit/schematics" "0.8.3" @@ -343,72 +383,87 @@ "@types/bittorrent-protocol@*": version "2.2.2" resolved "https://registry.yarnpkg.com/@types/bittorrent-protocol/-/bittorrent-protocol-2.2.2.tgz#169e9633e1bd18e6b830d11cf42e611b1972cb83" + integrity sha512-VAPyW8eGh8FjyGxBSKyPSH60Qkxo3r2W4sDYXCQJYfYD49UnA1SUP+5GQ/4MgbdiEDSp9YW4yuebpIR/vstD5Q== dependencies: "@types/node" "*" "@types/core-js@^2.5.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@types/core-js/-/core-js-2.5.0.tgz#35cc282488de6f10af1d92902899a3b8ca3fbc47" + integrity sha512-qjkHL3wF0JMHMqgm/kmL8Pf8rIiqvueEiZ0g6NVTcBX1WN46GWDr+V5z+gsHUeL0n8TfAmXnYmF7ajsxmBp4PQ== "@types/jasmine@*", "@types/jasmine@^2.8.7": version "2.8.8" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9" + integrity sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg== "@types/jasminewd2@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" + integrity sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg== dependencies: "@types/jasmine" "*" "@types/jest@^23.3.1": version "23.3.2" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.2.tgz#07b90f6adf75d42c34230c026a2529e56c249dbb" + integrity sha512-D1xlXHZpDonVX+VJ28XtcD5xlu8ex6Fc4cQNnrm2wJvlQnbec9RedhCrhQr6kRAE9XWHSec+JPuTmqJ9jC0qsA== "@types/jschannel@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/jschannel/-/jschannel-1.0.0.tgz#2e25447f661de85e221647076e9d257d9fb76d0c" + integrity sha512-cxdvK/GJExxT1pXR5wjqHNeFgMQQVTM9waKraGfUTYiBYjXGYXIS2Otrtlko4ps9o8jfWPhERY10++vmjAyDYg== "@types/lodash-es@^4.17.0": version "4.17.1" resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.1.tgz#56745e5411558362aeca31def918f88f725dd29d" + integrity sha512-3EDZjphPfdjnsWvY11ufYImFMPyQJwIH1eFYRgWQsjOctce06fmNgVf5sfvXBRiaS1o0X50bAln1lfWs8ZO3BA== dependencies: "@types/lodash" "*" "@types/lodash@*": version "4.14.116" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.116.tgz#5ccf215653e3e8c786a58390751033a9adca0eb9" + integrity sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg== "@types/magnet-uri@*": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/magnet-uri/-/magnet-uri-5.1.1.tgz#861aaf64c92a3137dd848fefc55cd352a8ea851a" + integrity sha1-hhqvZMkqMTfdhI/vxVzTUqjqhRo= dependencies: "@types/node" "*" "@types/markdown-it@^0.0.5": version "0.0.5" resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.5.tgz#5cdcbe08e81075d5dbf15466b311359b02a30c2b" + integrity sha512-Bhc4jTJ3g+WU+dBvyhwwssHifjqapauyjV+0cTWVWRjwDAaK9PebZBFpLJmoOCp47qlkDeeT1Y9sV9LyyaG02w== "@types/mousetrap@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@types/mousetrap/-/mousetrap-1.6.0.tgz#c3951ab98b88ff6093cd0b1e4f8591af439141b8" + integrity sha512-Jn2cF8X6RAMiSmJaATGjf2r3GzIfpZQpvnQhKprQ5sAbMaNXc7hc9sA2XHdMl3bEMEQhTV79JVW7n4Pgg7sjtg== "@types/node@*", "@types/node@^10.9.2": version "10.10.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.10.1.tgz#d5c96ca246a418404914d180b7fdd625ad18eca6" + integrity sha512-nzsx28VwfaIykfzMAG9TB3jxF5Nn+1/WMKnmVZc8TsB+LMIVvwUscVn7PAq+LFaY5ng5u4jp5mRROSswo76PPA== "@types/node@^6.0.46": version "6.0.117" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.117.tgz#ccfc2506001404708528d657aad9c1b931111646" + integrity sha512-sihk0SnN8PpiS5ihu5xJQ5ddnURNq4P+XPmW+nORlKkHy21CoZO/IVHK/Wq/l3G8fFW06Fkltgnqx229uPlnRg== "@types/parse-torrent-file@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/parse-torrent-file/-/parse-torrent-file-4.0.1.tgz#056a6c18f3fac0cd7c6c74540f00496a3225976b" + integrity sha1-BWpsGPP6wM18bHRUDwBJajIll2s= dependencies: "@types/node" "*" "@types/parse-torrent@*": version "5.8.2" resolved "https://registry.yarnpkg.com/@types/parse-torrent/-/parse-torrent-5.8.2.tgz#53ab880e38ced2005a79948f0df0c8762539323e" + integrity sha512-wfXO0N2vNkk/W1CEiPbT+7GPiOe3fnRLecdFBw/HNxPyx6czOGqUYi8bw2dbjEmYqWSsqhMdrajEd6o5ry2p4w== dependencies: "@types/magnet-uri" "*" "@types/node" "*" @@ -417,28 +472,34 @@ "@types/q@^0.0.32": version "0.0.32" resolved "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= "@types/sanitize-html@1.18.0": version "1.18.0" resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-1.18.0.tgz#de5cb560a41308ea8474e93b9d10bbb4050692f5" + integrity sha512-cGOcHB/CFqqu4l6b7yVGej6eQ/QsUSsgWHcJPCvfPgXx8Q7t602EdnZ6fZcM019dbdE9/7ecRipBwk8cCMgukw== "@types/selenium-webdriver@^3.0.0": version "3.0.10" resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz#e98cc6f05b4b436277671c784ee2f9d05a634f9b" + integrity sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA== "@types/simple-peer@*": version "6.1.5" resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-6.1.5.tgz#9353f84cefd052a9684b9a5662c983fc2bcfab41" + integrity sha512-huXri3g0rQpIO5jkG630a2sBrh1WXgsd2Gsoc9MqWTRZ0AWqyMEcMCfLXmw5i8AvrZbjAT6BIxW2gEqvpqSYwA== dependencies: "@types/node" "*" -"@types/video.js@6.2.7": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@types/video.js/-/video.js-6.2.7.tgz#ef6f965746c10928dd68c80ad8e50c433b35d49a" +"@types/video.js@^7.2.5": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@types/video.js/-/video.js-7.2.5.tgz#20896c81141d3517c3a89bb6eb97c6a191aa5d4c" + integrity sha512-5WUDOme0q81d58nEqf7qnz7B2Jc4jlA7/MQGOgoqI5VE6oied0KUfk5x/XqPSZSAHNwDDREAkrcK8JXcB+iruQ== "@types/webtorrent@^0.98.4": version "0.98.4" resolved "https://registry.yarnpkg.com/@types/webtorrent/-/webtorrent-0.98.4.tgz#cf8dbe22e3d5cf6915305f7f970b52bca01bf8b4" + integrity sha1-z42+IuPVz2kVMF9/lwtSvKAb+LQ= dependencies: "@types/bittorrent-protocol" "*" "@types/node" "*" @@ -448,6 +509,7 @@ "@videojs/http-streaming@1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-1.2.4.tgz#6245524b76203db5e6750153d4896d007cc7f7cd" + integrity sha512-rwNe4g3L7Dyoa3nTUQ6RmRMV5P/Mg9yG4mSGh83xMKU1RPTAjvQ+iqKTd5zzYn4TqoUAI7L8b5RHsXgBwTnz7A== dependencies: aes-decrypter "3.0.0" global "^4.3.0" @@ -460,6 +522,7 @@ "@webassemblyjs/ast@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" + integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== dependencies: "@webassemblyjs/helper-module-context" "1.7.6" "@webassemblyjs/helper-wasm-bytecode" "1.7.6" @@ -469,38 +532,46 @@ "@webassemblyjs/floating-point-hex-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" + integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== "@webassemblyjs/helper-api-error@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" + integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== "@webassemblyjs/helper-buffer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" + integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== "@webassemblyjs/helper-code-frame@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" + integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== dependencies: "@webassemblyjs/wast-printer" "1.7.6" "@webassemblyjs/helper-fsm@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" + integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== "@webassemblyjs/helper-module-context@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" + integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== dependencies: mamacro "^0.0.3" "@webassemblyjs/helper-wasm-bytecode@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" + integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== "@webassemblyjs/helper-wasm-section@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" + integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -510,22 +581,26 @@ "@webassemblyjs/ieee754@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" + integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" + integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== dependencies: "@xtuc/long" "4.2.1" "@webassemblyjs/utf8@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" + integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== "@webassemblyjs/wasm-edit@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" + integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -539,6 +614,7 @@ "@webassemblyjs/wasm-gen@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" + integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-wasm-bytecode" "1.7.6" @@ -549,6 +625,7 @@ "@webassemblyjs/wasm-opt@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" + integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-buffer" "1.7.6" @@ -558,6 +635,7 @@ "@webassemblyjs/wasm-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" + integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-api-error" "1.7.6" @@ -569,6 +647,7 @@ "@webassemblyjs/wast-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" + integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/floating-point-hex-parser" "1.7.6" @@ -581,6 +660,7 @@ "@webassemblyjs/wast-printer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" + integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/wast-parser" "1.7.6" @@ -589,26 +669,32 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== abab@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= dependencies: mime-types "~2.1.18" negotiator "0.6.1" @@ -616,12 +702,14 @@ accepts@~1.3.4, accepts@~1.3.5: acorn-dynamic-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== dependencies: acorn "^5.0.0" acorn-globals@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" + integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" @@ -629,26 +717,32 @@ acorn-globals@^4.1.0: acorn-walk@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.0.1.tgz#c7827bdbb8e21aa97b609adfa225400d9ae348ba" + integrity sha512-PqVQ8c6a3kyqdsUZlC7nljp3FFuxipBRHKu+7C1h8QygBFlzTaDX5HD383jej3Peed+1aDG8HwkfB1Z1HMNPkw== acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== acorn@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.1.tgz#66e6147e1027704479dc6d9b20d884c572db3cc1" + integrity sha512-SiwgrRuRD2D1R6qjwwoopKcCTkmmIWjy1M15Wv+Nk/7VUsBad4P8GOPft2t6coDZG0TuR5dq9o1v0g8wo7F6+A== addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.4.2: version "1.5.1" resolved "https://registry.yarnpkg.com/addr-to-ip-port/-/addr-to-ip-port-1.5.1.tgz#bfada13fd6aeeeac19f1e9f7d84b4bbab45e5208" + integrity sha512-bA+dyydTNuQtrEDJ0g9eR7XabNhvrM5yZY0hvTbNK3yvoeC73ZqMES6E1cEqH9WPxs4uMtMsOjfwS4FmluhsAA== adm-zip@^0.4.9: version "0.4.11" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" + integrity sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA== aes-decrypter@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-3.0.0.tgz#7848a1c145b9fdbf57ae3e2b5b1bc7cf0644a8fb" + integrity sha1-eEihwUW5/b9Xrj4rWxvHzwZEqPs= dependencies: commander "^2.9.0" global "^4.3.2" @@ -657,24 +751,29 @@ aes-decrypter@3.0.0: after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= agent-base@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" ajv-errors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= ajv@^4.11.2: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -682,6 +781,7 @@ ajv@^4.11.2: ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" @@ -691,6 +791,7 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: ajv@^6.1.0: version "6.5.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -700,6 +801,7 @@ ajv@^6.1.0: ajv@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" + integrity sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y= dependencies: fast-deep-equal "^1.0.0" fast-json-stable-stringify "^2.0.0" @@ -709,10 +811,12 @@ ajv@~6.4.0: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= angular2-hotkeys@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/angular2-hotkeys/-/angular2-hotkeys-2.1.2.tgz#6693ecc2fbbf6f3874fb6715804e88ba6a584c0a" + integrity sha512-Xh4PsqduUWG9AuhLW75n75N2tpwvlqJ43kNrxBFNM+4PjbN2cR5AUsv0URW5ooTEVRyujV4P/d/BcWG+KLSAaA== dependencies: "@types/mousetrap" "^1.6.0" mousetrap "^1.6.0" @@ -720,40 +824,49 @@ angular2-hotkeys@^2.1.2: angular2-notifications@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/angular2-notifications/-/angular2-notifications-1.0.4.tgz#7b3c449dbad45503965f8cd8ac00e998a4463544" + integrity sha512-DjazfwXtLY8BNXKIEw1oEEMy7G6fmldpzP1FYwyVGUwEtZPLQyYGu9MQYCjtVlZMljxpa3qvnv8l9ZUfXAarNA== ansi-colors@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" + integrity sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg== ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: micromatch "^2.1.5" normalize-path "^2.0.0" @@ -761,6 +874,7 @@ anymatch@^1.3.0: anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" @@ -768,26 +882,31 @@ anymatch@^2.0.0: app-root-path@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.1.0.tgz#98bf6599327ecea199309866e8140368fd2e646a" + integrity sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo= append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + integrity sha1-126/jKlNJ24keja61EpLdKthGZE= dependencies: default-require-extensions "^1.0.0" append-transform@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== dependencies: default-require-extensions "^2.0.0" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -795,80 +914,98 @@ are-we-there-yet@~1.1.2: argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= dependencies: arr-flatten "^1.0.1" arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-flatten@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= array-slice@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -877,64 +1014,78 @@ asn1.js@^4.0.0: asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= dependencies: util "0.10.3" assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= ast-types@0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== async@1.x, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= async@^2.1.4, async@^2.4.1, async@^2.5.0, async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== dependencies: lodash "^4.17.10" asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^8.4.1: version "8.6.5" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" + integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig== dependencies: browserslist "^3.2.8" caniuse-lite "^1.0.30000864" @@ -946,6 +1097,7 @@ autoprefixer@^8.4.1: awesome-typescript-loader@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz#a41daf7847515f4925cdbaa3075d61f289e913fc" + integrity sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g== dependencies: chalk "^2.4.1" enhanced-resolve "^4.0.0" @@ -959,14 +1111,17 @@ awesome-typescript-loader@5.2.1: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.6.0, aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -975,6 +1130,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: babel-core@^6.0.0, babel-core@^6.26.0: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: babel-code-frame "^6.26.0" babel-generator "^6.26.0" @@ -999,6 +1155,7 @@ babel-core@^6.0.0, babel-core@^6.26.0: babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: babel-messages "^6.23.0" babel-runtime "^6.26.0" @@ -1012,6 +1169,7 @@ babel-generator@^6.18.0, babel-generator@^6.26.0: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -1019,6 +1177,7 @@ babel-helpers@^6.24.1: babel-jest@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" + integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== dependencies: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" @@ -1026,12 +1185,14 @@ babel-jest@^23.6.0: babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= dependencies: babel-runtime "^6.22.0" babel-plugin-istanbul@^4.1.6: version "4.1.6" resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== dependencies: babel-plugin-syntax-object-rest-spread "^6.13.0" find-up "^2.1.0" @@ -1041,14 +1202,17 @@ babel-plugin-istanbul@^4.1.6: babel-plugin-jest-hoist@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" + integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" + integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= dependencies: babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" @@ -1056,6 +1220,7 @@ babel-preset-jest@^23.2.0: babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -1068,6 +1233,7 @@ babel-register@^6.26.0: babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -1075,6 +1241,7 @@ babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -1085,6 +1252,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -1099,6 +1267,7 @@ babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -1108,30 +1277,37 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -1144,28 +1320,33 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" bencode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bencode/-/bencode-2.0.0.tgz#e72e6b3691d824bd03ea7aa9d752cd1d49a50027" + integrity sha512-wr2HwwrUpfB5c68zmAudOltC7rZ1G0+lQOcnuEcfIM3AWAVnB3rHI3nlgd/2CWTfQ3w3zagKt89zni/M+VLZ8g== dependencies: safe-buffer "^5.1.1" better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= dependencies: callsite "1.0.0" bfj@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" + integrity sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ== dependencies: bluebird "^3.5.1" check-types "^7.3.0" @@ -1175,22 +1356,27 @@ bfj@^6.1.1: big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== binary-search@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/binary-search/-/binary-search-1.3.4.tgz#d15f44ff9226ef309d85247fa0dbfbf659955f56" + integrity sha512-dPxU/vZLnH0tEVjVPgi015oSwqu6oLfCeHywuFRhBE0yM0mYocvleTl8qsdM1YFhRzTRhM1+VzS8XLDVrHPopg== bitfield@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bitfield/-/bitfield-2.0.0.tgz#fbe6767592fe5b4c87ecf1d04126294cc1bfa837" + integrity sha512-4xM4DYejOHQ/qWBfeqBXNA4mJ12PwcOibFYnH1kYh5U9BHciCqEJBqGNVnMJXUhm8mflujNRLSv7IiVQxovgjw== bittorrent-dht@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/bittorrent-dht/-/bittorrent-dht-9.0.0.tgz#08d5ebb51ed91d7e3eea5c275554f4323fb523e5" + integrity sha512-X5ax4G/PLtEPfqOUjqDZ2nmPENndWRMK4sT2jcQ4sXor904zhR40r4KqTyTvWYAljh5/hPPqM9DCUUtqWzRXoQ== dependencies: bencode "^2.0.0" buffer-equals "^1.0.3" @@ -1208,10 +1394,12 @@ bittorrent-dht@^9.0.0: bittorrent-peerid@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/bittorrent-peerid/-/bittorrent-peerid-1.3.0.tgz#a435d3b267c887c586c528b53359845905d7c158" + integrity sha512-SYd5H3RbN1ex+TrWAKXkEkASFWxAR7Tk6iLt9tfAT9ehBvZb/Y3AQDVRVJynlrixcWpnmsLYKI7tkRWgp7ORoQ== bittorrent-protocol@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/bittorrent-protocol/-/bittorrent-protocol-3.0.1.tgz#d3948f4d2b09d538095f7e5f93f64ba5df6b5c2a" + integrity sha512-hnvOzAu9u+2H0OLLL5byoFdz6oz5f3bx5f7R+ItUohTHMq9TgUhEJfcjo7xWtQHSKOVciYWwYTJ4EjczF5RX2A== dependencies: bencode "^2.0.0" bitfield "^2.0.0" @@ -1225,6 +1413,7 @@ bittorrent-protocol@^3.0.0: bittorrent-tracker@^9.0.0: version "9.10.1" resolved "https://registry.yarnpkg.com/bittorrent-tracker/-/bittorrent-tracker-9.10.1.tgz#5de14aac012a287af394d3cc9eda1ec6cc956f11" + integrity sha512-n5zTL/g6Wt0rb2EnkiyiaGYhth7I/N0/xMqGUpvGX/7g1scDGBVPhJnXR8lfp3/OMj681fv40o4q/otECMtZSA== dependencies: bencode "^2.0.0" bittorrent-peerid "^1.0.2" @@ -1256,14 +1445,17 @@ bittorrent-tracker@^9.0.0: blob-to-buffer@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.8.tgz#78eeeb332f1280ed0ca6fb2b60693a8c6d36903a" + integrity sha512-re0AIxakF504MgeMtIyJkVcZ8T5aUxtp/QmTMlmjyb3P44E1BEv5x3LATBGApWAJATyXHtkXRD+gWTmeyYLiQA== blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= block-stream2@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/block-stream2/-/block-stream2-1.1.0.tgz#c738e3a91ba977ebb5e1fef431e13ca11d8639e2" + integrity sha1-xzjjqRupd+u14f70MeE8oR2GOeI= dependencies: defined "^1.0.0" inherits "^2.0.1" @@ -1272,26 +1464,31 @@ block-stream2@^1.0.0: block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: inherits "~2.0.0" blocking-proxy@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" + integrity sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA== dependencies: minimist "^1.2.0" bluebird@^3.3.0, bluebird@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== body-parser@1.18.2: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= dependencies: bytes "3.0.0" content-type "~1.0.4" @@ -1307,6 +1504,7 @@ body-parser@1.18.2: body-parser@^1.16.1: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= dependencies: bytes "3.0.0" content-type "~1.0.4" @@ -1322,6 +1520,7 @@ body-parser@^1.16.1: bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -1333,14 +1532,17 @@ bonjour@^3.5.0: boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= bootstrap@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.1.3.tgz#0eb371af2c8448e8c210411d0cb824a6409a12be" + integrity sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w== brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1348,12 +1550,14 @@ brace-expansion@^1.1.7: braces@^0.1.2: version "0.1.5" resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= dependencies: expand-range "^0.1.0" braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= dependencies: expand-range "^1.8.1" preserve "^0.2.0" @@ -1362,6 +1566,7 @@ braces@^1.8.2: braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -1377,20 +1582,24 @@ braces@^2.3.0, braces@^2.3.1: brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" + integrity sha1-Ql1opY00R/AqBKqJQYf86K+Le44= browser-resolve@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -1402,6 +1611,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" browserify-des "^1.0.0" @@ -1410,6 +1620,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" des.js "^1.0.0" @@ -1419,10 +1630,12 @@ browserify-des@^1.0.0: browserify-package-json@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-package-json/-/browserify-package-json-1.0.1.tgz#98dde8aa5c561fd6d3fe49bbaa102b74b396fdea" + integrity sha1-mN3oqlxWH9bT/km7qhArdLOW/eo= browserify-rsa@^4.0.0: version "4.0.1" resolved "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" randombytes "^2.0.1" @@ -1430,6 +1643,7 @@ browserify-rsa@^4.0.0: browserify-sign@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= dependencies: bn.js "^4.1.1" browserify-rsa "^4.0.0" @@ -1442,12 +1656,14 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" browserslist@^3.2.8: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== dependencies: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" @@ -1455,28 +1671,33 @@ browserslist@^3.2.8: browserstack@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.1.tgz#e2dfa66ffee940ebad0a07f7e00fd4687c455d66" + integrity sha512-O8VMT64P9NOLhuIoD4YngyxBURefaSdR4QdhG8l6HZ9VxtU7jc3m6jLufFwKA5gaf7fetfB2TnRJnMxyob+heg== dependencies: https-proxy-agent "^2.2.1" bs-logger@0.x: version "0.2.5" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.5.tgz#1d82f0cf88864e1341cd9262237f8d0748a49b22" + integrity sha512-uFLE0LFMxrH8Z5Hd9QgivvRbrl/NFkOTHzGhlqQxsnmx5JBLrp4bc249afLL+GccyY/8hkcGi2LpVaOzaEY0nQ== dependencies: fast-json-stable-stringify "^2.0.0" bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= dependencies: node-int64 "^0.4.0" buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" @@ -1484,26 +1705,32 @@ buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: buffer-equals@^1.0.3, buffer-equals@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/buffer-equals/-/buffer-equals-1.0.4.tgz#0353b54fd07fd9564170671ae6f66b9cf10d27f5" + integrity sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U= buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@1.x, buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: version "4.9.1" resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1512,6 +1739,7 @@ buffer@^4.3.0: buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1519,28 +1747,34 @@ buffer@^5.1.0: bufferutil@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.0.tgz#a5078160e443751a4e83b6f4d6d7e26c058326a0" + integrity sha512-jpnqMVLo7sqfUY2W92RC4jjj9TuiOSkjB0k43TxPcrBSntZwXUOl8Krfd3eVEdApuScpSTwYKntm/dXU2T8gnw== dependencies: node-gyp-build "~3.4.0" builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1559,6 +1793,7 @@ cacache@^10.0.4: cacache@^11.0.2: version "11.2.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1578,6 +1813,7 @@ cacache@^11.0.2: cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -1592,20 +1828,24 @@ cache-base@^1.0.1: cache-chunk-store@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cache-chunk-store/-/cache-chunk-store-3.0.0.tgz#49e28823ba4c2b2f8595e7dfa27d73b87939ee5c" + integrity sha512-QNFKTFZo9LJGCZITlXDV44xe4N7AWjZwpbU4YTVAa0ShvKLhn7A/8uaQcZuY33b5lrMIPTLbGmd8uTebzH5T/A== dependencies: lru "^3.1.0" callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= dependencies: no-case "^2.2.0" upper-case "^1.1.1" @@ -1613,6 +1853,7 @@ camel-case@3.0.x: camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= dependencies: camelcase "^2.0.0" map-obj "^1.0.0" @@ -1620,32 +1861,39 @@ camelcase-keys@^2.0.0: camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864: version "1.0.30000885" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz#e889e9f8e7e50e769f2a49634c932b8aee622984" + integrity sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ== capture-exit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= dependencies: rsvp "^3.3.3" caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1656,6 +1904,7 @@ chalk@^1.1.1, chalk@^1.1.3: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -1664,14 +1913,17 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== check-types@^7.3.0: version "7.4.0" resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" + integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== chokidar@^1.4.2: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= dependencies: anymatch "^1.3.0" async-each "^1.0.0" @@ -1687,6 +1939,7 @@ chokidar@^1.4.2: chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: anymatch "^2.0.0" async-each "^1.0.0" @@ -1706,16 +1959,19 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: chownr@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== chrome-trace-event@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== dependencies: tslib "^1.9.0" chunk-store-stream@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/chunk-store-stream/-/chunk-store-stream-3.0.1.tgz#8e0d739226dcb386f44447b82a005b597a1d41d9" + integrity sha512-GA1NIFDZKElhkjiO6QOyzfK1QbUt6M3gFhUU/aR05JYaDqXbU5d7U92cLvGKdItJEDfojky6NQefy5VL5PpDBA== dependencies: block-stream2 "^1.0.0" readable-stream "^2.0.5" @@ -1723,10 +1979,12 @@ chunk-store-stream@^3.0.1: ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -1734,14 +1992,17 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: circular-dependency-plugin@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" + integrity sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA== circular-json@^0.5.5: version "0.5.7" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.7.tgz#b8be478d72ea58c7eeda26bf1cf1fba43d188842" + integrity sha512-/pXoV1JA847qRKPrHbBK6YIBGFF8GOP4wzSgUOA7q0ew0vAv0iJswP+2/nZQ9uzA3Azi7eTrg9L2yzXc/7ZMIA== class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -1751,22 +2012,26 @@ class-utils@^0.3.5: clean-css@4.2.x, clean-css@^4.0.12, clean-css@^4.1.11: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== dependencies: source-map "~0.6.0" cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -1775,6 +2040,7 @@ cliui@^3.2.0: cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -1783,6 +2049,7 @@ cliui@^4.0.0: clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== dependencies: for-own "^1.0.0" is-plain-object "^2.0.4" @@ -1792,26 +2059,32 @@ clone-deep@^2.0.1: clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= closest-file-data@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a" + integrity sha1-l1+HwTLymdJKA3W59jyj+4j3Kzo= closest-to@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/closest-to/-/closest-to-2.0.0.tgz#bb2a860edb7769b62d04821748ae50da24dbefaa" + integrity sha1-uyqGDtt3abYtBIIXSK5Q2iTb76o= co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= codelyzer@^4.4.4: version "4.4.4" resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.4.4.tgz#29b7dbb51ba9ecc45c7300d61280a6564765d402" + integrity sha512-JgFMudx0n50IuE/ydAfnkksCwQkWSVWgYvhDPHZgDUbmsiYC22VuEXKu5l8Hhx9UJsLgjWDLjTAFGj2WaW5DUA== dependencies: app-root-path "^2.1.0" css-selector-tokenizer "^0.7.0" @@ -1823,6 +2096,7 @@ codelyzer@^4.4.4: collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -1830,86 +2104,104 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= colors@*, colors@^1.1.0: version "1.3.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" + integrity sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ== colors@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= combine-lists@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= dependencies: lodash "^4.5.0" combined-stream@1.0.6: version "1.0.6" resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= dependencies: delayed-stream "~1.0.0" combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== dependencies: delayed-stream "~1.0.0" commander@2.17.x, commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commander@^2.12.1, commander@^2.18.0, commander@^2.9.0: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= compact2string@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/compact2string/-/compact2string-1.4.0.tgz#a99cd96ea000525684b269683ae2222d6eea7b49" + integrity sha1-qZzZbqAAUlaEsmloOuIiLW7qe0k= dependencies: ipaddr.js ">= 0.1.5" compare-versions@^3.2.1: version "3.4.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" + integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg== component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= compressible@~2.0.14: version "2.0.15" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== dependencies: mime-db ">= 1.36.0 < 2" compression@^1.5.2: version "1.7.3" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== dependencies: accepts "~1.3.5" bytes "3.0.0" @@ -1922,10 +2214,12 @@ compression@^1.5.2: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -1935,10 +2229,12 @@ concat-stream@^1.5.0, concat-stream@^1.5.2: connect-history-api-fallback@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= connect@^3.6.0: version "3.6.6" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= dependencies: debug "2.6.9" finalhandler "1.1.0" @@ -1948,46 +2244,56 @@ connect@^3.6.0: console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= dependencies: date-now "^0.1.4" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== convert-source-map@^0.3.3: version "0.3.5" resolved "http://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -1999,10 +2305,12 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-webpack-plugin@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" + integrity sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ== dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -2016,18 +2324,22 @@ copy-webpack-plugin@^4.5.2: core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== core-js@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cosmiconfig@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== dependencies: is-directory "^0.3.1" js-yaml "^3.9.0" @@ -2037,6 +2349,7 @@ cosmiconfig@^4.0.0: create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: bn.js "^4.1.0" elliptic "^6.0.0" @@ -2044,6 +2357,7 @@ create-ecdh@^4.0.0: create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" inherits "^2.0.1" @@ -2054,6 +2368,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" resolved "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -2065,6 +2380,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: create-torrent@^3.33.0: version "3.33.0" resolved "https://registry.yarnpkg.com/create-torrent/-/create-torrent-3.33.0.tgz#8a7a2aa2213a799c266c40e4c12f1468ede25105" + integrity sha512-KMd0KuvwVUg1grlRd5skG9ZkSbBYDDkAjDUMLnvxdRn0rL7ph3IwoOk7I8u1yLX4HYjGiLVlWYO55YWNNPjJFA== dependencies: bencode "^2.0.0" block-stream2 "^1.0.0" @@ -2083,6 +2399,7 @@ create-torrent@^3.33.0: cross-spawn@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= dependencies: lru-cache "^4.0.1" which "^1.2.9" @@ -2090,6 +2407,7 @@ cross-spawn@^3.0.0: cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -2098,6 +2416,7 @@ cross-spawn@^5.0.1: cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -2108,6 +2427,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -2124,6 +2444,7 @@ crypto-browserify@^3.11.0: css-loader@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" + integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" @@ -2141,10 +2462,12 @@ css-loader@^1.0.0: css-parse@1.7.x: version "1.7.0" resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= css-select@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= dependencies: boolbase "~1.0.0" css-what "2.1" @@ -2154,6 +2477,7 @@ css-select@^1.1.0: css-selector-tokenizer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY= dependencies: cssesc "^0.1.0" fastparse "^1.1.1" @@ -2162,10 +2486,12 @@ css-selector-tokenizer@^0.7.0: css-what@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= css@^2.0.0: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== dependencies: inherits "^2.0.3" source-map "^0.6.1" @@ -2175,56 +2501,67 @@ css@^2.0.0: cssauron@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + integrity sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg= dependencies: through X.X.X cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== cssstyle@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" + integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== dependencies: cssom "0.3.x" cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: array-find-index "^1.0.1" custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= d@1: version "1.0.0" resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= dependencies: es5-ext "^0.10.9" dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" data-urls@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" + integrity sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg== dependencies: abab "^2.0.0" whatwg-mimetype "^2.1.0" @@ -2233,70 +2570,91 @@ data-urls@^1.0.0: date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" + integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= debug@*: version "4.0.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b" + integrity sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw== dependencies: ms "^2.1.1" debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" debug@^3.1.0: version "3.2.5" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== + dependencies: + ms "^2.1.1" + +debug@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== dependencies: ms "^2.1.1" decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decamelize@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== dependencies: xregexp "4.0.0" decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" deep-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= default-gateway@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== dependencies: execa "^0.10.0" ip-regex "^2.1.0" @@ -2304,36 +2662,42 @@ default-gateway@^2.6.0: default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= dependencies: strip-bom "^2.0.0" default-require-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= dependencies: strip-bom "^3.0.0" define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" @@ -2341,10 +2705,12 @@ define-property@^2.0.2: defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -2357,6 +2723,7 @@ del@^2.2.0: del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= dependencies: globby "^6.1.0" is-path-cwd "^1.0.0" @@ -2368,22 +2735,27 @@ del@^3.0.0: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -2391,40 +2763,49 @@ des.js@^1.0.0: destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= dependencies: repeating "^2.0.0" detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= detect-node@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== dexie@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/dexie/-/dexie-2.0.4.tgz#6027a5e05879424e8f9979d8c14e7420f27e3a11" + integrity sha512-aQ/s1U2wHxwBKRrt2Z/mwFNHMQWhESerFsMYzE+5P5OsIe5o1kgpFMWkzKTtkvkyyEni6mWr/T4HUJuY9xIHLA== di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diffie-hellman@^5.0.0: version "5.0.3" resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" @@ -2433,10 +2814,12 @@ diffie-hellman@^5.0.0: dijkstrajs@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" + integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= dir-glob@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== dependencies: arrify "^1.0.1" path-type "^3.0.0" @@ -2444,10 +2827,12 @@ dir-glob@^2.0.0: dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -2455,12 +2840,14 @@ dns-packet@^1.3.1: dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= dependencies: buffer-indexof "^1.0.0" doctrine@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" + integrity sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= dependencies: esutils "^1.1.6" isarray "0.0.1" @@ -2468,12 +2855,14 @@ doctrine@0.7.2: dom-converter@~0.1: version "0.1.4" resolved "http://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + integrity sha1-pF71cnuJDJv/5tfIduexnLDhfzs= dependencies: utila "~0.3" dom-serialize@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= dependencies: custom-event "~1.0.0" ent "~2.2.0" @@ -2483,6 +2872,7 @@ dom-serialize@^2.2.0: dom-serializer@0: version "0.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= dependencies: domelementtype "~1.1.1" entities "~1.1.1" @@ -2490,46 +2880,55 @@ dom-serializer@0: dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" domhandler@2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= dependencies: domelementtype "1" domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== dependencies: domelementtype "1" domutils@1.1: version "1.1.6" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= dependencies: domelementtype "1" domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= dependencies: dom-serializer "0" domelementtype "1" @@ -2537,6 +2936,7 @@ domutils@1.5.1: domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" domelementtype "1" @@ -2544,10 +2944,12 @@ domutils@^1.5.1: duplexer@^0.1.1: version "0.1.1" resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.4.2, duplexify@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -2557,6 +2959,7 @@ duplexify@^3.4.2, duplexify@^3.6.0: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -2564,18 +2967,22 @@ ecc-jsbn@~0.1.1: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= ejs@^2.5.7, ejs@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== electron-to-chromium@^1.3.47: version "1.3.70" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.70.tgz#ded377256d92d81b4257d36c65aa890274afcfd2" + integrity sha512-WYMjqCnPVS5JA+XvwEnpwucJpVi2+q9cdCFpbhxgWGsCtforFBEkuP9+nCyy/wnU/0SyLcLRIeZct9ayMGcXoQ== elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -2588,20 +2995,24 @@ elliptic@^6.0.0: emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -2618,6 +3029,7 @@ engine.io-client@~3.2.0: engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + integrity sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" @@ -2628,6 +3040,7 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: engine.io@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" + integrity sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -2639,6 +3052,7 @@ engine.io@~3.2.0: enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" @@ -2647,26 +3061,31 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-abstract@^1.5.1: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== dependencies: es-to-primitive "^1.1.1" function-bind "^1.1.1" @@ -2677,6 +3096,7 @@ es-abstract@^1.5.1: es-to-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= dependencies: is-callable "^1.1.1" is-date-object "^1.0.1" @@ -2685,6 +3105,7 @@ es-to-primitive@^1.1.1: es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.46" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw== dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" @@ -2693,6 +3114,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" @@ -2701,20 +3123,24 @@ es6-iterator@~2.0.3: es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== es6-promise@~3.0.2: version "3.0.2" resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= dependencies: es6-promise "^4.0.3" es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= dependencies: d "1" es5-ext "~0.10.14" @@ -2722,6 +3148,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: es6-templates@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= dependencies: recast "~0.11.12" through "~2.3.6" @@ -2729,14 +3156,17 @@ es6-templates@^0.2.3: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= dependencies: esprima "^2.7.1" estraverse "^1.9.1" @@ -2748,6 +3178,7 @@ escodegen@1.8.x: escodegen@^1.9.1: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -2759,6 +3190,7 @@ escodegen@^1.9.1: eslint-scope@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -2766,58 +3198,71 @@ eslint-scope@^4.0.0: esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= esprima@^3.1.3, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" + integrity sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= eventsource@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= dependencies: original ">=0.0.5" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" @@ -2825,12 +3270,14 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: exec-sh@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== dependencies: merge "^1.2.0" execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== dependencies: cross-spawn "^6.0.0" get-stream "^3.0.0" @@ -2843,6 +3290,7 @@ execa@^0.10.0: execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -2855,10 +3303,12 @@ execa@^0.7.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-braces@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= dependencies: array-slice "^0.2.3" array-unique "^0.2.1" @@ -2867,12 +3317,14 @@ expand-braces@^0.1.1: expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= dependencies: is-posix-bracket "^0.1.0" expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -2885,6 +3337,7 @@ expand-brackets@^2.1.4: expand-range@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= dependencies: is-number "^0.1.1" repeat-string "^0.2.2" @@ -2892,12 +3345,14 @@ expand-range@^0.1.0: expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= dependencies: fill-range "^2.1.0" expect@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" + integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== dependencies: ansi-styles "^3.2.0" jest-diff "^23.6.0" @@ -2909,6 +3364,7 @@ expect@^23.6.0: express@^4.16.2, express@^4.16.3: version "4.16.3" resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= dependencies: accepts "~1.3.5" array-flatten "1.1.1" @@ -2944,12 +3400,14 @@ express@^4.16.2, express@^4.16.3: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -2957,10 +3415,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -2969,12 +3429,14 @@ external-editor@^3.0.0: extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= dependencies: is-extglob "^1.0.0" extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -2988,6 +3450,7 @@ extglob@^2.0.4: extract-text-webpack-plugin@4.0.0-beta.0: version "4.0.0-beta.0" resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42" + integrity sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA== dependencies: async "^2.4.1" loader-utils "^1.1.0" @@ -2997,62 +3460,75 @@ extract-text-webpack-plugin@4.0.0-beta.0: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= dependencies: websocket-driver ">=0.5.1" faye-websocket@~0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= dependencies: bser "^2.0.0" figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" file-loader@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg== dependencies: loader-utils "^1.0.2" schema-utils "^0.4.5" @@ -3060,6 +3536,7 @@ file-loader@^1.1.11: file-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" + integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== dependencies: loader-utils "^1.0.2" schema-utils "^1.0.0" @@ -3067,10 +3544,12 @@ file-loader@^2.0.0: filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= fileset@^2.0.2, fileset@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= dependencies: glob "^7.0.3" minimatch "^3.0.3" @@ -3078,10 +3557,12 @@ fileset@^2.0.2, fileset@^2.0.3: filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== filestream@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/filestream/-/filestream-4.1.3.tgz#948fcaade8221f715f5ecaddc54862faaacc9325" + integrity sha1-lI/KregiH3FfXsrdxUhi+qrMkyU= dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -3091,6 +3572,7 @@ filestream@^4.0.0: fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" isobject "^2.0.0" @@ -3101,6 +3583,7 @@ fill-range@^2.1.0: fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -3110,6 +3593,7 @@ fill-range@^4.0.0: finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= dependencies: debug "2.6.9" encodeurl "~1.0.1" @@ -3122,6 +3606,7 @@ finalhandler@1.1.0: finalhandler@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== dependencies: debug "2.6.9" encodeurl "~1.0.2" @@ -3134,6 +3619,7 @@ finalhandler@1.1.1: find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= dependencies: commondir "^1.0.1" make-dir "^1.0.0" @@ -3142,6 +3628,7 @@ find-cache-dir@^1.0.0: find-cache-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== dependencies: commondir "^1.0.1" make-dir "^1.0.0" @@ -3150,6 +3637,7 @@ find-cache-dir@^2.0.0: find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -3157,22 +3645,26 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== dependencies: inherits "^2.0.1" readable-stream "^2.0.4" @@ -3180,46 +3672,55 @@ flush-write-stream@^1.0.0: focus-visible@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-4.1.5.tgz#50b44e2e84c24b831ceca3cce84d57c2b311c855" + integrity sha512-yo/njtk/BB4Z2euzaZe3CZrg4u5s5uEi7ZwbHBJS2quHx51N0mmcx9nTIiImUGlgy+vf26d0CcQluahBBBL/Fw== follow-redirects@^1.0.0: version "1.5.8" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" + integrity sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg== dependencies: debug "=3.1.0" for-each@^0.3.2: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= dependencies: for-in "^1.0.1" for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= dependencies: for-in "^1.0.1" forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.1, form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= dependencies: asynckit "^0.4.0" combined-stream "1.0.6" @@ -3228,20 +3729,24 @@ form-data@~2.3.1, form-data@~2.3.2: forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -3249,12 +3754,14 @@ from2@^2.1.0: fs-access@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= dependencies: null-check "^1.0.0" fs-chunk-store@^1.6.2: version "1.7.0" resolved "https://registry.yarnpkg.com/fs-chunk-store/-/fs-chunk-store-1.7.0.tgz#1c4bcbe93c99af10aa04b65348f2bb27377a4010" + integrity sha512-KhjJmZAs2eqfhCb6PdPx4RcZtheGTz86tpTC5JTvqBn/xda+Nb+0C7dCyjOSN7T76H6a56LvH0SVXQMchLXDRw== dependencies: mkdirp "^0.5.1" random-access-file "^2.0.1" @@ -3266,6 +3773,7 @@ fs-chunk-store@^1.6.2: fs-extra@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" + integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -3274,12 +3782,14 @@ fs-extra@6.0.1: fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: minipass "^2.2.1" fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -3289,10 +3799,12 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" @@ -3300,6 +3812,7 @@ fsevents@^1.0.0, fsevents@^1.2.2, fsevents@^1.2.3: fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -3309,10 +3822,12 @@ fstream@^1.0.0, fstream@^1.0.2: function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -3326,42 +3841,51 @@ gauge@~2.7.3: gaze@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== dependencies: globule "^1.0.0" get-browser-rtc@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" + integrity sha1-u81AyEUaftTvXDc7gWmkCd0dEdk= get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= dependencies: glob-parent "^2.0.0" is-glob "^2.0.0" @@ -3369,12 +3893,14 @@ glob-base@^0.3.0: glob-parent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= dependencies: is-glob "^2.0.0" glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -3382,6 +3908,7 @@ glob-parent@^3.1.0: glob@7.0.x: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3393,6 +3920,7 @@ glob@7.0.x: glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3404,6 +3932,7 @@ glob@7.1.2: glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= dependencies: inflight "^1.0.4" inherits "2" @@ -3414,6 +3943,7 @@ glob@^5.0.15: glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3425,10 +3955,12 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, gl global-modules-path@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" + integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag== global@4.3.2, global@^4.3.0, global@^4.3.1, global@^4.3.2, global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= dependencies: min-document "^2.19.0" process "~0.5.1" @@ -3436,14 +3968,17 @@ global@4.3.2, global@^4.3.0, global@^4.3.1, global@^4.3.2, global@~4.3.0: globals@^11.1.0: version "11.7.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -3455,6 +3990,7 @@ globby@^5.0.0: globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -3465,6 +4001,7 @@ globby@^6.1.0: globby@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= dependencies: array-union "^1.0.1" dir-glob "^2.0.0" @@ -3476,6 +4013,7 @@ globby@^7.1.1: globule@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== dependencies: glob "~7.1.1" lodash "~4.17.10" @@ -3484,14 +4022,17 @@ globule@^1.0.0: graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gzip-size@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" + integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== dependencies: duplexer "^0.1.1" pify "^3.0.0" @@ -3499,10 +4040,12 @@ gzip-size@^5.0.0: handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.3: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== dependencies: async "^2.5.0" optimist "^0.6.1" @@ -3513,10 +4056,12 @@ handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.3: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= dependencies: ajv "^5.1.0" har-schema "^2.0.0" @@ -3524,6 +4069,7 @@ har-validator@~5.0.3: har-validator@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== dependencies: ajv "^5.3.0" har-schema "^2.0.0" @@ -3531,38 +4077,46 @@ har-validator@~5.1.0: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== dependencies: isarray "2.0.1" has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -3571,6 +4125,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -3579,10 +4134,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -3590,12 +4147,14 @@ has-values@^1.0.0: has@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -3603,6 +4162,7 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.5" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -3610,10 +4170,12 @@ hash.js@^1.0.0, hash.js@^1.0.3: he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -3622,6 +4184,7 @@ hmac-drbg@^1.0.0: home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" @@ -3629,14 +4192,17 @@ home-or-tmp@^2.0.0: hoopy@^0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= dependencies: inherits "^2.0.1" obuf "^1.0.0" @@ -3646,16 +4212,19 @@ hpack.js@^2.1.6: html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: whatwg-encoding "^1.0.1" html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= html-loader@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" + integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== dependencies: es6-templates "^0.2.3" fastparse "^1.1.1" @@ -3666,6 +4235,7 @@ html-loader@^0.5.5: html-minifier@^3.2.3, html-minifier@^3.5.8: version "3.5.20" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14" + integrity sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA== dependencies: camel-case "3.0.x" clean-css "4.2.x" @@ -3678,6 +4248,7 @@ html-minifier@^3.2.3, html-minifier@^3.5.8: html-webpack-plugin@^3.0.6, html-webpack-plugin@^3.2.0: version "3.2.0" resolved "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= dependencies: html-minifier "^3.2.3" loader-utils "^0.2.16" @@ -3690,6 +4261,7 @@ html-webpack-plugin@^3.0.6, html-webpack-plugin@^3.2.0: htmlparser2@^3.9.0: version "3.9.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= dependencies: domelementtype "^1.3.0" domhandler "^2.3.0" @@ -3701,6 +4273,7 @@ htmlparser2@^3.9.0: htmlparser2@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= dependencies: domelementtype "1" domhandler "2.1" @@ -3710,10 +4283,12 @@ htmlparser2@~3.3.0: http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= http-errors@1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= dependencies: depd "1.1.1" inherits "2.0.3" @@ -3723,6 +4298,7 @@ http-errors@1.6.2: http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" @@ -3732,10 +4308,12 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: http-parser-js@>=0.4.0: version "0.4.13" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" + integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= http-proxy-middleware@~0.18.0: version "0.18.0" resolved "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== dependencies: http-proxy "^1.16.2" is-glob "^4.0.0" @@ -3745,6 +4323,7 @@ http-proxy-middleware@~0.18.0: http-proxy@^1.13.0, http-proxy@^1.16.2: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== dependencies: eventemitter3 "^3.0.0" follow-redirects "^1.0.0" @@ -3753,6 +4332,7 @@ http-proxy@^1.13.0, http-proxy@^1.16.2: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -3761,10 +4341,12 @@ http-signature@~1.2.0: https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== dependencies: agent-base "^4.1.0" debug "^3.1.0" @@ -3772,74 +4354,89 @@ https-proxy-agent@^2.2.1: iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= icss-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= dependencies: postcss "^6.0.1" ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== dependencies: minimatch "^3.0.4" ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= immediate-chunk-store@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/immediate-chunk-store/-/immediate-chunk-store-2.0.0.tgz#f313fd0cc71396d8911ad031179e1cccfda3da18" + integrity sha512-5s6NiCGbtWc+OQA60jrre54w12U7tynIyUNjO5LJjNA5lWwvCv6640roq8Wk/wIuaqnd4Pgtp453OyJ7hbONkQ== immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= dependencies: import-from "^2.1.0" import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= dependencies: resolve-from "^3.0.0" import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== dependencies: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" @@ -3847,6 +4444,7 @@ import-local@^1.0.0: import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" @@ -3854,28 +4452,34 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= in-publish@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= dependencies: repeating "^2.0.0" indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= individual@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" + integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -3883,18 +4487,22 @@ inflight@^1.0.4: inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -3913,6 +4521,7 @@ inquirer@^6.0.0: internal-ip@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" + integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== dependencies: default-gateway "^2.6.0" ipaddr.js "^1.5.2" @@ -3920,108 +4529,130 @@ internal-ip@^3.0.1: interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= ip-set@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ip-set/-/ip-set-1.0.1.tgz#633b66d0bd6c8d0de968d053263c9120d3b6727e" + integrity sha1-Yztm0L1sjQ3paNBTJjyRINO2cn4= dependencies: ip "^1.1.3" ip@^1.0.1, ip@^1.1.0, ip@^1.1.3, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= "ipaddr.js@>= 0.1.5", ipaddr.js@^1.0.1, ipaddr.js@^1.5.2: version "1.8.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-ascii@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-ascii/-/is-ascii-1.0.0.tgz#f02ad0259a0921cd199ff21ce1b09e0f6b4e3929" + integrity sha1-8CrQJZoJIc0Zn/Ic4bCeD2tOOSk= is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^1.0.0: version "1.0.0" resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" is-callable@^1.1.1, is-callable@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: ci-info "^1.5.0" is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -4030,6 +4661,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -4038,208 +4670,252 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= is-equal-shallow@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= dependencies: is-primitive "^2.0.0" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596" + integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY= is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= is-generator-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= dependencies: is-extglob "^1.0.0" is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: is-extglob "^2.1.1" is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= dependencies: kind-of "^3.0.2" is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: path-is-inside "^1.0.1" is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= dependencies: has "^1.0.1" is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= isarray@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" + integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA== isbinaryfile@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== dependencies: buffer-alloc "^1.2.0" isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-api@^1.3.1: version "1.3.7" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" + integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== dependencies: async "^2.1.4" fileset "^2.0.2" @@ -4256,6 +4932,7 @@ istanbul-api@^1.3.1: istanbul-api@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.0.6.tgz#cd7b33ee678f6c01531d05f5e567ebbcd25f8ecc" + integrity sha512-8W5oeAGWXhtTJjAyVfvavOLVyZCTNCKsyF6GON/INKlBdO7uJ/bv3qnPj5M6ERKzmMCJS1kntnjjGuJ86fn3rQ== dependencies: async "^2.6.1" compare-versions "^3.2.1" @@ -4273,6 +4950,7 @@ istanbul-api@^2.0.5: istanbul-instrumenter-loader@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949" + integrity sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w== dependencies: convert-source-map "^1.5.0" istanbul-lib-instrument "^1.7.3" @@ -4282,26 +4960,31 @@ istanbul-instrumenter-loader@^3.0.1: istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== istanbul-lib-coverage@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" + integrity sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA== istanbul-lib-hook@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" + integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== dependencies: append-transform "^0.4.0" istanbul-lib-hook@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.1.tgz#918a57b75a0f951d552a08487ca1fa5336433d72" + integrity sha512-ufiZoiJ8CxY577JJWEeFuxXZoMqiKpq/RqZtOAYuQLvlkbJWscq9n3gc4xrCGH9n4pW0qnTxOz1oyMmVtk8E1w== dependencies: append-transform "^1.0.0" istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-instrument@^1.7.3: version "1.10.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" + integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -4314,6 +4997,7 @@ istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-i istanbul-lib-instrument@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz#b5f066b2a161f75788be17a9d556f40a0cf2afc9" + integrity sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ== dependencies: "@babel/generator" "^7.0.0" "@babel/parser" "^7.0.0" @@ -4326,6 +5010,7 @@ istanbul-lib-instrument@^3.0.0: istanbul-lib-report@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== dependencies: istanbul-lib-coverage "^1.2.1" mkdirp "^0.5.1" @@ -4335,6 +5020,7 @@ istanbul-lib-report@^1.1.5: istanbul-lib-report@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.2.tgz#430a2598519113e1da7af274ba861bd42dd97535" + integrity sha512-rJ8uR3peeIrwAxoDEbK4dJ7cqqtxBisZKCuwkMtMv0xYzaAnsAi3AHrHPAAtNXzG/bcCgZZ3OJVqm1DTi9ap2Q== dependencies: istanbul-lib-coverage "^2.0.1" make-dir "^1.3.0" @@ -4343,6 +5029,7 @@ istanbul-lib-report@^2.0.2: istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" + integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== dependencies: debug "^3.1.0" istanbul-lib-coverage "^1.2.1" @@ -4353,6 +5040,7 @@ istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: istanbul-lib-source-maps@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-2.0.1.tgz#ce8b45131d8293fdeaa732f4faf1852d13d0a97e" + integrity sha512-30l40ySg+gvBLcxTrLzR4Z2XTRj3HgRCA/p2rnbs/3OiTaoj054gAbuP5DcLOtwqmy4XW8qXBHzrmP2/bQ9i3A== dependencies: debug "^3.1.0" istanbul-lib-coverage "^2.0.1" @@ -4363,18 +5051,21 @@ istanbul-lib-source-maps@^2.0.1: istanbul-reports@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== dependencies: handlebars "^4.0.3" istanbul-reports@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.0.1.tgz#fb8d6ea850701a3984350b977a969e9a556116a7" + integrity sha512-CT0QgMBJqs6NJLF678ZHcquUAZIoBIUNzdJrRJfpkI9OnzG6MkUfHxbJC3ln981dMswC7/B1mfX3LNkhgJxsuw== dependencies: handlebars "^4.0.11" istanbul@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= dependencies: abbrev "1.0.x" async "1.x" @@ -4394,26 +5085,31 @@ istanbul@^0.4.5: jasmine-core@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.2.1.tgz#8e4ff5b861603ee83343f2b49eee6a0ffe9650ce" + integrity sha512-pa9tbBWgU0EE4SWgc85T4sa886ufuQdsgruQANhECYjwqgV4z7Vw/499aCaP8ZH79JDS4vhm8doDG9HO4+e4sA== jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= jasmine-diff@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8" + integrity sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg= dependencies: diff "^3.2.0" jasmine-spec-reporter@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" + integrity sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg== dependencies: colors "1.1.2" jasmine@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= dependencies: exit "^0.1.2" glob "^7.0.6" @@ -4422,16 +5118,19 @@ jasmine@2.8.0: jasminewd2@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= jest-changed-files@^23.4.2: version "23.4.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" + integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== dependencies: throat "^4.0.0" jest-cli@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" + integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -4473,6 +5172,7 @@ jest-cli@^23.6.0: jest-config@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" + integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== dependencies: babel-core "^6.0.0" babel-jest "^23.6.0" @@ -4492,6 +5192,7 @@ jest-config@^23.6.0: jest-diff@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== dependencies: chalk "^2.0.1" diff "^3.2.0" @@ -4501,12 +5202,14 @@ jest-diff@^23.6.0: jest-docblock@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" + integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= dependencies: detect-newline "^2.1.0" jest-each@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" + integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== dependencies: chalk "^2.0.1" pretty-format "^23.6.0" @@ -4514,6 +5217,7 @@ jest-each@^23.6.0: jest-environment-jsdom@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" + integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= dependencies: jest-mock "^23.2.0" jest-util "^23.4.0" @@ -4522,6 +5226,7 @@ jest-environment-jsdom@^23.4.0: jest-environment-node@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" + integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= dependencies: jest-mock "^23.2.0" jest-util "^23.4.0" @@ -4529,10 +5234,12 @@ jest-environment-node@^23.4.0: jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== jest-haste-map@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" + integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" @@ -4546,6 +5253,7 @@ jest-haste-map@^23.6.0: jest-jasmine2@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" + integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== dependencies: babel-traverse "^6.0.0" chalk "^2.0.1" @@ -4563,12 +5271,14 @@ jest-jasmine2@^23.6.0: jest-leak-detector@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" + integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== dependencies: pretty-format "^23.6.0" jest-matcher-utils@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" + integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" @@ -4577,6 +5287,7 @@ jest-matcher-utils@^23.6.0: jest-message-util@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" + integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" @@ -4587,10 +5298,12 @@ jest-message-util@^23.4.0: jest-mock@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" + integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= jest-preset-angular@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-6.0.1.tgz#40a6c16ca5bbf3ac83a8594ac190643d7c6e7a07" + integrity sha512-7b54ZOntt8wtf39X838vZZmXWkZYVRtk9bCO66yQhkmFkmLaxULDHdbUobiD+f8sn5Zb2u9grhOQbZZ+/RaY0g== dependencies: "@types/jest" "^23.3.1" jest-zone-patch "^0.0.8" @@ -4599,10 +5312,12 @@ jest-preset-angular@^6.0.0: jest-regex-util@^23.3.0: version "23.3.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" + integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= jest-resolve-dependencies@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" + integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== dependencies: jest-regex-util "^23.3.0" jest-snapshot "^23.6.0" @@ -4610,6 +5325,7 @@ jest-resolve-dependencies@^23.6.0: jest-resolve@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" + integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== dependencies: browser-resolve "^1.11.3" chalk "^2.0.1" @@ -4618,6 +5334,7 @@ jest-resolve@^23.6.0: jest-runner@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" + integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== dependencies: exit "^0.1.2" graceful-fs "^4.1.11" @@ -4636,6 +5353,7 @@ jest-runner@^23.6.0: jest-runtime@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" + integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -4662,10 +5380,12 @@ jest-runtime@^23.6.0: jest-serializer@^23.0.1: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" + integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= jest-snapshot@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" + integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== dependencies: babel-types "^6.0.0" chalk "^2.0.1" @@ -4681,6 +5401,7 @@ jest-snapshot@^23.6.0: jest-util@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" + integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= dependencies: callsites "^2.0.0" chalk "^2.0.1" @@ -4694,6 +5415,7 @@ jest-util@^23.4.0: jest-validate@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" + integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" @@ -4703,6 +5425,7 @@ jest-validate@^23.6.0: jest-watcher@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" + integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -4711,16 +5434,19 @@ jest-watcher@^23.4.0: jest-worker@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" + integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= dependencies: merge-stream "^1.0.1" jest-zone-patch@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/jest-zone-patch/-/jest-zone-patch-0.0.8.tgz#90fa3b5b60e95ad3e624dd2c3eb59bb1dcabd371" + integrity sha1-kPo7W2DpWtPmJN0sPrWbsdyr03E= jest@^23.5.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" + integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== dependencies: import-local "^1.0.0" jest-cli "^23.6.0" @@ -4728,22 +5454,27 @@ jest@^23.5.0: jquery@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" + integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg== js-base64@^2.1.8: version "2.4.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" + integrity sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4751,14 +5482,17 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jschannel@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/jschannel/-/jschannel-1.0.2.tgz#8932010e9c6042a27bc93b918dac2e267976ae14" + integrity sha1-iTIBDpxgQqJ7yTuRjawuJnl2rhQ= jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== dependencies: abab "^2.0.0" acorn "^5.5.3" @@ -4790,68 +5524,83 @@ jsdom@^11.5.1: jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 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" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= dependencies: jsonify "~0.0.0" json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= json5@2.x: version "2.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.0.1.tgz#3d6d0d1066039eb50984e66a7840e4f4b7a2c660" + integrity sha512-t6N/86QDIRYvOL259jR5c5TbtMnekl2Ib314mGeMh37zAwjgbWHieqijPH7pWaogmJq1F2I4Sphg19U1s+ZnXQ== dependencies: minimist "^1.2.0" json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: graceful-fs "^4.1.6" jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -4861,6 +5610,7 @@ jsprim@^1.2.2: jszip@^3.1.3: version "3.1.5" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== dependencies: core-js "~2.3.0" es6-promise "~3.0.2" @@ -4871,10 +5621,12 @@ jszip@^3.1.3: junk@^1, junk@^2.1.0: version "1.0.3" resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" + integrity sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI= k-bucket@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-4.0.1.tgz#3fc2e5693f0b7bff90d7b6b476edd6087955d542" + integrity sha512-YvDpmY3waI999h1zZoW1rJ04fZrgZ+5PAlVmvwDHT6YO/Q1AOhdel07xsKy9eAvJjQ9xZV1wz3rXKqEfaWvlcQ== dependencies: inherits "^2.0.1" randombytes "^2.0.3" @@ -4882,12 +5634,14 @@ k-bucket@^4.0.0: k-bucket@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-5.0.0.tgz#ef7a401fcd4c37cd31dceaa6ae4440ca91055e01" + integrity sha512-r/q+wV/Kde62/tk+rqyttEJn6h0jR7x+incdMVSYTqK73zVxVrzJa70kJL49cIKen8XjIgUZKSvk8ktnrQbK4w== dependencies: randombytes "^2.0.3" k-rpc-socket@^1.7.2: version "1.8.0" resolved "https://registry.yarnpkg.com/k-rpc-socket/-/k-rpc-socket-1.8.0.tgz#9a4dd6a4f3795ed847ffa156579cc389990bd1f2" + integrity sha512-f/9TynsO8YYjZ6JjNNtSSH7CJcIHcio1buy3zqByGxb/GX8AWLdL6FZEWTrN8V3/J7W4/E0ZTQQ+Jt2rVq7ELg== dependencies: bencode "^2.0.0" buffer-equals "^1.0.4" @@ -4896,6 +5650,7 @@ k-rpc-socket@^1.7.2: k-rpc@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/k-rpc/-/k-rpc-5.0.0.tgz#a72651860c96db440579e4c9f38dce8a42b481a8" + integrity sha512-vCH2rQdfMOS+MlUuTSuar1pS2EMrltURf9LmAR9xR6Jik0XPlMX3vEixgqMn17wKmFVCublJqSJ4hJIP7oKZ3Q== dependencies: buffer-equals "^1.0.3" k-bucket "^4.0.0" @@ -4906,6 +5661,7 @@ k-rpc@^5.0.0: karma-chrome-launcher@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== dependencies: fs-access "^1.0.0" which "^1.2.1" @@ -4913,6 +5669,7 @@ karma-chrome-launcher@^2.2.0: karma-coverage-istanbul-reporter@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.4.tgz#402ae4ed6eadb9d9dafbd408ffda17897c0d003a" + integrity sha512-xJS7QSQIVU6VK9HuJ/ieE5yynxKhjCCkd96NLY/BX/HXsx0CskU9JJiMQbd4cHALiddMwI4OWh1IIzeWrsavJw== dependencies: istanbul-api "^2.0.5" minimatch "^3.0.4" @@ -4920,20 +5677,24 @@ karma-coverage-istanbul-reporter@^2.0.2: karma-jasmine-html-reporter@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.3.1.tgz#17db92e76ecbce97b281c97c9ac3d8b1723848f9" + integrity sha512-J8pUc58QeRhpHQ+sXBRZ016ZW9ZOjU4vjYA6Jah69WvBaqR7tGvXUzy7w/DoULbNrD8+hnZCpvdeEtqXtirY2g== karma-jasmine@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3" + integrity sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM= karma-source-map-support@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz#36dd4d8ca154b62ace95696236fae37caf0a7dde" + integrity sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q== dependencies: source-map-support "^0.5.5" karma@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/karma/-/karma-3.0.0.tgz#6da83461a8a28d8224575c3b5b874e271b4730c3" + integrity sha512-ZTjyuDXVXhXsvJ1E4CnZzbCjSxD6sEdzEsFYogLuZM0yqvg/mgz+O+R1jb0J7uAQeuzdY8kJgx6hSNXLwFuHIQ== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -4966,54 +5727,65 @@ karma@^3.0.0: killable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== kleur@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== last-one-wins@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/last-one-wins/-/last-one-wins-1.0.4.tgz#c1bfd0cbcb46790ec9156b8d1aee8fcb86cda22a" + integrity sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio= lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: invert-kv "^1.0.0" lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== less-loader@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" + integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg== dependencies: clone "^2.1.1" loader-utils "^1.1.0" @@ -5022,6 +5794,7 @@ less-loader@^4.1.0: less@^3.7.1: version "3.8.1" resolved "https://registry.yarnpkg.com/less/-/less-3.8.1.tgz#f31758598ef5a1930dd4caefa9e4340641e71e1d" + integrity sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q== dependencies: clone "^2.1.2" optionalDependencies: @@ -5037,10 +5810,12 @@ less@^3.7.1: leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -5048,24 +5823,28 @@ levn@~0.3.0: license-webpack-plugin@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.4.0.tgz#be504a849ba7d736f1a6da4b133864f30af885fa" + integrity sha512-iwuNFMWbXS76WiQXJBTs8/7Tby4NQnY8AIkBMuJG5El79UT8zWrJQMfpW+KRXt4Y2Bs5uk+Myg/MO7ROSF8jzA== dependencies: ejs "^2.5.7" lie@~3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= dependencies: immediate "~3.0.5" linkify-it@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f" + integrity sha1-2UpGSPmxwXnWT6lykSaL22zpQ08= dependencies: uc.micro "^1.0.1" linkifyjs@^2.1.5: version "2.1.7" resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-2.1.7.tgz#e5d68d2ae30b9c055e1d74cc40f9a31d3abb4012" + integrity sha512-Cbn77BnYEslpAObZZoP6GVQHF1j5T6RsDydNq5RVxIy4eiZAiADRx7qHfWzfEMQecc1PtZFog1AsCGGX2WjQLA== optionalDependencies: jquery "^3.3.1" react "^16.4.2" @@ -5074,6 +5853,7 @@ linkifyjs@^2.1.5: load-ip-set@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/load-ip-set/-/load-ip-set-2.1.0.tgz#2d50b737cae41de4e413d213991d4083a3e1784b" + integrity sha512-taz7U6B+F7Zq90dfIKwqsB1CrFKelSEmMGC68OUqem8Cgd1QZygQBYb2Fk9i6muBSfH4xwF/Pjt4KKlAdOyWZw== dependencies: ip-set "^1.0.0" netmask "^1.0.6" @@ -5084,6 +5864,7 @@ load-ip-set@^2.1.0: load-json-file@^1.0.0: version "1.1.0" resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -5094,6 +5875,7 @@ load-json-file@^1.0.0: load-json-file@^2.0.0: version "2.0.0" resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -5103,10 +5885,12 @@ load-json-file@^2.0.0: loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= loader-utils@^0.2.16: version "0.2.17" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -5116,6 +5900,7 @@ loader-utils@^0.2.16: loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -5124,6 +5909,7 @@ loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1 locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -5131,6 +5917,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" @@ -5138,60 +5925,74 @@ locate-path@^3.0.0: lodash-es@^4.17.4: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0" + integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q== lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= lodash.mergewith@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= lodash@^4.0.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== log-symbols@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: chalk "^2.0.1" log4js@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.5.tgz#b80146bfebad68b430d4f3569556d8a6edfef303" + integrity sha512-IX5c3G/7fuTtdr0JjOT2OIR12aTESVhsH6cEsijloYwKgcPRlO6DgOU72v0UFhWcoV1HN6+M3dwT89qVPLXm0w== dependencies: circular-json "^0.5.5" date-format "^1.2.0" @@ -5202,10 +6003,12 @@ log4js@^3.0.0: loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= loglevelnext@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" + integrity sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A== dependencies: es6-symbol "^3.1.1" object.assign "^4.1.0" @@ -5213,12 +6016,14 @@ loglevelnext@^1.0.1: loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loud-rejection@^1.0.0, loud-rejection@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" @@ -5226,14 +6031,17 @@ loud-rejection@^1.0.0, loud-rejection@^1.6.0: lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + integrity sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0= lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -5241,16 +6049,19 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.3: lru@^3.0.0, lru@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lru/-/lru-3.1.0.tgz#ea7fb8546d83733396a13091d76cfeb4c06837d5" + integrity sha1-6n+4VG2DczOWoTCR12z+tMBoN9U= dependencies: inherits "^2.0.1" m3u8-parser@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-4.2.0.tgz#c8e0785fd17f741f4408b49466889274a9e36447" + integrity sha512-LVHw0U6IPJjwk9i9f7Xe26NqaUHTNlIt4SSWoEfYFROeVKHN6MIjOhbRheI3dg8Jbq5WCuMFQ0QU3EgZpmzFPg== magnet-uri@^5.1.3: version "5.2.4" resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-5.2.4.tgz#7afe5b736af04445aff744c93a890a3710077688" + integrity sha512-VYaJMxhr8B9BrCiNINUsuhaEe40YnG+AQBwcqUKO66lSVaI9I3A1iH/6EmEwRI8OYUg5Gt+4lLE7achg676lrg== dependencies: thirty-two "^1.0.1" uniq "^1.0.1" @@ -5258,46 +6069,55 @@ magnet-uri@^5.1.3: make-dir@^1.0.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" make-error@1.x: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: tmpl "1.0.x" mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== map-age-cleaner@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" + integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" markdown-it@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== dependencies: argparse "^1.0.7" entities "~1.1.1" @@ -5308,10 +6128,12 @@ markdown-it@^8.4.0: math-random@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= dependencies: hash-base "^3.0.0" inherits "^2.0.1" @@ -5319,14 +6141,17 @@ md5.js@^1.3.4: mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= mediasource@^2.0.0, mediasource@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.2.2.tgz#2fe826f14e51da97fa4bf87be7b808a0b11d3a4c" + integrity sha512-yIyAJMcu1mudTkxZ0jDAKnZJJba4eWPCxxtZRMpoaA4/AI7m7nqbRjmdxmi+x3hKTohb5vC9Yd3IBF/SUzp1vQ== dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -5335,12 +6160,14 @@ mediasource@^2.0.0, mediasource@^2.1.0: mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= dependencies: mimic-fn "^1.0.0" mem@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^1.0.0" @@ -5349,10 +6176,12 @@ mem@^4.0.0: memory-chunk-store@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/memory-chunk-store/-/memory-chunk-store-1.3.0.tgz#ae99e7e3b58b52db43d49d94722930d39459d0c4" + integrity sha512-6LsOpHKKhxYrLhHmOJdBCUtSO7op5rUs1pag0fhjHo0QiXRyna0bwYf4EmQuL7InUeF2J7dUMPr6VMogRyf9NA== memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -5360,6 +6189,7 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= dependencies: camelcase-keys "^2.0.0" decamelize "^1.1.2" @@ -5375,24 +6205,29 @@ meow@^3.7.0: merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= dependencies: readable-stream "^2.0.1" merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= dependencies: arr-diff "^2.0.0" array-unique "^0.2.1" @@ -5411,6 +6246,7 @@ micromatch@^2.1.5, micromatch@^2.3.11: micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -5429,6 +6265,7 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" @@ -5436,42 +6273,51 @@ miller-rabin@^4.0.0: "mime-db@>= 1.36.0 < 2", mime-db@~1.36.0: version "1.36.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: version "2.1.20" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== dependencies: mime-db "~1.36.0" mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.0.3, mime@^2.2.0, mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= dependencies: dom-walk "^0.1.0" mini-css-extract-plugin@~0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" + integrity sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg== dependencies: loader-utils "^1.1.0" schema-utils "^1.0.0" @@ -5480,32 +6326,39 @@ mini-css-extract-plugin@~0.4.0: minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" + integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -5513,12 +6366,14 @@ minipass@^2.2.1, minipass@^2.3.3: minizlib@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== dependencies: minipass "^2.2.1" mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -5534,6 +6389,7 @@ mississippi@^2.0.0: mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -5549,6 +6405,7 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -5556,6 +6413,7 @@ mixin-deep@^1.2.0: mixin-object@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= dependencies: for-in "^0.1.3" is-extendable "^0.1.1" @@ -5563,16 +6421,19 @@ mixin-object@^2.0.1: mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" mousetrap@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.2.tgz#caadd9cf886db0986fb2fee59a82f6bd37527587" + integrity sha512-jDjhi7wlHwdO6q6DS7YRmSHcuI+RVxadBkLt3KHrhd3C2b+w5pKefg3oj5beTcHZyVFA9Aksf+yEE1y5jxUjVA== move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -5584,6 +6445,7 @@ move-concurrently@^1.0.1: mp4-box-encoding@^1.1.0, mp4-box-encoding@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/mp4-box-encoding/-/mp4-box-encoding-1.3.0.tgz#2a6f750947ff68c3a498fd76cd6424c53d995d48" + integrity sha512-U4pMLpjT/UzB8d36dxj6Mf1bG9xypEvgbuRIa1fztRXNKKTCAtRxsnFZhNOd7YDFOKtjBgssYGvo4H/Q3ZY1MA== dependencies: buffer-alloc "^1.2.0" buffer-from "^1.1.0" @@ -5592,6 +6454,7 @@ mp4-box-encoding@^1.1.0, mp4-box-encoding@^1.3.0: mp4-stream@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/mp4-stream/-/mp4-stream-2.0.3.tgz#30acee07709d323f8dcd87a07b3ce9c3c4bfb364" + integrity sha512-5NzgI0+bGakoZEwnIYINXqB3mnewkt3Y7jcvkXsTubnCNUSdM8cpP0Vemxf6FLg0qUN8fydTgNMVAc3QU8B92g== dependencies: buffer-alloc "^1.1.0" inherits "^2.0.1" @@ -5602,6 +6465,7 @@ mp4-stream@^2.0.0: mpd-parser@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-0.6.1.tgz#27e7aafe075817846ce55406ac03711df1ce0eb7" + integrity sha512-3ucsY5NJMABltTLtYMSDfqZpvKV4yF8YvMx91hZFrHiblseuoKq4XUQ5IkcdtFAIRBAkPhXMU3/eunTFNCNsHw== dependencies: global "^4.3.0" url-toolkit "^2.1.1" @@ -5609,18 +6473,22 @@ mpd-parser@0.6.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= multicast-dns@^6.0.1: version "6.2.3" resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== dependencies: dns-packet "^1.3.1" thunky "^1.0.2" @@ -5628,6 +6496,7 @@ multicast-dns@^6.0.1: multistream@^2.0.2, multistream@^2.0.5: version "2.1.1" resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c" + integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ== dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -5635,18 +6504,22 @@ multistream@^2.0.2, multistream@^2.0.5: mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= mux.js@4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-4.5.1.tgz#1d70f1ad9b951315e16390d47be8fc42fd080194" + integrity sha512-j4rEyZKCRinGaSiBxPx9YD9B782TMPHPOlKyaMY07vIGTNYg4ouCEBvL6zX9Hh1k1fKZ5ZF3S7c+XVk6PB+Igw== nan@^2.10.0, nan@^2.9.2: version "2.11.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" + integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -5663,10 +6536,12 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" + integrity sha512-GPL22d/U9cai87FcCPO6e+MT3vyHS2j+zwotakDc7kE2DtUAqFKMXLJCTtRp+5S75vXIwQPvIxkvlctxf9q4gQ== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -5675,32 +6550,39 @@ needle@^2.2.1: negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= neo-async@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" + integrity sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw== netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= next-event@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-event/-/next-event-1.0.0.tgz#e7778acde2e55802e0ad1879c39cf6f75eda61d8" + integrity sha1-53eKzeLlWALgrRh5w5z2917aYdg= next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= ng2-material-dropdown@0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/ng2-material-dropdown/-/ng2-material-dropdown-0.10.1.tgz#0120ce1bbabfb065c62610fe3b572cd09f61b1e1" + integrity sha512-dOmk4+T6Rbtk60Un7sxOOFU546z5JEYupSL+RiG0/rN4DmJvxPp297AvA2Qm9LSMNszUZMi55cRzj79zQYu85g== dependencies: tslib "^1.9.0" ngx-chips@1.9.7: version "1.9.7" resolved "https://registry.yarnpkg.com/ngx-chips/-/ngx-chips-1.9.7.tgz#0f0f30df65566edb4cc129554e8e071cf78835a5" + integrity sha512-AJyKJ24V5a19ANYTNgaftsv9zffpZgR4hNBJfrQ3Pct6zs545NPz5DVIiUBOTWbH4YMgcCpS2uDcbec+J1N06g== dependencies: ng2-material-dropdown "0.10.1" tslib "^1.9.0" @@ -5708,6 +6590,7 @@ ngx-chips@1.9.7: ngx-clipboard@11.1.7: version "11.1.7" resolved "https://registry.yarnpkg.com/ngx-clipboard/-/ngx-clipboard-11.1.7.tgz#a880f82ab2dd17476d8fa9a48f7f524f37fdbef8" + integrity sha512-84BMdd8h9TqI87CtEElj19B4AlDyqj9pz+Iy52jwnXereui774A8H7CT6OoDQ+JP6MGl0r+gpTjTfiKC0hhxIg== dependencies: ngx-window-token "^1.0.0" tslib "^1.9.0" @@ -5715,48 +6598,57 @@ ngx-clipboard@11.1.7: ngx-pipes@^2.1.7: version "2.3.5" resolved "https://registry.yarnpkg.com/ngx-pipes/-/ngx-pipes-2.3.5.tgz#3a5663dcd540d04f1a7997db50b33bf4c2b1f03e" + integrity sha512-dufw+PjkDGuqZKDOlhIKGPfnpoYRqVrms4aRL05Bf2bhCwvSuMSWWKwbRU7oXF1GbPDk1VdEEWxt1NGNHgU5eQ== dependencies: tslib "^1.9.0" ngx-qrcode2@^0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/ngx-qrcode2/-/ngx-qrcode2-0.0.9.tgz#8229783623b60f79cce155e763ac170d8ad1eae8" + integrity sha512-PsELe+37ktkD/xv3rodWb7r5viK4KNZP9BqxmluyI7MCruea48+PqKNKQOx6R+V+8zypbb7vWxXJxGRlrdAaBQ== dependencies: qrcode "^0.8.2" ngx-textarea-autosize@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ngx-textarea-autosize/-/ngx-textarea-autosize-2.0.0.tgz#70d0bf770ebd62b5609c6552233d29c304f92ab8" + integrity sha512-g05ByshiYukVvO7CMgTxxYR1OyEW0veyGE0+qGM987Yo6RPW26SSWqFiu9PaTdCDHK+yq7lF1FKw1eidzhFErQ== dependencies: tslib "^1.7.1" ngx-window-token@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ngx-window-token/-/ngx-window-token-1.0.0.tgz#12acb174fbbcffa5c60b3fea5a6ea78cc3304793" + integrity sha512-n+ZTyuNKHGccKoaofIgNCSJ7XgfujDodSYOxauY5eE6s4sxCriMBZelBIMqjaEuIE2GleViIwlCzb/j45rakPA== dependencies: tslib "^1.9.0" nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== dependencies: lower-case "^1.1.1" node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== node-gyp-build@~3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.4.0.tgz#f8f62507e65f152488b28aac25d04b9d79748cf7" + integrity sha512-YoviGBJYGrPdLOKDIQB0sKxuKy/EEsxzooNkOZak4vSTKT/qH0Pa6dj3t1MJjEQGsefih61IyHDmO1WW7xOFfw== node-gyp@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -5774,10 +6666,12 @@ node-gyp@^3.8.0: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -5806,6 +6700,7 @@ node-libs-browser@^2.0.0: node-notifier@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + integrity sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg== dependencies: growly "^1.3.0" semver "^5.4.1" @@ -5815,6 +6710,7 @@ node-notifier@^5.2.1: node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5830,6 +6726,7 @@ node-pre-gyp@^0.10.0: node-sass@^4.9.3: version "4.9.3" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" + integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -5854,12 +6751,14 @@ node-sass@^4.9.3: "nopt@2 || 3", nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: abbrev "1" nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" @@ -5867,6 +6766,7 @@ nopt@^4.0.1: normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0": version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -5876,24 +6776,29 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== npm-font-source-sans-pro@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/npm-font-source-sans-pro/-/npm-font-source-sans-pro-1.0.2.tgz#c55c8ae368eebdbcaca65425a0d7e1f9a192a03e" + integrity sha1-xVyK42juvbysplQloNfh+aGSoD4= "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== dependencies: hosted-git-info "^2.6.0" osenv "^0.1.5" @@ -5903,6 +6808,7 @@ npm-font-source-sans-pro@^1.0.2: npm-packlist@^1.1.6: version "1.1.11" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -5910,6 +6816,7 @@ npm-packlist@^1.1.6: npm-registry-client@^8.5.1: version "8.6.0" resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" + integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg== dependencies: concat-stream "^1.5.2" graceful-fs "^4.1.6" @@ -5928,12 +6835,14 @@ npm-registry-client@^8.5.1: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" "npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -5943,44 +6852,54 @@ npm-run-path@^2.0.0: nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= dependencies: boolbase "~1.0.0" null-check@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.0.7: version "2.0.9" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" + integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -5989,16 +6908,19 @@ object-copy@^0.1.0: object-keys@^1.0.11, object-keys@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" function-bind "^1.1.1" @@ -6008,6 +6930,7 @@ object.assign@^4.1.0: object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= dependencies: define-properties "^1.1.2" es-abstract "^1.5.1" @@ -6015,6 +6938,7 @@ object.getownpropertydescriptors@^2.0.3: object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= dependencies: for-own "^0.1.4" is-extendable "^0.1.1" @@ -6022,48 +6946,57 @@ object.omit@^2.0.0: object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" obuf@^1.0.0, obuf@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== opn@^5.1.0, opn@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" + integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== dependencies: is-wsl "^1.1.0" optimist@^0.6.1, optimist@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -6071,6 +7004,7 @@ optimist@^0.6.1, optimist@~0.6.0: optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -6082,26 +7016,31 @@ optionator@^0.8.1: original@>=0.0.5: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== dependencies: url-parse "^1.4.3" os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^1.4.0: version "1.4.0" resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= dependencies: lcid "^1.0.0" os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== dependencies: execa "^0.7.0" lcid "^1.0.0" @@ -6110,6 +7049,7 @@ os-locale@^2.0.0: os-locale@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== dependencies: execa "^0.10.0" lcid "^2.0.0" @@ -6118,10 +7058,12 @@ os-locale@^3.0.0: os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -6129,64 +7071,77 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5: p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-is-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= p-limit@^1.0.0, p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== dependencies: p-try "^2.0.0" p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== package-json-versionify@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/package-json-versionify/-/package-json-versionify-1.0.4.tgz#5860587a944873a6b7e6d26e8e51ffb22315bf17" + integrity sha1-WGBYepRIc6a35tJujlH/siMVvxc= dependencies: browserify-package-json "^1.0.0" pako@~1.0.2, pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -6195,12 +7150,14 @@ parallel-transform@^1.1.0: param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= dependencies: no-case "^2.2.0" parse-asn1@^5.0.0: version "5.1.1" resolved "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -6211,6 +7168,7 @@ parse-asn1@^5.0.0: parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= dependencies: glob-base "^0.3.0" is-dotfile "^1.0.0" @@ -6220,6 +7178,7 @@ parse-glob@^3.0.4: parse-headers@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" + integrity sha1-aug6eqJanZtwCswoaYzR8e1+lTY= dependencies: for-each "^0.3.2" trim "0.0.1" @@ -6227,12 +7186,14 @@ parse-headers@^2.0.0: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -6240,10 +7201,12 @@ parse-json@^4.0.0: parse-numeric-range@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz#b4f09d413c7adbcd987f6e9233c7b4b210c938e4" + integrity sha1-tPCdQTx6282Yf26SM8e0shDJOOQ= parse-torrent@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-6.1.2.tgz#99da5bdd23435a1cb7e8e7a63847c4efb21b1956" + integrity sha512-Z/vig84sHwtrTEbOzisT4xnYTFlOgAaLQccPruMPgRahZUppVE/BUXzAos3jZM7c64o0lfukQdQ4ozWa5lN39w== dependencies: bencode "^2.0.0" blob-to-buffer "^1.2.6" @@ -6256,72 +7219,88 @@ parse-torrent@^6.1.2: parse5@4.0.0, parse5@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= dependencies: better-assert "~1.0.0" parseuri@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= dependencies: better-assert "~1.0.0" parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= path-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.0.tgz#40702a97af46ae00b0ea6fa8998c0b03c0af160d" + integrity sha512-Hkavx/nY4/plImrZPHRk2CL9vpOymZLgEbMNX1U0bjcBL7QN9wODxyx0yaMZURSQaUtSEvDrfAvxa9oPb0at9g== path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= dependencies: graceful-fs "^4.1.2" pify "^2.0.0" @@ -6330,18 +7309,21 @@ path-type@^1.0.0: path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" + integrity sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -6352,58 +7334,70 @@ pbkdf2@^3.0.3: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= piece-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/piece-length/-/piece-length-1.0.0.tgz#4db7167157fd69fef14caf7262cd39f189b24508" + integrity sha1-TbcWcVf9af7xTK9yYs058YmyRQg= dependencies: closest-to "~2.0.0" pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkcs7@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-1.0.2.tgz#b6dba527528c2942bfc122ce2dafcdb5e59074e7" + integrity sha1-ttulJ1KMKUK/wSLOLa/NteWQdOc= pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== pngjs@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-2.3.1.tgz#11d1e12b9cb64d63e30c143a330f4c1f567da85f" + integrity sha1-EdHhK5y2TWPjDBQ6Mw9MH1Z9qF8= portfinder@^1.0.13, portfinder@^1.0.9: version "1.0.17" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" + integrity sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ== dependencies: async "^1.5.2" debug "^2.2.0" @@ -6412,10 +7406,12 @@ portfinder@^1.0.13, portfinder@^1.0.9: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-import@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0" + integrity sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw== dependencies: postcss "^6.0.1" postcss-value-parser "^3.2.3" @@ -6425,6 +7421,7 @@ postcss-import@^11.1.0: postcss-load-config@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== dependencies: cosmiconfig "^4.0.0" import-cwd "^2.0.0" @@ -6432,6 +7429,7 @@ postcss-load-config@^2.0.0: postcss-loader@^2.1.5: version "2.1.6" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" + integrity sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg== dependencies: loader-utils "^1.1.0" postcss "^6.0.0" @@ -6441,12 +7439,14 @@ postcss-loader@^2.1.5: postcss-modules-extract-imports@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" + integrity sha1-ZhQOzs447wa/DT41XWm/WdFB6oU= dependencies: postcss "^6.0.1" postcss-modules-local-by-default@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" @@ -6454,6 +7454,7 @@ postcss-modules-local-by-default@^1.2.0: postcss-modules-scope@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" @@ -6461,6 +7462,7 @@ postcss-modules-scope@^1.1.0: postcss-modules-values@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= dependencies: icss-replace-symbols "^1.1.0" postcss "^6.0.1" @@ -6468,6 +7470,7 @@ postcss-modules-values@^1.3.0: postcss-url@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.2.tgz#5fea273807fb84b38c461c3c9a9e8abd235f7120" + integrity sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA== dependencies: mime "^1.4.1" minimatch "^3.0.4" @@ -6478,10 +7481,12 @@ postcss-url@^7.3.2: postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.22, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== dependencies: chalk "^2.4.1" source-map "^0.6.1" @@ -6490,14 +7495,17 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.22, postcss@^6.0.2 prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= dependencies: renderkid "^2.0.1" utila "~0.4" @@ -6505,6 +7513,7 @@ pretty-error@^2.0.2: pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -6512,40 +7521,49 @@ pretty-format@^23.6.0: primeng@^6.1.2: version "6.1.4" resolved "https://registry.yarnpkg.com/primeng/-/primeng-6.1.4.tgz#c4b92c1c9f8ba6cf717b122ed87c3701a5e1cf20" + integrity sha512-z9jkgvaOveWtylpQXp1wOZtLNcnJuivdot6EpquPGV8oBjKMxFX+2k0NbTwDINldR384rurxUd8830Wk9/Z9Nw== private@^0.1.8, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" prompts@^0.1.9: version "0.1.14" resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" + integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== dependencies: kleur "^2.0.1" sisteransi "^0.1.1" @@ -6553,6 +7571,7 @@ prompts@^0.1.9: prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== dependencies: loose-envify "^1.3.1" object-assign "^4.1.1" @@ -6560,6 +7579,7 @@ prop-types@^15.6.2: protractor@^5.3.2: version "5.4.1" resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.1.tgz#011a99e38df7aa45d22455b889ffbb13a6ce0bd9" + integrity sha512-ORey5ewQMYiXQxcQohsqEiKYOg/r5yJoJbt0tuROmmgajdg/CA3gTOZNIFJncUVMAJIk5YFqBBLUjKVmQO6tfA== dependencies: "@types/node" "^6.0.46" "@types/q" "^0.0.32" @@ -6581,6 +7601,7 @@ protractor@^5.3.2: proxy-addr@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== dependencies: forwarded "~0.1.2" ipaddr.js "1.8.0" @@ -6588,18 +7609,22 @@ proxy-addr@~2.0.3: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== public-encrypt@^4.0.0: version "4.0.2" resolved "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" + integrity sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q== dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" @@ -6610,6 +7635,7 @@ public-encrypt@^4.0.0: pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6617,6 +7643,7 @@ pump@^2.0.0, pump@^2.0.1: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -6624,6 +7651,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" inherits "^2.0.3" @@ -6632,18 +7660,22 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== purify-css@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/purify-css/-/purify-css-1.2.5.tgz#c4b9ec90735765f3e247ba6a3b49f132f3482500" + integrity sha512-Vy4jRnV2w/kUjTyxzQOKbFkqwUe6RNLuZgIWR/IRQ8nCqRwiFgwC9XiO9+8poq5KL053uWAQnCSbsfihq77zPg== dependencies: clean-css "^4.0.12" glob "^7.1.1" @@ -6654,6 +7686,7 @@ purify-css@^1.2.5: purifycss-webpack@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/purifycss-webpack/-/purifycss-webpack-0.7.0.tgz#07c9ce7988f608f1928102ed3ff19178ce38f0e0" + integrity sha1-B8nOeYj2CPGSgQLtP/GReM448OA= dependencies: ajv "^4.11.2" webpack-sources "^0.1.4" @@ -6661,18 +7694,22 @@ purifycss-webpack@^0.7.0: q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= q@^1.4.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= qjobs@^1.1.4: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== qrcode@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-0.8.2.tgz#4a4b4dd74ae43b7b05d4cc598badc1c03837189c" + integrity sha1-SktN10rkO3sF1MxZi63BwDg3GJw= dependencies: colors "*" dijkstrajs "^1.0.1" @@ -6682,26 +7719,32 @@ qrcode@^0.8.2: qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== qs@6.5.2, qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" + integrity sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw== random-access-file@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/random-access-file/-/random-access-file-2.0.1.tgz#dc22de79270e9a84cb36a2419b759725930dcaeb" + integrity sha512-nb4fClpzoUY+v1SHrro+9yykN90eMA1rc+xM39tnZ5R3BgFY+J/NxPZ0KuUpishEsvnwou9Fvm2wa3cjeuG7vg== dependencies: mkdirp "^0.5.1" random-access-storage "^1.1.1" @@ -6709,16 +7752,19 @@ random-access-file@^2.0.1: random-access-storage@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/random-access-storage/-/random-access-storage-1.3.0.tgz#d27e4d897b79dc4358afc2bbe553044e5c8cfe35" + integrity sha512-pdS9Mcb9TB7oICypPRALlheaSuszuAKmLVEPKJMuYor7R/zDuHh5ALuQoS+ox31XRwQUL+tDwWH2GPdyspwelA== dependencies: inherits "^2.0.3" random-iterate@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/random-iterate/-/random-iterate-1.0.1.tgz#f7d97d92dee6665ec5f6da08c7f963cad4b2ac99" + integrity sha1-99l9kt7mZl7F9toIx/ljytSyrJk= randomatic@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" + integrity sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ== dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -6727,12 +7773,14 @@ randomatic@^3.0.0: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.3, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -6740,10 +7788,12 @@ randomfill@^1.0.3: range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= range-slice-stream@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-1.2.0.tgz#01ba954276052b783900e63d6118d8fcf3875d7f" + integrity sha1-AbqVQnYFK3g5AOY9YRjY/POHXX8= dependencies: inherits "^2.0.1" readable-stream "^2.0.5" @@ -6751,6 +7801,7 @@ range-slice-stream@^1.2.0: raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= dependencies: bytes "3.0.0" http-errors "1.6.2" @@ -6760,6 +7811,7 @@ raw-body@2.3.2: raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== dependencies: bytes "3.0.0" http-errors "1.6.3" @@ -6769,10 +7821,12 @@ raw-body@2.3.3: raw-loader@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" ini "~1.3.0" @@ -6782,6 +7836,7 @@ rc@^1.2.7: react-dom@^16.4.2: version "16.5.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.2.tgz#b69ee47aa20bab5327b2b9d7c1fe2a30f2cfa9d7" + integrity sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6791,6 +7846,7 @@ react-dom@^16.4.2: react@^16.4.2: version "16.5.2" resolved "https://registry.yarnpkg.com/react/-/react-16.5.2.tgz#19f6b444ed139baa45609eee6dc3d318b3895d42" + integrity sha512-FDCSVd3DjVTmbEAjUNX6FgfAmQ+ypJfHUsqUJOYNCBUp1h8lqmtC+0mXJ+JjsWx4KAVTkk1vKd1hLQPvEviSuw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6800,12 +7856,14 @@ react@^16.4.2: read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= dependencies: pify "^2.3.0" read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= dependencies: find-up "^1.0.0" read-pkg "^1.0.0" @@ -6813,6 +7871,7 @@ read-pkg-up@^1.0.1: read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= dependencies: find-up "^2.0.0" read-pkg "^2.0.0" @@ -6820,6 +7879,7 @@ read-pkg-up@^2.0.0: read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" @@ -6828,6 +7888,7 @@ read-pkg@^1.0.0: read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -6836,6 +7897,7 @@ read-pkg@^2.0.0: "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.3, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.2, readable-stream@^2.3.3, readable-stream@^2.3.4, readable-stream@^2.3.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -6848,6 +7910,7 @@ read-pkg@^2.0.0: readable-stream@1.0: version "1.0.34" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -6857,6 +7920,7 @@ readable-stream@1.0: readable-stream@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.3.tgz#a4db8813e3e0b87abdc01d5d5dbae828e59744b5" + integrity sha512-CzN1eAu5Pmh4EaDlJp1g5E37LIHR24b82XlMWRQlPFjhvOYKa4HhClRsQO21zhdDWUpdWfiKt9/L/ZL2+vwxCw== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -6865,6 +7929,7 @@ readable-stream@^3.0.2: readable-stream@~2.0.6: version "2.0.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -6876,6 +7941,7 @@ readable-stream@~2.0.6: readdirp@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" micromatch "^3.1.10" @@ -6884,12 +7950,14 @@ readdirp@^2.0.0: realpath-native@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" + integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== dependencies: util.promisify "^1.0.0" recast@~0.11.12: version "0.11.23" resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= dependencies: ast-types "0.9.6" esprima "~3.1.0" @@ -6899,10 +7967,12 @@ recast@~0.11.12: record-cache@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.0.tgz#f8a467a691a469584b26e88d36b18afdb3932037" + integrity sha512-u8rbtLEJV7HRacl/ZYwSBFD8NFyB3PfTTfGLP37IW3hftQCwu6z4Q2RLyxo1YJUNRTEzJfpLpGwVuEYdaIkG9Q== redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= dependencies: indent-string "^2.1.0" strip-indent "^1.0.1" @@ -6910,24 +7980,29 @@ redent@^1.0.0: reflect-metadata@^0.1.2: version "0.1.12" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" + integrity sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A== regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: is-equal-shallow "^0.1.3" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -6935,6 +8010,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -6943,24 +8019,29 @@ regexpu-core@^1.0.0: regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= dependencies: jsesc "~0.5.0" relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= render-media@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/render-media/-/render-media-3.1.3.tgz#aa8c8cd3f720049370067180709b551d3c566254" + integrity sha512-K7ziKKlIcgYpAovRsABDiSaNn7TzDDyyuFGpRwM52cloNcajInB6sCxFPUEzOuTJUeyvKCqT/k5INOjpKLCjhQ== dependencies: debug "^3.1.0" is-ascii "^1.0.0" @@ -6971,6 +8052,7 @@ render-media@^3.0.0: renderkid@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + integrity sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk= dependencies: css-select "^1.1.0" dom-converter "~0.1" @@ -6981,30 +8063,36 @@ renderkid@^2.0.1: repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" request-promise-core@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= dependencies: lodash "^4.13.1" request-promise-native@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= dependencies: request-promise-core "1.1.1" stealthy-require "^1.1.0" @@ -7013,6 +8101,7 @@ request-promise-native@^1.0.5: request@2.87.0: version "2.87.0" resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -7038,6 +8127,7 @@ request@2.87.0: request@^2.74.0, request@^2.83.0, request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -7063,46 +8153,56 @@ request@^2.74.0, request@^2.83.0, request@^2.87.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-from-string@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.0.0" resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.1.7, resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -7110,14 +8210,17 @@ restore-cursor@^2.0.0: ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= rework@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= dependencies: convert-source-map "^0.3.3" css "^2.0.0" @@ -7125,16 +8228,19 @@ rework@^1.0.1: rfdc@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== rimraf@2, rimraf@^2.2.8, rimraf@^2.4.2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" @@ -7142,80 +8248,96 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" run-parallel-limit@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.0.5.tgz#c29a4fd17b4df358cb52a8a697811a63c984f1b7" + integrity sha512-NsY+oDngvrvMxKB3G8ijBzIema6aYbQMD2bHOamvN52BysbIGTnEY2xsNyfrcr9GhY995/t/0nQN3R3oZvaDlg== run-parallel@^1.0.0, run-parallel@^1.1.2, run-parallel@^1.1.6: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" run-series@^1.0.2: version "1.1.8" resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.8.tgz#2c4558f49221e01cd6371ff4e0a1e203e460fc36" + integrity sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg== rusha@^0.8.1: version "0.8.13" resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.13.tgz#9a084e7b860b17bff3015b92c67a6a336191513a" + integrity sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo= rust-result@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72" + integrity sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I= dependencies: individual "^2.0.0" rxjs@^6.1.0: version "6.3.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" + integrity sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw== dependencies: tslib "^1.9.0" rxjs@~6.2.0: version "6.2.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" + integrity sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ== dependencies: tslib "^1.9.0" safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== safe-buffer@5.1.2, safe-buffer@^5.0.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-json-parse@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac" + integrity sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw= dependencies: rust-result "^1.0.0" safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^2.0.0: version "2.5.2" resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= dependencies: anymatch "^2.0.0" capture-exit "^1.2.0" @@ -7231,6 +8353,7 @@ sane@^2.0.0: sanitize-html@^1.18.4: version "1.19.0" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.19.0.tgz#34d8a4b864aba79602e4a32003f293fc242df0a9" + integrity sha512-Qt2imq49f2qP4537a7R2Xgx9sjTvw18jIT7zKurhu5kpYNQfMo8EZaW3OcpoXCvg3GTN4C4R3mN8ao7STUtKtA== dependencies: chalk "^2.3.0" htmlparser2 "^3.9.0" @@ -7246,6 +8369,7 @@ sanitize-html@^1.18.4: sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= dependencies: glob "^7.0.0" lodash "^4.0.0" @@ -7255,6 +8379,7 @@ sass-graph@^2.2.4: sass-loader@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== dependencies: clone-deep "^2.0.1" loader-utils "^1.0.1" @@ -7266,6 +8391,7 @@ sass-loader@^7.1.0: sass-resources-loader@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/sass-resources-loader/-/sass-resources-loader-1.3.3.tgz#90f0e614c444f6dfb8f54ce3e1d5f64a18d31537" + integrity sha512-wEXBIn4DWE86KaYafPwoKXvyqGQdmbB7ePlGxrKTuUzwVnkgwUZXald48k+9WdwCWWffTiSr0pb9PIVGGPU/rw== dependencies: async "^2.1.4" chalk "^1.1.3" @@ -7275,32 +8401,38 @@ sass-resources-loader@^1.2.1: saucelabs@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== dependencies: https-proxy-agent "^2.2.1" sax@0.5.x: version "0.5.8" resolved "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== schedule@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.5.0.tgz#c128fffa0b402488b08b55ae74bb9df55cc29cc8" + integrity sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw== dependencies: object-assign "^4.1.1" schema-utils@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= dependencies: ajv "^5.0.0" schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== dependencies: ajv "^6.1.0" ajv-keywords "^3.1.0" @@ -7308,6 +8440,7 @@ schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5: schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" ajv-errors "^1.0.0" @@ -7316,6 +8449,7 @@ schema-utils@^1.0.0: scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= dependencies: js-base64 "^2.1.8" source-map "^0.4.2" @@ -7323,10 +8457,12 @@ scss-tokenizer@^0.2.3: select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: version "3.6.0" resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== dependencies: jszip "^3.1.3" rimraf "^2.5.4" @@ -7336,32 +8472,38 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: selfsigned@^1.9.1: version "1.10.3" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" + integrity sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q== dependencies: node-forge "0.7.5" semver-dsl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" + integrity sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA= dependencies: semver "^5.3.0" semver-intersect@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" + integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== dependencies: semver "^5.0.0" "semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@5.x, semver@^5.0.0, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== dependencies: debug "2.6.9" depd "~1.1.2" @@ -7380,10 +8522,12 @@ send@0.16.2: serialize-javascript@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== serve-index@^1.7.2: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= dependencies: accepts "~1.3.4" batch "0.6.1" @@ -7396,6 +8540,7 @@ serve-index@^1.7.2: serve-static@1.13.2: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -7405,10 +8550,12 @@ serve-static@1.13.2: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -7418,6 +8565,7 @@ set-value@^0.4.3: set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -7427,18 +8575,22 @@ set-value@^2.0.0: setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -7446,6 +8598,7 @@ sha.js@^2.4.0, sha.js@^2.4.8: shallow-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== dependencies: is-extendable "^0.1.1" kind-of "^5.0.0" @@ -7454,28 +8607,34 @@ shallow-clone@^1.0.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= simple-get@^2.8.1, simple-get@^3.0.0, simple-get@^3.0.1: version "2.8.1" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== dependencies: decompress-response "^3.3.0" once "^1.3.1" @@ -7484,6 +8643,7 @@ simple-get@^2.8.1, simple-get@^3.0.0, simple-get@^3.0.1: simple-peer@^9.0.0: version "9.1.2" resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.1.2.tgz#f8afa5eb83f8a17d66e437e5ac54c1221eca4b39" + integrity sha512-MUWWno5o5cvISKOH4pYQ18PQJLpDaNWoKUbrPPKuspCLCkkh+zhtuQyTE8h2U2Ags+/OUN5wnUe92+9B8/Sm2Q== dependencies: debug "^3.1.0" get-browser-rtc "^1.0.0" @@ -7494,12 +8654,14 @@ simple-peer@^9.0.0: simple-sha1@^2.0.0, simple-sha1@^2.0.8, simple-sha1@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/simple-sha1/-/simple-sha1-2.1.1.tgz#93f3b7f2e8dfdc056c32793e5d47b58d311b140d" + integrity sha512-pFMPd+I/lQkpf4wFUeS/sED5IqdIG1lUlrQviBMV4u4mz8BRAcB5fvUx5Ckfg3kBigEglAjHg7E9k/yy2KlCqA== dependencies: rusha "^0.8.1" simple-websocket@^7.0.1: version "7.2.0" resolved "https://registry.yarnpkg.com/simple-websocket/-/simple-websocket-7.2.0.tgz#c3190555d74399372b96b51435f2d8c4b04611df" + integrity sha512-wdxFg1fHw1yqFKWDcw+yNb4VIYqtl+vknZMlpLhvZSlR6l7/iVuwozqo+Qtl73mB1IH5QnXzonD1S+hAaLNTvQ== dependencies: debug "^3.1.0" inherits "^2.0.1" @@ -7510,18 +8672,22 @@ simple-websocket@^7.0.1: sisteransi@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slide@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -7530,12 +8696,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" @@ -7549,10 +8717,12 @@ snapdragon@^0.8.1: socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" @@ -7572,6 +8742,7 @@ socket.io-client@2.1.1: socket.io-parser@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" @@ -7580,6 +8751,7 @@ socket.io-parser@~3.2.0: socket.io@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: debug "~3.1.0" engine.io "~3.2.0" @@ -7591,6 +8763,7 @@ socket.io@2.1.1: sockjs-client@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" + integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= dependencies: debug "^2.6.6" eventsource "0.1.6" @@ -7602,6 +8775,7 @@ sockjs-client@1.1.5: sockjs@0.3.19: version "0.3.19" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== dependencies: faye-websocket "^0.10.0" uuid "^3.0.1" @@ -7609,14 +8783,17 @@ sockjs@0.3.19: source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== source-list-map@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY= source-map-loader@^0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" + integrity sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ== dependencies: async "^2.5.0" loader-utils "^1.1.0" @@ -7624,6 +8801,7 @@ source-map-loader@^0.2.3: source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: atob "^2.1.1" decode-uri-component "^0.2.0" @@ -7634,12 +8812,14 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-support@^0.4.15, source-map-support@~0.4.0: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== dependencies: source-map "^0.5.6" source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7647,36 +8827,43 @@ source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@^0.5.5, source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.1.x: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= dependencies: amdefine ">=0.0.4" source-map@^0.4.2, source-map@~0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= dependencies: amdefine ">=0.0.4" source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= dependencies: amdefine ">=0.0.4" spdx-correct@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -7684,10 +8871,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" @@ -7695,10 +8884,12 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" + integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== spdy-transport@^2.0.18: version "2.1.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + integrity sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g== dependencies: debug "^2.6.8" detect-node "^2.0.3" @@ -7711,6 +8902,7 @@ spdy-transport@^2.0.18: spdy@^3.4.1: version "3.4.7" resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= dependencies: debug "^2.6.8" handle-thing "^1.2.5" @@ -7722,30 +8914,36 @@ spdy@^3.4.1: speedometer@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934" + integrity sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + integrity sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw= sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= srcset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef" + integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8= dependencies: array-uniq "^1.0.2" number-is-nan "^1.0.0" @@ -7753,6 +8951,7 @@ srcset@^1.0.0: sshpk@^1.7.0: version "1.14.2" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" + integrity sha1-xvxhZIo9nE52T9P8306hBeSSupg= dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -7768,22 +8967,26 @@ sshpk@^1.7.0: ssri@^5.2.4: version "5.3.0" resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== dependencies: safe-buffer "^5.1.1" ssri@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -7791,34 +8994,41 @@ static-extend@^0.1.1: stats-webpack-plugin@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b" + integrity sha1-LFlJtTHgf4eojm6k3PrFOqjHWis= dependencies: lodash "^4.17.4" "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== stdout-stream@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== dependencies: readable-stream "^2.0.1" stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= dependencies: inherits "~2.0.1" readable-stream "^2.0.2" @@ -7826,6 +9036,7 @@ stream-browserify@^2.0.1: stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -7833,6 +9044,7 @@ stream-each@^1.1.0: stream-http@^2.7.2, stream-http@^2.8.3: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -7843,28 +9055,33 @@ stream-http@^2.7.2, stream-http@^2.8.3: stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= stream-to-blob-url@^2.0.0, stream-to-blob-url@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/stream-to-blob-url/-/stream-to-blob-url-2.1.1.tgz#e1ac97f86ca8e9f512329a48e7830ce9a50beef2" + integrity sha512-DKJPEmCmIZoBfGVle9IhSfERiWaN5cuOtmfPxP2dZbLDRZxkBWZ4QbYxEJOSALk1Kf+WjBgedAMO6qkkf7Lmrg== dependencies: stream-to-blob "^1.0.0" stream-to-blob@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-to-blob/-/stream-to-blob-1.0.1.tgz#2dc1e09b71677a234d00445f8eb7ff70c4fe9948" + integrity sha512-aRy4neA4rf+qMtLT9fCRLPGWdrsIKtCx4kUdNTIPgPQ2hkHkdxbViVAvABMx9oRM6yCWfngHx6pwXfbYkVuPuw== dependencies: once "^1.3.3" stream-with-known-length-to-buffer@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-with-known-length-to-buffer/-/stream-with-known-length-to-buffer-1.0.2.tgz#b8ea5a92086a1ed5d27fc4c529636682118c945b" + integrity sha512-UxSISjxmguvfYzZdq6d4XAjc3gAocqTIOS1CjgwkDkkGT/LMTsIYiV8agIw42IHFFHf8k4lPOoroCCf4W9oqzg== dependencies: once "^1.3.3" streamroller@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" + integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== dependencies: date-format "^1.2.0" debug "^3.1.0" @@ -7874,6 +9091,7 @@ streamroller@0.7.0: string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" @@ -7881,6 +9099,7 @@ string-length@^2.0.0: string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -7889,6 +9108,7 @@ string-width@^1.0.1, string-width@^1.0.2: "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -7896,6 +9116,7 @@ string-width@^1.0.1, string-width@^1.0.2: string2compact@^1.1.1, string2compact@^1.2.5: version "1.3.0" resolved "https://registry.yarnpkg.com/string2compact/-/string2compact-1.3.0.tgz#22d946127b082d1203c51316af60117a337423c3" + integrity sha512-004ulKKANDuQilQsNxy2lisrpMG0qUJxBU+2YCEF7KziRyNR0Nredm2qk0f1V82nva59H3y9GWeHXE63HzGRFw== dependencies: addr-to-ip-port "^1.0.1" ipaddr.js "^1.0.1" @@ -7903,52 +9124,62 @@ string2compact@^1.1.1, string2compact@^1.2.5: string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 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" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= dependencies: get-stdin "^4.0.1" strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= style-loader@^0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" + integrity sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg== dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" @@ -7956,6 +9187,7 @@ style-loader@^0.21.0: stylus-loader@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" + integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== dependencies: loader-utils "^1.0.2" lodash.clonedeep "^4.5.0" @@ -7964,6 +9196,7 @@ stylus-loader@^3.0.2: stylus@^0.54.5: version "0.54.5" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" + integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= dependencies: css-parse "1.7.x" debug "*" @@ -7975,34 +9208,41 @@ stylus@^0.54.5: supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^3.1.0, supports-color@^3.1.2: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= dependencies: has-flag "^1.0.0" supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= tapable@^1.0.0, tapable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= dependencies: block-stream "*" fstream "^1.0.2" @@ -8011,6 +9251,7 @@ tar@^2.0.0: tar@^4: version "4.4.6" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" @@ -8023,6 +9264,7 @@ tar@^4: terser-webpack-plugin@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" + integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== dependencies: cacache "^11.0.2" find-cache-dir "^2.0.0" @@ -8036,6 +9278,7 @@ terser-webpack-plugin@^1.1.0: terser@^3.8.1: version "3.8.2" resolved "https://registry.yarnpkg.com/terser/-/terser-3.8.2.tgz#48b880f949f8d038aca4dfd00a37c53d96ecf9fb" + integrity sha512-FGSBXiBJe2TSXy6pWwXpY0YcEWEK35UKL64BBbxX3aHqM4Nj0RMqXvqBuoSGfyd80t8MKQ5JwYm5jRRGTSEFNg== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -8044,6 +9287,7 @@ terser@^3.8.1: test-exclude@^4.2.1: version "4.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" + integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -8054,14 +9298,17 @@ test-exclude@^4.2.1: thirty-two@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" + integrity sha1-TKL//AKlEpDSdEueP1V2k8prYno= throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= dependencies: readable-stream "^2.1.5" xtend "~4.0.1" @@ -8069,58 +9316,70 @@ through2@^2.0.0: through@2, through@X.X.X, through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.1, thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== dependencies: setimmediate "^1.0.4" tmp@0.0.30: version "0.0.30" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= dependencies: os-tmpdir "~1.0.1" tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= to-arraybuffer@^1.0.0, to-arraybuffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -8128,6 +9387,7 @@ to-regex-range@^2.1.0: to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" @@ -8137,10 +9397,12 @@ to-regex@^3.0.1, to-regex@^3.0.2: toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= torrent-discovery@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/torrent-discovery/-/torrent-discovery-9.1.1.tgz#56704e6747b24fe00dbb75b442d202051f78d37d" + integrity sha512-3mHf+bxVCVLrlkPJdAoMbPMY1hpTZVeWw5hNc2pPFm+HCc2DS0HgVFTBTSWtB8vQPWA1hSEZpqJ+3QfdXxDE1g== dependencies: bittorrent-dht "^9.0.0" bittorrent-tracker "^9.0.0" @@ -8150,10 +9412,12 @@ torrent-discovery@^9.1.1: torrent-piece@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/torrent-piece/-/torrent-piece-2.0.0.tgz#6598ae67d93699e887f178db267ba16d89d7ec9b" + integrity sha512-H/Z/yCuvZJj1vl1IQHI8dvF2QrUuXRJoptT5DW5967/dsLpXlCg+uyhFR5lfNj5mNaYePUbKtnL+qKWZGXv4Nw== tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" punycode "^1.4.1" @@ -8161,44 +9425,53 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: tough-cookie@~2.3.3: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== dependencies: punycode "^1.4.1" tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= dependencies: punycode "^2.1.0" tree-kill@^1.0.0, tree-kill@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= "true-case-path@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== dependencies: glob "^7.1.2" tryer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== ts-jest@^23.1.4: version "23.10.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.0.tgz#1b1ce1d795791dedf0229b7577b35eaed8565bbd" + integrity sha512-SbqUbCRjlPKQjm9kANW3FebLx4iLxJG/HlK+Ds3nuVlr5Z3kX7YSES/OuIPwX/mPUds4MlA5W+/C4H/njztqtw== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -8212,6 +9485,7 @@ ts-jest@^23.1.4: ts-jest@~23.1.3: version "23.1.4" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.4.tgz#66ac1d8d3fbf8f9a98432b11aa377aa850664b2b" + integrity sha512-9rCSxbWfoZxxeXnSoEIzRNr9hDIQ8iEJAWmSRsWhDHDT8OeuGfURhJQUE8jtJlkyEygs6rngH8RYtHz9cfjmEA== dependencies: closest-file-data "^0.1.4" fs-extra "6.0.1" @@ -8221,6 +9495,7 @@ ts-jest@~23.1.3: tsickle@^0.32.1: version "0.32.1" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.32.1.tgz#f16e94ba80b32fc9ebe320dc94fbc2ca7f3521a5" + integrity sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw== dependencies: jasmine-diff "^0.1.3" minimist "^1.2.0" @@ -8231,20 +9506,24 @@ tsickle@^0.32.1: tslib@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@~1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tslint-config-standard@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-8.0.1.tgz#e4dd3128e84b0e34b51990b68715a641f2b417e4" + integrity sha512-OWG+NblgjQlVuUS/Dmq3ax2v5QDZwRx4L0kEuDi7qFY9UI6RJhhNfoCV1qI4el8Fw1c5a5BTrjQJP0/jhGXY/Q== dependencies: tslint-eslint-rules "^5.3.1" tslint-eslint-rules@^5.3.1: version "5.4.0" resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" + integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== dependencies: doctrine "0.7.2" tslib "1.9.0" @@ -8253,6 +9532,7 @@ tslint-eslint-rules@^5.3.1: tslint@^5.7.0: version "5.11.0" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" + integrity sha1-mPMMAurjzecAYgHkwzywi0hYHu0= dependencies: babel-code-frame "^6.22.0" builtin-modules "^1.1.1" @@ -8270,42 +9550,50 @@ tslint@^5.7.0: tsml@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tsml/-/tsml-1.0.1.tgz#89f8218b9d9e257f47d7f6b56d01c5a4d2c68fc3" + integrity sha1-ifghi52eJX9H1/a1bQHFpNLGj8M= tsutils@^2.27.2: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== dependencies: tslib "^1.8.1" tsutils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.0.0.tgz#0c5070a17a0503e056da038c48b5a1870a50a9ad" + integrity sha512-LjHBWR0vWAUHWdIAoTjoqi56Kz+FDKBgVEuL+gVPG/Pv7QW5IdaDDeK9Txlr6U0Cmckp5EgCIq1T25qe3J6hyw== dependencies: tslib "^1.8.1" tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== dependencies: media-typer "0.3.0" mime-types "~2.1.18" @@ -8313,24 +9601,29 @@ type-is@~1.6.15, type-is@~1.6.16: typedarray-to-buffer@^3.0.0: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@2.9, "typescript@>=2.6.2 <2.10", typescript@~2.9.2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" + integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== dependencies: commander "~2.13.0" source-map "~0.6.1" @@ -8338,6 +9631,7 @@ uglify-es@^3.3.4: uglify-js@3.4.x, uglify-js@^3.0.6, uglify-js@^3.1.4: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -8345,6 +9639,7 @@ uglify-js@3.4.x, uglify-js@^3.0.6, uglify-js@^3.1.4: uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5: version "1.3.0" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" + integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -8358,16 +9653,19 @@ uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5: uint64be@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/uint64be/-/uint64be-2.0.2.tgz#ef4a179752fe8f9ddaa29544ecfc13490031e8e5" + integrity sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ== dependencies: buffer-alloc "^1.1.0" ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -8377,34 +9675,41 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-filename@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= dependencies: imurmurhash "^0.1.4" universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unordered-array-remove@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz#c546e8f88e317a0cf2644c97ecb57dba66d250ef" + integrity sha1-xUbo+I4xegzyZEyX7LV9umbSUO8= unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -8412,34 +9717,41 @@ unset-value@^1.0.0: upath@^1.0.5: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" + integrity sha1-+QuFhQf4HepNz7s8TD2/orVX+qo= dependencies: punycode "^2.1.0" uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= url-loader@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + integrity sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg== dependencies: loader-utils "^1.1.0" mime "^2.0.3" @@ -8448,6 +9760,7 @@ url-loader@^1.0.1: url-parse@^1.1.8, url-parse@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" + integrity sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw== dependencies: querystringify "^2.0.0" requires-port "^1.0.0" @@ -8455,10 +9768,12 @@ url-parse@^1.1.8, url-parse@^1.4.3: url-toolkit@^2.1.1, url-toolkit@^2.1.3: version "2.1.6" resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.1.6.tgz#6d03246499e519aad224c44044a4ae20544154f2" + integrity sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw== url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" @@ -8466,10 +9781,12 @@ url@^0.11.0: use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== useragent@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" + integrity sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4= dependencies: lru-cache "2.2.x" tmp "0.0.x" @@ -8477,6 +9794,7 @@ useragent@2.2.1: ut_metadata@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/ut_metadata/-/ut_metadata-3.3.0.tgz#a0e0e861ebc39ed96e506601d1463ade3b548a7e" + integrity sha512-IK+ke9yL6a4oPLz/3oSW9TW7m9Wr4RG+5kW5aS2YulzEU1QDGAtago/NnOlno91fo3fSO7mnsqzn3NXNXdv8nA== dependencies: bencode "^2.0.0" bitfield "^2.0.0" @@ -8486,6 +9804,7 @@ ut_metadata@^3.3.0: ut_pex@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ut_pex/-/ut_pex-1.2.1.tgz#472ed0ea5e9bbc9148b833339d56d7b17cf3dad0" + integrity sha512-ZrxMCbffYtxQDqvREN9kBXK2CB9tPnd5PylHoqQX9ai+3HV9/S39FnA5JnhLOC82dxIQQg0nTN2wmhtAdGNtOA== dependencies: bencode "^2.0.0" compact2string "^1.2.0" @@ -8495,16 +9814,19 @@ ut_pex@^1.1.1: utf-8-validate@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.1.tgz#cef1f9011ba4b216f4d7c6ddf5189d750599ff8b" + integrity sha512-Qef1AuiWWxQeZ1Oa4DTV3ArRafpZvsK+CLrlB8khLfsV+9mwhj58hNSGmel0ns5jYP+3yEwav6vxxW7Gz85bVw== dependencies: node-gyp-build "~3.4.0" util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@1.0.0, util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" @@ -8512,38 +9834,46 @@ util.promisify@1.0.0, util.promisify@^1.0.0: util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" utila@~0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + integrity sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY= utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== v8-compile-cache@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" + integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -8551,16 +9881,19 @@ validate-npm-package-license@^3.0.1: validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -8569,6 +9902,7 @@ verror@1.10.0: "video.js@^6 || ^7", "video.js@^6.8.0 || ^7.0.0", video.js@^7: version "7.2.2" resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.2.2.tgz#4a1197b2f0c265a1e50d5cd4ff41cd030e22a423" + integrity sha512-Ct9ZiYzeNiOW1v9YWbNaeSR0JUKeY3RTvG5wtvUHhUgUMImICDu7crutyY/C2u4PetoFlpkDVAIbhqi/qPDflw== dependencies: "@videojs/http-streaming" "1.2.4" babel-runtime "^6.9.2" @@ -8582,6 +9916,7 @@ verror@1.10.0: videojs-contextmenu-ui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/videojs-contextmenu-ui/-/videojs-contextmenu-ui-5.0.0.tgz#6943527c9b3993f3fb83867c0d0348bcd58c924c" + integrity sha512-U3UcJizH6oDVMRqb8PbRSQFaP8vRTI4cDv7Z3Co9D1icX7B4Th4XIZw/NRdzrU4kuJbHDq1e9GYxEHjlHkRbLw== dependencies: global "^4.3.2" video.js "^6 || ^7" @@ -8589,6 +9924,7 @@ videojs-contextmenu-ui@^5.0.0: videojs-dock@^2.0.2: version "2.1.4" resolved "https://registry.yarnpkg.com/videojs-dock/-/videojs-dock-2.1.4.tgz#0ebd198b5d48990e3523fdc87dbfdb9fe96f804c" + integrity sha512-ymWYOGOjBMqCv+/lvA1jmbCUbvr+1euwaqN7oBKV/sKcyeeisbxjBoF9yHJYd8LHkXTBtYp96AHYa6XAVeFHJg== dependencies: global "^4.3.2" video.js "^6 || ^7" @@ -8596,20 +9932,24 @@ videojs-dock@^2.0.2: videojs-font@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.0.0.tgz#90eafddcf26b407448c833523f5ca4ad8d5cc1af" + integrity sha512-XS6agz2T7p2cFuuXulJD70md8XMlAN617SJkMWjoTPqZWv+RU8NcZCKsE3Tk73inzxnQdihOp0cvI7NGz2ngHg== videojs-hotkeys@^0.2.21: version "0.2.22" resolved "https://registry.yarnpkg.com/videojs-hotkeys/-/videojs-hotkeys-0.2.22.tgz#76f917b1a70e7bf9da5f7f8cd33d5a032c0284be" + integrity sha512-sl/D6blI+SY40uD9OJBBUZB4PzV5g4xpfV2aPqzYgYiO1GEdXFAZKXWj80Hz2VEmJ8tXj5ToIbVq+t4v3ckvNw== videojs-vtt.js@0.14.1: version "0.14.1" resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.14.1.tgz#da583eb1fc9c81c826a9432b706040e8dea49911" + integrity sha512-YxOiywx6N9t3J5nqsE5WN2Sw4CSqVe3zV+AZm2T4syOc2buNJaD6ZoexSdeszx2sHLU/RRo2r4BJAXFDQ7Qo2Q== dependencies: global "^4.3.1" videostream@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/videostream/-/videostream-2.5.1.tgz#993a8f3efe277e5c8d26a7814ba0c68f79b20688" + integrity sha512-S3f34WE6NB1d/YUAa/EYcTURTkGaxsUqcDmsGWV1jQpQQJxeagc79/XA7ygNjzBf3DoQQ1MKTD+SocPsWSniAg== dependencies: binary-search "^1.3.4" inherits "^2.0.1" @@ -8623,28 +9963,33 @@ videostream@^2.5.1: vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= dependencies: indexof "0.0.1" void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= dependencies: browser-process-hrtime "^0.1.2" walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" watch@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= dependencies: exec-sh "^0.2.0" minimist "^1.2.0" @@ -8652,6 +9997,7 @@ watch@~0.18.0: watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== dependencies: chokidar "^2.0.2" graceful-fs "^4.1.2" @@ -8660,12 +10006,14 @@ watchpack@^1.5.0: wbuf@^1.1.0, wbuf@^1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" webdriver-js-extender@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" + integrity sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ== dependencies: "@types/selenium-webdriver" "^3.0.0" selenium-webdriver "^3.0.1" @@ -8673,6 +10021,7 @@ webdriver-js-extender@2.1.0: webdriver-manager@^12.0.6: version "12.1.0" resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.0.tgz#f6601e52de5f0c97fc7024c889eeb2416f2f1d9d" + integrity sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A== dependencies: adm-zip "^0.4.9" chalk "^1.1.1" @@ -8689,10 +10038,12 @@ webdriver-manager@^12.0.6: webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-bundle-analyzer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.2.tgz#22f19ea6d1b5a15fd7a90baae0bc0f39bd1e4d48" + integrity sha512-cZG4wSQtKrSpk5RJ33dxiaAyo8bP0V+JvycAyIDFEiDIhw4LHhhVKhn40YT1w6TR9E4scHA00LnIoBtTA13Mow== dependencies: acorn "^5.7.3" bfj "^6.1.1" @@ -8710,6 +10061,7 @@ webpack-bundle-analyzer@^3.0.2: webpack-cli@^3.0.8: version "3.1.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" + integrity sha512-p5NeKDtYwjZozUWq6kGNs9w+Gtw/CPvyuXjXn2HMdz8Tie+krjEg8oAtonvIyITZdvpF7XG9xDHwscLr2c+ugQ== dependencies: chalk "^2.4.1" cross-spawn "^6.0.5" @@ -8726,6 +10078,7 @@ webpack-cli@^3.0.8: webpack-core@^0.6.8: version "0.6.9" resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + integrity sha1-/FcViMhVjad76e+23r3Fo7FyvcI= dependencies: source-list-map "~0.1.7" source-map "~0.4.1" @@ -8733,6 +10086,7 @@ webpack-core@^0.6.8: webpack-dev-middleware@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" + integrity sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA== dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" @@ -8745,6 +10099,7 @@ webpack-dev-middleware@3.2.0: webpack-dev-middleware@^3.1.3: version "3.3.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.3.0.tgz#8104daf4d4f65defe06ee2eaaeea612a7c541462" + integrity sha512-5C5gXtOo1I6+0AEg4UPglYEtu3Rai6l5IiO6aUu65scHXz29dc3oIWMiRwvcNLXgL0HwRkRxa9N02ZjFt4hY8w== dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" @@ -8756,6 +10111,7 @@ webpack-dev-middleware@^3.1.3: webpack-dev-server@^3.1.4: version "3.1.8" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz#eb7a95945d1108170f902604fb3b939533d9daeb" + integrity sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -8789,6 +10145,7 @@ webpack-dev-server@^3.1.4: webpack-log@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" + integrity sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA== dependencies: chalk "^2.1.0" log-symbols "^2.1.0" @@ -8798,6 +10155,7 @@ webpack-log@^1.2.0: webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: ansi-colors "^3.0.0" uuid "^3.3.2" @@ -8805,12 +10163,14 @@ webpack-log@^2.0.0: webpack-merge@^4.1.2: version "4.1.4" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" + integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ== dependencies: lodash "^4.17.5" webpack-sources@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" + integrity sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A= dependencies: source-list-map "~0.1.7" source-map "~0.5.3" @@ -8818,6 +10178,7 @@ webpack-sources@^0.1.4: webpack-sources@^1.1.0, webpack-sources@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" @@ -8825,12 +10186,14 @@ webpack-sources@^1.1.0, webpack-sources@^1.2.0: webpack-subresource-integrity@^1.1.0-rc.4: version "1.1.0-rc.6" resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz#37f6f1264e1eb378e41465a98da80fad76ab8886" + integrity sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w== dependencies: webpack-core "^0.6.8" webpack@^4.15.1, webpack@^4.17.1: version "4.19.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" + integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== dependencies: "@webassemblyjs/ast" "1.7.6" "@webassemblyjs/helper-module-context" "1.7.6" @@ -8860,6 +10223,7 @@ webpack@^4.15.1, webpack@^4.17.1: websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= dependencies: http-parser-js ">=0.4.0" websocket-extensions ">=0.1.1" @@ -8867,10 +10231,11 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -webtorrent@^0.102.1: +"webtorrent@https://github.com/webtorrent/webtorrent#e9b209c7970816fc29e0cc871157a4918d66001d": version "0.102.4" - resolved "https://registry.yarnpkg.com/webtorrent/-/webtorrent-0.102.4.tgz#0902f5dddb244c4ca8137d5d678546b733adeb2f" + resolved "https://github.com/webtorrent/webtorrent#e9b209c7970816fc29e0cc871157a4918d66001d" dependencies: addr-to-ip-port "^1.4.2" bitfield "^2.0.0" @@ -8878,7 +10243,7 @@ webtorrent@^0.102.1: bittorrent-protocol "^3.0.0" chunk-store-stream "^3.0.1" create-torrent "^3.33.0" - debug "^3.1.0" + debug "^4.0.1" end-of-stream "^1.1.0" fs-chunk-store "^1.6.2" immediate-chunk-store "^2.0.0" @@ -8916,20 +10281,24 @@ webtorrent@^0.102.1: whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621" + integrity sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg== dependencies: iconv-lite "0.4.23" whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== whatwg-mimetype@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" + integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== whatwg-url@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -8938,6 +10307,7 @@ whatwg-url@^6.4.1: whatwg-url@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -8946,44 +10316,53 @@ whatwg-url@^7.0.0: when@~3.6.x: version "3.6.4" resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + integrity sha1-RztRfsFZ4rhQBUl6E5g/CVQS404= which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@1, which@^1.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== dependencies: errno "~0.1.7" wrap-ansi@^2.0.0: version "2.1.0" resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -8991,10 +10370,12 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -9003,18 +10384,21 @@ write-file-atomic@^2.1.0: ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== dependencies: async-limiter "~1.0.0" ws@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" + integrity sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w== dependencies: async-limiter "~1.0.0" ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== dependencies: async-limiter "~1.0.0" safe-buffer "~5.1.0" @@ -9023,6 +10407,7 @@ ws@~3.3.1: xhr@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" + integrity sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM= dependencies: global "~4.3.0" is-function "^1.0.1" @@ -9032,10 +10417,12 @@ xhr@2.4.0: xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xml2js@^0.4.17: version "0.4.19" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== dependencies: sax ">=0.6.0" xmlbuilder "~9.0.1" @@ -9043,74 +10430,89 @@ xml2js@^0.4.17: xmlbuilder@~9.0.1: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= xxhashjs@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== dependencies: cuint "^0.2.2" y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= yargs-parser@10.x, yargs-parser@^10.0.0, yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= dependencies: camelcase "^3.0.0" yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= dependencies: camelcase "^4.1.0" yargs-parser@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ== dependencies: camelcase "^4.1.0" yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= dependencies: camelcase "^4.1.0" yargs@10.0.3: version "10.0.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" + integrity sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw== dependencies: cliui "^3.2.0" decamelize "^1.1.1" @@ -9128,6 +10530,7 @@ yargs@10.0.3: yargs@12.0.2, yargs@^12.0.1: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== dependencies: cliui "^4.0.0" decamelize "^2.0.0" @@ -9145,6 +10548,7 @@ yargs@12.0.2, yargs@^12.0.1: yargs@^11.0.0: version "11.1.0" resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -9162,6 +10566,7 @@ yargs@^11.0.0: yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -9180,6 +10585,7 @@ yargs@^7.0.0: yargs@^8.0.1: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= dependencies: camelcase "^4.1.0" cliui "^3.2.0" @@ -9198,7 +10604,9 @@ yargs@^8.0.1: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= zone.js@~0.8.5: version "0.8.26" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d" + integrity sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA== diff --git a/shared/models/i18n/i18n.ts b/shared/models/i18n/i18n.ts index 9278c043b..5c3249452 100644 --- a/shared/models/i18n/i18n.ts +++ b/shared/models/i18n/i18n.ts @@ -1,6 +1,6 @@ export const LOCALE_FILES = [ 'player', 'server' ] -export const I18N_LOCALES: any = { +export const I18N_LOCALES = { 'en-US': 'English', 'fr-FR': 'Français', 'eu-ES': 'Euskara', @@ -17,7 +17,7 @@ export const I18N_LOCALES: any = { 'zh-Hans-CN': '简体中文(中国)' } -const I18N_LOCALE_ALIAS: any = { +const I18N_LOCALE_ALIAS = { 'en': 'en-US', 'fr': 'fr-FR', 'eu': 'eu-ES', diff --git a/shared/models/overviews/videos-overview.ts b/shared/models/overviews/videos-overview.ts index 8c8785763..ee009d94c 100644 --- a/shared/models/overviews/videos-overview.ts +++ b/shared/models/overviews/videos-overview.ts @@ -15,5 +15,4 @@ export interface VideosOverview { tag: string videos: Video[] }[] - [key: string]: any } diff --git a/shared/models/server/custom-config.model.ts b/shared/models/server/custom-config.model.ts index c5156d9f3..3afd36fcd 100644 --- a/shared/models/server/custom-config.model.ts +++ b/shared/models/server/custom-config.model.ts @@ -55,7 +55,6 @@ export interface CustomConfig { '480p': boolean '720p': boolean '1080p': boolean - [key: string]: boolean } } diff --git a/shared/models/users/user.model.ts b/shared/models/users/user.model.ts index 06a660206..8147dc48e 100644 --- a/shared/models/users/user.model.ts +++ b/shared/models/users/user.model.ts @@ -20,5 +20,4 @@ export interface User { blockedReason?: string videoQuotaUsed?: number - [key: string]: any } -- cgit v1.2.3 From e9683f850db6e21f12ec0ed330129ac5479d4359 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 14:58:11 +0200 Subject: Fix lint --- client/src/app/shared/video/syndication.model.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/app/shared/video/syndication.model.ts b/client/src/app/shared/video/syndication.model.ts index a52b5771b..c59ab01e8 100644 --- a/client/src/app/shared/video/syndication.model.ts +++ b/client/src/app/shared/video/syndication.model.ts @@ -4,4 +4,4 @@ export interface Syndication { format: FeedFormat, label: string, url: string -} \ No newline at end of file +} -- cgit v1.2.3 From 5aa4a3dd05486a3c4910ffea888e5fae190bb53d Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 17 Oct 2018 20:04:50 -0600 Subject: Change "delete" to "delete this report" Closes #1295. --- .../+admin/moderation/video-abuse-list/video-abuse-list.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts index 9837af586..188cbd7ac 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts +++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts @@ -36,7 +36,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit { this.videoAbuseActions = [ { - label: this.i18n('Delete'), + label: this.i18n('Delete this report'), handler: videoAbuse => this.removeVideoAbuse(videoAbuse) }, { -- cgit v1.2.3 From 198d764ff08047ec469b21b1e8c54d8d29ef2b8d Mon Sep 17 00:00:00 2001 From: mike stedman Date: Wed, 17 Oct 2018 20:22:06 -0600 Subject: Make abuse-delete confirmation box clearer --- .../moderation/video-abuse-list/video-abuse-list.component.ts | 2 +- client/src/locale/source/angular_en_US.xml | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts index 188cbd7ac..7a219c846 100644 --- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts +++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts @@ -85,7 +85,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit { } async removeVideoAbuse (videoAbuse: VideoAbuse) { - const res = await this.confirmService.confirm(this.i18n('Do you really want to delete this abuse?'), this.i18n('Delete')) + const res = await this.confirmService.confirm(this.i18n('Do you really want to delete this abuse report?'), this.i18n('Delete')) if (res === false) return this.videoAbuseService.removeVideoAbuse(videoAbuse).subscribe( diff --git a/client/src/locale/source/angular_en_US.xml b/client/src/locale/source/angular_en_US.xml index 2b0754fcf..4a71c6e17 100644 --- a/client/src/locale/source/angular_en_US.xml +++ b/client/src/locale/source/angular_en_US.xml @@ -4351,6 +4351,13 @@ When you will upload a video in this channel, the video support field will be au 1
+ + Delete this report + + src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts + 1 + + Update moderation comment @@ -4372,8 +4379,8 @@ When you will upload a video in this channel, the video support field will be au 1 - - Do you really want to delete this abuse? + + Do you really want to delete this abuse report? src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts 1 -- cgit v1.2.3 From f65bcbb50f2605ccc739aeb05e88f7d2026eb0fc Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 15:59:25 +0200 Subject: PeerTube is not in beta anymore --- client/src/app/+about/about-peertube/about-peertube.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/app/+about/about-peertube/about-peertube.component.html b/client/src/app/+about/about-peertube/about-peertube.component.html index 13ce89f75..d3fc9a828 100644 --- a/client/src/app/+about/about-peertube/about-peertube.component.html +++ b/client/src/app/+about/about-peertube/about-peertube.component.html @@ -83,7 +83,7 @@
What will be done to mitigate this problem?

- PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue:

@@ -94,4 +94,4 @@
  • Disable P2P from the administration interface
  • An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program
  • - \ No newline at end of file + -- cgit v1.2.3 From ccbbe2b8d4b18d48d132058776c22397250a4a87 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 16:34:18 +0200 Subject: Update contributors list --- CREDITS.md | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index e0e647dc9..326f9da07 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -4,48 +4,56 @@ * [rigelk](https://github.com/rigelk) * [gegeweb](https://github.com/gegeweb) * [Jorropo](https://github.com/Jorropo) + * [Nutomic](https://github.com/Nutomic) + * [BO41](https://github.com/BO41) * [bnjbvr](https://github.com/bnjbvr) * [DavidLibeau](https://github.com/DavidLibeau) * [jankeromnes](https://github.com/jankeromnes) + * [JohnXLivingston](https://github.com/JohnXLivingston) + * [kaiyou](https://github.com/kaiyou) * [DimitriGilbert](https://github.com/DimitriGilbert) * [floSoX](https://github.com/floSoX) * [Green-Star](https://github.com/Green-Star) * [joshmorel](https://github.com/joshmorel) * [rezonant](https://github.com/rezonant) - * [kaiyou](https://github.com/kaiyou) - * [Nutomic](https://github.com/Nutomic) - * [JohnXLivingston](https://github.com/JohnXLivingston) + * [ldidry](https://github.com/ldidry) * [okhin](https://github.com/okhin) + * [daftaupe](https://github.com/daftaupe) * [fflorent](https://github.com/fflorent) - * [ldidry](https://github.com/ldidry) * [dedesite](https://github.com/dedesite) * [Nautigsam](https://github.com/Nautigsam) - * [BO41](https://github.com/BO41) - * [daftaupe](https://github.com/daftaupe) + * [am97](https://github.com/am97) * [dadall](https://github.com/dadall) * [jonathanraes](https://github.com/jonathanraes) * [LecygneNoir](https://github.com/LecygneNoir) + * [anoadragon453](https://github.com/anoadragon453) + * [McFlat](https://github.com/McFlat) * [rhaamo](https://github.com/rhaamo) * [mrflos](https://github.com/mrflos) * [jocelynj](https://github.com/jocelynj) + * [lucas-dclrcq](https://github.com/lucas-dclrcq) * [lucaspontoexe](https://github.com/lucaspontoexe) + * [scanlime](https://github.com/scanlime) * [flyingrub](https://github.com/flyingrub) + * [SerCom-KC](https://github.com/SerCom-KC) * [tcitworld](https://github.com/tcitworld) * [valvin1](https://github.com/valvin1) - * [am97](https://github.com/am97) * [taziden](https://github.com/taziden) * [sticmac](https://github.com/sticmac) + * [barbeque](https://github.com/barbeque) * [luzpaz](https://github.com/luzpaz) * [louistio](https://github.com/louistio) * [qsypoq](https://github.com/qsypoq) + * [daker](https://github.com/daker) + * [xyproto](https://github.com/xyproto) * [Anton-Latukha](https://github.com/Anton-Latukha) * [noplanman](https://github.com/noplanman) * [austinheap](https://github.com/austinheap) * [benabbottnz](https://github.com/benabbottnz) * [ewft](https://github.com/ewft) * [bradsk88](https://github.com/bradsk88) - * [WildYorkies](https://github.com/WildYorkies) * [Ealhad](https://github.com/Ealhad) + * [clementbrizard](https://github.com/clementbrizard) * [DeeJayBro](https://github.com/DeeJayBro) * [Edznux](https://github.com/Edznux) * [ebrehault](https://github.com/ebrehault) @@ -57,10 +65,8 @@ * [jlebras](https://github.com/jlebras) * [alcalyn](https://github.com/alcalyn) * [mkody](https://github.com/mkody) - * [lucas-dclrcq](https://github.com/lucas-dclrcq) * [zapashcanon](https://github.com/zapashcanon) * [mart-e](https://github.com/mart-e) - * [scanlime](https://github.com/scanlime) * [1000i100](https://github.com/1000i100) * [zeograd](https://github.com/zeograd) * [PhieF](https://github.com/PhieF) @@ -77,6 +83,7 @@ * [imbsky](https://github.com/imbsky) * [ctlaltdefeat](https://github.com/ctlaltdefeat) * [jomo](https://github.com/jomo) + * [lsde](https://github.com/lsde) * [memoryboxes](https://github.com/memoryboxes) * [norrist](https://github.com/norrist) * [osauzet](https://github.com/osauzet) @@ -107,6 +114,7 @@ * [gorkaazk](https://trad.framasoft.org/zanata/profile/view/gorkaazk) * [gwendald](https://trad.framasoft.org/zanata/profile/view/gwendald) * [h3zjp](https://trad.framasoft.org/zanata/profile/view/h3zjp) + * [jfblanc](https://trad.framasoft.org/zanata/profile/view/jfblanc) * [jhertel](https://trad.framasoft.org/zanata/profile/view/jhertel) * [jorropo](https://trad.framasoft.org/zanata/profile/view/jorropo) * [kedemferre](https://trad.framasoft.org/zanata/profile/view/kedemferre) @@ -119,6 +127,7 @@ * [nbrucy](https://trad.framasoft.org/zanata/profile/view/nbrucy) * [nitai](https://trad.framasoft.org/zanata/profile/view/nitai) * [noncommutativegeo](https://trad.framasoft.org/zanata/profile/view/noncommutativegeo) + * [nopsidy](https://trad.framasoft.org/zanata/profile/view/nopsidy) * [nvivant](https://trad.framasoft.org/zanata/profile/view/nvivant) * [osoitz](https://trad.framasoft.org/zanata/profile/view/osoitz) * [outloudvi](https://trad.framasoft.org/zanata/profile/view/outloudvi) -- cgit v1.2.3 From 74cd011b6c089cac88a4b8aa76ad3be2ca4f1c15 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 18 Oct 2018 16:53:52 +0200 Subject: Fix optimize old videos script --- scripts/optimize-old-videos.ts | 8 +- server/tests/api/videos/video-transcoder.ts | 25 ++---- server/tests/cli/index.ts | 1 + server/tests/cli/optimize-old-videos.ts | 120 ++++++++++++++++++++++++++++ server/tests/utils/miscs/miscs.ts | 31 ++++++- 5 files changed, 161 insertions(+), 24 deletions(-) create mode 100644 server/tests/cli/optimize-old-videos.ts diff --git a/scripts/optimize-old-videos.ts b/scripts/optimize-old-videos.ts index 02026b3da..c93f82316 100644 --- a/scripts/optimize-old-videos.ts +++ b/scripts/optimize-old-videos.ts @@ -1,8 +1,10 @@ -import { VIDEO_TRANSCODING_FPS } from '../server/initializers/constants' +import { CONFIG, VIDEO_TRANSCODING_FPS } from '../server/initializers/constants' import { getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '../server/helpers/ffmpeg-utils' import { getMaxBitrate } from '../shared/models/videos' import { VideoModel } from '../server/models/video/video' import { optimizeVideofile } from '../server/lib/video-transcoding' +import { initDatabaseModels } from '../server/initializers' +import { join } from 'path' run() .then(() => process.exit(0)) @@ -12,11 +14,13 @@ run() }) async function run () { + await initDatabaseModels(true) + const localVideos = await VideoModel.listLocal() for (const video of localVideos) { for (const file of video.VideoFiles) { - const inputPath = video.getVideoFilename(file) + const inputPath = join(CONFIG.STORAGE.VIDEOS_DIR, video.getVideoFilename(file)) const [ videoBitrate, fps, resolution ] = await Promise.all([ getVideoFileBitrate(inputPath), diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index 0a567873c..85795d2ed 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts @@ -18,7 +18,8 @@ import { ServerInfo, setAccessTokensToServers, uploadVideo, - webtorrentAdd + webtorrentAdd, + generateHighBitrateVideo } from '../../utils' import { join } from 'path' import { waitJobs } from '../../utils/server/jobs' @@ -283,29 +284,13 @@ describe('Test video transcoding', function () { } }) - const tempFixturePath = buildAbsoluteFixturePath('video_high_bitrate_1080p.mp4', true) it('Should respect maximum bitrate values', async function () { this.timeout(160000) + let tempFixturePath: string + { - const exists = await pathExists(tempFixturePath) - if (!exists) { - - // Generate a random, high bitrate video on the fly, so we don't have to include - // a large file in the repo. The video needs to have a certain minimum length so - // that FFmpeg properly applies bitrate limits. - // https://stackoverflow.com/a/15795112 - await new Promise(async (res, rej) => { - ffmpeg() - .outputOptions([ '-f rawvideo', '-video_size 1920x1080', '-i /dev/urandom' ]) - .outputOptions([ '-ac 2', '-f s16le', '-i /dev/urandom', '-t 10' ]) - .outputOptions([ '-maxrate 10M', '-bufsize 10M' ]) - .output(tempFixturePath) - .on('error', rej) - .on('end', res) - .run() - }) - } + tempFixturePath = await generateHighBitrateVideo() const bitrate = await getVideoFileBitrate(tempFixturePath) expect(bitrate).to.be.above(getMaxBitrate(VideoResolution.H_1080P, 60, VIDEO_TRANSCODING_FPS)) diff --git a/server/tests/cli/index.ts b/server/tests/cli/index.ts index 6201314ce..8f8acf56c 100644 --- a/server/tests/cli/index.ts +++ b/server/tests/cli/index.ts @@ -4,3 +4,4 @@ import './create-transcoding-job' import './peertube' import './reset-password' import './update-host' +import './update-host' diff --git a/server/tests/cli/optimize-old-videos.ts b/server/tests/cli/optimize-old-videos.ts new file mode 100644 index 000000000..66dd39cce --- /dev/null +++ b/server/tests/cli/optimize-old-videos.ts @@ -0,0 +1,120 @@ +/* tslint:disable:no-unused-expression */ + +import 'mocha' +import * as chai from 'chai' +import { getMaxBitrate, Video, VideoDetails, VideoResolution } from '../../../shared/models/videos' +import { + doubleFollow, + execCLI, + flushAndRunMultipleServers, + flushTests, generateHighBitrateVideo, + getEnvCli, + getVideo, + getVideosList, + killallServers, root, + ServerInfo, + setAccessTokensToServers, + uploadVideo, viewVideo, wait +} from '../utils' +import { waitJobs } from '../utils/server/jobs' +import { getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '../../helpers/ffmpeg-utils' +import { VIDEO_TRANSCODING_FPS } from '../../initializers' +import { join } from 'path' + +const expect = chai.expect + +describe('Test optimize old videos', function () { + let servers: ServerInfo[] = [] + let video1UUID: string + let video2UUID: string + + before(async function () { + this.timeout(200000) + + await flushTests() + + // Run server 2 to have transcoding enabled + servers = await flushAndRunMultipleServers(2) + await setAccessTokensToServers(servers) + + await doubleFollow(servers[0], servers[1]) + + let tempFixturePath: string + + { + tempFixturePath = await generateHighBitrateVideo() + + const bitrate = await getVideoFileBitrate(tempFixturePath) + expect(bitrate).to.be.above(getMaxBitrate(VideoResolution.H_1080P, 60, VIDEO_TRANSCODING_FPS)) + } + + // Upload two videos for our needs + const res1 = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video1', fixture: tempFixturePath }) + video1UUID = res1.body.video.uuid + const res2 = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video2', fixture: tempFixturePath }) + video2UUID = res2.body.video.uuid + + await waitJobs(servers) + }) + + it('Should have two video files on each server', async function () { + this.timeout(30000) + + for (const server of servers) { + const res = await getVideosList(server.url) + const videos = res.body.data + expect(videos).to.have.lengthOf(2) + + for (const video of videos) { + const res2 = await getVideo(server.url, video.uuid) + const videoDetail: VideoDetails = res2.body + expect(videoDetail.files).to.have.lengthOf(1) + } + } + }) + + it('Should run optimize script', async function () { + this.timeout(120000) + + const env = getEnvCli(servers[0]) + await execCLI(`${env} npm run optimize-old-videos`) + + await waitJobs(servers) + + for (const server of servers) { + const res = await getVideosList(server.url) + const videos: Video[] = res.body.data + + expect(videos).to.have.lengthOf(2) + + for (const video of videos) { + await viewVideo(server.url, video.uuid) + + // Refresh video + await waitJobs(servers) + await wait(5000) + await waitJobs(servers) + + const res2 = await getVideo(server.url, video.uuid) + const videosDetails: VideoDetails = res2.body + + expect(videosDetails.files).to.have.lengthOf(1) + const file = videosDetails.files[0] + + expect(file.size).to.be.below(5000000) + + const path = join(root(), 'test1', 'videos', video.uuid + '-' + file.resolution.id + '.mp4') + const bitrate = await getVideoFileBitrate(path) + const fps = await getVideoFileFPS(path) + const resolution = await getVideoFileResolution(path) + + expect(resolution.videoFileResolution).to.equal(file.resolution.id) + expect(bitrate).to.be.below(getMaxBitrate(resolution.videoFileResolution, fps, VIDEO_TRANSCODING_FPS)) + } + } + }) + + after(async function () { + killallServers(servers) + }) +}) diff --git a/server/tests/utils/miscs/miscs.ts b/server/tests/utils/miscs/miscs.ts index d20fa96b8..589daa420 100644 --- a/server/tests/utils/miscs/miscs.ts +++ b/server/tests/utils/miscs/miscs.ts @@ -4,7 +4,8 @@ import * as chai from 'chai' import { isAbsolute, join } from 'path' import * as request from 'supertest' import * as WebTorrent from 'webtorrent' -import { readFile } from 'fs-extra' +import { pathExists, readFile } from 'fs-extra' +import * as ffmpeg from 'fluent-ffmpeg' const expect = chai.expect let webtorrent = new WebTorrent() @@ -61,6 +62,31 @@ function buildAbsoluteFixturePath (path: string, customTravisPath = false) { return join(__dirname, '..', '..', 'fixtures', path) } +async function generateHighBitrateVideo () { + const tempFixturePath = buildAbsoluteFixturePath('video_high_bitrate_1080p.mp4', true) + + const exists = await pathExists(tempFixturePath) + if (!exists) { + + // Generate a random, high bitrate video on the fly, so we don't have to include + // a large file in the repo. The video needs to have a certain minimum length so + // that FFmpeg properly applies bitrate limits. + // https://stackoverflow.com/a/15795112 + return new Promise(async (res, rej) => { + ffmpeg() + .outputOptions([ '-f rawvideo', '-video_size 1920x1080', '-i /dev/urandom' ]) + .outputOptions([ '-ac 2', '-f s16le', '-i /dev/urandom', '-t 10' ]) + .outputOptions([ '-maxrate 10M', '-bufsize 10M' ]) + .output(tempFixturePath) + .on('error', rej) + .on('end', () => res(tempFixturePath)) + .run() + }) + } + + return tempFixturePath +} + // --------------------------------------------------------------------------- export { @@ -70,5 +96,6 @@ export { immutableAssign, testImage, buildAbsoluteFixturePath, - root + root, + generateHighBitrateVideo } -- cgit v1.2.3 From b8670e5336708fef4098ef0d4b3fa15a497630af Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Thu, 18 Oct 2018 17:13:27 +0200 Subject: adding minimum signup age conforming to ceiling GPDR age It is not yet configurable and should be made so as GDPR (or other regulations for that matter) can specify other minimum age requirements. --- client/src/app/signup/signup.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/app/signup/signup.component.html b/client/src/app/signup/signup.component.html index aad4b5be3..531a97814 100644 --- a/client/src/app/signup/signup.component.html +++ b/client/src/app/signup/signup.component.html @@ -51,7 +51,7 @@
    -- cgit v1.2.3 From be8139c7fee3c9e4c99938a3bd29bc9ad1813ac9 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Thu, 18 Oct 2018 23:49:12 +0200 Subject: fix lint test --- server/tests/cli/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/tests/cli/index.ts b/server/tests/cli/index.ts index 8f8acf56c..6201314ce 100644 --- a/server/tests/cli/index.ts +++ b/server/tests/cli/index.ts @@ -4,4 +4,3 @@ import './create-transcoding-job' import './peertube' import './reset-password' import './update-host' -import './update-host' -- cgit v1.2.3 From e0628695c3425bf69b5d7a46b24dcdf31892d9b6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 08:37:10 +0200 Subject: Fix embed --- client/src/standalone/videos/embed.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index 7b269eeb9..c113c67da 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts @@ -19,7 +19,7 @@ import 'whatwg-fetch' // FIXME: something weird with our path definition in tsconfig and typings // @ts-ignore -import vjs from 'video.js' +import * as vjs from 'video.js' import * as Channel from 'jschannel' -- cgit v1.2.3 From d23e6a1c97a6ae3ca8d340a8c9adad268a5be57e Mon Sep 17 00:00:00 2001 From: BRAINS YUM <43896676+McFlat@users.noreply.github.com> Date: Fri, 19 Oct 2018 01:54:01 -0500 Subject: Feature/description support fields length 1000 (#1267) * fix migrations to not use config constant values as it can introduce bugs later when they change; (fixes #1259) remove constant fields imports from migrations * add migrations to update description and support fields to 1000 (fixes #1258) * fix client/server account and video_channel description/support fields to be max len 1000 (fixes #1258); fix test Should fail with a too long description; fix test Should fail with a long description; fix test Should fail with a long description; Remove USER.SUPPORT from constants since that field no longer exists; null not false, in migrations/0280-description-support.ts; video support field 1000, oops; * rename migration 0280-description-support.ts -> 0285-description-support.ts; update video support maxlength text --- .../form-validators/user-validators.service.ts | 4 +- .../video-channel-validators.service.ts | 8 ++-- .../form-validators/video-validators.service.ts | 4 +- server/initializers/constants.ts | 10 ++-- server/initializers/migrations/0120-video-null.ts | 3 +- server/initializers/migrations/0195-support.ts | 9 ++-- .../initializers/migrations/0245-user-blocked.ts | 3 +- .../migrations/0250-video-abuse-state.ts | 3 +- .../migrations/0255-video-blacklist-reason.ts | 3 +- .../migrations/0260-upload-quota-daily.ts | 1 - .../migrations/0285-description-support.ts | 53 ++++++++++++++++++++++ server/tests/api/check-params/users.ts | 2 +- server/tests/api/check-params/video-channels.ts | 8 ++-- server/tests/api/check-params/video-imports.ts | 2 +- server/tests/api/check-params/videos.ts | 4 +- 15 files changed, 82 insertions(+), 35 deletions(-) create mode 100644 server/initializers/migrations/0285-description-support.ts diff --git a/client/src/app/shared/forms/form-validators/user-validators.service.ts b/client/src/app/shared/forms/form-validators/user-validators.service.ts index 1fd1cdf68..d14fa4777 100644 --- a/client/src/app/shared/forms/form-validators/user-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/user-validators.service.ts @@ -101,11 +101,11 @@ export class UserValidatorsService { this.USER_DESCRIPTION = { VALIDATORS: [ Validators.minLength(3), - Validators.maxLength(250) + Validators.maxLength(1000) ], MESSAGES: { 'minlength': this.i18n('Description must be at least 3 characters long.'), - 'maxlength': this.i18n('Description cannot be more than 250 characters long.') + 'maxlength': this.i18n('Description cannot be more than 1000 characters long.') } } diff --git a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts index 1ce3a0dca..f62ff65f7 100644 --- a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts @@ -42,22 +42,22 @@ export class VideoChannelValidatorsService { this.VIDEO_CHANNEL_DESCRIPTION = { VALIDATORS: [ Validators.minLength(3), - Validators.maxLength(500) + Validators.maxLength(1000) ], MESSAGES: { 'minlength': i18n('Description must be at least 3 characters long.'), - 'maxlength': i18n('Description cannot be more than 500 characters long.') + 'maxlength': i18n('Description cannot be more than 1000 characters long.') } } this.VIDEO_CHANNEL_SUPPORT = { VALIDATORS: [ Validators.minLength(3), - Validators.maxLength(500) + Validators.maxLength(1000) ], MESSAGES: { 'minlength': i18n('Support text must be at least 3 characters long.'), - 'maxlength': i18n('Support text cannot be more than 500 characters long.') + 'maxlength': i18n('Support text cannot be more than 1000 characters long.') } } } diff --git a/client/src/app/shared/forms/form-validators/video-validators.service.ts b/client/src/app/shared/forms/form-validators/video-validators.service.ts index 396be6f3b..81ed0666f 100644 --- a/client/src/app/shared/forms/form-validators/video-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/video-validators.service.ts @@ -79,10 +79,10 @@ export class VideoValidatorsService { } this.VIDEO_SUPPORT = { - VALIDATORS: [ Validators.minLength(3), Validators.maxLength(500) ], + VALIDATORS: [ Validators.minLength(3), Validators.maxLength(1000) ], MESSAGES: { 'minlength': this.i18n('Video support must be at least 3 characters long.'), - 'maxlength': this.i18n('Video support cannot be more than 500 characters long.') + 'maxlength': this.i18n('Video support cannot be more than 1000 characters long.') } } diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 03158e356..e8843a3ab 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -16,7 +16,7 @@ let config: IConfig = require('config') // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 280 +const LAST_MIGRATION_VERSION = 285 // --------------------------------------------------------------------------- @@ -295,7 +295,7 @@ const CONFIG = { const CONSTRAINTS_FIELDS = { USERS: { NAME: { min: 3, max: 120 }, // Length - DESCRIPTION: { min: 3, max: 250 }, // Length + DESCRIPTION: { min: 3, max: 1000 }, // Length USERNAME: { min: 3, max: 20 }, // Length PASSWORD: { min: 6, max: 255 }, // Length VIDEO_QUOTA: { min: -1 }, @@ -311,8 +311,8 @@ const CONSTRAINTS_FIELDS = { }, VIDEO_CHANNELS: { NAME: { min: 3, max: 120 }, // Length - DESCRIPTION: { min: 3, max: 500 }, // Length - SUPPORT: { min: 3, max: 500 }, // Length + DESCRIPTION: { min: 3, max: 1000 }, // Length + SUPPORT: { min: 3, max: 1000 }, // Length URL: { min: 3, max: 2000 } // Length }, VIDEO_CAPTIONS: { @@ -341,7 +341,7 @@ const CONSTRAINTS_FIELDS = { LANGUAGE: { min: 1, max: 10 }, // Length TRUNCATED_DESCRIPTION: { min: 3, max: 250 }, // Length DESCRIPTION: { min: 3, max: 10000 }, // Length - SUPPORT: { min: 3, max: 500 }, // Length + SUPPORT: { min: 3, max: 1000 }, // Length IMAGE: { EXTNAME: [ '.jpg', '.jpeg' ], FILE_SIZE: { diff --git a/server/initializers/migrations/0120-video-null.ts b/server/initializers/migrations/0120-video-null.ts index 63f3984dd..6d253f04f 100644 --- a/server/initializers/migrations/0120-video-null.ts +++ b/server/initializers/migrations/0120-video-null.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' async function up (utils: { transaction: Sequelize.Transaction, @@ -28,7 +27,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEOS.DESCRIPTION.max), + type: Sequelize.STRING(10000), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0195-support.ts b/server/initializers/migrations/0195-support.ts index 8722a5f22..3b9eabe79 100644 --- a/server/initializers/migrations/0195-support.ts +++ b/server/initializers/migrations/0195-support.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../index' async function up (utils: { transaction: Sequelize.Transaction, @@ -8,7 +7,7 @@ async function up (utils: { }): Promise { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEOS.SUPPORT.max), + type: Sequelize.STRING(500), allowNull: true, defaultValue: null } @@ -17,7 +16,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEO_CHANNELS.SUPPORT.max), + type: Sequelize.STRING(500), allowNull: true, defaultValue: null } @@ -26,7 +25,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.USERS.DESCRIPTION.max), + type: Sequelize.STRING(250), allowNull: true, defaultValue: null } @@ -35,7 +34,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEOS.DESCRIPTION.max), + type: Sequelize.STRING(10000), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0245-user-blocked.ts b/server/initializers/migrations/0245-user-blocked.ts index 5a04ecd2b..19c7d5b9c 100644 --- a/server/initializers/migrations/0245-user-blocked.ts +++ b/server/initializers/migrations/0245-user-blocked.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' async function up (utils: { transaction: Sequelize.Transaction @@ -31,7 +30,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.USERS.BLOCKED_REASON.max), + type: Sequelize.STRING(250), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0250-video-abuse-state.ts b/server/initializers/migrations/0250-video-abuse-state.ts index acb668ae1..50de25182 100644 --- a/server/initializers/migrations/0250-video-abuse-state.ts +++ b/server/initializers/migrations/0250-video-abuse-state.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' import { VideoAbuseState } from '../../../shared/models/videos' async function up (utils: { @@ -32,7 +31,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEO_ABUSES.MODERATION_COMMENT.max), + type: Sequelize.STRING(300), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0255-video-blacklist-reason.ts b/server/initializers/migrations/0255-video-blacklist-reason.ts index a380e620e..69d6efb9e 100644 --- a/server/initializers/migrations/0255-video-blacklist-reason.ts +++ b/server/initializers/migrations/0255-video-blacklist-reason.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' import { VideoAbuseState } from '../../../shared/models/videos' async function up (utils: { @@ -10,7 +9,7 @@ async function up (utils: { { const data = { - type: Sequelize.STRING(CONSTRAINTS_FIELDS.VIDEO_BLACKLIST.REASON.max), + type: Sequelize.STRING(300), allowNull: true, defaultValue: null } diff --git a/server/initializers/migrations/0260-upload-quota-daily.ts b/server/initializers/migrations/0260-upload-quota-daily.ts index d25154ba6..cbbe391ef 100644 --- a/server/initializers/migrations/0260-upload-quota-daily.ts +++ b/server/initializers/migrations/0260-upload-quota-daily.ts @@ -1,5 +1,4 @@ import * as Sequelize from 'sequelize' -import { CONSTRAINTS_FIELDS } from '../constants' async function up (utils: { transaction: Sequelize.Transaction diff --git a/server/initializers/migrations/0285-description-support.ts b/server/initializers/migrations/0285-description-support.ts new file mode 100644 index 000000000..85ef4ef39 --- /dev/null +++ b/server/initializers/migrations/0285-description-support.ts @@ -0,0 +1,53 @@ +import * as Sequelize from 'sequelize' + +async function up (utils: { + transaction: Sequelize.Transaction, + queryInterface: Sequelize.QueryInterface, + sequelize: Sequelize.Sequelize, + db: any +}): Promise { + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('video', 'support', data) + } + + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('videoChannel', 'support', data) + } + + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('videoChannel', 'description', data) + } + + { + const data = { + type: Sequelize.STRING(1000), + allowNull: true, + defaultValue: null + } + await utils.queryInterface.changeColumn('account', 'description', data) + } +} + +function down (options) { + throw new Error('Not implemented.') +} + +export { + up, + down +} diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts index cbfa0c137..ec46609a4 100644 --- a/server/tests/api/check-params/users.ts +++ b/server/tests/api/check-params/users.ts @@ -315,7 +315,7 @@ describe('Test users API validators', function () { it('Should fail with a too long description', async function () { const fields = { - description: 'super'.repeat(60) + description: 'super'.repeat(201) } await makePutBodyRequest({ url: server.url, path: path + 'me', token: userAccessToken, fields }) diff --git a/server/tests/api/check-params/video-channels.ts b/server/tests/api/check-params/video-channels.ts index 3a7942945..e5696224d 100644 --- a/server/tests/api/check-params/video-channels.ts +++ b/server/tests/api/check-params/video-channels.ts @@ -118,12 +118,12 @@ describe('Test video channels API validator', function () { }) it('Should fail with a long description', async function () { - const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(201) }) await makePostBodyRequest({ url: server.url, path: videoChannelPath, token: server.accessToken, fields }) }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePostBodyRequest({ url: server.url, path: videoChannelPath, token: server.accessToken, fields }) }) @@ -185,12 +185,12 @@ describe('Test video channels API validator', function () { }) it('Should fail with a long description', async function () { - const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { description: 'super'.repeat(201) }) await makePutBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePutBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) diff --git a/server/tests/api/check-params/video-imports.ts b/server/tests/api/check-params/video-imports.ts index 44645b0e2..b51f3d2cd 100644 --- a/server/tests/api/check-params/video-imports.ts +++ b/server/tests/api/check-params/video-imports.ts @@ -140,7 +140,7 @@ describe('Test video imports API validator', function () { }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) diff --git a/server/tests/api/check-params/videos.ts b/server/tests/api/check-params/videos.ts index 904d22870..699f135c7 100644 --- a/server/tests/api/check-params/videos.ts +++ b/server/tests/api/check-params/videos.ts @@ -233,7 +233,7 @@ describe('Test videos API validator', function () { }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) const attaches = baseCorrectAttaches await makeUploadRequest({ url: server.url, path: path + '/upload', token: server.accessToken, fields, attaches }) @@ -482,7 +482,7 @@ describe('Test videos API validator', function () { }) it('Should fail with a long support text', async function () { - const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(150) }) + const fields = immutableAssign(baseCorrectParams, { support: 'super'.repeat(201) }) await makePutBodyRequest({ url: server.url, path: path + videoId, token: server.accessToken, fields }) }) -- cgit v1.2.3 From 41f2ebae4f970932fb62d2d8923b1f776f0b1494 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 11:41:19 +0200 Subject: Add HTTP signature check before linked signature It's faster, and will allow us to use RSA signature 2018 (with upstream jsonld-signature module) without too much incompatibilities in the peertube federation --- package.json | 1 + server/helpers/activitypub.ts | 32 ++++---- server/helpers/peertube-crypto.ts | 70 ++++++++++------ server/initializers/constants.ts | 7 ++ .../handlers/utils/activitypub-http-utils.ts | 7 +- server/middlewares/activitypub.ts | 94 +++++++++++++++++----- .../validators/activitypub/signature.ts | 16 +++- yarn.lock | 2 +- 8 files changed, 164 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 46c6d5dce..295b4e74b 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "fluent-ffmpeg": "^2.1.0", "fs-extra": "^7.0.0", "helmet": "^3.12.1", + "http-signature": "^1.2.0", "ip-anonymize": "^0.0.6", "ipaddr.js": "1.8.1", "is-cidr": "^2.0.5", diff --git a/server/helpers/activitypub.ts b/server/helpers/activitypub.ts index 1304c7559..278010e78 100644 --- a/server/helpers/activitypub.ts +++ b/server/helpers/activitypub.ts @@ -4,7 +4,7 @@ import { ResultList } from '../../shared/models' import { Activity, ActivityPubActor } from '../../shared/models/activitypub' import { ACTIVITY_PUB } from '../initializers' import { ActorModel } from '../models/activitypub/actor' -import { signObject } from './peertube-crypto' +import { signJsonLDObject } from './peertube-crypto' import { pageToStartAndCount } from './core-utils' function activityPubContextify (data: T) { @@ -15,22 +15,22 @@ function activityPubContextify (data: T) { { RsaSignature2017: 'https://w3id.org/security#RsaSignature2017', pt: 'https://joinpeertube.org/ns', - schema: 'http://schema.org#', + sc: 'http://schema.org#', Hashtag: 'as:Hashtag', - uuid: 'schema:identifier', - category: 'schema:category', - licence: 'schema:license', - subtitleLanguage: 'schema:subtitleLanguage', + uuid: 'sc:identifier', + category: 'sc:category', + licence: 'sc:license', + subtitleLanguage: 'sc:subtitleLanguage', sensitive: 'as:sensitive', - language: 'schema:inLanguage', - views: 'schema:Number', - stats: 'schema:Number', - size: 'schema:Number', - fps: 'schema:Number', - commentsEnabled: 'schema:Boolean', - waitTranscoding: 'schema:Boolean', - expires: 'schema:expires', - support: 'schema:Text', + language: 'sc:inLanguage', + views: 'sc:Number', + stats: 'sc:Number', + size: 'sc:Number', + fps: 'sc:Number', + commentsEnabled: 'sc:Boolean', + waitTranscoding: 'sc:Boolean', + expires: 'sc:expires', + support: 'sc:Text', CacheFile: 'pt:CacheFile' }, { @@ -102,7 +102,7 @@ async function activityPubCollectionPagination (url: string, handler: ActivityPu function buildSignedActivity (byActor: ActorModel, data: Object) { const activity = activityPubContextify(data) - return signObject(byActor, activity) as Promise + return signJsonLDObject(byActor, activity) as Promise } function getActorUrl (activityActor: string | ActivityPubActor) { diff --git a/server/helpers/peertube-crypto.ts b/server/helpers/peertube-crypto.ts index 5c182961d..cb5f27240 100644 --- a/server/helpers/peertube-crypto.ts +++ b/server/helpers/peertube-crypto.ts @@ -1,9 +1,12 @@ -import { BCRYPT_SALT_SIZE, PRIVATE_RSA_KEY_SIZE } from '../initializers' +import { Request } from 'express' +import { BCRYPT_SALT_SIZE, HTTP_SIGNATURE, PRIVATE_RSA_KEY_SIZE } from '../initializers' import { ActorModel } from '../models/activitypub/actor' import { bcryptComparePromise, bcryptGenSaltPromise, bcryptHashPromise, createPrivateKey, getPublicKey } from './core-utils' import { jsig } from './custom-jsonld-signature' import { logger } from './logger' +const httpSignature = require('http-signature') + async function createPrivateAndPublicKeys () { logger.info('Generating a RSA key...') @@ -13,18 +16,42 @@ async function createPrivateAndPublicKeys () { return { privateKey: key, publicKey } } -function isSignatureVerified (fromActor: ActorModel, signedDocument: object) { +// User password checks + +function comparePassword (plainPassword: string, hashPassword: string) { + return bcryptComparePromise(plainPassword, hashPassword) +} + +async function cryptPassword (password: string) { + const salt = await bcryptGenSaltPromise(BCRYPT_SALT_SIZE) + + return bcryptHashPromise(password, salt) +} + +// HTTP Signature + +function isHTTPSignatureVerified (httpSignatureParsed: any, actor: ActorModel) { + return httpSignature.verifySignature(httpSignatureParsed, actor.publicKey) === true +} + +function parseHTTPSignature (req: Request) { + return httpSignature.parse(req, { authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME }) +} + +// JSONLD + +function isJsonLDSignatureVerified (fromActor: ActorModel, signedDocument: any) { const publicKeyObject = { '@context': jsig.SECURITY_CONTEXT_URL, - '@id': fromActor.url, - '@type': 'CryptographicKey', + id: fromActor.url, + type: 'CryptographicKey', owner: fromActor.url, publicKeyPem: fromActor.publicKey } const publicKeyOwnerObject = { '@context': jsig.SECURITY_CONTEXT_URL, - '@id': fromActor.url, + id: fromActor.url, publicKey: [ publicKeyObject ] } @@ -33,14 +60,19 @@ function isSignatureVerified (fromActor: ActorModel, signedDocument: object) { publicKeyOwner: publicKeyOwnerObject } - return jsig.promises.verify(signedDocument, options) - .catch(err => { - logger.error('Cannot check signature.', { err }) - return false - }) + return jsig.promises + .verify(signedDocument, options) + .then((result: { verified: boolean }) => { + logger.info('coucou', result) + return result.verified + }) + .catch(err => { + logger.error('Cannot check signature.', { err }) + return false + }) } -function signObject (byActor: ActorModel, data: any) { +function signJsonLDObject (byActor: ActorModel, data: any) { const options = { privateKeyPem: byActor.privateKey, creator: byActor.url, @@ -50,22 +82,14 @@ function signObject (byActor: ActorModel, data: any) { return jsig.promises.sign(data, options) } -function comparePassword (plainPassword: string, hashPassword: string) { - return bcryptComparePromise(plainPassword, hashPassword) -} - -async function cryptPassword (password: string) { - const salt = await bcryptGenSaltPromise(BCRYPT_SALT_SIZE) - - return bcryptHashPromise(password, salt) -} - // --------------------------------------------------------------------------- export { - isSignatureVerified, + parseHTTPSignature, + isHTTPSignatureVerified, + isJsonLDSignatureVerified, comparePassword, createPrivateAndPublicKeys, cryptPassword, - signObject + signJsonLDObject } diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index e8843a3ab..28d51068b 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -532,6 +532,12 @@ const ACTIVITY_PUB_ACTOR_TYPES: { [ id: string ]: ActivityPubActorType } = { APPLICATION: 'Application' } +const HTTP_SIGNATURE = { + HEADER_NAME: 'signature', + ALGORITHM: 'rsa-sha256', + HEADERS_TO_SIGN: [ 'date', 'host', 'digest', '(request-target)' ] +} + // --------------------------------------------------------------------------- const PRIVATE_RSA_KEY_SIZE = 2048 @@ -731,6 +737,7 @@ export { VIDEO_EXT_MIMETYPE, CRAWL_REQUEST_CONCURRENCY, JOB_COMPLETED_LIFETIME, + HTTP_SIGNATURE, VIDEO_IMPORT_STATES, VIDEO_VIEW_LIFETIME, buildLanguages diff --git a/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts b/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts index d71c91a24..fd9c74341 100644 --- a/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts +++ b/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts @@ -2,6 +2,7 @@ import { buildSignedActivity } from '../../../../helpers/activitypub' import { getServerActor } from '../../../../helpers/utils' import { ActorModel } from '../../../../models/activitypub/actor' import { sha256 } from '../../../../helpers/core-utils' +import { HTTP_SIGNATURE } from '../../../../initializers' type Payload = { body: any, signatureActorId?: number } @@ -29,11 +30,11 @@ async function buildSignedRequestOptions (payload: Payload) { const keyId = actor.getWebfingerUrl() return { - algorithm: 'rsa-sha256', - authorizationHeaderName: 'Signature', + algorithm: HTTP_SIGNATURE.ALGORITHM, + authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, keyId, key: actor.privateKey, - headers: [ 'date', 'host', 'digest', '(request-target)' ] + headers: HTTP_SIGNATURE.HEADERS_TO_SIGN } } diff --git a/server/middlewares/activitypub.ts b/server/middlewares/activitypub.ts index d7f59be8c..1ec888477 100644 --- a/server/middlewares/activitypub.ts +++ b/server/middlewares/activitypub.ts @@ -2,34 +2,32 @@ import { eachSeries } from 'async' import { NextFunction, Request, RequestHandler, Response } from 'express' import { ActivityPubSignature } from '../../shared' import { logger } from '../helpers/logger' -import { isSignatureVerified } from '../helpers/peertube-crypto' -import { ACCEPT_HEADERS, ACTIVITY_PUB } from '../initializers' +import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../helpers/peertube-crypto' +import { ACCEPT_HEADERS, ACTIVITY_PUB, HTTP_SIGNATURE } from '../initializers' import { getOrCreateActorAndServerAndModel } from '../lib/activitypub' import { ActorModel } from '../models/activitypub/actor' +import { loadActorUrlOrGetFromWebfinger } from '../helpers/webfinger' async function checkSignature (req: Request, res: Response, next: NextFunction) { - const signatureObject: ActivityPubSignature = req.body.signature + try { + const httpSignatureChecked = await checkHttpSignature(req, res) + if (httpSignatureChecked !== true) return - const [ creator ] = signatureObject.creator.split('#') + const actor: ActorModel = res.locals.signature.actor - logger.debug('Checking signature of actor %s...', creator) + // Forwarded activity + const bodyActor = req.body.actor + const bodyActorId = bodyActor && bodyActor.id ? bodyActor.id : bodyActor + if (bodyActorId && bodyActorId !== actor.url) { + const jsonLDSignatureChecked = await checkJsonLDSignature(req, res) + if (jsonLDSignatureChecked !== true) return + } - let actor: ActorModel - try { - actor = await getOrCreateActorAndServerAndModel(creator) + return next() } catch (err) { - logger.warn('Cannot create remote actor %s and check signature.', creator, { err }) + logger.error('Error in ActivityPub signature checker.', err) return res.sendStatus(403) } - - const verified = await isSignatureVerified(actor, req.body) - if (verified === false) return res.sendStatus(403) - - res.locals.signature = { - actor - } - - return next() } function executeIfActivityPub (fun: RequestHandler | RequestHandler[]) { @@ -57,3 +55,63 @@ export { checkSignature, executeIfActivityPub } + +// --------------------------------------------------------------------------- + +async function checkHttpSignature (req: Request, res: Response) { + // FIXME: mastodon does not include the Signature scheme + const sig = req.headers[HTTP_SIGNATURE.HEADER_NAME] as string + if (sig && sig.startsWith('Signature ') === false) req.headers[HTTP_SIGNATURE.HEADER_NAME] = 'Signature ' + sig + + const parsed = parseHTTPSignature(req) + + const keyId = parsed.keyId + if (!keyId) { + res.sendStatus(403) + return false + } + + logger.debug('Checking HTTP signature of actor %s...', keyId) + + let [ actorUrl ] = keyId.split('#') + if (actorUrl.startsWith('acct:')) { + actorUrl = await loadActorUrlOrGetFromWebfinger(actorUrl.replace(/^acct:/, '')) + } + + const actor = await getOrCreateActorAndServerAndModel(actorUrl) + + const verified = isHTTPSignatureVerified(parsed, actor) + if (verified !== true) { + res.sendStatus(403) + return false + } + + res.locals.signature = { actor } + + return true +} + +async function checkJsonLDSignature (req: Request, res: Response) { + const signatureObject: ActivityPubSignature = req.body.signature + + if (!signatureObject.creator) { + res.sendStatus(403) + return false + } + + const [ creator ] = signatureObject.creator.split('#') + + logger.debug('Checking JsonLD signature of actor %s...', creator) + + const actor = await getOrCreateActorAndServerAndModel(creator) + const verified = await isJsonLDSignatureVerified(actor, req.body) + + if (verified !== true) { + res.sendStatus(403) + return false + } + + res.locals.signature = { actor } + + return true +} diff --git a/server/middlewares/validators/activitypub/signature.ts b/server/middlewares/validators/activitypub/signature.ts index 4efe9aafa..be14e92ea 100644 --- a/server/middlewares/validators/activitypub/signature.ts +++ b/server/middlewares/validators/activitypub/signature.ts @@ -9,10 +9,18 @@ import { logger } from '../../../helpers/logger' import { areValidationErrors } from '../utils' const signatureValidator = [ - body('signature.type').custom(isSignatureTypeValid).withMessage('Should have a valid signature type'), - body('signature.created').custom(isDateValid).withMessage('Should have a valid signature created date'), - body('signature.creator').custom(isSignatureCreatorValid).withMessage('Should have a valid signature creator'), - body('signature.signatureValue').custom(isSignatureValueValid).withMessage('Should have a valid signature value'), + body('signature.type') + .optional() + .custom(isSignatureTypeValid).withMessage('Should have a valid signature type'), + body('signature.created') + .optional() + .custom(isDateValid).withMessage('Should have a valid signature created date'), + body('signature.creator') + .optional() + .custom(isSignatureCreatorValid).withMessage('Should have a valid signature creator'), + body('signature.signatureValue') + .optional() + .custom(isSignatureValueValid).withMessage('Should have a valid signature value'), (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking activitypub signature parameter', { parameters: { signature: req.body.signature } }) diff --git a/yarn.lock b/yarn.lock index 0ec5427be..a0fec9b5f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4270,7 +4270,7 @@ http-response-object@^1.0.0, http-response-object@^1.1.0: resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-1.1.0.tgz#a7c4e75aae82f3bb4904e4f43f615673b4d518c3" integrity sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM= -http-signature@~1.2.0: +http-signature@^1.2.0, http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= -- cgit v1.2.3 From 1c4e716e42f9db0fe5fb57b07455c9b9c75aeb07 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 12:39:31 +0200 Subject: Update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2bd98f4d..876f2e02d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v1.0.1 + +### SECURITY + + * Add HTTP Signature in addition to Linked Signature: + * It's faster + * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation + + ## v1.1.0-alpha.1 We released this alpha version because some admins/users need some moderation tools we implemented in recent weeks. -- cgit v1.2.3 From 40ed9f6aaeb9e78fc8d9a5f82bd7dbad16639051 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 12:42:13 +0200 Subject: Update translations --- client/src/locale/source/angular_en_US.xml | 31 ++++++++++++++---------------- server/helpers/peertube-crypto.ts | 5 +---- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/client/src/locale/source/angular_en_US.xml b/client/src/locale/source/angular_en_US.xml index 4a71c6e17..e3c4e66a3 100644 --- a/client/src/locale/source/angular_en_US.xml +++ b/client/src/locale/source/angular_en_US.xml @@ -644,8 +644,8 @@ app/signup/signup.component.html 16 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance app/signup/signup.component.html 54 @@ -1308,9 +1308,9 @@ app/+about/about-peertube/about-peertube.component.html 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: @@ -5272,12 +5272,16 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 250 characters long. + + Description cannot be more than 1000 characters long. src/app/shared/forms/form-validators/user-validators.service.ts 1 + + src/app/shared/forms/form-validators/video-channel-validators.service.ts + 1 + You must to agree with the instance terms in order to registering on it. @@ -5419,13 +5423,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 500 characters long. - - src/app/shared/forms/form-validators/video-channel-validators.service.ts - 1 - - Support text must be at least 3 characters long. @@ -5433,8 +5430,8 @@ When you will upload a video in this channel, the video support field will be au 1 - - Support text cannot be more than 500 characters long. + + Support text cannot be more than 1000 characters long. src/app/shared/forms/form-validators/video-channel-validators.service.ts 1 @@ -5531,8 +5528,8 @@ When you will upload a video in this channel, the video support field will be au 1 - - Video support cannot be more than 500 characters long. + + Video support cannot be more than 1000 characters long. src/app/shared/forms/form-validators/video-validators.service.ts 1 diff --git a/server/helpers/peertube-crypto.ts b/server/helpers/peertube-crypto.ts index cb5f27240..8ef7b1359 100644 --- a/server/helpers/peertube-crypto.ts +++ b/server/helpers/peertube-crypto.ts @@ -62,10 +62,7 @@ function isJsonLDSignatureVerified (fromActor: ActorModel, signedDocument: any) return jsig.promises .verify(signedDocument, options) - .then((result: { verified: boolean }) => { - logger.info('coucou', result) - return result.verified - }) + .then((result: { verified: boolean }) => result.verified) .catch(err => { logger.error('Cannot check signature.', { err }) return false -- cgit v1.2.3 From f7509cbec875ec4ee3201cce08839f2a02676c1c Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 11:41:19 +0200 Subject: Add HTTP signature check before linked signature It's faster, and will allow us to use RSA signature 2018 (with upstream jsonld-signature module) without too much incompatibilities in the peertube federation --- package.json | 1 + server/helpers/activitypub.ts | 32 ++++---- server/helpers/peertube-crypto.ts | 70 ++++++++++------ server/initializers/constants.ts | 7 ++ .../handlers/utils/activitypub-http-utils.ts | 7 +- server/middlewares/activitypub.ts | 94 +++++++++++++++++----- .../validators/activitypub/signature.ts | 16 +++- yarn.lock | 2 +- 8 files changed, 164 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 5aaaa32a7..a730f4978 100644 --- a/package.json +++ b/package.json @@ -108,6 +108,7 @@ "fluent-ffmpeg": "^2.1.0", "fs-extra": "^7.0.0", "helmet": "^3.12.1", + "http-signature": "^1.2.0", "ip-anonymize": "^0.0.6", "ipaddr.js": "1.8.1", "is-cidr": "^2.0.5", diff --git a/server/helpers/activitypub.ts b/server/helpers/activitypub.ts index 1304c7559..278010e78 100644 --- a/server/helpers/activitypub.ts +++ b/server/helpers/activitypub.ts @@ -4,7 +4,7 @@ import { ResultList } from '../../shared/models' import { Activity, ActivityPubActor } from '../../shared/models/activitypub' import { ACTIVITY_PUB } from '../initializers' import { ActorModel } from '../models/activitypub/actor' -import { signObject } from './peertube-crypto' +import { signJsonLDObject } from './peertube-crypto' import { pageToStartAndCount } from './core-utils' function activityPubContextify (data: T) { @@ -15,22 +15,22 @@ function activityPubContextify (data: T) { { RsaSignature2017: 'https://w3id.org/security#RsaSignature2017', pt: 'https://joinpeertube.org/ns', - schema: 'http://schema.org#', + sc: 'http://schema.org#', Hashtag: 'as:Hashtag', - uuid: 'schema:identifier', - category: 'schema:category', - licence: 'schema:license', - subtitleLanguage: 'schema:subtitleLanguage', + uuid: 'sc:identifier', + category: 'sc:category', + licence: 'sc:license', + subtitleLanguage: 'sc:subtitleLanguage', sensitive: 'as:sensitive', - language: 'schema:inLanguage', - views: 'schema:Number', - stats: 'schema:Number', - size: 'schema:Number', - fps: 'schema:Number', - commentsEnabled: 'schema:Boolean', - waitTranscoding: 'schema:Boolean', - expires: 'schema:expires', - support: 'schema:Text', + language: 'sc:inLanguage', + views: 'sc:Number', + stats: 'sc:Number', + size: 'sc:Number', + fps: 'sc:Number', + commentsEnabled: 'sc:Boolean', + waitTranscoding: 'sc:Boolean', + expires: 'sc:expires', + support: 'sc:Text', CacheFile: 'pt:CacheFile' }, { @@ -102,7 +102,7 @@ async function activityPubCollectionPagination (url: string, handler: ActivityPu function buildSignedActivity (byActor: ActorModel, data: Object) { const activity = activityPubContextify(data) - return signObject(byActor, activity) as Promise + return signJsonLDObject(byActor, activity) as Promise } function getActorUrl (activityActor: string | ActivityPubActor) { diff --git a/server/helpers/peertube-crypto.ts b/server/helpers/peertube-crypto.ts index 5c182961d..cb5f27240 100644 --- a/server/helpers/peertube-crypto.ts +++ b/server/helpers/peertube-crypto.ts @@ -1,9 +1,12 @@ -import { BCRYPT_SALT_SIZE, PRIVATE_RSA_KEY_SIZE } from '../initializers' +import { Request } from 'express' +import { BCRYPT_SALT_SIZE, HTTP_SIGNATURE, PRIVATE_RSA_KEY_SIZE } from '../initializers' import { ActorModel } from '../models/activitypub/actor' import { bcryptComparePromise, bcryptGenSaltPromise, bcryptHashPromise, createPrivateKey, getPublicKey } from './core-utils' import { jsig } from './custom-jsonld-signature' import { logger } from './logger' +const httpSignature = require('http-signature') + async function createPrivateAndPublicKeys () { logger.info('Generating a RSA key...') @@ -13,18 +16,42 @@ async function createPrivateAndPublicKeys () { return { privateKey: key, publicKey } } -function isSignatureVerified (fromActor: ActorModel, signedDocument: object) { +// User password checks + +function comparePassword (plainPassword: string, hashPassword: string) { + return bcryptComparePromise(plainPassword, hashPassword) +} + +async function cryptPassword (password: string) { + const salt = await bcryptGenSaltPromise(BCRYPT_SALT_SIZE) + + return bcryptHashPromise(password, salt) +} + +// HTTP Signature + +function isHTTPSignatureVerified (httpSignatureParsed: any, actor: ActorModel) { + return httpSignature.verifySignature(httpSignatureParsed, actor.publicKey) === true +} + +function parseHTTPSignature (req: Request) { + return httpSignature.parse(req, { authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME }) +} + +// JSONLD + +function isJsonLDSignatureVerified (fromActor: ActorModel, signedDocument: any) { const publicKeyObject = { '@context': jsig.SECURITY_CONTEXT_URL, - '@id': fromActor.url, - '@type': 'CryptographicKey', + id: fromActor.url, + type: 'CryptographicKey', owner: fromActor.url, publicKeyPem: fromActor.publicKey } const publicKeyOwnerObject = { '@context': jsig.SECURITY_CONTEXT_URL, - '@id': fromActor.url, + id: fromActor.url, publicKey: [ publicKeyObject ] } @@ -33,14 +60,19 @@ function isSignatureVerified (fromActor: ActorModel, signedDocument: object) { publicKeyOwner: publicKeyOwnerObject } - return jsig.promises.verify(signedDocument, options) - .catch(err => { - logger.error('Cannot check signature.', { err }) - return false - }) + return jsig.promises + .verify(signedDocument, options) + .then((result: { verified: boolean }) => { + logger.info('coucou', result) + return result.verified + }) + .catch(err => { + logger.error('Cannot check signature.', { err }) + return false + }) } -function signObject (byActor: ActorModel, data: any) { +function signJsonLDObject (byActor: ActorModel, data: any) { const options = { privateKeyPem: byActor.privateKey, creator: byActor.url, @@ -50,22 +82,14 @@ function signObject (byActor: ActorModel, data: any) { return jsig.promises.sign(data, options) } -function comparePassword (plainPassword: string, hashPassword: string) { - return bcryptComparePromise(plainPassword, hashPassword) -} - -async function cryptPassword (password: string) { - const salt = await bcryptGenSaltPromise(BCRYPT_SALT_SIZE) - - return bcryptHashPromise(password, salt) -} - // --------------------------------------------------------------------------- export { - isSignatureVerified, + parseHTTPSignature, + isHTTPSignatureVerified, + isJsonLDSignatureVerified, comparePassword, createPrivateAndPublicKeys, cryptPassword, - signObject + signJsonLDObject } diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 1a3b52015..fd2308eb6 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -529,6 +529,12 @@ const ACTIVITY_PUB_ACTOR_TYPES: { [ id: string ]: ActivityPubActorType } = { APPLICATION: 'Application' } +const HTTP_SIGNATURE = { + HEADER_NAME: 'signature', + ALGORITHM: 'rsa-sha256', + HEADERS_TO_SIGN: [ 'date', 'host', 'digest', '(request-target)' ] +} + // --------------------------------------------------------------------------- const PRIVATE_RSA_KEY_SIZE = 2048 @@ -728,6 +734,7 @@ export { VIDEO_EXT_MIMETYPE, CRAWL_REQUEST_CONCURRENCY, JOB_COMPLETED_LIFETIME, + HTTP_SIGNATURE, VIDEO_IMPORT_STATES, VIDEO_VIEW_LIFETIME, buildLanguages diff --git a/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts b/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts index d71c91a24..fd9c74341 100644 --- a/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts +++ b/server/lib/job-queue/handlers/utils/activitypub-http-utils.ts @@ -2,6 +2,7 @@ import { buildSignedActivity } from '../../../../helpers/activitypub' import { getServerActor } from '../../../../helpers/utils' import { ActorModel } from '../../../../models/activitypub/actor' import { sha256 } from '../../../../helpers/core-utils' +import { HTTP_SIGNATURE } from '../../../../initializers' type Payload = { body: any, signatureActorId?: number } @@ -29,11 +30,11 @@ async function buildSignedRequestOptions (payload: Payload) { const keyId = actor.getWebfingerUrl() return { - algorithm: 'rsa-sha256', - authorizationHeaderName: 'Signature', + algorithm: HTTP_SIGNATURE.ALGORITHM, + authorizationHeaderName: HTTP_SIGNATURE.HEADER_NAME, keyId, key: actor.privateKey, - headers: [ 'date', 'host', 'digest', '(request-target)' ] + headers: HTTP_SIGNATURE.HEADERS_TO_SIGN } } diff --git a/server/middlewares/activitypub.ts b/server/middlewares/activitypub.ts index d7f59be8c..1ec888477 100644 --- a/server/middlewares/activitypub.ts +++ b/server/middlewares/activitypub.ts @@ -2,34 +2,32 @@ import { eachSeries } from 'async' import { NextFunction, Request, RequestHandler, Response } from 'express' import { ActivityPubSignature } from '../../shared' import { logger } from '../helpers/logger' -import { isSignatureVerified } from '../helpers/peertube-crypto' -import { ACCEPT_HEADERS, ACTIVITY_PUB } from '../initializers' +import { isHTTPSignatureVerified, isJsonLDSignatureVerified, parseHTTPSignature } from '../helpers/peertube-crypto' +import { ACCEPT_HEADERS, ACTIVITY_PUB, HTTP_SIGNATURE } from '../initializers' import { getOrCreateActorAndServerAndModel } from '../lib/activitypub' import { ActorModel } from '../models/activitypub/actor' +import { loadActorUrlOrGetFromWebfinger } from '../helpers/webfinger' async function checkSignature (req: Request, res: Response, next: NextFunction) { - const signatureObject: ActivityPubSignature = req.body.signature + try { + const httpSignatureChecked = await checkHttpSignature(req, res) + if (httpSignatureChecked !== true) return - const [ creator ] = signatureObject.creator.split('#') + const actor: ActorModel = res.locals.signature.actor - logger.debug('Checking signature of actor %s...', creator) + // Forwarded activity + const bodyActor = req.body.actor + const bodyActorId = bodyActor && bodyActor.id ? bodyActor.id : bodyActor + if (bodyActorId && bodyActorId !== actor.url) { + const jsonLDSignatureChecked = await checkJsonLDSignature(req, res) + if (jsonLDSignatureChecked !== true) return + } - let actor: ActorModel - try { - actor = await getOrCreateActorAndServerAndModel(creator) + return next() } catch (err) { - logger.warn('Cannot create remote actor %s and check signature.', creator, { err }) + logger.error('Error in ActivityPub signature checker.', err) return res.sendStatus(403) } - - const verified = await isSignatureVerified(actor, req.body) - if (verified === false) return res.sendStatus(403) - - res.locals.signature = { - actor - } - - return next() } function executeIfActivityPub (fun: RequestHandler | RequestHandler[]) { @@ -57,3 +55,63 @@ export { checkSignature, executeIfActivityPub } + +// --------------------------------------------------------------------------- + +async function checkHttpSignature (req: Request, res: Response) { + // FIXME: mastodon does not include the Signature scheme + const sig = req.headers[HTTP_SIGNATURE.HEADER_NAME] as string + if (sig && sig.startsWith('Signature ') === false) req.headers[HTTP_SIGNATURE.HEADER_NAME] = 'Signature ' + sig + + const parsed = parseHTTPSignature(req) + + const keyId = parsed.keyId + if (!keyId) { + res.sendStatus(403) + return false + } + + logger.debug('Checking HTTP signature of actor %s...', keyId) + + let [ actorUrl ] = keyId.split('#') + if (actorUrl.startsWith('acct:')) { + actorUrl = await loadActorUrlOrGetFromWebfinger(actorUrl.replace(/^acct:/, '')) + } + + const actor = await getOrCreateActorAndServerAndModel(actorUrl) + + const verified = isHTTPSignatureVerified(parsed, actor) + if (verified !== true) { + res.sendStatus(403) + return false + } + + res.locals.signature = { actor } + + return true +} + +async function checkJsonLDSignature (req: Request, res: Response) { + const signatureObject: ActivityPubSignature = req.body.signature + + if (!signatureObject.creator) { + res.sendStatus(403) + return false + } + + const [ creator ] = signatureObject.creator.split('#') + + logger.debug('Checking JsonLD signature of actor %s...', creator) + + const actor = await getOrCreateActorAndServerAndModel(creator) + const verified = await isJsonLDSignatureVerified(actor, req.body) + + if (verified !== true) { + res.sendStatus(403) + return false + } + + res.locals.signature = { actor } + + return true +} diff --git a/server/middlewares/validators/activitypub/signature.ts b/server/middlewares/validators/activitypub/signature.ts index 4efe9aafa..be14e92ea 100644 --- a/server/middlewares/validators/activitypub/signature.ts +++ b/server/middlewares/validators/activitypub/signature.ts @@ -9,10 +9,18 @@ import { logger } from '../../../helpers/logger' import { areValidationErrors } from '../utils' const signatureValidator = [ - body('signature.type').custom(isSignatureTypeValid).withMessage('Should have a valid signature type'), - body('signature.created').custom(isDateValid).withMessage('Should have a valid signature created date'), - body('signature.creator').custom(isSignatureCreatorValid).withMessage('Should have a valid signature creator'), - body('signature.signatureValue').custom(isSignatureValueValid).withMessage('Should have a valid signature value'), + body('signature.type') + .optional() + .custom(isSignatureTypeValid).withMessage('Should have a valid signature type'), + body('signature.created') + .optional() + .custom(isDateValid).withMessage('Should have a valid signature created date'), + body('signature.creator') + .optional() + .custom(isSignatureCreatorValid).withMessage('Should have a valid signature creator'), + body('signature.signatureValue') + .optional() + .custom(isSignatureValueValid).withMessage('Should have a valid signature value'), (req: express.Request, res: express.Response, next: express.NextFunction) => { logger.debug('Checking activitypub signature parameter', { parameters: { signature: req.body.signature } }) diff --git a/yarn.lock b/yarn.lock index 5a67caf25..e18df5e33 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3671,7 +3671,7 @@ http-response-object@^1.0.0, http-response-object@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-1.1.0.tgz#a7c4e75aae82f3bb4904e4f43f615673b4d518c3" -http-signature@~1.2.0: +http-signature@^1.2.0, http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" dependencies: -- cgit v1.2.3 From c55bc7b46bbd358e643270b486b463ad6e57c5d6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 12:39:31 +0200 Subject: Update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6716c7bc2..afbc48374 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v1.0.1 + +### SECURITY + + * Add HTTP Signature in addition to Linked Signature: + * It's faster + * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation + + ## v1.0.0 Announcement scheduled for october 15 -- cgit v1.2.3 From ebc1984cc6200377d9869e570bc0ad1f95fa74bb Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 13:18:45 +0200 Subject: Bumped to version v1.0.1 --- client/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index a1dd94b76..942b1e50c 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "peertube-client", - "version": "1.0.0", + "version": "1.0.1", "private": true, "licence": "GPLv3", "author": { diff --git a/package.json b/package.json index a730f4978..9674cdca3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube", "description": "Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.", - "version": "1.0.0", + "version": "1.0.1", "private": true, "licence": "AGPLv3", "engines": { -- cgit v1.2.3 From c141f68be14193fb92d3f5cfc82cd1e156823c17 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 19 Oct 2018 14:24:35 +0200 Subject: add repl to the cli wrapper, remove extraneous TOC in tools.md --- server/tools/peertube-repl.ts | 79 +++++++++++++++++++++++++++++++++++++++++++ server/tools/peertube.ts | 1 + server/tools/repl.ts | 79 ------------------------------------------- support/doc/tools.md | 58 +++++++++++++------------------ 4 files changed, 104 insertions(+), 113 deletions(-) create mode 100644 server/tools/peertube-repl.ts delete mode 100644 server/tools/repl.ts diff --git a/server/tools/peertube-repl.ts b/server/tools/peertube-repl.ts new file mode 100644 index 000000000..6800ff8ab --- /dev/null +++ b/server/tools/peertube-repl.ts @@ -0,0 +1,79 @@ +import * as repl from 'repl' +import * as path from 'path' +import * as _ from 'lodash' +import * as uuidv1 from 'uuid/v1' +import * as uuidv3 from 'uuid/v3' +import * as uuidv4 from 'uuid/v4' +import * as uuidv5 from 'uuid/v5' +import * as Sequelize from 'sequelize' +import * as YoutubeDL from 'youtube-dl' + +import { initDatabaseModels, sequelizeTypescript } from '../initializers' +import * as cli from '../tools/cli' +import { logger } from '../helpers/logger' +import * as constants from '../initializers/constants' +import * as modelsUtils from '../models/utils' +import * as coreUtils from '../helpers/core-utils' +import * as ffmpegUtils from '../helpers/ffmpeg-utils' +import * as peertubeCryptoUtils from '../helpers/peertube-crypto' +import * as signupUtils from '../helpers/signup' +import * as utils from '../helpers/utils' +import * as YoutubeDLUtils from '../helpers/youtube-dl' + +let versionCommitHash + +const start = async () => { + await initDatabaseModels(true) + + await utils.getVersion().then((data) => { + versionCommitHash = data + }) + + const initContext = (replServer) => { + return (context) => { + const properties = { + context, repl: replServer, env: process.env, + lodash: _, path, + uuidv1, uuidv3, uuidv4, uuidv5, + cli, logger, constants, + Sequelize, sequelizeTypescript, modelsUtils, + models: sequelizeTypescript.models, transaction: sequelizeTypescript.transaction, + query: sequelizeTypescript.query, queryInterface: sequelizeTypescript.getQueryInterface(), + YoutubeDL, + coreUtils, ffmpegUtils, peertubeCryptoUtils, signupUtils, utils, YoutubeDLUtils + } + + for (let prop in properties) { + Object.defineProperty(context, prop, { + configurable: false, + enumerable: true, + value: properties[prop] + }) + } + } + } + + const replServer = repl.start({ + prompt: `PeerTube [${cli.version}] (${versionCommitHash})> ` + }) + + initContext(replServer)(replServer.context) + replServer.on('reset', initContext(replServer)) + + const resetCommand = { + help: 'Reset REPL', + action () { + this.write('.clear\n') + this.displayPrompt() + } + } + replServer.defineCommand('reset', resetCommand) + replServer.defineCommand('r', resetCommand) + +} + +start().then((data) => { + // do nothing +}).catch((err) => { + console.error(err) +}) diff --git a/server/tools/peertube.ts b/server/tools/peertube.ts index ad76bafb4..c8b9fa744 100755 --- a/server/tools/peertube.ts +++ b/server/tools/peertube.ts @@ -17,6 +17,7 @@ program .command('import-videos', 'import a video from a streaming platform').alias('import') .command('get-access-token', 'get a peertube access token', { noHelp: true }).alias('token') .command('watch', 'watch a video in the terminal ✩°。⋆').alias('w') + .command('repl', 'initiate a REPL to access internals') /* Not Yet Implemented */ program diff --git a/server/tools/repl.ts b/server/tools/repl.ts deleted file mode 100644 index 6800ff8ab..000000000 --- a/server/tools/repl.ts +++ /dev/null @@ -1,79 +0,0 @@ -import * as repl from 'repl' -import * as path from 'path' -import * as _ from 'lodash' -import * as uuidv1 from 'uuid/v1' -import * as uuidv3 from 'uuid/v3' -import * as uuidv4 from 'uuid/v4' -import * as uuidv5 from 'uuid/v5' -import * as Sequelize from 'sequelize' -import * as YoutubeDL from 'youtube-dl' - -import { initDatabaseModels, sequelizeTypescript } from '../initializers' -import * as cli from '../tools/cli' -import { logger } from '../helpers/logger' -import * as constants from '../initializers/constants' -import * as modelsUtils from '../models/utils' -import * as coreUtils from '../helpers/core-utils' -import * as ffmpegUtils from '../helpers/ffmpeg-utils' -import * as peertubeCryptoUtils from '../helpers/peertube-crypto' -import * as signupUtils from '../helpers/signup' -import * as utils from '../helpers/utils' -import * as YoutubeDLUtils from '../helpers/youtube-dl' - -let versionCommitHash - -const start = async () => { - await initDatabaseModels(true) - - await utils.getVersion().then((data) => { - versionCommitHash = data - }) - - const initContext = (replServer) => { - return (context) => { - const properties = { - context, repl: replServer, env: process.env, - lodash: _, path, - uuidv1, uuidv3, uuidv4, uuidv5, - cli, logger, constants, - Sequelize, sequelizeTypescript, modelsUtils, - models: sequelizeTypescript.models, transaction: sequelizeTypescript.transaction, - query: sequelizeTypescript.query, queryInterface: sequelizeTypescript.getQueryInterface(), - YoutubeDL, - coreUtils, ffmpegUtils, peertubeCryptoUtils, signupUtils, utils, YoutubeDLUtils - } - - for (let prop in properties) { - Object.defineProperty(context, prop, { - configurable: false, - enumerable: true, - value: properties[prop] - }) - } - } - } - - const replServer = repl.start({ - prompt: `PeerTube [${cli.version}] (${versionCommitHash})> ` - }) - - initContext(replServer)(replServer.context) - replServer.on('reset', initContext(replServer)) - - const resetCommand = { - help: 'Reset REPL', - action () { - this.write('.clear\n') - this.displayPrompt() - } - } - replServer.defineCommand('reset', resetCommand) - replServer.defineCommand('r', resetCommand) - -} - -start().then((data) => { - // do nothing -}).catch((err) => { - console.error(err) -}) diff --git a/support/doc/tools.md b/support/doc/tools.md index 7f93c94f2..eb3f97eb4 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -1,42 +1,31 @@ +# CLI tools guide + -**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - -- [CLI tools guide](#cli-tools-guide) - - [CLI wrapper](#cli-wrapper) - - [Remote Tools](#remote-tools) - - [Dependencies](#dependencies) - - [Installation](#installation) - - [peertube-import-videos.js](#peertube-import-videosjs) - - [peertube-upload.js](#peertube-uploadjs) - - [peertube-watch.js](#peertube-watchjs) - - [Server tools](#server-tools) - - [parse-log](#parse-log) - - [create-transcoding-job.js](#create-transcoding-jobjs) - - [create-import-video-file-job.js](#create-import-video-file-jobjs) - - [prune-storage.js](#prune-storagejs) - - [optimize-old-videos.js](#optimize-old-videosjs) - - [update-host.js](#update-hostjs) - - [REPL (Read Eval Print Loop)](#repl-read-eval-print-loop) - - [.help](#help) - - [Lodash example](#lodash-example) - - [YoutubeDL example](#youtubedl-example) - - [Models examples](#models-examples) +**Table of Contents** + +- [CLI wrapper](#cli-wrapper) +- [Remote Tools](#remote-tools) + - [Dependencies](#dependencies) + - [Installation](#installation) + - [peertube-import-videos.js](#peertube-import-videosjs) + - [peertube-upload.js](#peertube-uploadjs) + - [peertube-watch.js](#peertube-watchjs) +- [Server tools](#server-tools) + - [parse-log](#parse-log) + - [create-transcoding-job.js](#create-transcoding-jobjs) + - [create-import-video-file-job.js](#create-import-video-file-jobjs) + - [prune-storage.js](#prune-storagejs) + - [optimize-old-videos.js](#optimize-old-videosjs) + - [update-host.js](#update-hostjs) + - [REPL (Read Eval Print Loop)](#repl-read-eval-print-loop) + - [.help](#help) + - [Lodash example](#lodash-example) + - [YoutubeDL example](#youtubedl-example) + - [Models examples](#models-examples) -# CLI tools guide - - [CLI wrapper](#cli-wrapper) - - [Remote tools](#remote-tools) - - [peertube-import-videos.js](#peertube-import-videosjs) - - [peertube-upload.js](#peertube-uploadjs) - - [peertube-watch.js](#peertube-watch) - - [Server tools](#server-tools) - - [parse-log](#parse-log) - - [create-transcoding-job.js](#create-transcoding-jobjs) - - [create-import-video-file-job.js](#create-import-video-file-jobjs) - - [prune-storage.js](#prune-storagejs) - ## CLI wrapper The wrapper provides a convenient interface to most scripts, and requires the [same dependencies](#dependencies). You can access it as `peertube` via an alias in your `.bashrc` like `alias peertube="node ${PEERTUBE_PATH}/dist/server/tools/peertube.js"`: @@ -55,6 +44,7 @@ The wrapper provides a convenient interface to most scripts, and requires the [s upload|up upload a video import-videos|import import a video from a streaming platform watch|w watch a video in the terminal ✩°。⋆ + repl initiate a REPL to access internals help [cmd] display help for [cmd] ``` -- cgit v1.2.3 From fc23a6c09749d64b33b8e1447ee4cae61a1c0b4e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 19 Oct 2018 14:00:58 +0200 Subject: PeerTube is not in alpha anymore --- client/src/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/index.html b/client/src/index.html index 593de4ac6..2af0020ad 100644 --- a/client/src/index.html +++ b/client/src/index.html @@ -30,7 +30,7 @@

    Accounts

    +
    +
    +

    Using some features of PeerTube require authentication, for which Accounts provide different levels of permission as well as associated user information. Accounts also encompass remote accounts discovered across the federation.

    +
    +
    @@ -348,11 +385,16 @@

    - - GET - /accounts/{name} - + Get the account by name

    +
    +
    +
    + GET + /accounts/{name} +
    +
    +
    @@ -473,16 +515,23 @@

    - - GET - /accounts/{name}/videos - + Get videos for an account, provided the name of that account

    +
    +
    +
    + GET + /accounts/{name}/videos +
    +
    +
    @@ -591,11 +640,16 @@

    - - GET - /accounts - + Get all accounts

    +
    +
    +
    + GET + /accounts +
    +
    +
    @@ -632,7 +686,7 @@
    Response Content-Types: - application/json + application/jsonhttps://peertube.cpy.re/api/v1
    Response Example @@ -664,6 +718,11 @@

    Config

    +
    +
    +

    Each server exposes public information regarding supported videos and options.

    +
    +
    @@ -674,11 +733,16 @@

    - - GET - /config - + Get the configuration of the server

    +
    +
    +
    + GET + /config +
    +
    +
    @@ -744,6 +808,11 @@

    Feeds

    +
    +
    +

    Feeds of videos and feeds of comments allow to see updates and get them in an aggregator or script of your choice.

    +
    +
    @@ -754,11 +823,16 @@

    - - GET - /feeds/videos.{format} - + Get the feed of videos for the server, with optional filter by account name or id

    +
    +
    +
    + GET + /feeds/videos.{format} +
    +
    +
    @@ -836,6 +910,11 @@

    Job

    +
    +
    +

    Jobs are long-running tasks enqueued and processed by the instance itself. No additional worker registration is currently available.

    +
    +
    @@ -846,11 +925,16 @@

    - - GET - /jobs - + Get list of jobs

    +
    +
    +
    + GET + /jobs +
    +
    +
    @@ -984,7 +1068,9 @@ OAuth2 - + + admin + @@ -993,6 +1079,11 @@

    ServerFollowing

    +
    +
    +

    Managing servers which the instance interacts with is crucial to the concept of federation in PeerTube and external video indexation. The PeerTube server then deals with inter-server ActivityPub operations and propagates information across its social graph by posting activities to actors' inbox endpoints.

    +
    +
    @@ -1003,11 +1094,16 @@

    - - DELETE - /server/following/{host} - + Unfollow a server by hostname

    +
    +
    +
    + DELETE + /server/following/{host} +
    +
    +
    @@ -1064,7 +1160,9 @@ OAuth2 - + + admin + @@ -1082,11 +1180,16 @@

    - - GET - /server/followers - + Get followers of the server

    +
    +
    +
    + GET + /server/followers +
    +
    +
    @@ -1231,11 +1334,16 @@

    - - GET - /server/following - + Get servers followed by the server

    +
    +
    +
    + GET + /server/following +
    +
    +
    @@ -1380,11 +1488,16 @@

    - - POST - /server/following - + Follow a server

    +
    +
    +
    + POST + /server/following +
    +
    +
    @@ -1488,7 +1601,9 @@ OAuth2 - + + admin + @@ -1496,133 +1611,32 @@
    -

    User

    -
    +

    VideoAbuse

    +
    +
    +

    Video abuses deal with reports of local or remote videos alike.

    +
    +
    +

    - - POST - /users - + Get list of reported video abuses

    -
    -
    -
    -
    - - AddUser - -
    -
    -
    - -

    User to create

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "username": "string",
    -  "password": "string",
    -  "email": "string",
    -  "videoQuota": "string",
    -  "role": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - AddUserResponse - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    +
    + GET + /videos/abuse
    -
    -
    - - -
    - User - -
    - - -

    - - GET - /users - -

    @@ -1680,7 +1694,7 @@
    200 OK
    @@ -1694,7 +1708,7 @@
    - User + VideoAbuse @@ -1713,14 +1727,8 @@
    [
       {
         "id": "number",
    -    "username": "string",
    -    "email": "string",
    -    "displayNSFW": "boolean",
    -    "autoPlayVideo": "boolean",
    -    "role": "string",
    -    "videoQuota": "number",
    -    "createdAt": "string",
    -    "account": {
    +    "reason": "string",
    +    "reporterAccount": {
           "displayName": "string",
           "id": "number",
           "uuid": "string",
    @@ -1737,17 +1745,13 @@
             "updatedAt": "string"
           }
         },
    -    "videoChannels": [
    -      {
    -        "displayName": "string",
    -        "description": "string",
    -        "isLocal": "boolean",
    -        "ownerAccount": {
    -          "id": "number",
    -          "uuid": "string"
    -        }
    -      }
    -    ]
    +    "video": {
    +      "id": "number",
    +      "name": "string",
    +      "uuid": "string",
    +      "url": "string"
    +    },
    +    "createdAt": "string"
       }
     ]
     
    @@ -1778,21 +1782,26 @@
    -
    +

    - - DELETE - /users/{id} - + Report an abuse, on a video by its id

    +
    +
    +
    + POST + /videos/{id}/abuse +
    +
    +
    @@ -1800,7 +1809,7 @@
    id: - number + string
    @@ -1808,7 +1817,7 @@
    in path
    -

    The user id

    +

    The video id or uuid

    @@ -1857,29 +1866,42 @@
    -
    +

    Video

    +
    +
    +

    Operations dealing with listing, uploading, fetching or modifying videos.

    +
    +
    +
    - User + Accounts + + Video

    - - GET - /users/{id} - + Get videos for an account, provided the name of that account

    +
    +
    +
    + GET + /accounts/{name}/videos +
    +
    +
    -
    id: +
    name: - number + string
    @@ -1887,7 +1909,8 @@
    in path
    -

    The user id

    +

    The name of the account (chocobozzz or + chocobozzz@peertube.cpy.re for example)

    @@ -1902,7 +1925,7 @@
    200 OK
    - User + Video
    @@ -1923,197 +1946,133 @@
    {
       "id": "number",
    -  "username": "string",
    -  "email": "string",
    -  "displayNSFW": "boolean",
    -  "autoPlayVideo": "boolean",
    -  "role": "string",
    -  "videoQuota": "number",
    +  "uuid": "string",
       "createdAt": "string",
    +  "publishedAt": "string",
    +  "updatedAt": "string",
    +  "category": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "licence": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "language": {
    +    "id": "string",
    +    "label": "string"
    +  },
    +  "privacy": "string",
    +  "description": "string",
    +  "duration": "number",
    +  "isLocal": "boolean",
    +  "name": "string",
    +  "thumbnailPath": "string",
    +  "previewPath": "string",
    +  "embedPath": "string",
    +  "views": "number",
    +  "likes": "number",
    +  "dislikes": "number",
    +  "nsfw": "boolean",
       "account": {
    +    "name": "string",
         "displayName": "string",
    -    "id": "number",
    -    "uuid": "string",
         "url": "string",
    -    "name": "string",
         "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
         "avatar": {
           "path": "string",
           "createdAt": "string",
           "updatedAt": "string"
         }
    -  },
    -  "videoChannels": [
    -    {
    -      "displayName": "string",
    -      "description": "string",
    -      "isLocal": "boolean",
    -      "ownerAccount": {
    -        "id": "number",
    -        "uuid": "string"
    -      }
    -    }
    -  ]
    +  }
     }
     
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    +
    - User + Video

    - - PUT - /users/{id} - + Get list of videos

    -
    -
    +
    + GET + /videos +
    +
    +
    +
    +
    +
    +
    -
    - - UpdateUser +
    category: + + number +
    +
    in query
    -
    - -

    undefined

    - +
    +

    category id of the video

    -
    -
    -
    id: +
    start: number
    - -
    in path
    +
    in query
    -

    The user id

    +

    Offset

    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "id": "string",
    -  "email": "string",
    -  "videoQuota": "string",
    -  "role": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    204 No Content
    +
    count: + + number + + +
    +
    in query
    -

    Successful operation

    +

    Number of items

    +
    +
    +
    +
    +
    sort: + + string + + +
    +
    in query
    +
    +
    +

    Sort column (-createdAt for example)

    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - - GET - /users/me - -

    -
    -
    @@ -2124,7 +2083,7 @@
    200 OK
    - User + Video
    @@ -2138,7 +2097,7 @@
    - User + Video @@ -2157,41 +2116,45 @@
    [
       {
         "id": "number",
    -    "username": "string",
    -    "email": "string",
    -    "displayNSFW": "boolean",
    -    "autoPlayVideo": "boolean",
    -    "role": "string",
    -    "videoQuota": "number",
    +    "uuid": "string",
         "createdAt": "string",
    +    "publishedAt": "string",
    +    "updatedAt": "string",
    +    "category": {
    +      "id": "number",
    +      "label": "string"
    +    },
    +    "licence": {
    +      "id": "number",
    +      "label": "string"
    +    },
    +    "language": {
    +      "id": "string",
    +      "label": "string"
    +    },
    +    "privacy": "string",
    +    "description": "string",
    +    "duration": "number",
    +    "isLocal": "boolean",
    +    "name": "string",
    +    "thumbnailPath": "string",
    +    "previewPath": "string",
    +    "embedPath": "string",
    +    "views": "number",
    +    "likes": "number",
    +    "dislikes": "number",
    +    "nsfw": "boolean",
         "account": {
    +      "name": "string",
           "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
           "url": "string",
    -      "name": "string",
           "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
           "avatar": {
             "path": "string",
             "createdAt": "string",
             "updatedAt": "string"
           }
    -    },
    -    "videoChannels": [
    -      {
    -        "displayName": "string",
    -        "description": "string",
    -        "isLocal": "boolean",
    -        "ownerAccount": {
    -          "id": "number",
    -          "uuid": "string"
    -        }
    -      }
    -    ]
    +    }
       }
     ]
     
    @@ -2199,89 +2162,49 @@
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    +
    - User + Video

    - - PUT - /users/me - + Get list of video licences known by the server

    -
    -
    -
    -
    - - UpdateMe - -
    -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "password": "string",
    -  "email": "string",
    -  "displayNSFW": "string",
    -  "autoPlayVideo": "string"
    -}
    -
    - +
    + GET + /videos/categories
    +
    +
    +
    +
    -
    204 No Content
    +
    200 OK
    +
    +
    -

    Successful operation

    +

    successful operation

    +
    +
    +
    +
    type
    +
    + string[] +
    @@ -2290,46 +2213,39 @@
    Response Content-Types: application/json
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    +
    +
    Response Example + (200 OK) +
    +
    [
    +  "string"
    +]
    +
    +
    -
    +
    - User + Video

    - - GET - /users/me/video-quota-used - + Get list of video licences known by the server

    +
    +
    +
    + GET + /videos/licences +
    +
    +
    @@ -2340,7 +2256,7 @@
    200 OK
    -
    +
    @@ -2350,7 +2266,7 @@
    type
    - number + string[]
    @@ -2364,70 +2280,37 @@
    Response Example (200 OK)
    -
    "number"
    +                  
    [
    +  "string"
    +]
     
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    +
    - User + Video

    - - GET - /users/me/videos/{videoId}/rating - + Get list of languages known by the server

    -
    -
    -
    -
    videoId: - - string - - -
    - -
    in path
    -
    -
    -

    The video id

    -
    -
    +
    + GET + /videos/languages
    +
    +
    +
    @@ -2436,17 +2319,20 @@
    200 OK
    - +

    successful operation

    +
    +
    type
    +
    + string[] + +
    +
    @@ -2457,100 +2343,37 @@
    Response Example (200 OK)
    -
    {
    -  "id": "string",
    -  "rating": "number"
    -}
    +                  
    [
    +  "string"
    +]
     
    +
    +
    + + +
    + Video + +
    + + +

    + Get list of privacy policies supported by the server +

    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    +
    + GET + /videos/privacies
    -
    -
    - - -
    - User - -
    - - -

    - - GET - /users/me/videos - -

    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    +
    @@ -2559,11 +2382,7 @@
    200 OK
    -
    - - Video - -
    +
    @@ -2573,11 +2392,7 @@
    type
    - - - Video - - + string[]
    @@ -2592,168 +2407,69 @@ (200 OK)
    [
    -  {
    -    "id": "number",
    -    "uuid": "string",
    -    "createdAt": "string",
    -    "publishedAt": "string",
    -    "updatedAt": "string",
    -    "category": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "licence": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "language": {
    -      "id": "string",
    -      "label": "string"
    -    },
    -    "privacy": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "isLocal": "boolean",
    -    "name": "string",
    -    "thumbnailPath": "string",
    -    "previewPath": "string",
    -    "embedPath": "string",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean",
    -    "account": {
    -      "name": "string",
    -      "displayName": "string",
    -      "url": "string",
    -      "host": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    +  "string"
     ]
     
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    +
    - User + Video

    - - POST - /users/register - + Update metadata for a video by its id

    -
    -
    +
    + PUT + /videos/{id} +
    +
    +
    +
    +
    +
    +
    -
    - - RegisterUser +
    id: + + string +
    + +
    in path
    -
    - -

    undefined

    - +
    +

    The video id or uuid

    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "username": "string",
    -  "password": "string",
    -  "email": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    204 No Content
    +
    thumbnailfile: + + file + + +
    +
    in formData
    -

    Successful operation

    +

    Video thumbnail file

    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - - POST - /users/me/avatar/pick - -

    -
    -
    -
    -
    avatarfile: +
    previewfile: file @@ -2762,146 +2478,179 @@
    in formData
    -

    The file to upload.

    +

    Video preview file

    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Avatar +
    category: + + number +
    - +
    in formData
    -

    successful operation

    +

    Video category

    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "path": "string",
    -  "createdAt": "string",
    -  "updatedAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -

    Video

    -
    - - -
    - Video - -
    - - -

    - - GET - /videos - -

    -
    -
    -
    -
    category: +
    licence: number
    -
    in query
    +
    in formData
    -

    category id of the video

    +

    Video licence

    -
    start: +
    language: - number + string
    -
    in query
    +
    in formData
    -

    Offset

    +

    Video language

    -
    count: +
    description: - number + string
    -
    in query
    +
    in formData
    -

    Number of items

    +

    Video description

    -
    sort: +
    waitTranscoding: + + boolean + + +
    +
    in formData
    +
    +
    +

    Whether or not we wait transcoding before publish the video

    +
    +
    +
    +
    +
    support: string
    -
    in query
    +
    in formData
    -

    Sort column (-createdAt for example)

    +

    Text describing how to support the video uploader

    +
    +
    +
    +
    +
    nsfw: + + boolean + + +
    +
    in formData
    +
    +
    +

    Whether or not this video contains sensitive content

    +
    +
    +
    +
    +
    name: + + string + + +
    +
    in formData
    +
    +
    +

    Video name

    +
    +
    +
    +
    +
    tags: + + string[] + + +
    +
    in formData
    +
    +
    +

    Video tags

    +
    +
    +
    +
    +
    commentsEnabled: + + boolean + + +
    +
    in formData
    +
    +
    +

    Enable or disable comments for this video

    +
    +
    +
    +
    +
    privacy: + + string + + Public, + Unlisted + + + +
    +
    in formData
    +
    +
    +

    Video privacy

    +
    +
    +
    +
    +
    scheduleUpdate: + + object + + +
    +
    in formData
    +
    +
    +

    Schedule an update at a specific datetime

    @@ -2915,7 +2664,7 @@
    200 OK
    - + Video
    @@ -2925,17 +2674,6 @@

    successful operation

    -
    -
    type
    -
    - - - Video - - - -
    -
    @@ -2946,57 +2684,77 @@
    Response Example (200 OK)
    -
    [
    -  {
    +                  
    {
    +  "id": "number",
    +  "uuid": "string",
    +  "createdAt": "string",
    +  "publishedAt": "string",
    +  "updatedAt": "string",
    +  "category": {
         "id": "number",
    -    "uuid": "string",
    -    "createdAt": "string",
    -    "publishedAt": "string",
    -    "updatedAt": "string",
    -    "category": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "licence": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "language": {
    -      "id": "string",
    -      "label": "string"
    -    },
    -    "privacy": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "isLocal": "boolean",
    +    "label": "string"
    +  },
    +  "licence": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "language": {
    +    "id": "string",
    +    "label": "string"
    +  },
    +  "privacy": "string",
    +  "description": "string",
    +  "duration": "number",
    +  "isLocal": "boolean",
    +  "name": "string",
    +  "thumbnailPath": "string",
    +  "previewPath": "string",
    +  "embedPath": "string",
    +  "views": "number",
    +  "likes": "number",
    +  "dislikes": "number",
    +  "nsfw": "boolean",
    +  "account": {
         "name": "string",
    -    "thumbnailPath": "string",
    -    "previewPath": "string",
    -    "embedPath": "string",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean",
    -    "account": {
    -      "name": "string",
    -      "displayName": "string",
    -      "url": "string",
    -      "host": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    +    "displayName": "string",
    +    "url": "string",
    +    "host": "string",
    +    "avatar": {
    +      "path": "string",
    +      "createdAt": "string",
    +      "updatedAt": "string"
         }
       }
    -]
    +}
     
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    -
    +
    @@ -3006,71 +2764,36 @@

    - - GET - /videos/categories - + Get a video by its id

    -
    -
    +
    +
    + GET + /videos/{id} +
    +
    -
    +
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    +
    id: + + string + + +
    + +
    in path
    -
    -
    -
    type
    - string[] - +

    The video id or uuid

    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  "string"
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - - GET - /videos/licences - -

    -
    -
    @@ -3079,20 +2802,17 @@
    200 OK
    -
    +
    + + Video + +

    successful operation

    -
    -
    type
    -
    - string[] - -
    -
    @@ -3103,16 +2823,55 @@
    Response Example (200 OK)
    -
    [
    -  "string"
    -]
    +                  
    {
    +  "id": "number",
    +  "uuid": "string",
    +  "createdAt": "string",
    +  "publishedAt": "string",
    +  "updatedAt": "string",
    +  "category": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "licence": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "language": {
    +    "id": "string",
    +    "label": "string"
    +  },
    +  "privacy": "string",
    +  "description": "string",
    +  "duration": "number",
    +  "isLocal": "boolean",
    +  "name": "string",
    +  "thumbnailPath": "string",
    +  "previewPath": "string",
    +  "embedPath": "string",
    +  "views": "number",
    +  "likes": "number",
    +  "dislikes": "number",
    +  "nsfw": "boolean",
    +  "account": {
    +    "name": "string",
    +    "displayName": "string",
    +    "url": "string",
    +    "host": "string",
    +    "avatar": {
    +      "path": "string",
    +      "createdAt": "string",
    +      "updatedAt": "string"
    +    }
    +  }
    +}
     
    -
    +
    @@ -3122,33 +2881,47 @@

    - - GET - /videos/languages - + Delete a video by its id

    -
    -
    +
    +
    + DELETE + /videos/{id} +
    +
    -
    +
    -
    200 OK
    -
    - +
    id: + + string + + +
    + +
    in path
    -

    successful operation

    +

    The video id or uuid

    -
    -
    type
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    204 No Content
    +
    - string[] - +

    Successful operation

    @@ -3157,20 +2930,32 @@
    Response Content-Types: application/json
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  "string"
    -]
    -
    - +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    -
    +
    @@ -3180,13 +2965,36 @@

    - - GET - /videos/privacies - + Get a video description by its id

    -
    +
    +
    + GET + /videos/{id}/description +
    +
    +
    +
    +
    +
    +
    +
    +
    id: + + string + + +
    + +
    in path
    +
    +
    +

    The video id or uuid

    +
    +
    +
    +
    @@ -3195,7 +3003,7 @@
    200 OK
    -
    +
    @@ -3205,7 +3013,7 @@
    type
    - string[] + string
    @@ -3219,16 +3027,14 @@
    Response Example (200 OK)
    -
    [
    -  "string"
    -]
    +                  
    "string"
     
    -
    +
    @@ -3238,11 +3044,16 @@

    - - PUT - /videos/{id} - + Add a view to the video by its id

    +
    +
    +
    + POST + /videos/{id}/views +
    +
    +
    @@ -3261,6 +3072,83 @@

    The video id or uuid

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    204 No Content
    +
    +
    +

    Successful operation

    +
    +
    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    +
    +
    + + +
    + Video + +
    + + +

    + Upload a video file with its metadata +

    +
    +
    +
    + POST + /videos/upload +
    +
    +
    +
    +
    +
    +
    +
    +
    videofile: + + file + + +
    + +
    in formData
    +
    +
    +

    Video file

    +
    +
    +
    +
    +
    channelId: + + number + + +
    + +
    in formData
    +
    +
    +

    Channel id that will contain this video

    +
    +
    thumbnailfile: @@ -3473,7 +3361,7 @@
    200 OK
    @@ -3493,45 +3381,9 @@ (200 OK)
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    +  "video": {
         "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    +    "uuid": "string"
       }
     }
     
    @@ -3562,37 +3414,91 @@
    -
    +

    Search

    +
    +
    +

    The search helps to find + videos from within the instance and beyond. Videos from other instances federated by the instance (that is, instances followed by the instance) can be found via keywords and other criteria of the advanced search.

    +
    +
    +

    - - GET - /videos/{id} - + Get the videos corresponding to a given query

    +
    +
    +
    + GET + /search/videos +
    +
    +
    -
    id: +
    start: + + number + + +
    +
    in query
    +
    +
    +

    Offset

    +
    +
    +
    +
    +
    count: + + number + + +
    +
    in query
    +
    +
    +

    Number of items

    +
    +
    +
    +
    +
    sort: + + string + + +
    +
    in query
    +
    +
    +

    Sort column (-createdAt for example)

    +
    +
    +
    +
    +
    search: string
    -
    in path
    +
    in query
    -

    The video id or uuid

    +

    String to search

    @@ -3606,7 +3512,7 @@
    200 OK
    - + Video
    @@ -3616,6 +3522,17 @@

    successful operation

    +
    +
    type
    +
    + + + Video + + + +
    +
    @@ -3626,69 +3543,82 @@
    Response Example (200 OK)
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    +                  
    [
    +  {
         "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    +    "uuid": "string",
    +    "createdAt": "string",
    +    "publishedAt": "string",
    +    "updatedAt": "string",
    +    "category": {
    +      "id": "number",
    +      "label": "string"
    +    },
    +    "licence": {
    +      "id": "number",
    +      "label": "string"
    +    },
    +    "language": {
    +      "id": "string",
    +      "label": "string"
    +    },
    +    "privacy": "string",
    +    "description": "string",
    +    "duration": "number",
    +    "isLocal": "boolean",
         "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    + "thumbnailPath": "string", + "previewPath": "string", + "embedPath": "string", + "views": "number", + "likes": "number", + "dislikes": "number", + "nsfw": "boolean", + "account": { + "name": "string", + "displayName": "string", + "url": "string", + "host": "string", + "avatar": { + "path": "string", + "createdAt": "string", + "updatedAt": "string" + } + } + } +] +
    -
    +

    VideoComment

    +
    +
    +

    Operations dealing with comments to a video. Comments are organized in threads.

    +
    +
    +

    - - DELETE - /videos/{id} - + Get the comment threads of a video by its id

    +
    +
    +
    + GET + /videos/{id}/comment-threads +
    +
    +
    @@ -3707,83 +3637,46 @@

    The video id or uuid

    - -
    -
    -
    -
    -
    -
    -
    204 No Content
    +
    start: + + number + + +
    +
    in query
    -

    Successful operation

    +

    Offset

    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - - GET - /videos/{id}/description - -

    -
    -
    -
    -
    id: +
    count: + + number + + +
    +
    in query
    +
    +
    +

    Number of items

    +
    +
    +
    +
    +
    sort: string
    - -
    in path
    +
    in query
    -

    The video id or uuid

    +

    Sort column (-createdAt for example)

    @@ -3796,20 +3689,17 @@
    200 OK
    -
    +

    successful operation

    -
    -
    type
    -
    - string - -
    -
    @@ -3820,28 +3710,65 @@
    Response Example (200 OK)
    -
    "string"
    +                  
    {
    +  "total": "number",
    +  "data": [
    +    {
    +      "id": "number",
    +      "url": "string",
    +      "text": "string",
    +      "threadId": "number",
    +      "inReplyToCommentId": "number",
    +      "videoId": "number",
    +      "createdAt": "string",
    +      "updatedAt": "string",
    +      "totalReplies": "number",
    +      "account": {
    +        "displayName": "string",
    +        "id": "number",
    +        "uuid": "string",
    +        "url": "string",
    +        "name": "string",
    +        "host": "string",
    +        "followingCount": "number",
    +        "followersCount": "number",
    +        "createdAt": "string",
    +        "updatedAt": "string",
    +        "avatar": {
    +          "path": "string",
    +          "createdAt": "string",
    +          "updatedAt": "string"
    +        }
    +      }
    +    }
    +  ]
    +}
     
    -
    +

    - - POST - /videos/{id}/views - + Creates a comment thread, on a video by its id

    +
    +
    +
    + POST + /videos/{id}/comment-threads +
    +
    +
    @@ -3869,10 +3796,16 @@
    -
    204 No Content
    +
    200 OK
    + +
    -

    Successful operation

    +

    successful operation

    @@ -3881,255 +3814,561 @@
    Response Content-Types: application/json
    +
    +
    Response Example + (200 OK) +
    +
    {
    +  "comment": {
    +    "id": "number",
    +    "url": "string",
    +    "text": "string",
    +    "threadId": "number",
    +    "inReplyToCommentId": "number",
    +    "videoId": "number",
    +    "createdAt": "string",
    +    "updatedAt": "string",
    +    "totalReplies": "number",
    +    "account": {
    +      "displayName": "string",
    +      "id": "number",
    +      "uuid": "string",
    +      "url": "string",
    +      "name": "string",
    +      "host": "string",
    +      "followingCount": "number",
    +      "followersCount": "number",
    +      "createdAt": "string",
    +      "updatedAt": "string",
    +      "avatar": {
    +        "path": "string",
    +        "createdAt": "string",
    +        "updatedAt": "string"
    +      }
    +    }
    +  }
    +}
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    -
    +

    - - POST - /videos/upload - + Get the comment thread by its id, of a video by its id

    +
    +
    +
    + GET + /videos/{id}/comment-threads/{threadId} +
    +
    +
    -
    videofile: +
    id: - file + string
    -
    in formData
    +
    in path
    -

    Video file

    +

    The video id or uuid

    -
    channelId: +
    threadId: number
    -
    in formData
    -
    -
    -

    Channel id that will contain this video

    -
    -
    -
    -
    -
    thumbnailfile: - - file - - -
    -
    in formData
    -
    -
    -

    Video thumbnail file

    -
    -
    -
    -
    -
    previewfile: - - file - - -
    -
    in formData
    -
    -
    -

    Video preview file

    -
    -
    -
    -
    -
    category: - - number - - -
    -
    in formData
    +
    in path
    -

    Video category

    +

    The thread id (root comment id)

    +
    +
    +
    +
    +
    +
    +
    -
    licence: - - number - +
    200 OK
    + -
    in formData
    +
    -

    Video licence

    +

    successful operation

    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    Response Example + (200 OK) +
    +
    {
    +  "comment": {
    +    "id": "number",
    +    "url": "string",
    +    "text": "string",
    +    "threadId": "number",
    +    "inReplyToCommentId": "number",
    +    "videoId": "number",
    +    "createdAt": "string",
    +    "updatedAt": "string",
    +    "totalReplies": "number",
    +    "account": {
    +      "displayName": "string",
    +      "id": "number",
    +      "uuid": "string",
    +      "url": "string",
    +      "name": "string",
    +      "host": "string",
    +      "followingCount": "number",
    +      "followersCount": "number",
    +      "createdAt": "string",
    +      "updatedAt": "string",
    +      "avatar": {
    +        "path": "string",
    +        "createdAt": "string",
    +        "updatedAt": "string"
    +      }
    +    }
    +  },
    +  "children": [
    +    {
    +      "comment": {
    +        "id": "number",
    +        "url": "string",
    +        "text": "string",
    +        "threadId": "number",
    +        "inReplyToCommentId": "number",
    +        "videoId": "number",
    +        "createdAt": "string",
    +        "updatedAt": "string",
    +        "totalReplies": "number",
    +        "account": {
    +          "displayName": "string",
    +          "id": "number",
    +          "uuid": "string",
    +          "url": "string",
    +          "name": "string",
    +          "host": "string",
    +          "followingCount": "number",
    +          "followersCount": "number",
    +          "createdAt": "string",
    +          "updatedAt": "string",
    +          "avatar": {
    +            "path": "string",
    +            "createdAt": "string",
    +            "updatedAt": "string"
    +          }
    +        }
    +      },
    +      "children": [
    +        {
    +          "comment": {
    +            "id": "number",
    +            "url": "string",
    +            "text": "string",
    +            "threadId": "number",
    +            "inReplyToCommentId": "number",
    +            "videoId": "number",
    +            "createdAt": "string",
    +            "updatedAt": "string",
    +            "totalReplies": "number",
    +            "account": {
    +              "id": "number",
    +              "uuid": "string",
    +              "url": "string",
    +              "name": "string",
    +              "host": "string",
    +              "followingCount": "number",
    +              "followersCount": "number",
    +              "createdAt": "string",
    +              "updatedAt": "string",
    +              "avatar": {
    +                "path": "string",
    +                "createdAt": "string",
    +                "updatedAt": "string"
    +              }
    +            }
    +          }
    +        }
    +      ]
    +    }
    +  ]
    +}
    +
    + +
    +
    +
    +
    +
    + + +
    + VideoComment + +
    + + +

    + Creates a comment in a comment thread by its id, of a video by its id +

    +
    +
    +
    + POST + /videos/{id}/comments/{commentId} +
    +
    +
    +
    +
    +
    -
    language: +
    id: string
    -
    in formData
    + +
    in path
    -

    Video language

    +

    The video id or uuid

    -
    description: +
    threadId: - string + number
    -
    in formData
    + +
    in path
    -

    Video description

    +

    The comment id

    +
    +
    +
    +
    +
    +
    +
    -
    waitTranscoding: - - boolean - +
    200 OK
    + -
    in formData
    +
    -

    Whether or not we wait transcoding before publish the video

    +

    successful operation

    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    Response Example + (200 OK) +
    +
    {
    +  "comment": {
    +    "id": "number",
    +    "url": "string",
    +    "text": "string",
    +    "threadId": "number",
    +    "inReplyToCommentId": "number",
    +    "videoId": "number",
    +    "createdAt": "string",
    +    "updatedAt": "string",
    +    "totalReplies": "number",
    +    "account": {
    +      "displayName": "string",
    +      "id": "number",
    +      "uuid": "string",
    +      "url": "string",
    +      "name": "string",
    +      "host": "string",
    +      "followingCount": "number",
    +      "followersCount": "number",
    +      "createdAt": "string",
    +      "updatedAt": "string",
    +      "avatar": {
    +        "path": "string",
    +        "createdAt": "string",
    +        "updatedAt": "string"
    +      }
    +    }
    +  }
    +}
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    +
    +
    + + +
    + VideoComment + +
    + + +

    + Delete a comment in a comment therad by its id, of a video by its id +

    +
    +
    +
    + DELETE + /videos/{id}/comments/{commentId} +
    +
    +
    +
    +
    +
    -
    support: +
    id: string
    -
    in formData
    + +
    in path
    -

    Text describing how to support the video uploader

    +

    The video id or uuid

    -
    nsfw: +
    threadId: - boolean + number
    -
    in formData
    + +
    in path
    -

    Whether or not this video contains sensitive content

    +

    The comment id

    +
    +
    +
    +
    +
    +
    +
    -
    name: - - string - - -
    -
    in formData
    +
    204 No Content
    -

    Video name

    +

    Successful operation

    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    +
    +

    VideoChannel

    +
    +
    +

    Operations dealing with creation, modification and video listing of a user's channels.

    +
    +
    +
    + + +
    + VideoChannel + +
    + + +

    + Get list of video channels +

    +
    +
    +
    + GET + /video-channels +
    +
    +
    +
    +
    +
    -
    tags: +
    start: - string[] + number
    -
    in formData
    +
    in query
    -

    Video tags

    +

    Offset

    -
    commentsEnabled: +
    count: - boolean + number
    -
    in formData
    +
    in query
    -

    Enable or disable comments for this video

    +

    Number of items

    -
    privacy: +
    sort: string - - Public, - Unlisted -
    -
    in formData
    -
    -
    -

    Video privacy

    -
    -
    -
    -
    -
    scheduleUpdate: - - object - - -
    -
    in formData
    +
    in query
    -

    Schedule an update at a specific datetime

    +

    Sort column (-createdAt for example)

    @@ -4143,8 +4382,8 @@
    200 OK
    @@ -4153,6 +4392,17 @@

    successful operation

    +
    +
    type
    +
    + + + VideoChannel + + + +
    +
    @@ -4163,17 +4413,96 @@
    Response Example (200 OK)
    -
    {
    -  "video": {
    -    "id": "number",
    -    "uuid": "string"
    +                  
    [
    +  {
    +    "displayName": "string",
    +    "description": "string",
    +    "isLocal": "boolean",
    +    "ownerAccount": {
    +      "id": "number",
    +      "uuid": "string"
    +    }
       }
    +]
    +
    + + +
    +
    +
    +
    + + +
    + VideoChannel + +
    + + +

    + Creates a video channel for the current user +

    +
    +
    +
    + POST + /video-channels +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +

    undefined

    + +
    +
    +
    +
    +
    +
    +
    Request Content-Types: + application/json +
    +
    Request Example
    +
    {
    +  "name": "string",
    +  "description": "string"
     }
     
    +
    +
    +
    +
    +
    +
    204 No Content
    +
    +
    +

    Successful operation

    +
    +
    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    @@ -4197,65 +4526,42 @@
    -

    VideoAbuse

    -
    +

    - - GET - /videos/abuse - + Get a video channel by its id

    +
    +
    +
    + GET + /video-channels/{id} +
    +
    +
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: +
    id: string
    -
    in query
    + +
    in path
    -

    Sort column (-createdAt for example)

    +

    The video channel id or uuid

    @@ -4269,8 +4575,8 @@
    200 OK
    @@ -4279,17 +4585,6 @@

    successful operation

    -
    -
    type
    -
    - - - VideoAbuse - - - -
    -
    @@ -4300,41 +4595,111 @@
    Response Example (200 OK)
    -
    [
    -  {
    +                  
    {
    +  "displayName": "string",
    +  "description": "string",
    +  "isLocal": "boolean",
    +  "ownerAccount": {
         "id": "number",
    -    "reason": "string",
    -    "reporterAccount": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "video": {
    -      "id": "number",
    -      "name": "string",
    -      "uuid": "string",
    -      "url": "string"
    -    },
    -    "createdAt": "string"
    +    "uuid": "string"
       }
    -]
    +}
    +
    + + +
    +
    +
    +
    + + +
    + VideoChannel + +
    + + +

    + Update a video channel by its id +

    +
    +
    +
    + PUT + /video-channels/{id} +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +

    undefined

    + +
    +
    +
    +
    +
    +
    +
    id: + + string + + +
    + +
    in path
    +
    +
    +

    The video channel id or uuid

    +
    +
    +
    +
    +
    +
    +
    Request Content-Types: + application/json +
    +
    Request Example
    +
    {
    +  "name": "string",
    +  "description": "string"
    +}
     
    +
    +
    +
    +
    +
    +
    204 No Content
    +
    +
    +

    Successful operation

    +
    +
    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    @@ -4358,21 +4723,26 @@
    -
    +

    - - POST - /videos/{id}/abuse - + Delete a video channel by its id

    +
    +
    +
    + DELETE + /video-channels/{id} +
    +
    +
    @@ -4388,7 +4758,7 @@
    in path
    -

    The video id or uuid

    +

    The video channel id or uuid

    @@ -4437,22 +4807,26 @@
    -

    VideoBlacklist

    -
    +

    - - POST - /videos/{id}/blacklist - + Get videos of a video channel by its id

    +
    +
    +
    + GET + /video-channels/{id}/videos +
    +
    +
    @@ -4468,7 +4842,7 @@
    in path
    -

    The video id or uuid

    +

    The video channel id or uuid

    @@ -4480,10 +4854,16 @@
    -
    204 No Content
    +
    200 OK
    +
    + + Video + +
    +
    -

    Successful operation

    +

    successful operation

    @@ -4492,52 +4872,84 @@
    Response Content-Types: application/json
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    +
    +
    Response Example + (200 OK) +
    +
    {
    +  "id": "number",
    +  "uuid": "string",
    +  "createdAt": "string",
    +  "publishedAt": "string",
    +  "updatedAt": "string",
    +  "category": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "licence": {
    +    "id": "number",
    +    "label": "string"
    +  },
    +  "language": {
    +    "id": "string",
    +    "label": "string"
    +  },
    +  "privacy": "string",
    +  "description": "string",
    +  "duration": "number",
    +  "isLocal": "boolean",
    +  "name": "string",
    +  "thumbnailPath": "string",
    +  "previewPath": "string",
    +  "embedPath": "string",
    +  "views": "number",
    +  "likes": "number",
    +  "dislikes": "number",
    +  "nsfw": "boolean",
    +  "account": {
    +    "name": "string",
    +    "displayName": "string",
    +    "url": "string",
    +    "host": "string",
    +    "avatar": {
    +      "path": "string",
    +      "createdAt": "string",
    +      "updatedAt": "string"
    +    }
    +  }
    +}
    +
    +
    -
    +

    - - DELETE - /videos/{id}/blacklist - + Get video channels of an account by its name

    +
    +
    +
    + GET + /accounts/{name}/video-channels +
    +
    +
    -
    id: +
    name: string @@ -4547,7 +4959,8 @@
    in path
    -

    The video id or uuid

    +

    The name of the account (chocobozzz or + chocobozzz@peertube.cpy.re for example)

    @@ -4559,10 +4972,129 @@
    -
    204 No Content
    +
    200 OK
    +
    + + VideoChannel + +
    + +
    +
    +

    successful operation

    +
    +
    +
    +
    type
    +
    + + + VideoChannel + + + +
    +
    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    Response Example + (200 OK) +
    +
    [
    +  {
    +    "displayName": "string",
    +    "description": "string",
    +    "isLocal": "boolean",
    +    "ownerAccount": {
    +      "id": "number",
    +      "uuid": "string"
    +    }
    +  }
    +]
    +
    + +
    +
    +
    +
    +

    User

    +
    + + +
    + User + +
    + + +

    + Creates user +

    +
    +
    +
    + POST + /users +
    +
    +
    +
    +
    +
    +
    +
    +
    + + AddUser + +
    +
    +
    + +

    User to create

    + +
    +
    +
    +
    +
    +
    +
    Request Content-Types: + application/json +
    +
    Request Example
    +
    {
    +  "username": "string",
    +  "password": "string",
    +  "email": "string",
    +  "videoQuota": "string",
    +  "role": "string"
    +}
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    200 OK
    +
    + + AddUserResponse + +
    +
    -

    Successful operation

    +

    successful operation

    @@ -4571,6 +5103,17 @@
    Response Content-Types: application/json
    +
    +
    Response Example + (200 OK) +
    +
    {
    +  "id": "number",
    +  "uuid": "string"
    +}
    +
    + +
    @@ -4588,7 +5131,9 @@ OAuth2 - + + admin + @@ -4596,21 +5141,26 @@
    -
    +

    - - GET - /videos/blacklist - + Get a list of users

    +
    +
    +
    + GET + /users +
    +
    +
    @@ -4668,7 +5218,7 @@
    200 OK
    @@ -4682,7 +5232,7 @@
    - VideoBlacklist + User @@ -4701,17 +5251,41 @@
    [
       {
         "id": "number",
    -    "videoId": "number",
    +    "username": "string",
    +    "email": "string",
    +    "displayNSFW": "boolean",
    +    "autoPlayVideo": "boolean",
    +    "role": "string",
    +    "videoQuota": "number",
         "createdAt": "string",
    -    "updatedAt": "string",
    -    "name": "string",
    -    "uuid": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean"
    +    "account": {
    +      "displayName": "string",
    +      "id": "number",
    +      "uuid": "string",
    +      "url": "string",
    +      "name": "string",
    +      "host": "string",
    +      "followingCount": "number",
    +      "followersCount": "number",
    +      "createdAt": "string",
    +      "updatedAt": "string",
    +      "avatar": {
    +        "path": "string",
    +        "createdAt": "string",
    +        "updatedAt": "string"
    +      }
    +    },
    +    "videoChannels": [
    +      {
    +        "displayName": "string",
    +        "description": "string",
    +        "isLocal": "boolean",
    +        "ownerAccount": {
    +          "id": "number",
    +          "uuid": "string"
    +        }
    +      }
    +    ]
       }
     ]
     
    @@ -4742,174 +5316,47 @@
    -

    VideoChannel

    -
    +

    - - GET - /video-channels - + Delete a user by its id

    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    +
    + DELETE + /users/{id}
    -
    -
    +
    -
    200 OK
    -
    - - VideoChannel +
    id: + + number +
    - -
    -
    -

    successful operation

    + +
    in path
    -
    -
    -
    type
    - - - VideoChannel - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "displayName": "string",
    -    "description": "string",
    -    "isLocal": "boolean",
    -    "ownerAccount": {
    -      "id": "number",
    -      "uuid": "string"
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - - POST - /video-channels - -

    -
    -
    -
    -
    -
    - -
    -
    - -

    undefined

    - +

    The user id

    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "name": "string",
    -  "description": "string"
    -}
    -
    - -
    -
    +
    @@ -4945,7 +5392,9 @@ OAuth2 - + + admin + @@ -4953,21 +5402,26 @@
    -
    +

    - - GET - /video-channels/{id} - + Get user by its id

    +
    +
    +
    + GET + /users/{id} +
    +
    +
    @@ -4975,7 +5429,7 @@
    id: - string + number
    @@ -4983,7 +5437,7 @@
    in path
    -

    The video channel id or uuid

    +

    The user id

    @@ -4998,7 +5452,7 @@
    200 OK
    @@ -5018,35 +5472,91 @@ (200 OK)
    {
    -  "displayName": "string",
    -  "description": "string",
    -  "isLocal": "boolean",
    -  "ownerAccount": {
    +  "id": "number",
    +  "username": "string",
    +  "email": "string",
    +  "displayNSFW": "boolean",
    +  "autoPlayVideo": "boolean",
    +  "role": "string",
    +  "videoQuota": "number",
    +  "createdAt": "string",
    +  "account": {
    +    "displayName": "string",
         "id": "number",
    -    "uuid": "string"
    -  }
    +    "uuid": "string",
    +    "url": "string",
    +    "name": "string",
    +    "host": "string",
    +    "followingCount": "number",
    +    "followersCount": "number",
    +    "createdAt": "string",
    +    "updatedAt": "string",
    +    "avatar": {
    +      "path": "string",
    +      "createdAt": "string",
    +      "updatedAt": "string"
    +    }
    +  },
    +  "videoChannels": [
    +    {
    +      "displayName": "string",
    +      "description": "string",
    +      "isLocal": "boolean",
    +      "ownerAccount": {
    +        "id": "number",
    +        "uuid": "string"
    +      }
    +    }
    +  ]
     }
     
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    -
    +

    - - PUT - /video-channels/{id} - + Update user profile by its id

    +
    +
    +
    + PUT + /users/{id} +
    +
    +
    @@ -5054,7 +5564,7 @@ @@ -5070,7 +5580,7 @@
    id: - string + number
    @@ -5078,7 +5588,7 @@
    in path
    -

    The video channel id or uuid

    +

    The user id

    @@ -5090,8 +5600,10 @@
    Request Example
    {
    -  "name": "string",
    -  "description": "string"
    +  "id": "string",
    +  "email": "string",
    +  "videoQuota": "string",
    +  "role": "string"
     }
     
    @@ -5140,41 +5652,28 @@
    -
    +

    - - DELETE - /video-channels/{id} - + Get current user information

    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video channel id or uuid

    -
    -
    +
    + GET + /users/me
    +
    +
    +
    @@ -5182,10 +5681,27 @@
    -
    204 No Content
    +
    200 OK
    +
    + + User + +
    +
    -

    Successful operation

    +

    successful operation

    +
    +
    +
    +
    type
    +
    + + + User + + +
    @@ -5194,6 +5710,53 @@
    Response Content-Types: application/json
    +
    +
    Response Example + (200 OK) +
    +
    [
    +  {
    +    "id": "number",
    +    "username": "string",
    +    "email": "string",
    +    "displayNSFW": "boolean",
    +    "autoPlayVideo": "boolean",
    +    "role": "string",
    +    "videoQuota": "number",
    +    "createdAt": "string",
    +    "account": {
    +      "displayName": "string",
    +      "id": "number",
    +      "uuid": "string",
    +      "url": "string",
    +      "name": "string",
    +      "host": "string",
    +      "followingCount": "number",
    +      "followersCount": "number",
    +      "createdAt": "string",
    +      "updatedAt": "string",
    +      "avatar": {
    +        "path": "string",
    +        "createdAt": "string",
    +        "updatedAt": "string"
    +      }
    +    },
    +    "videoChannels": [
    +      {
    +        "displayName": "string",
    +        "description": "string",
    +        "isLocal": "boolean",
    +        "ownerAccount": {
    +          "id": "number",
    +          "uuid": "string"
    +        }
    +      }
    +    ]
    +  }
    +]
    +
    + +
    @@ -5219,154 +5782,126 @@
    -
    +

    - - GET - /video-channels/{id}/videos - + Update current user information

    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video channel id or uuid

    -
    -
    +
    + PUT + /users/me
    -
    -
    -
    +
    +
    -
    200 OK
    -
    + -
    -
    -

    successful operation

    +
    + +

    undefined

    +
    -
    Response Content-Types: - application/json -
    -
    Response Example - (200 OK) +
    Request Content-Types: + application/json
    +
    Request Example
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    +  "password": "string",
    +  "email": "string",
    +  "displayNSFW": "string",
    +  "autoPlayVideo": "string"
     }
     
    +
    +
    +
    +
    +
    +
    204 No Content
    +
    +
    +

    Successful operation

    +
    +
    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    -
    +

    - - GET - /accounts/{name}/video-channels - + Get current user used quota

    -
    -
    -
    -
    name: - - string - - -
    - -
    in path
    -
    -
    -

    The name of the account (chocobozzz or - chocobozzz@peertube.cpy.re for example)

    -
    -
    +
    + GET + /users/me/video-quota-used
    +
    +
    +
    @@ -5375,11 +5910,7 @@
    200 OK
    -
    - - VideoChannel - -
    +
    @@ -5389,11 +5920,7 @@
    type
    - - - VideoChannel - - + number
    @@ -5407,45 +5934,61 @@
    Response Example (200 OK)
    -
    [
    -  {
    -    "displayName": "string",
    -    "description": "string",
    -    "isLocal": "boolean",
    -    "ownerAccount": {
    -      "id": "number",
    -      "uuid": "string"
    -    }
    -  }
    -]
    +                  
    "number"
     
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    -

    VideoComment

    -
    +

    - - GET - /videos/{id}/comment-threads - + Get rating of video by its id, among those of the current user

    +
    +
    +
    + GET + /users/me/videos/{videoId}/rating +
    +
    +
    -
    id: +
    videoId: string @@ -5455,49 +5998,7 @@
    in path
    -

    The video id or uuid

    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    +

    The video id

    @@ -5512,7 +6013,7 @@
    200 OK
    @@ -5532,75 +6033,100 @@ (200 OK)
    {
    -  "total": "number",
    -  "data": [
    -    {
    -      "id": "number",
    -      "url": "string",
    -      "text": "string",
    -      "threadId": "number",
    -      "inReplyToCommentId": "number",
    -      "videoId": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "totalReplies": "number",
    -      "account": {
    -        "displayName": "string",
    -        "id": "number",
    -        "uuid": "string",
    -        "url": "string",
    -        "name": "string",
    -        "host": "string",
    -        "followingCount": "number",
    -        "followersCount": "number",
    -        "createdAt": "string",
    -        "updatedAt": "string",
    -        "avatar": {
    -          "path": "string",
    -          "createdAt": "string",
    -          "updatedAt": "string"
    -        }
    -      }
    -    }
    -  ]
    +  "id": "string",
    +  "rating": "number"
     }
     
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +
    -
    +

    - - POST - /videos/{id}/comment-threads - + Get videos of the current user

    +
    +
    +
    + GET + /users/me/videos +
    +
    +
    -
    id: +
    start: - string + number
    - -
    in path
    +
    in query
    +
    +
    +

    Offset

    +
    +
    +
    +
    +
    count: + + number + + +
    +
    in query
    +
    +
    +

    Number of items

    +
    +
    +
    +
    +
    sort: + + string + + +
    +
    in query
    -

    The video id or uuid

    +

    Sort column (-createdAt for example)

    @@ -5614,8 +6140,8 @@
    200 OK
    @@ -5624,6 +6150,17 @@

    successful operation

    +
    +
    type
    +
    + + + Video + + + +
    +
    @@ -5634,28 +6171,42 @@
    Response Example (200 OK)
    -
    {
    -  "comment": {
    +                  
    [
    +  {
         "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    +    "uuid": "string",
         "createdAt": "string",
    +    "publishedAt": "string",
         "updatedAt": "string",
    -    "totalReplies": "number",
    +    "category": {
    +      "id": "number",
    +      "label": "string"
    +    },
    +    "licence": {
    +      "id": "number",
    +      "label": "string"
    +    },
    +    "language": {
    +      "id": "string",
    +      "label": "string"
    +    },
    +    "privacy": "string",
    +    "description": "string",
    +    "duration": "number",
    +    "isLocal": "boolean",
    +    "name": "string",
    +    "thumbnailPath": "string",
    +    "previewPath": "string",
    +    "embedPath": "string",
    +    "views": "number",
    +    "likes": "number",
    +    "dislikes": "number",
    +    "nsfw": "boolean",
         "account": {
    +      "name": "string",
           "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
           "url": "string",
    -      "name": "string",
           "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
           "avatar": {
             "path": "string",
             "createdAt": "string",
    @@ -5663,7 +6214,7 @@
           }
         }
       }
    -}
    +]
     
    @@ -5692,73 +6243,70 @@
    -
    +

    - - GET - /videos/{id}/comment-threads/{threadId} - + Register a user

    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    +
    + POST + /users/register +
    +
    +
    +
    +
    +
    +
    -
    threadId: - - number - + - -
    in path
    -
    -

    The thread id (root comment id)

    +
    + +

    undefined

    +
    -
    +
    +
    +
    Request Content-Types: + application/json +
    +
    Request Example
    +
    {
    +  "username": "string",
    +  "password": "string",
    +  "email": "string"
    +}
    +
    + +
    +
    -
    200 OK
    - - +
    204 No Content
    -

    successful operation

    +

    Successful operation

    @@ -5767,155 +6315,44 @@
    Response Content-Types: application/json
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  },
    -  "children": [
    -    {
    -      "comment": {
    -        "id": "number",
    -        "url": "string",
    -        "text": "string",
    -        "threadId": "number",
    -        "inReplyToCommentId": "number",
    -        "videoId": "number",
    -        "createdAt": "string",
    -        "updatedAt": "string",
    -        "totalReplies": "number",
    -        "account": {
    -          "displayName": "string",
    -          "id": "number",
    -          "uuid": "string",
    -          "url": "string",
    -          "name": "string",
    -          "host": "string",
    -          "followingCount": "number",
    -          "followersCount": "number",
    -          "createdAt": "string",
    -          "updatedAt": "string",
    -          "avatar": {
    -            "path": "string",
    -            "createdAt": "string",
    -            "updatedAt": "string"
    -          }
    -        }
    -      },
    -      "children": [
    -        {
    -          "comment": {
    -            "id": "number",
    -            "url": "string",
    -            "text": "string",
    -            "threadId": "number",
    -            "inReplyToCommentId": "number",
    -            "videoId": "number",
    -            "createdAt": "string",
    -            "updatedAt": "string",
    -            "totalReplies": "number",
    -            "account": {
    -              "id": "number",
    -              "uuid": "string",
    -              "url": "string",
    -              "name": "string",
    -              "host": "string",
    -              "followingCount": "number",
    -              "followersCount": "number",
    -              "createdAt": "string",
    -              "updatedAt": "string",
    -              "avatar": {
    -                "path": "string",
    -                "createdAt": "string",
    -                "updatedAt": "string"
    -              }
    -            }
    -          }
    -        }
    -      ]
    -    }
    -  ]
    -}
    -
    - -
    -
    +

    - - POST - /videos/{id}/comments/{commentId} - + Update current user avatar

    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    +
    + POST + /users/me/avatar/pick +
    +
    +
    +
    +
    +
    -
    threadId: +
    avatarfile: - number + file
    - -
    in path
    +
    in formData
    -

    The comment id

    +

    The file to upload.

    @@ -5930,7 +6367,7 @@
    200 OK
    @@ -5950,34 +6387,9 @@ (200 OK)
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    +  "path": "string",
    +  "createdAt": "string",
    +  "updatedAt": "string"
     }
     
    @@ -6007,21 +6419,27 @@
    -
    +

    VideoBlacklist

    +

    - - DELETE - /videos/{id}/comments/{commentId} - + Put on blacklist a video by its id

    +
    +
    +
    + POST + /videos/{id}/blacklist +
    +
    +
    @@ -6040,21 +6458,6 @@

    The video id or uuid

    -
    -
    -
    threadId: - - number - - -
    - -
    in path
    -
    -
    -

    The comment id

    -
    -
    @@ -6093,7 +6496,10 @@ OAuth2 - + + admin, + moderator + @@ -6101,22 +6507,26 @@
    -

    VideoRate

    -
    +

    - - PUT - /videos/{id}/rate - + Delete an entry of the blacklist of a video by its id

    +
    +
    +
    + DELETE + /videos/{id}/blacklist +
    +
    +
    @@ -6173,7 +6583,10 @@ OAuth2 - + + admin, + moderator + @@ -6181,22 +6594,26 @@
    -

    Search

    -
    +

    - - GET - /search/videos - + Get list of videos on blacklist

    +
    +
    +
    + GET + /videos/blacklist +
    +
    +
    @@ -6242,21 +6659,6 @@

    Sort column (-createdAt for example)

    -
    -
    -
    search: - - string - - -
    - -
    in query
    -
    -
    -

    String to search

    -
    -
    @@ -6269,7 +6671,7 @@
    200 OK
    @@ -6283,7 +6685,7 @@
    - Video + VideoBlacklist @@ -6302,45 +6704,17 @@
    [
       {
         "id": "number",
    -    "uuid": "string",
    +    "videoId": "number",
         "createdAt": "string",
    -    "publishedAt": "string",
         "updatedAt": "string",
    -    "category": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "licence": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "language": {
    -      "id": "string",
    -      "label": "string"
    -    },
    -    "privacy": "string",
    +    "name": "string",
    +    "uuid": "string",
         "description": "string",
         "duration": "number",
    -    "isLocal": "boolean",
    -    "name": "string",
    -    "thumbnailPath": "string",
    -    "previewPath": "string",
    -    "embedPath": "string",
         "views": "number",
         "likes": "number",
         "dislikes": "number",
    -    "nsfw": "boolean",
    -    "account": {
    -      "name": "string",
    -      "displayName": "string",
    -      "url": "string",
    -      "host": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    +    "nsfw": "boolean"
       }
     ]
     
    @@ -6348,13 +6722,122 @@
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 + + admin, + moderator +
    +
    +
    +
    +
    +

    VideoRate

    +
    + + +
    + VideoRate + +
    + + +

    + Vote for a video by its id +

    +
    +
    +
    + PUT + /videos/{id}/rate +
    +
    +
    +
    +
    +
    +
    +
    +
    id: + + string + + +
    + +
    in path
    +
    +
    +

    The video id or uuid

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    204 No Content
    +
    +
    +

    Successful operation

    +
    +
    +
    +
    +
    +
    Response Content-Types: + application/json +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    + OAuth2 +
    +
    +
    +

    Schema Definitions

    VideoConstantNumber: - + cloud-upload + Created with Sketch. + + + + + + + + + + + diff --git a/client/src/assets/images/header/upload.svg b/client/src/assets/images/header/upload.svg deleted file mode 100644 index 2b07caf76..000000000 --- a/client/src/assets/images/header/upload.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - cloud-upload - Created with Sketch. - - - - - - - - - - - diff --git a/client/yarn.lock b/client/yarn.lock index da5a86da4..24341065b 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2,206 +2,211 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.8.3.tgz#320c7de2e2e7b984a0e4be51dc60dfe12d4c973e" - integrity sha512-cFku50grgEJPg1CZZ0DXt4CkA6WnV6zN3hCXzpWbOfc/Id923Mml/jsEaoByeXHsRqb5rIZKZAhz7R509ya8OQ== - dependencies: - "@angular-devkit/core" "0.8.3" - rxjs "~6.2.0" - -"@angular-devkit/build-angular@^0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.8.3.tgz#e302fdf0f11d589bc518f93afaa7fe5f967bde94" - integrity sha512-NWwWV+6apvCGmllWjwwy9Pmj5uK5tVGL/xIVQgSGC5waLmW/vFWNRXCI50ji5UPP+vAeRi/pWdXWMxuoVA08FA== - dependencies: - "@angular-devkit/architect" "0.8.3" - "@angular-devkit/build-optimizer" "0.8.3" - "@angular-devkit/build-webpack" "0.8.3" - "@angular-devkit/core" "0.8.3" - "@ngtools/webpack" "6.2.3" - ajv "~6.4.0" - autoprefixer "^8.4.1" - circular-dependency-plugin "^5.0.2" - clean-css "^4.1.11" - copy-webpack-plugin "^4.5.2" - file-loader "^1.1.11" - glob "^7.0.3" - html-webpack-plugin "^3.0.6" - istanbul "^0.4.5" - istanbul-instrumenter-loader "^3.0.1" - karma-source-map-support "^1.2.0" - less "^3.7.1" - less-loader "^4.1.0" - license-webpack-plugin "^1.3.1" - loader-utils "^1.1.0" - mini-css-extract-plugin "~0.4.0" - minimatch "^3.0.4" - opn "^5.1.0" - parse5 "^4.0.0" - portfinder "^1.0.13" - postcss "^6.0.22" - postcss-import "^11.1.0" - postcss-loader "^2.1.5" - postcss-url "^7.3.2" - raw-loader "^0.5.1" - rxjs "~6.2.0" - sass-loader "^7.1.0" - semver "^5.5.0" - source-map-loader "^0.2.3" - source-map-support "^0.5.0" - stats-webpack-plugin "^0.6.2" - style-loader "^0.21.0" - stylus "^0.54.5" - stylus-loader "^3.0.2" - tree-kill "^1.2.0" - uglifyjs-webpack-plugin "^1.2.5" - url-loader "^1.0.1" - webpack "^4.15.1" - webpack-dev-middleware "^3.1.3" - webpack-dev-server "^3.1.4" - webpack-merge "^4.1.2" - webpack-sources "^1.1.0" - webpack-subresource-integrity "^1.1.0-rc.4" +"@angular-devkit/architect@0.10.6": + version "0.10.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.10.6.tgz#7007e7591be21eeb478951106c84c83802ca21a4" + integrity sha512-IygpkXNn946vVUFFWKWEDxRqRy888vOAUWcmkZzqPEBYkuwWt7WnLfe8Sjw4fH/+HLWEMS8RXbdSTHiiaP9qOg== + dependencies: + "@angular-devkit/core" "7.0.6" + rxjs "6.3.3" + +"@angular-devkit/build-angular@~0.10.0": + version "0.10.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.10.6.tgz#9c713a786de89a68063bd9e86516eb450f2dac72" + integrity sha512-Lbx6rjIGB2mMmkTCaolrQ86OfPxO/qfb4l2RvPiSyx06MEZfmFWKGeJzqCYKBRQajziX3Yc3AFzAPecoCkbIGA== + dependencies: + "@angular-devkit/architect" "0.10.6" + "@angular-devkit/build-optimizer" "0.10.6" + "@angular-devkit/build-webpack" "0.10.6" + "@angular-devkit/core" "7.0.6" + "@ngtools/webpack" "7.0.6" + ajv "6.5.3" + autoprefixer "9.1.5" + circular-dependency-plugin "5.0.2" + clean-css "4.2.1" + copy-webpack-plugin "4.5.4" + file-loader "2.0.0" + glob "7.1.3" + istanbul "0.4.5" + istanbul-instrumenter-loader "3.0.1" + karma-source-map-support "1.3.0" + less "3.8.1" + less-loader "4.1.0" + license-webpack-plugin "2.0.2" + loader-utils "1.1.0" + mini-css-extract-plugin "0.4.3" + minimatch "3.0.4" + opn "5.3.0" + parse5 "4.0.0" + portfinder "1.0.17" + postcss "7.0.5" + postcss-import "12.0.0" + postcss-loader "3.0.0" + raw-loader "0.5.1" + rxjs "6.3.3" + sass-loader "7.1.0" + semver "5.5.1" + source-map-loader "0.2.4" + source-map-support "0.5.9" + speed-measure-webpack-plugin "^1.2.3" + stats-webpack-plugin "0.7.0" + style-loader "0.23.0" + stylus "0.54.5" + stylus-loader "3.0.2" + terser-webpack-plugin "1.1.0" + tree-kill "1.2.0" + webpack "4.19.1" + webpack-dev-middleware "3.3.0" + webpack-dev-server "3.1.8" + webpack-merge "4.1.4" + webpack-sources "1.2.0" + webpack-subresource-integrity "1.1.0-rc.6" optionalDependencies: - node-sass "^4.9.3" + node-sass "4.9.3" -"@angular-devkit/build-optimizer@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.8.3.tgz#6fdc56bc29313ef9f80af095d5234af750b3277e" - integrity sha512-uvscKyKHkC2NhGt1M+bbHkEESKumiYB0j6NfVpGjYvBPQnXvsm2/shzTkwOb13kEmtaMpnT/iV9EQuODbsh7Rw== +"@angular-devkit/build-optimizer@0.10.6": + version "0.10.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.10.6.tgz#ca7db9b3d5378b2759509692f02a5fb5af273dd0" + integrity sha512-oedg8F++8zZTmoTt141k3nlyPtrSSsQUZI9TFbSdfR1D5WDflwOlkLyRb5WoC53HSoQnagKxY2qzd7khVah//Q== dependencies: - loader-utils "^1.1.0" - source-map "^0.5.6" - typescript "~2.9.2" - webpack-sources "^1.1.0" + loader-utils "1.1.0" + source-map "0.5.6" + typescript "3.1.6" + webpack-sources "1.2.0" -"@angular-devkit/build-webpack@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.8.3.tgz#df8fd2195b0304acfd0c64c8af95ec543ec28593" - integrity sha512-PiMKlhUhaAl0G8dbhTTRZB3RpHOE0SuMjnimyCmZt6U6/dM46KPXd2GFtwtDjwpMJEvz6ep9gIPgF2bJMnwzJg== +"@angular-devkit/build-webpack@0.10.6": + version "0.10.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.10.6.tgz#d3acb781f97406a49a3e3adfcc49a8518d33e291" + integrity sha512-tPv23KKw3iAGCTF6noD7zdHbufny4A3d+mlX1VoJDiAa6jqmuFxhY2fALymc11MRY4HVtMF5J1kQy9BLGCDbQg== dependencies: - "@angular-devkit/architect" "0.8.3" - "@angular-devkit/core" "0.8.3" - rxjs "~6.2.0" + "@angular-devkit/architect" "0.10.6" + "@angular-devkit/core" "7.0.6" + rxjs "6.3.3" -"@angular-devkit/core@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.8.3.tgz#a7158195dc90997de62ec0b12af3325870182c3b" - integrity sha512-2KHt5osMs3zACYXev20ZU5SXdWoinoKwZkj2caj2LCj9W7QNHmsz34QvaygNq7YdJzF3jkXkdy0GSUgUgDke0w== +"@angular-devkit/core@7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-7.0.6.tgz#26c4cd4d271e8cd03f6e50b4ec30cbc606f3346e" + integrity sha512-RPSXUtLrpYDTqAEL0rCyDKxES76EomsPBvUUZTD6UkE2pihoh9ZIxkzhzlE+HU/xdqm28+smQYFhvvEAXFWwSQ== dependencies: - ajv "~6.4.0" - chokidar "^2.0.3" - rxjs "~6.2.0" - source-map "^0.5.6" + ajv "6.5.3" + chokidar "2.0.4" + fast-json-stable-stringify "2.0.0" + rxjs "6.3.3" + source-map "0.7.3" -"@angular-devkit/schematics@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.8.3.tgz#32f2e99b43c39864ec63301963329c9190d7c5d2" - integrity sha512-NzsRc0O6nlwCviynZbbkrSWPvTSICviqyYxCXkmEkrbiXqvvahJjSQ/sXQQV0TRkgyTFdhnDF4WIwpeJM4UDeg== +"@angular-devkit/schematics@7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-7.0.6.tgz#97fca028bd937e2319d9d34c12b82e8d1d99de23" + integrity sha512-S/3CrBDoh/BD4mBq8RNGQ8sgNFDsveCuFHDkOyct8+NDg2wcRkEGigyq8eZwVN/iVKCwjxc0I/bC336edoNMIQ== dependencies: - "@angular-devkit/core" "0.8.3" - rxjs "~6.2.0" + "@angular-devkit/core" "7.0.6" + rxjs "6.3.3" -"@angular/animations@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-6.1.8.tgz#a1861c7f63aca5bd18ba48e0c736ee7b1f2dac36" - integrity sha512-OUetZPkEfUz0o58bVmx42Jdd/ep+KcgV5xaFvRTwXI/mVbTYgODJUos7aaoyBz6J2EPB/pTA4NMyZU3XFKjDiw== +"@angular/animations@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-7.0.4.tgz#f53fc9f1bce3bf1afe60dcbc08b6863472f519e4" + integrity sha512-QfFikT0FzYNMjdVg0LWTBijdu9JDJyzejnhCFlXxv+KR4zolpRK98/rU7CFW1Fg2jjL3/yL9PT1sf5I0fTJZYA== dependencies: tslib "^1.9.0" -"@angular/cli@~6.2.3": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-6.2.3.tgz#212e11cd5e2eed994b33feb93c550a84a0e38ba8" - integrity sha512-6cKPEwtVXWRipDcWmJns32TY9LmbsUPhzWh/y7DLW+FzzJv/5amX1/mdMqUS0hTdq4gKm7hZ/muVx6bLooVPxA== - dependencies: - "@angular-devkit/architect" "0.8.3" - "@angular-devkit/core" "0.8.3" - "@angular-devkit/schematics" "0.8.3" - "@schematics/angular" "0.8.3" - "@schematics/update" "0.8.3" - json-schema-traverse "^0.4.1" - opn "^5.3.0" - rxjs "~6.2.0" - semver "^5.1.0" - symbol-observable "^1.2.0" - yargs-parser "^10.0.0" - -"@angular/common@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-6.1.8.tgz#e9106cecd448f24e3a553a6ea9431e113fe3becd" - integrity sha512-v8U49a7w2hXKX229WCLNF40RYY3v26+QKlN/jxdzKpP4wu5dguX6s6d3+AJdtywvsE8WS1NwOTHWCCWuMiVxrg== +"@angular/cli@~7.0.4": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-7.0.6.tgz#f97bc9ca92785c7ce2e5f20819c48265a1da5b53" + integrity sha512-f76kq8AQMkloeojIffeT7DYLXT/J4DRhYoAPQR4E09V7lkigFCILiYzQs5RtCAX6EjlPxlrZKkdfnBn0OUPnig== + dependencies: + "@angular-devkit/architect" "0.10.6" + "@angular-devkit/core" "7.0.6" + "@angular-devkit/schematics" "7.0.6" + "@schematics/angular" "7.0.6" + "@schematics/update" "0.10.6" + inquirer "6.2.0" + opn "5.3.0" + rxjs "6.3.3" + semver "5.5.1" + symbol-observable "1.2.0" + +"@angular/common@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-7.0.4.tgz#aafb26ce59c967daa5b122393e1933208a247f72" + integrity sha512-akQojdqY/RBlItkDWAPI3k0Llk1wnbAp+f47yySi3cgQz9SaZ1/RLNWZV84I/cKrksb4ehorT/lTqRBojsAD1A== dependencies: tslib "^1.9.0" -"@angular/compiler-cli@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-6.1.8.tgz#b31842b42a6cee90d0f61f3849fbd15fc6f5ddbf" - integrity sha512-oL7ghO1Yjfp+J349hWrOqsrwJZ6ZAC0mRsXY0SkadnPI3oLzcmysmZV91UUjjZ43KR6lmXXkxo52Gt8bIRYEWQ== +"@angular/compiler-cli@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-7.0.4.tgz#f96fc1c0aec27ee97ec5f13a8eb72bc8b964db97" + integrity sha512-kvhWt6OTb1Uduns9Vm+Dwd/UUBNSEU6Jgu+QOPeHr7lg+4NTyr9uQLU0DtfBP0ljOlds8esmfii5IIFTeUQw1Q== dependencies: + canonical-path "1.0.0" chokidar "^1.4.2" + convert-source-map "^1.5.1" + dependency-graph "^0.7.2" + magic-string "^0.25.0" minimist "^1.2.0" reflect-metadata "^0.1.2" - tsickle "^0.32.1" + shelljs "^0.8.1" + source-map "^0.6.1" + tslib "^1.9.0" + yargs "9.0.1" -"@angular/compiler@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-6.1.8.tgz#bbbb70961724c6e5755e05fc5d7f4b39d3bb4a0c" - integrity sha512-a+OblYNKzjBVsYy3FlZd8QkZvWpsDlqb8xGCfUBPazPFlbeDGp4Bvz5KdX0uCTv46OQyh6jeAmKWPt0PVxLrhg== +"@angular/compiler@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-7.0.4.tgz#df91dab990c46b464705b0901d70d1cfdfd190e1" + integrity sha512-ExDhH1cJkuJkUsgNRZyZBse0a7wWkQyG5O8HONi3Rzig9dalFEuve9jD04zfA1Jx1GTXhovqtGnF72x4kw0V8Q== dependencies: tslib "^1.9.0" -"@angular/core@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-6.1.8.tgz#2de584e184dc148a55ec153f8125acdf3e88eae6" - integrity sha512-6bMVQmPqpKJZspjNRIEMaGOxCmDWrAZENlofXNgPhQ0mUNh17iTH7XpqjKbW7UWtnTqGcdnDC9dI++P08ggD3g== +"@angular/core@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-7.0.4.tgz#98340a1bdb53f0bbecfcfc9831a7a22a1540d79b" + integrity sha512-17SSmCz1wQoZKnVHF/T8UkWYPpDm5kPyoc1okkTTv8ZA2EAMMuZFFnRSAxEL5i7mNB9z5CvRqF2tRx/DbgbIRA== dependencies: tslib "^1.9.0" -"@angular/forms@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-6.1.8.tgz#058429b99fc4c6554fe4943a23d4d6221cb1d9ac" - integrity sha512-S+spi72wxXTTIdB+02xgYdl8UlCYMJ13ast0dfCGStwx/fRUsgo0sWppDpMJz9sseC7xKEJ4U5tsfjTiCQ9dqw== +"@angular/forms@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-7.0.4.tgz#5f2328d297f5c7f9f3af81e1f76a13e1546c743f" + integrity sha512-W3nN9n1VY9On9+9f7PDRbzJUg+mMq1bjkhWsk/b7DfaYdmlzpG+Wd6OfArob2edsqGqH1dvTM8q8aGbWiFZ7dA== dependencies: tslib "^1.9.0" -"@angular/http@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/http/-/http-6.1.8.tgz#8c627a879285a366e960edc15522006474f4ec6f" - integrity sha512-WqOm3mAjU9SdPazi7DTJzPosRzb4+3Dk3gdzMpKwDNP40Zg940UBt62udVmK2ERReIQlQbHgq/+JLiPe3q5O5A== +"@angular/http@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-7.0.4.tgz#445d6a812d25ea1656fc3e3381ef82b3f98fccb4" + integrity sha512-oUGT7xS7FZYajuHq0DP6MgahacB5sJTRgxiUU4uhQ/mqV7aREODVJJgw7oHDhM7Cnyzzo0B9D0zpEljKmeCLWQ== dependencies: tslib "^1.9.0" -"@angular/language-service@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-6.1.8.tgz#2b076eca1e415204a4e2e8e4b066d258a7fe16fd" - integrity sha512-AQpjHDlhGuuRvBuWEpq/u49lcaEL/PO2tLMMU5gRqBFYido9wP/6Flz0Oxgu1g5Xjj19Kj00j9uNGgSGc4UCyQ== +"@angular/language-service@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-7.0.4.tgz#db221f183725ff54c1188aec7acb2948e29f4c50" + integrity sha512-CuJ2Ii97sNoN1HOZOLxG1lEHsQFi8K/RSB/k2suWPKzdM53ldSkKoYRac38zW/uqNABYItgvxb7w0Vi7HhxLsg== -"@angular/platform-browser-dynamic@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.8.tgz#a0c523857e9e55343e6e1747052141d870d4e870" - integrity sha512-rXsyY6xpeuBTGyEmgx3KFMv1PTgaa1efA1bo8I3KIuUn595GnQamszpXISSySGeMYxEhKFeQWafb/ZDnSg0vWQ== +"@angular/platform-browser-dynamic@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.0.4.tgz#69abb8c784bb71a660a0c824ca4a1a4960811a33" + integrity sha512-k1I53zIg8YWhtQizLfq/tWrUUdY5vHV8pGHyt0/UTGDqat5TORd6LDFfzCSux0r3qZujCOGNi9f4/AbyV8B9lw== dependencies: tslib "^1.9.0" -"@angular/platform-browser@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-6.1.8.tgz#2a0340995ee4b67809f10e039a872afb7f228403" - integrity sha512-ZjnlnKj6K+Z+LvA9dbzckOfB0CwaamTkQGxyODXdYpwEJ/7YOoz+v+LYf6BpKdyqiDHEyVQnkU0YiniNNy+CWA== +"@angular/platform-browser@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-7.0.4.tgz#57dfaa23f8a3d678bad6ca110051e3ac6622ff3d" + integrity sha512-4brYZZgsCJk1/a6JoSwaiVWO9+/T4iyE27dAgstao1nOf/jrBNKW2HnZtkWZmCCBK0WIk15wlB0Xr87OZbjNVA== dependencies: tslib "^1.9.0" -"@angular/router@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-6.1.8.tgz#7106a55392e9f920358544f431dace2ef3715630" - integrity sha512-0J7xkN8l4vdmtFETgJFYqHYxUPZz9grTnjeKmEkBSogxpOfJE5doDkAcBraRzB/Nb95MSb+zc4rIjx9Otx2IjA== +"@angular/router@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-7.0.4.tgz#ae2c32cc6a29bfe6eb909b9c63257d187075f4ff" + integrity sha512-nt1jJsxN+JmYZ6URamMdULUpH4aHdnNVKjWtjDI0OpdZvPx7PMFD8cfc92q0tavy2KqqexcceIb4BIC965gtpA== dependencies: tslib "^1.9.0" -"@angular/service-worker@~6.1.4": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-6.1.8.tgz#1f8be0db90d28a019cfeaa684ff00bfe739f3dda" - integrity sha512-hlMRCciD+kCB8Z3DWWUHjYFUK/xVh/gPGrKJu2yw76R+5BwCntre2NyTL/CR9fppxp5PqDrMI3Vzb1Br5ynXxg== +"@angular/service-worker@~7.0.2": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-7.0.4.tgz#be274843ae29cb69ac969c078edd8ae5b25e3e61" + integrity sha512-vBA9T1xeCP6QesOYhMyVpXTUVdXU4eMYdoZItHncyom8AxS2a26FB8zLW72VXdEfZ7xnJgcDtsYzYzVi+3DXsQ== dependencies: tslib "^1.9.0" @@ -303,22 +308,23 @@ resolved "https://registry.yarnpkg.com/@neos21/bootstrap3-glyphicons/-/bootstrap3-glyphicons-1.0.1.tgz#e5eeec43e0153d4b51effd9ecb58cdf7029924d7" integrity sha1-5e7sQ+AVPUtR7/2ey1jN9wKZJNc= -"@ng-bootstrap/ng-bootstrap@^3.1.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-3.2.0.tgz#d44b5ed18ad6f489125074b0f6099668cdce841d" - integrity sha512-P+baWRj0Fs2Hm6ZKN2Mtw/xdC6yeuQ0wv2pXGkI231vUb7Jaso28n+9Qc9HSSkfup2Xpm9WVQzhv8AJ4KUOpyA== +"@ng-bootstrap/ng-bootstrap@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-4.0.0.tgz#e56aafc8e3ae900b88d528303a5962cc363088ed" + integrity sha512-jWVHRDUYppOSvzclP9d3lVWGUO+y0X9W6jdfyYehDkJCY0MFgtwefLYMtQ/NJ4niPzm2d/zZn+Bte48iIn0nKw== dependencies: tslib "^1.9.0" -"@ngtools/webpack@6.2.3": - version "6.2.3" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-6.2.3.tgz#88313131079d14f6c7e07940e807bb445db6a0aa" - integrity sha512-nRc0qXUO2PfilTFaqfkCy6qdXyq+I3NZCaR4jzJbhlQnaHwd+AWMa5f1tyIjmDq9VT0Xnr/JnArWRhbOwcHt7Q== +"@ngtools/webpack@7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-7.0.6.tgz#cc4f4189765f6743417b4eee946fb69590f93ce1" + integrity sha512-lOHpVqr30QXPuaOxSRasHv6ybDj4a1jVwSOk+W4aGqVlLi0bsngt9HrvgR+FALEoG9P520bytz16wma81Y2Aeg== dependencies: - "@angular-devkit/core" "0.8.3" - rxjs "~6.2.0" - tree-kill "^1.0.0" - webpack-sources "^1.1.0" + "@angular-devkit/core" "7.0.6" + enhanced-resolve "4.1.0" + rxjs "6.3.3" + tree-kill "1.2.0" + webpack-sources "1.2.0" "@ngx-loading-bar/core@2.2.0", "@ngx-loading-bar/core@^2.2.0": version "2.2.0" @@ -359,26 +365,26 @@ tslib "^1.9.0" yargs "10.0.3" -"@schematics/angular@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.8.3.tgz#f4b661c5a196a06c050c0ae56809e6dbcfbf9f98" - integrity sha512-kAax08neZQhIsWfqnNdmpSekWbLku+po+1ndfxOMDIhQOAgS/3QTc2mxfSRz/JyQMw1UMSDiXHG8F2Q7gkFIZw== +"@schematics/angular@7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-7.0.6.tgz#1173c201d118cf38d1afdb382e9a916e4b540a17" + integrity sha512-jOHL+vSu1cqAo3kRNDmgkq/GR2EDkJx5/h0VXGlbtdEpq892LipKHtyPgXa269AABgPKb3TSNBwZls6g2L9FCw== dependencies: - "@angular-devkit/core" "0.8.3" - "@angular-devkit/schematics" "0.8.3" - typescript ">=2.6.2 <2.10" + "@angular-devkit/core" "7.0.6" + "@angular-devkit/schematics" "7.0.6" + typescript "3.1.6" -"@schematics/update@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.8.3.tgz#e8ca76066fa14a9db732e20cf41ec540c8ee7a13" - integrity sha512-Cf9cRimaPd8s5ew8uT1EUFfmoYm3YUDFPyDKZUuNZS3+OU/j1HMGpGBsuDOvjqA5zB1V3B0OvyfNFOhJem35xg== +"@schematics/update@0.10.6": + version "0.10.6" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.10.6.tgz#616e6c321cd51468eacda7fc8a0306b37f8b4ca2" + integrity sha512-Yy/M4JosrVDb5tbpmi+v1uTHSmBYISOiuFVuxtpMN5DWdDNq/JTBEw2jy3quelGWHCU06rbGo578Ml3azGZ+9g== dependencies: - "@angular-devkit/core" "0.8.3" - "@angular-devkit/schematics" "0.8.3" - npm-registry-client "^8.5.1" - rxjs "~6.2.0" - semver "^5.3.0" - semver-intersect "^1.1.2" + "@angular-devkit/core" "7.0.6" + "@angular-devkit/schematics" "7.0.6" + npm-registry-client "8.6.0" + rxjs "6.3.3" + semver "5.5.1" + semver-intersect "1.4.0" "@types/bittorrent-protocol@*": version "2.2.2" @@ -770,6 +776,16 @@ ajv-keywords@^3.1.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= +ajv@6.5.3, ajv@^6.1.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^4.11.2: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -788,26 +804,6 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.1.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" - integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" - integrity sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y= - dependencies: - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - uri-js "^3.0.2" - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -1082,16 +1078,16 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^8.4.1: - version "8.6.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" - integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig== +autoprefixer@9.1.5: + version "9.1.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.1.5.tgz#8675fd8d1c0d43069f3b19a2c316f3524e4f6671" + integrity sha512-kk4Zb6RUc58ld7gdosERHMF3DzIYJc2fp5sX46qEsGXQQy5bXsu8qyLjoxuY1NuQ/cJuCYnx99BfjwnRggrYIw== dependencies: - browserslist "^3.2.8" - caniuse-lite "^1.0.30000864" + browserslist "^4.1.0" + caniuse-lite "^1.0.30000884" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.23" + postcss "^7.0.2" postcss-value-parser "^3.2.3" awesome-typescript-loader@5.2.1: @@ -1660,13 +1656,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.8: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== +browserslist@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz#4477b737db6a1b07077275b24791e680d4300425" + integrity sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA== dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" + caniuse-lite "^1.0.30000899" + electron-to-chromium "^1.3.82" + node-releases "^1.0.1" browserstack@^1.5.1: version "1.5.1" @@ -1873,10 +1870,15 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864: - version "1.0.30000885" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz#e889e9f8e7e50e769f2a49634c932b8aee622984" - integrity sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ== +caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000899: + version "1.0.30000907" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000907.tgz#0b9899bde53fb1c30e214fb12402361e02ff5c42" + integrity sha512-No5sQ/OB2Nmka8MNOOM6nJx+Hxt6MQ6h7t7kgJFu9oTuwjykyKRSBP/+i/QAyFHxeHB+ddE0Da1CG5ihx9oehQ== + +canonical-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" + integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== capture-exit@^1.2.0: version "1.2.0" @@ -1920,23 +1922,7 @@ check-types@^7.3.0: resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== -chokidar@^1.4.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: +chokidar@2.0.4, chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== @@ -1956,6 +1942,22 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: optionalDependencies: fsevents "^1.2.2" +chokidar@^1.4.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + chownr@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" @@ -1989,7 +1991,7 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-dependency-plugin@^5.0.2: +circular-dependency-plugin@5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" integrity sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA== @@ -2009,7 +2011,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@4.2.x, clean-css@^4.0.12, clean-css@^4.1.11: +clean-css@4.2.1, clean-css@4.2.x, clean-css@^4.0.12: version "4.2.1" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== @@ -2307,10 +2309,10 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" - integrity sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ== +copy-webpack-plugin@4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.4.tgz#f2b2782b3cd5225535c3dc166a80067e7d940f27" + integrity sha512-0lstlEyj74OAtYMrDxlNZsU7cwFijAI3Ofz2fD6Mpo9r4xCv4yegfa3uHIKvZY1NSuOtE9nvG6TAhJ+uz9gDaQ== dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -2522,11 +2524,6 @@ cssstyle@^1.0.0: dependencies: cssom "0.3.x" -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= - currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2752,6 +2749,11 @@ depd@~1.1.1, depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +dependency-graph@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.7.2.tgz#91db9de6eb72699209d88aea4c1fd5221cac1c49" + integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ== + des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -2969,15 +2971,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.5.7, ejs@^2.6.1: +ejs@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== -electron-to-chromium@^1.3.47: - version "1.3.70" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.70.tgz#ded377256d92d81b4257d36c65aa890274afcfd2" - integrity sha512-WYMjqCnPVS5JA+XvwEnpwucJpVi2+q9cdCFpbhxgWGsCtforFBEkuP9+nCyy/wnU/0SyLcLRIeZct9ayMGcXoQ== +electron-to-chromium@^1.3.82: + version "1.3.84" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz#2e55df59e818f150a9f61b53471ebf4f0feecc65" + integrity sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw== elliptic@^6.0.0: version "6.4.1" @@ -3049,7 +3051,7 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: +enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== @@ -3477,7 +3479,7 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.0.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= @@ -3525,15 +3527,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-loader@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" - integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg== - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.4.5" - -file-loader@^2.0.0: +file-loader@2.0.0, file-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== @@ -3929,26 +3923,26 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= +glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= dependencies: - fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "2 || 3" once "^1.3.0" path-is-absolute "^1.0.0" @@ -4245,7 +4239,7 @@ html-minifier@^3.2.3, html-minifier@^3.5.8: relateurl "0.2.x" uglify-js "3.4.x" -html-webpack-plugin@^3.0.6, html-webpack-plugin@^3.2.0: +html-webpack-plugin@^3.2.0: version "3.2.0" resolved "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= @@ -4499,7 +4493,7 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.0.0: +inquirer@6.2.0, inquirer@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== @@ -4526,7 +4520,7 @@ internal-ip@^3.0.1: default-gateway "^2.6.0" ipaddr.js "^1.5.2" -interpret@^1.1.0: +interpret@^1.0.0, interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= @@ -4947,7 +4941,7 @@ istanbul-api@^2.0.5: make-dir "^1.3.0" once "^1.4.0" -istanbul-instrumenter-loader@^3.0.1: +istanbul-instrumenter-loader@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949" integrity sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w== @@ -5062,7 +5056,7 @@ istanbul-reports@^2.0.1: dependencies: handlebars "^4.0.11" -istanbul@^0.4.5: +istanbul@0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= @@ -5092,13 +5086,6 @@ jasmine-core@~2.8.0: resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= -jasmine-diff@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8" - integrity sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg= - dependencies: - diff "^3.2.0" - jasmine-spec-reporter@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" @@ -5684,7 +5671,7 @@ karma-jasmine@^1.1.2: resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3" integrity sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM= -karma-source-map-support@^1.2.0: +karma-source-map-support@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz#36dd4d8ca154b62ace95696236fae37caf0a7dde" integrity sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q== @@ -5782,7 +5769,7 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -less-loader@^4.1.0: +less-loader@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg== @@ -5791,7 +5778,7 @@ less-loader@^4.1.0: loader-utils "^1.1.0" pify "^3.0.0" -less@^3.7.1: +less@3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/less/-/less-3.8.1.tgz#f31758598ef5a1930dd4caefa9e4340641e71e1d" integrity sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q== @@ -5820,12 +5807,12 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -license-webpack-plugin@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.4.0.tgz#be504a849ba7d736f1a6da4b133864f30af885fa" - integrity sha512-iwuNFMWbXS76WiQXJBTs8/7Tby4NQnY8AIkBMuJG5El79UT8zWrJQMfpW+KRXt4Y2Bs5uk+Myg/MO7ROSF8jzA== +license-webpack-plugin@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.0.2.tgz#9d34b521cb7fca8527945310b05be6ef0248b687" + integrity sha512-GsomZw5VoT20ST8qH2tOjBgbyhn6Pgs9M94g0mbvfBIV1VXufm1iKY+4dbgfTObj1Mp6nSRE3Zf74deOZr0KwA== dependencies: - ejs "^2.5.7" + webpack-sources "^1.2.0" lie@~3.1.0: version "3.1.1" @@ -5887,24 +5874,24 @@ loader-runner@^2.3.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= +loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" json5 "^0.5.0" - object-assign "^4.0.1" -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" json5 "^0.5.0" + object-assign "^4.0.1" locate-path@^2.0.0: version "2.0.0" @@ -6058,6 +6045,13 @@ m3u8-parser@4.2.0: resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-4.2.0.tgz#c8e0785fd17f741f4408b49466889274a9e36447" integrity sha512-LVHw0U6IPJjwk9i9f7Xe26NqaUHTNlIt4SSWoEfYFROeVKHN6MIjOhbRheI3dg8Jbq5WCuMFQ0QU3EgZpmzFPg== +magic-string@^0.25.0: + version "0.25.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" + integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg== + dependencies: + sourcemap-codec "^1.4.1" + magnet-uri@^5.1.3: version "5.2.4" resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-5.2.4.tgz#7afe5b736af04445aff744c93a890a3710077688" @@ -6292,7 +6286,7 @@ mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.2.0, mime@^2.3.1: +mime@^2.2.0, mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== @@ -6314,7 +6308,7 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -mini-css-extract-plugin@~0.4.0: +mini-css-extract-plugin@0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" integrity sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg== @@ -6333,7 +6327,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6609,13 +6603,6 @@ ngx-qrcode2@^0.0.9: dependencies: qrcode "^0.8.2" -ngx-textarea-autosize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ngx-textarea-autosize/-/ngx-textarea-autosize-2.0.0.tgz#70d0bf770ebd62b5609c6552233d29c304f92ab8" - integrity sha512-g05ByshiYukVvO7CMgTxxYR1OyEW0veyGE0+qGM987Yo6RPW26SSWqFiu9PaTdCDHK+yq7lF1FKw1eidzhFErQ== - dependencies: - tslib "^1.7.1" - ngx-window-token@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ngx-window-token/-/ngx-window-token-1.0.0.tgz#12acb174fbbcffa5c60b3fea5a6ea78cc3304793" @@ -6723,7 +6710,14 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-sass@^4.9.3: +node-releases@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.3.tgz#3414ed84595096459c251699bfcb47d88324a9e4" + integrity sha512-ZaZWMsbuDcetpHmYeKWPO6e63pSXLb50M7lJgCbcM2nC/nQC3daNifmtp5a2kp7EWwYfhuvH6zLPWkrF8IiDdw== + dependencies: + semver "^5.3.0" + +node-sass@4.9.3, node-sass@^4.9.3: version "4.9.3" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== @@ -6813,7 +6807,7 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-registry-client@^8.5.1: +npm-registry-client@8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg== @@ -6986,7 +6980,14 @@ opener@^1.5.1: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== -opn@^5.1.0, opn@^5.3.0: +opn@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + dependencies: + is-wsl "^1.1.0" + +opn@^5.1.0: version "5.4.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== @@ -7216,7 +7217,7 @@ parse-torrent@^6.1.2: simple-sha1 "^2.0.0" uniq "^1.0.1" -parse5@4.0.0, parse5@^4.0.0: +parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== @@ -7394,7 +7395,7 @@ pngjs@^2.3.1: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-2.3.1.tgz#11d1e12b9cb64d63e30c143a330f4c1f567da85f" integrity sha1-EdHhK5y2TWPjDBQ6Mw9MH1Z9qF8= -portfinder@^1.0.13, portfinder@^1.0.9: +portfinder@1.0.17, portfinder@^1.0.9: version "1.0.17" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" integrity sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ== @@ -7408,12 +7409,12 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-import@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0" - integrity sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw== +postcss-import@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.0.tgz#149f96a4ef0b27525c419784be8517ebd17e92c5" + integrity sha512-3KqKRZcaZAvxbY8DVLdd81tG5uKzbUQuiWIvy0o0fzEC42bKacqPYFWbfCQyw6L4LWUaqPz/idvIdbhpgQ32eQ== dependencies: - postcss "^6.0.1" + postcss "^7.0.1" postcss-value-parser "^3.2.3" read-cache "^1.0.0" resolve "^1.1.7" @@ -7426,15 +7427,15 @@ postcss-load-config@^2.0.0: cosmiconfig "^4.0.0" import-cwd "^2.0.0" -postcss-loader@^2.1.5: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" - integrity sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg== +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== dependencies: loader-utils "^1.1.0" - postcss "^6.0.0" + postcss "^7.0.0" postcss-load-config "^2.0.0" - schema-utils "^0.4.0" + schema-utils "^1.0.0" postcss-modules-extract-imports@^1.2.0: version "1.2.0" @@ -7467,23 +7468,21 @@ postcss-modules-values@^1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" -postcss-url@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.2.tgz#5fea273807fb84b38c461c3c9a9e8abd235f7120" - integrity sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA== - dependencies: - mime "^1.4.1" - minimatch "^3.0.4" - mkdirp "^0.5.0" - postcss "^6.0.1" - xxhashjs "^0.2.1" - postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.22, postcss@^6.0.23: +postcss@7.0.5, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.5.tgz#70e6443e36a6d520b0fd4e7593fcca3635ee9f55" + integrity sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.5.0" + +postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -7818,7 +7817,7 @@ raw-body@2.3.3: iconv-lite "0.4.23" unpipe "1.0.0" -raw-loader@^0.5.1: +raw-loader@0.5.1, raw-loader@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= @@ -7964,6 +7963,13 @@ recast@~0.11.12: private "~0.1.5" source-map "~0.5.0" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + record-cache@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.0.tgz#f8a467a691a469584b26e88d36b18afdb3932037" @@ -8192,7 +8198,7 @@ resolve@1.1.7, resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.7, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== @@ -8291,6 +8297,13 @@ rust-result@^1.0.0: dependencies: individual "^2.0.0" +rxjs@6.3.3, rxjs@^6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== + dependencies: + tslib "^1.9.0" + rxjs@^6.1.0: version "6.3.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" @@ -8298,13 +8311,6 @@ rxjs@^6.1.0: dependencies: tslib "^1.9.0" -rxjs@~6.2.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" - integrity sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ== - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -8376,7 +8382,7 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@^7.1.0: +sass-loader@7.1.0, sass-loader@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== @@ -8429,7 +8435,7 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" -schema-utils@^0.4.0, schema-utils@^0.4.4, schema-utils@^0.4.5: +schema-utils@^0.4.4, schema-utils@^0.4.5: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== @@ -8483,14 +8489,14 @@ semver-dsl@^1.0.1: dependencies: semver "^5.3.0" -semver-intersect@^1.1.2: +semver-intersect@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== dependencies: semver "^5.0.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@5.x, semver@^5.0.0, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@5.5.1, semver@5.x, semver@^5.0.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== @@ -8616,6 +8622,15 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shelljs@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" + integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -8790,7 +8805,7 @@ source-list-map@~0.1.7: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY= -source-map-loader@^0.2.3: +source-map-loader@0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" integrity sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ== @@ -8809,14 +8824,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15, source-map-support@~0.4.0: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.6: +source-map-support@0.5.9, source-map-support@^0.5.3, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== @@ -8824,6 +8832,13 @@ source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@^0.5.5, buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.4.15, source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -8836,6 +8851,16 @@ source-map@0.1.x: dependencies: amdefine ">=0.0.4" +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + +source-map@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + source-map@^0.4.2, source-map@~0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -8860,6 +8885,11 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" +sourcemap-codec@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.3.tgz#0ba615b73ec35112f63c2f2d9e7c3f87282b0e33" + integrity sha512-vFrY/x/NdsD7Yc8mpTJXuao9S8lq08Z/kOITHz6b7YbfI9xL8Spe5EvSQUHOI7SbpY8bRPr0U3kKSsPuqEGSfA== + spdx-correct@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" @@ -8911,6 +8941,13 @@ spdy@^3.4.1: select-hose "^2.0.0" spdy-transport "^2.0.18" +speed-measure-webpack-plugin@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.2.3.tgz#de170b5cefbfa1c039d95e639edd3ad50cfc7c48" + integrity sha512-p+taQ69VkRUXYMoZOx2nxV/Tz8tt79ahctoZJyJDHWP7fEYvwFNf5Pd73k5kZ6auu0pTsPNLEUwWpM8mCk85Zw== + dependencies: + chalk "^2.0.1" + speedometer@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934" @@ -8991,10 +9028,10 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -stats-webpack-plugin@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b" - integrity sha1-LFlJtTHgf4eojm6k3PrFOqjHWis= +stats-webpack-plugin@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz#ccffe9b745de8bbb155571e063f8263fc0e2bc06" + integrity sha512-NT0YGhwuQ0EOX+uPhhUcI6/+1Sq/pMzNuSCBVT4GbFl/ac6I/JZefBcjlECNfAb1t3GOx5dEj1Z7x0cAxeeVLQ== dependencies: lodash "^4.17.4" @@ -9176,15 +9213,15 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" - integrity sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg== +style-loader@0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" + integrity sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ== dependencies: loader-utils "^1.1.0" schema-utils "^0.4.5" -stylus-loader@^3.0.2: +stylus-loader@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA== @@ -9193,7 +9230,7 @@ stylus-loader@^3.0.2: lodash.clonedeep "^4.5.0" when "~3.6.x" -stylus@^0.54.5: +stylus@0.54.5: version "0.54.5" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= @@ -9217,14 +9254,14 @@ supports-color@^3.1.0, supports-color@^3.1.2: dependencies: has-flag "^1.0.0" -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -symbol-observable@^1.2.0: +symbol-observable@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -9261,7 +9298,7 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -terser-webpack-plugin@^1.1.0: +terser-webpack-plugin@1.1.0, terser-webpack-plugin@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== @@ -9436,7 +9473,7 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -tree-kill@^1.0.0, tree-kill@^1.2.0: +tree-kill@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== @@ -9492,17 +9529,6 @@ ts-jest@~23.1.3: json5 "^0.5.0" lodash "^4.17.10" -tsickle@^0.32.1: - version "0.32.1" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.32.1.tgz#f16e94ba80b32fc9ebe320dc94fbc2ca7f3521a5" - integrity sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw== - dependencies: - jasmine-diff "^0.1.3" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.6.0" - source-map-support "^0.5.0" - tslib@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" @@ -9610,10 +9636,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@2.9, "typescript@>=2.6.2 <2.10", typescript@~2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== +typescript@3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" + integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.5" @@ -9636,7 +9662,7 @@ uglify-js@3.4.x, uglify-js@^3.0.6, uglify-js@^3.1.4: commander "~2.17.1" source-map "~0.6.1" -uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5: +uglifyjs-webpack-plugin@^1.2.4: version "1.3.0" resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== @@ -9724,13 +9750,6 @@ upper-case@^1.1.1: resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= -uri-js@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" - integrity sha1-+QuFhQf4HepNz7s8TD2/orVX+qo= - dependencies: - punycode "^2.1.0" - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -9748,15 +9767,6 @@ url-join@^4.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= -url-loader@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" - integrity sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - url-parse@^1.1.8, url-parse@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" @@ -10096,7 +10106,7 @@ webpack-dev-middleware@3.2.0: url-join "^4.0.0" webpack-log "^2.0.0" -webpack-dev-middleware@^3.1.3: +webpack-dev-middleware@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.3.0.tgz#8104daf4d4f65defe06ee2eaaeea612a7c541462" integrity sha512-5C5gXtOo1I6+0AEg4UPglYEtu3Rai6l5IiO6aUu65scHXz29dc3oIWMiRwvcNLXgL0HwRkRxa9N02ZjFt4hY8w== @@ -10108,7 +10118,7 @@ webpack-dev-middleware@^3.1.3: url-join "^4.0.0" webpack-log "^2.0.0" -webpack-dev-server@^3.1.4: +webpack-dev-server@3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz#eb7a95945d1108170f902604fb3b939533d9daeb" integrity sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A== @@ -10160,13 +10170,21 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.1.2: +webpack-merge@4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ== dependencies: lodash "^4.17.5" +webpack-sources@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.2.0.tgz#18181e0d013fce096faf6f8e6d41eeffffdceac2" + integrity sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + webpack-sources@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" @@ -10183,14 +10201,14 @@ webpack-sources@^1.1.0, webpack-sources@^1.2.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-subresource-integrity@^1.1.0-rc.4: +webpack-subresource-integrity@1.1.0-rc.6: version "1.1.0-rc.6" resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz#37f6f1264e1eb378e41465a98da80fad76ab8886" integrity sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w== dependencies: webpack-core "^0.6.8" -webpack@^4.15.1, webpack@^4.17.1: +webpack@4.19.1, webpack@^4.17.1: version "4.19.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== @@ -10447,13 +10465,6 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -xxhashjs@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" - integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== - dependencies: - cuint "^0.2.2" - y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -10474,7 +10485,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@10.x, yargs-parser@^10.0.0, yargs-parser@^10.1.0: +yargs-parser@10.x, yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== @@ -10545,6 +10556,25 @@ yargs@12.0.2, yargs@^12.0.1: y18n "^3.2.1 || ^4.0.0" yargs-parser "^10.1.0" +yargs@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + yargs@^11.0.0: version "11.1.0" resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" diff --git a/scripts/travis.sh b/scripts/travis.sh index 8f0c4a40d..49b7233e1 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -30,7 +30,7 @@ elif [ "$1" = "api-2" ]; then elif [ "$1" = "api-3" ]; then npm run build:server mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-3.ts -elif [ "$1" = "api-3" ]; then +elif [ "$1" = "api-4" ]; then npm run build:server mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-4.ts elif [ "$1" = "lint" ]; then -- cgit v1.2.3 From 742ddee1f131e6a2d701f2eeeb2851e8e1020cb2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 15 Nov 2018 10:07:44 +0100 Subject: Fix server redundancy tests --- server/lib/schedulers/videos-redundancy-scheduler.ts | 5 +++-- server/models/redundancy/video-redundancy.ts | 5 +++++ server/tests/api/server/redundancy.ts | 18 +++++++++--------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/server/lib/schedulers/videos-redundancy-scheduler.ts b/server/lib/schedulers/videos-redundancy-scheduler.ts index c49a8c89a..8b7f33539 100644 --- a/server/lib/schedulers/videos-redundancy-scheduler.ts +++ b/server/lib/schedulers/videos-redundancy-scheduler.ts @@ -185,11 +185,12 @@ export class VideosRedundancyScheduler extends AbstractScheduler { } private async isTooHeavy (redundancy: VideosRedundancy, filesToDuplicate: VideoFileModel[]) { - const maxSize = redundancy.size - this.getTotalFileSizes(filesToDuplicate) + const maxSize = redundancy.size const totalDuplicated = await VideoRedundancyModel.getTotalDuplicated(redundancy.strategy) + const totalWillDuplicate = totalDuplicated + this.getTotalFileSizes(filesToDuplicate) - return totalDuplicated > maxSize + return totalWillDuplicate > maxSize } private buildNewExpiration (expiresAfterMs: number) { diff --git a/server/models/redundancy/video-redundancy.ts b/server/models/redundancy/video-redundancy.ts index cbfc7f7fa..35e0cd3b1 100644 --- a/server/models/redundancy/video-redundancy.ts +++ b/server/models/redundancy/video-redundancy.ts @@ -293,6 +293,11 @@ export class VideoRedundancyModel extends Model { } return VideoFileModel.sum('size', options as any) // FIXME: typings + .then(v => { + if (!v || isNaN(v)) return 0 + + return v + }) } static async listLocalExpired () { diff --git a/server/tests/api/server/redundancy.ts b/server/tests/api/server/redundancy.ts index f50d6e3cf..77a2d61a4 100644 --- a/server/tests/api/server/redundancy.ts +++ b/server/tests/api/server/redundancy.ts @@ -54,7 +54,7 @@ async function runServers (strategy: VideoRedundancyStrategy, additionalParams: immutableAssign({ min_lifetime: '1 hour', strategy: strategy, - size: '100KB' + size: '200KB' }, additionalParams) ] } @@ -111,8 +111,8 @@ async function checkStatsWith2Webseed (strategy: VideoRedundancyStrategy) { const stat = data.videosRedundancy[0] expect(stat.strategy).to.equal(strategy) - expect(stat.totalSize).to.equal(102400) - expect(stat.totalUsed).to.be.at.least(1).and.below(102401) + expect(stat.totalSize).to.equal(204800) + expect(stat.totalUsed).to.be.at.least(1).and.below(204800) expect(stat.totalVideoFiles).to.equal(4) expect(stat.totalVideos).to.equal(1) } @@ -125,7 +125,7 @@ async function checkStatsWith1Webseed (strategy: VideoRedundancyStrategy) { const stat = data.videosRedundancy[0] expect(stat.strategy).to.equal(strategy) - expect(stat.totalSize).to.equal(102400) + expect(stat.totalSize).to.equal(204800) expect(stat.totalUsed).to.equal(0) expect(stat.totalVideoFiles).to.equal(0) expect(stat.totalVideos).to.equal(0) @@ -223,7 +223,7 @@ describe('Test videos redundancy', function () { return enableRedundancyOnServer1() }) - it('Should have 2 webseed on the first video', async function () { + it('Should have 2 webseeds on the first video', async function () { this.timeout(40000) await waitJobs(servers) @@ -270,7 +270,7 @@ describe('Test videos redundancy', function () { return enableRedundancyOnServer1() }) - it('Should have 2 webseed on the first video', async function () { + it('Should have 2 webseeds on the first video', async function () { this.timeout(40000) await waitJobs(servers) @@ -338,7 +338,7 @@ describe('Test videos redundancy', function () { await waitJobs(servers) }) - it('Should have 2 webseed on the first video', async function () { + it('Should have 2 webseeds on the first video', async function () { this.timeout(40000) await waitJobs(servers) @@ -399,7 +399,7 @@ describe('Test videos redundancy', function () { await enableRedundancyOnServer1() }) - it('Should still have 2 webseeds after 10 seconds', async function () { + it('Should still have 2 webseedss after 10 seconds', async function () { this.timeout(40000) await wait(10000) @@ -451,7 +451,7 @@ describe('Test videos redundancy', function () { video2Server2UUID = res.body.video.uuid }) - it('Should cache video 2 webseed on the first video', async function () { + it('Should cache video 2 webseeds on the first video', async function () { this.timeout(120000) await waitJobs(servers) -- cgit v1.2.3 From 79f068dfd54b0131ecf499ec1e458fedbf858229 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 15 Nov 2018 10:25:33 +0100 Subject: Upgrade client dependencies --- client/package.json | 4 +- client/yarn.lock | 1303 +++++++++++++++++++++++++++++---------------------- 2 files changed, 733 insertions(+), 574 deletions(-) diff --git a/client/package.json b/client/package.json index a28832c50..a14978998 100644 --- a/client/package.json +++ b/client/package.json @@ -141,9 +141,9 @@ "rxjs": "^6.3.3", "sanitize-html": "^1.18.4", "sass-loader": "^7.1.0", - "sass-resources-loader": "^1.2.1", + "sass-resources-loader": "^2.0.0", "stream-browserify": "^2.0.1", - "stream-http": "^2.8.3", + "stream-http": "^3.0.0", "terser-webpack-plugin": "^1.1.0", "ts-jest": "^23.1.4", "tslint": "^5.7.0", diff --git a/client/yarn.lock b/client/yarn.lock index 24341065b..928dec01e 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -222,12 +222,12 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/generator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" - integrity sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q== +"@babel/generator@^7.0.0", "@babel/generator@^7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz#001303cf87a5b9d093494a4bf251d7b5d03d3999" + integrity sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.1.6" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" @@ -265,48 +265,55 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.0.tgz#a7cd42cb3c12aec52e24375189a47b39759b783e" - integrity sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854" + integrity sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ== + +"@babel/runtime@^7.0.0": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz#4170907641cf1f61508f563ece3725150cc6fe39" + integrity sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA== + dependencies: + regenerator-runtime "^0.12.0" "@babel/template@^7.0.0", "@babel/template@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.0.tgz#58cc9572e1bfe24fe1537fdf99d839d53e517e22" - integrity sha512-yZ948B/pJrwWGY6VxG6XRFsVTee3IQ7bihq9zFpM00Vydu6z5Xwg0C3J644kxI9WOTzd+62xcIsQ+AT1MGhqhA== + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" "@babel/traverse@^7.0.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.0.tgz#503ec6669387efd182c3888c4eec07bcc45d91b2" - integrity sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw== + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c" + integrity sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.0.0" + "@babel/generator" "^7.1.6" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - debug "^3.1.0" + "@babel/parser" "^7.1.6" + "@babel/types" "^7.1.6" + debug "^4.1.0" globals "^11.1.0" lodash "^4.17.10" -"@babel/types@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" - integrity sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q== +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce" + integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w== dependencies: esutils "^2.0.2" lodash "^4.17.10" to-fast-properties "^2.0.0" "@neos21/bootstrap3-glyphicons@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@neos21/bootstrap3-glyphicons/-/bootstrap3-glyphicons-1.0.1.tgz#e5eeec43e0153d4b51effd9ecb58cdf7029924d7" - integrity sha1-5e7sQ+AVPUtR7/2ey1jN9wKZJNc= + version "1.0.2" + resolved "https://registry.yarnpkg.com/@neos21/bootstrap3-glyphicons/-/bootstrap3-glyphicons-1.0.2.tgz#c86509a866258f645a9ed9428c10057e4c664245" + integrity sha512-ESM4L1GUdsDcuX+mrO6yR98ZSmlyx2RZ9X4GtcACjt6wGdGqNspwOR6o7sEinRx7oCIqcFbDVq7ls84fkSl3pw== "@ng-bootstrap/ng-bootstrap@^4.0.0": version "4.0.0" @@ -399,26 +406,26 @@ integrity sha512-qjkHL3wF0JMHMqgm/kmL8Pf8rIiqvueEiZ0g6NVTcBX1WN46GWDr+V5z+gsHUeL0n8TfAmXnYmF7ajsxmBp4PQ== "@types/jasmine@*", "@types/jasmine@^2.8.7": - version "2.8.8" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9" - integrity sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg== + version "2.8.11" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.11.tgz#0b5eba9e02616736b1a189112eacc163c3773b7b" + integrity sha512-ITPYT5rkV9S0BcucyBwXIUzqzSODVhvAzhOGV0bwZMuqWJeU0Kfdd6IJeJjGI8Gob+lDyAtKaWUfhG6QXJIPRg== "@types/jasminewd2@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" - integrity sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.6.tgz#2f57a8d9875a6c9ef328a14bd070ba14a055ac39" + integrity sha512-2ZOKrxb8bKRmP/po5ObYnRDgFE4i+lQiEB27bAMmtMWLgJSqlIDqlLx6S0IRorpOmOPRQ6O80NujTmQAtBkeNw== dependencies: "@types/jasmine" "*" "@types/jest@^23.3.1": - version "23.3.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.2.tgz#07b90f6adf75d42c34230c026a2529e56c249dbb" - integrity sha512-D1xlXHZpDonVX+VJ28XtcD5xlu8ex6Fc4cQNnrm2wJvlQnbec9RedhCrhQr6kRAE9XWHSec+JPuTmqJ9jC0qsA== + version "23.3.9" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.9.tgz#c16b55186ee73ae65e001fbee69d392c51337ad1" + integrity sha512-wNMwXSUcwyYajtbayfPp55tSayuDVU6PfY5gzvRSj80UvxdXEJOVPnUVajaOp7NgXLm+1e2ZDLULmpsU9vDvQw== "@types/jschannel@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/jschannel/-/jschannel-1.0.0.tgz#2e25447f661de85e221647076e9d257d9fb76d0c" - integrity sha512-cxdvK/GJExxT1pXR5wjqHNeFgMQQVTM9waKraGfUTYiBYjXGYXIS2Otrtlko4ps9o8jfWPhERY10++vmjAyDYg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/jschannel/-/jschannel-1.0.1.tgz#79d582ccf42554c8457230526a3054d018d559f0" + integrity sha512-S34NuOoOOKXbft3f9GDeLKp777ABCGArZaqUWOuu1Xn+1S75Osmk8kCeqmw5x2TuASyjE082DwDAuoaXNIRCTw== "@types/lodash-es@^4.17.0": version "4.17.1" @@ -428,9 +435,9 @@ "@types/lodash" "*" "@types/lodash@*": - version "4.14.116" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.116.tgz#5ccf215653e3e8c786a58390751033a9adca0eb9" - integrity sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg== + version "4.14.118" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27" + integrity sha512-iiJbKLZbhSa6FYRip/9ZDX6HXhayXLDGY2Fqws9cOkEQ6XeKfaxB0sC541mowZJueYyMnVUmmG+al5/4fCDrgw== "@types/magnet-uri@*": version "5.1.1" @@ -450,14 +457,14 @@ integrity sha512-Jn2cF8X6RAMiSmJaATGjf2r3GzIfpZQpvnQhKprQ5sAbMaNXc7hc9sA2XHdMl3bEMEQhTV79JVW7n4Pgg7sjtg== "@types/node@*", "@types/node@^10.9.2": - version "10.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.10.1.tgz#d5c96ca246a418404914d180b7fdd625ad18eca6" - integrity sha512-nzsx28VwfaIykfzMAG9TB3jxF5Nn+1/WMKnmVZc8TsB+LMIVvwUscVn7PAq+LFaY5ng5u4jp5mRROSswo76PPA== + version "10.12.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.8.tgz#d0a3ab5a6e61458c492304e2776ac136b81db927" + integrity sha512-INamyRZG4rW3lDCUmwVd5Xho/bXvQm/v1yP8V0UN1RuInU7RoWoaO570b+yLX4Ia/0szsx1wa8VzcsVlsvbWLA== "@types/node@^6.0.46": - version "6.0.117" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.117.tgz#ccfc2506001404708528d657aad9c1b931111646" - integrity sha512-sihk0SnN8PpiS5ihu5xJQ5ddnURNq4P+XPmW+nORlKkHy21CoZO/IVHK/Wq/l3G8fFW06Fkltgnqx229uPlnRg== + version "6.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.2.tgz#40b3dbb1221c7d66802cbcc32fe3b85e54569c77" + integrity sha512-JWB3xaVfsfnFY8Ofc9rTB/op0fqqTSqy4vBcVk1LuRJvta7KTX+D//fCkiTMeLGhdr2EbFZzQjC97gvmPilk9Q== "@types/parse-torrent-file@*": version "4.0.1" @@ -477,7 +484,7 @@ "@types/q@^0.0.32": version "0.0.32" - resolved "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= "@types/sanitize-html@1.18.0": @@ -486,9 +493,9 @@ integrity sha512-cGOcHB/CFqqu4l6b7yVGej6eQ/QsUSsgWHcJPCvfPgXx8Q7t602EdnZ6fZcM019dbdE9/7ecRipBwk8cCMgukw== "@types/selenium-webdriver@^3.0.0": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz#e98cc6f05b4b436277671c784ee2f9d05a634f9b" - integrity sha512-ikB0JHv6vCR1KYUQAzTO4gi/lXLElT4Tx+6De2pc/OZwizE9LRNiTa+U8TBFKBD/nntPnr/MPSHSnOTybjhqNA== + version "3.0.13" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.13.tgz#deb799c641773c5e367abafc92d1e733d62cddd7" + integrity sha512-rI0LGoMiZGUM+tjDakQpwZOvcmQoubiJ7hxqrYU12VRxBuGGvOThxrBOU/QmJKlKg1WG6FMzuvcEyLffvVSsmw== "@types/simple-peer@*": version "6.1.5" @@ -512,19 +519,28 @@ "@types/parse-torrent" "*" "@types/simple-peer" "*" -"@videojs/http-streaming@1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-1.2.4.tgz#6245524b76203db5e6750153d4896d007cc7f7cd" - integrity sha512-rwNe4g3L7Dyoa3nTUQ6RmRMV5P/Mg9yG4mSGh83xMKU1RPTAjvQ+iqKTd5zzYn4TqoUAI7L8b5RHsXgBwTnz7A== +"@videojs/http-streaming@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-1.4.1.tgz#0b9c5d1a271d72546ec77e9c3f3b75995102032f" + integrity sha512-Bb3aP/b81heFt98JzDm8zN+mkHel8Ehb/ZKAOECeL19zq/Gp12653cE4JmG7cUI6VPSQB60DYMp6us3/HqKs7Q== dependencies: aes-decrypter "3.0.0" global "^4.3.0" m3u8-parser "4.2.0" - mpd-parser "0.6.1" + mpd-parser "0.7.0" mux.js "4.5.1" url-toolkit "^2.1.3" video.js "^6.8.0 || ^7.0.0" +"@webassemblyjs/ast@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" + integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== + dependencies: + "@webassemblyjs/helper-module-context" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/wast-parser" "1.7.11" + "@webassemblyjs/ast@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" @@ -535,21 +551,43 @@ "@webassemblyjs/wast-parser" "1.7.6" mamacro "^0.0.3" +"@webassemblyjs/floating-point-hex-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" + integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== + "@webassemblyjs/floating-point-hex-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== +"@webassemblyjs/helper-api-error@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" + integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== + "@webassemblyjs/helper-api-error@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== +"@webassemblyjs/helper-buffer@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" + integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== + "@webassemblyjs/helper-buffer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== +"@webassemblyjs/helper-code-frame@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" + integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== + dependencies: + "@webassemblyjs/wast-printer" "1.7.11" + "@webassemblyjs/helper-code-frame@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" @@ -557,11 +595,21 @@ dependencies: "@webassemblyjs/wast-printer" "1.7.6" +"@webassemblyjs/helper-fsm@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" + integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== + "@webassemblyjs/helper-fsm@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== +"@webassemblyjs/helper-module-context@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" + integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== + "@webassemblyjs/helper-module-context@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" @@ -569,11 +617,26 @@ dependencies: mamacro "^0.0.3" +"@webassemblyjs/helper-wasm-bytecode@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" + integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== + "@webassemblyjs/helper-wasm-bytecode@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== +"@webassemblyjs/helper-wasm-section@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" + integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/helper-wasm-section@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" @@ -584,6 +647,13 @@ "@webassemblyjs/helper-wasm-bytecode" "1.7.6" "@webassemblyjs/wasm-gen" "1.7.6" +"@webassemblyjs/ieee754@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" + integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/ieee754@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" @@ -591,6 +661,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/leb128@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" + integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== + dependencies: + "@xtuc/long" "4.2.1" + "@webassemblyjs/leb128@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" @@ -598,11 +675,30 @@ dependencies: "@xtuc/long" "4.2.1" +"@webassemblyjs/utf8@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" + integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== + "@webassemblyjs/utf8@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== +"@webassemblyjs/wasm-edit@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" + integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/helper-wasm-section" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/wasm-opt" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + "@webassemblyjs/wast-printer" "1.7.11" + "@webassemblyjs/wasm-edit@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" @@ -617,6 +713,17 @@ "@webassemblyjs/wasm-parser" "1.7.6" "@webassemblyjs/wast-printer" "1.7.6" +"@webassemblyjs/wasm-gen@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" + integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/ieee754" "1.7.11" + "@webassemblyjs/leb128" "1.7.11" + "@webassemblyjs/utf8" "1.7.11" + "@webassemblyjs/wasm-gen@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" @@ -628,6 +735,16 @@ "@webassemblyjs/leb128" "1.7.6" "@webassemblyjs/utf8" "1.7.6" +"@webassemblyjs/wasm-opt@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" + integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + "@webassemblyjs/wasm-opt@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" @@ -638,6 +755,18 @@ "@webassemblyjs/wasm-gen" "1.7.6" "@webassemblyjs/wasm-parser" "1.7.6" +"@webassemblyjs/wasm-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" + integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-api-error" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/ieee754" "1.7.11" + "@webassemblyjs/leb128" "1.7.11" + "@webassemblyjs/utf8" "1.7.11" + "@webassemblyjs/wasm-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" @@ -650,6 +779,18 @@ "@webassemblyjs/leb128" "1.7.6" "@webassemblyjs/utf8" "1.7.6" +"@webassemblyjs/wast-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" + integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/floating-point-hex-parser" "1.7.11" + "@webassemblyjs/helper-api-error" "1.7.11" + "@webassemblyjs/helper-code-frame" "1.7.11" + "@webassemblyjs/helper-fsm" "1.7.11" + "@xtuc/long" "4.2.1" + "@webassemblyjs/wast-parser@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" @@ -663,6 +804,15 @@ "@xtuc/long" "4.2.1" mamacro "^0.0.3" +"@webassemblyjs/wast-printer@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" + integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/wast-parser" "1.7.11" + "@xtuc/long" "4.2.1" + "@webassemblyjs/wast-printer@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" @@ -721,9 +871,9 @@ acorn-globals@^4.1.0: acorn-walk "^6.0.1" acorn-walk@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.0.1.tgz#c7827bdbb8e21aa97b609adfa225400d9ae348ba" - integrity sha512-PqVQ8c6a3kyqdsUZlC7nljp3FFuxipBRHKu+7C1h8QygBFlzTaDX5HD383jej3Peed+1aDG8HwkfB1Z1HMNPkw== + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" + integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3: version "5.7.3" @@ -731,9 +881,9 @@ acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3: integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== acorn@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.1.tgz#66e6147e1027704479dc6d9b20d884c572db3cc1" - integrity sha512-SiwgrRuRD2D1R6qjwwoopKcCTkmmIWjy1M15Wv+Nk/7VUsBad4P8GOPft2t6coDZG0TuR5dq9o1v0g8wo7F6+A== + version "6.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" + integrity sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg== addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.4.2: version "1.5.1" @@ -741,9 +891,9 @@ addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.4.2: integrity sha512-bA+dyydTNuQtrEDJ0g9eR7XabNhvrM5yZY0hvTbNK3yvoeC73ZqMES6E1cEqH9WPxs4uMtMsOjfwS4FmluhsAA== adm-zip@^0.4.9: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - integrity sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA== + version "0.4.13" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" + integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== aes-decrypter@3.0.0: version "3.0.0" @@ -776,7 +926,7 @@ ajv-keywords@^3.1.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= -ajv@6.5.3, ajv@^6.1.0: +ajv@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== @@ -794,7 +944,7 @@ ajv@^4.11.2: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: +ajv@^5.0.0, ajv@^5.1.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -804,15 +954,25 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" +ajv@^6.1.0, ajv@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" + integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= angular2-hotkeys@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/angular2-hotkeys/-/angular2-hotkeys-2.1.2.tgz#6693ecc2fbbf6f3874fb6715804e88ba6a584c0a" - integrity sha512-Xh4PsqduUWG9AuhLW75n75N2tpwvlqJ43kNrxBFNM+4PjbN2cR5AUsv0URW5ooTEVRyujV4P/d/BcWG+KLSAaA== + version "2.1.4" + resolved "https://registry.yarnpkg.com/angular2-hotkeys/-/angular2-hotkeys-2.1.4.tgz#7411601aea425fada77a6f1274018cb6b8961afe" + integrity sha512-/KzgsrFjodoeZosXqsx1IvUo3rWBalSJ3QyVz2EALj1C0Woz84iNtXPZnlzuPNHrCmHcfOu28BNvIGBa+9Ving== dependencies: "@types/mousetrap" "^1.6.0" mousetrap "^1.6.0" @@ -823,9 +983,9 @@ angular2-notifications@^1.0.2: integrity sha512-DjazfwXtLY8BNXKIEw1oEEMy7G6fmldpzP1FYwyVGUwEtZPLQyYGu9MQYCjtVlZMljxpa3qvnv8l9ZUfXAarNA== ansi-colors@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" - integrity sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.1.tgz#9638047e4213f3428a11944a7d4b31cba0a3ff95" + integrity sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ== ansi-escapes@^3.0.0: version "3.1.0" @@ -1187,7 +1347,7 @@ babel-messages@^6.23.0: babel-plugin-istanbul@^4.1.6: version "4.1.6" - resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== dependencies: babel-plugin-syntax-object-rest-spread "^6.13.0" @@ -1202,7 +1362,7 @@ babel-plugin-jest-hoist@^23.2.0: babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" - resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= babel-preset-jest@^23.2.0: @@ -1226,7 +1386,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: +babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -1443,10 +1603,10 @@ blob-to-buffer@^1.2.6: resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.8.tgz#78eeeb332f1280ed0ca6fb2b60693a8c6d36903a" integrity sha512-re0AIxakF504MgeMtIyJkVcZ8T5aUxtp/QmTMlmjyb3P44E1BEv5x3LATBGApWAJATyXHtkXRD+gWTmeyYLiQA== -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE= +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== block-stream2@^1.0.0: version "1.1.0" @@ -1472,32 +1632,16 @@ blocking-proxy@^1.0.0: minimist "^1.2.0" bluebird@^3.3.0, bluebird@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" - integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" - integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" - on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" - -body-parser@^1.16.1: +body-parser@1.18.3, body-parser@^1.16.1: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= @@ -1581,9 +1725,9 @@ brorand@^1.0.1: integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-process-hrtime@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" - integrity sha1-Ql1opY00R/AqBKqJQYf86K+Le44= + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== browser-resolve@^1.11.3: version "1.11.3" @@ -1594,7 +1738,7 @@ browser-resolve@^1.11.3: browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" - resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -1630,7 +1774,7 @@ browserify-package-json@^1.0.0: browserify-rsa@^4.0.0: version "4.0.1" - resolved "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" @@ -1673,11 +1817,11 @@ browserstack@^1.5.1: https-proxy-agent "^2.2.1" bs-logger@0.x: - version "0.2.5" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.5.tgz#1d82f0cf88864e1341cd9262237f8d0748a49b22" - integrity sha512-uFLE0LFMxrH8Z5Hd9QgivvRbrl/NFkOTHzGhlqQxsnmx5JBLrp4bc249afLL+GccyY/8hkcGi2LpVaOzaEY0nQ== + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: - fast-json-stable-stringify "^2.0.0" + fast-json-stable-stringify "2.x" bser@^2.0.0: version "2.0.0" @@ -1726,7 +1870,7 @@ buffer-xor@^1.0.3: buffer@^4.3.0: version "4.9.1" - resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" @@ -1788,9 +1932,9 @@ cacache@^10.0.4: y18n "^4.0.0" cacache@^11.0.2: - version "11.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" - integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== + version "11.3.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" + integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1894,7 +2038,7 @@ caseless@~0.12.0: chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" - resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" @@ -1958,7 +2102,7 @@ chokidar@^1.4.2: optionalDependencies: fsevents "^1.0.0" -chownr@^1.0.1: +chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== @@ -1997,9 +2141,9 @@ circular-dependency-plugin@5.0.2: integrity sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA== circular-json@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.7.tgz#b8be478d72ea58c7eeda26bf1cf1fba43d188842" - integrity sha512-/pXoV1JA847qRKPrHbBK6YIBGFF8GOP4wzSgUOA7q0ew0vAv0iJswP+2/nZQ9uzA3Azi7eTrg9L2yzXc/7ZMIA== + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== class-utils@^0.3.5: version "0.3.6" @@ -2084,9 +2228,9 @@ code-point-at@^1.0.0: integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= codelyzer@^4.4.4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.4.4.tgz#29b7dbb51ba9ecc45c7300d61280a6564765d402" - integrity sha512-JgFMudx0n50IuE/ydAfnkksCwQkWSVWgYvhDPHZgDUbmsiYC22VuEXKu5l8Hhx9UJsLgjWDLjTAFGj2WaW5DUA== + version "4.5.0" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.5.0.tgz#a65ddeeeca2894653253a89bfa229118ff9f59b1" + integrity sha512-oO6vCkjqsVrEsmh58oNlnJkRXuA30hF8cdNAQV9DytEalDwyOFRvHMnlKFzmOStNerOmPGZU9GAHnBo4tGvtiQ== dependencies: app-root-path "^2.1.0" css-selector-tokenizer "^0.7.0" @@ -2132,14 +2276,7 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@1.0.6: - version "1.0.6" - resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= - dependencies: - delayed-stream "~1.0.0" - -combined-stream@~1.0.5, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== @@ -2152,9 +2289,9 @@ commander@2.17.x, commander@~2.17.1: integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commander@^2.12.1, commander@^2.18.0, commander@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== commander@~2.13.0: version "2.13.0" @@ -2272,7 +2409,7 @@ content-type@~1.0.4: convert-source-map@^0.3.3: version "0.3.5" - resolved "http://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: @@ -2358,7 +2495,7 @@ create-ecdh@^4.0.0: create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" - resolved "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -2369,7 +2506,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" - resolved "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -2444,15 +2581,15 @@ crypto-browserify@^3.11.0: randomfill "^1.0.3" css-loader@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" - integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" icss-utils "^2.1.0" loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" + lodash "^4.17.11" postcss "^6.0.23" postcss-modules-extract-imports "^1.2.0" postcss-modules-local-by-default "^1.2.0" @@ -2477,18 +2614,18 @@ css-select@^1.1.0: nth-check "~1.0.1" css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY= + version "0.7.1" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== dependencies: cssesc "^0.1.0" fastparse "^1.1.1" regexpu-core "^1.0.0" css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" + integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== css@^2.0.0: version "2.2.4" @@ -2556,12 +2693,12 @@ dashdash@^1.12.0: assert-plus "^1.0.0" data-urls@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" - integrity sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: abab "^2.0.0" - whatwg-mimetype "^2.1.0" + whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" date-format@^1.2.0: @@ -2574,10 +2711,10 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@*: - version "4.0.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b" - integrity sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw== +debug@*, debug@^4.0.1, debug@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== dependencies: ms "^2.1.1" @@ -2596,16 +2733,9 @@ debug@=3.1.0, debug@~3.1.0: ms "2.0.0" debug@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" - integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== - dependencies: - ms "^2.1.1" - -debug@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" @@ -2739,12 +2869,7 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= - -depd@~1.1.1, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -2806,7 +2931,7 @@ diff@^3.2.0: diffie-hellman@^5.0.0: version "5.0.3" - resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" @@ -2854,12 +2979,12 @@ doctrine@0.7.2: esutils "^1.1.6" isarray "0.0.1" -dom-converter@~0.1: - version "0.1.4" - resolved "http://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - integrity sha1-pF71cnuJDJv/5tfIduexnLDhfzs= +dom-converter@~0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: - utila "~0.3" + utila "~0.4" dom-serialize@^2.2.0: version "2.2.1" @@ -2889,7 +3014,12 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.0: +domelementtype@1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.2.1.tgz#578558ef23befac043a1abb0db07635509393479" + integrity sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA== + +domelementtype@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= @@ -2945,13 +3075,13 @@ domutils@^1.5.1: duplexer@^0.1.1: version "0.1.1" - resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.4.2, duplexify@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" - integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== + version "3.6.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -3029,20 +3159,20 @@ engine.io-client@~3.2.0: yeast "0.1.2" engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" - integrity sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw== + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" base64-arraybuffer "0.1.5" - blob "0.0.4" + blob "0.0.5" has-binary2 "~1.0.2" engine.io@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" - integrity sha512-mRbgmAtQ4GAlKwuPnnAvXXwdPhEx+jkc0OBCLrXuD/CRvwNK3AxRSnqK4FSqmAMRRHryVJP8TopOvmEaA64fKw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -3066,9 +3196,9 @@ ent@~2.2.0: integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= entities@^1.1.1, entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -3096,13 +3226,13 @@ es-abstract@^1.5.1: is-regex "^1.0.4" es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: - is-callable "^1.1.1" + is-callable "^1.1.4" is-date-object "^1.0.1" - is-symbol "^1.0.1" + is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.46" @@ -3129,7 +3259,7 @@ es6-promise@^4.0.3: es6-promise@~3.0.2: version "3.0.2" - resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= es6-promisify@^5.0.0: @@ -3364,13 +3494,13 @@ expect@^23.6.0: jest-regex-util "^23.3.0" express@^4.16.2, express@^4.16.3: - version "4.16.3" - resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" - integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== dependencies: accepts "~1.3.5" array-flatten "1.1.1" - body-parser "1.18.2" + body-parser "1.18.3" content-disposition "0.5.2" content-type "~1.0.4" cookie "0.3.1" @@ -3387,10 +3517,10 @@ express@^4.16.2, express@^4.16.3: on-finished "~2.3.0" parseurl "~1.3.2" path-to-regexp "0.1.7" - proxy-addr "~2.0.3" - qs "6.5.1" + proxy-addr "~2.0.4" + qs "6.5.2" range-parser "~1.2.0" - safe-buffer "5.1.1" + safe-buffer "5.1.2" send "0.16.2" serve-static "1.13.2" setprototypeof "1.1.0" @@ -3490,9 +3620,9 @@ fast-levenshtein@~2.0.4: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== faye-websocket@^0.10.0: version "0.10.0" @@ -3669,9 +3799,9 @@ focus-visible@^4.1.5: integrity sha512-yo/njtk/BB4Z2euzaZe3CZrg4u5s5uEi7ZwbHBJS2quHx51N0mmcx9nTIiImUGlgy+vf26d0CcQluahBBBL/Fw== follow-redirects@^1.0.0: - version "1.5.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" - integrity sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg== + version "1.5.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.9.tgz#c9ed9d748b814a39535716e531b9196a845d89c6" + integrity sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w== dependencies: debug "=3.1.0" @@ -3712,12 +3842,12 @@ forever-agent@~0.6.1: integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.1, form-data@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "1.0.6" + combined-stream "^1.0.6" mime-types "^2.1.12" forwarded@~0.1.2: @@ -3946,7 +4076,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules-path@^2.1.0: +global-modules-path@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag== @@ -3960,9 +4090,9 @@ global@4.3.2, global@^4.3.0, global@^4.3.1, global@^4.3.2, global@~4.3.0: process "~0.5.1" globals@^11.1.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" - integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== + version "11.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== globals@^9.18.0: version "9.18.0" @@ -4014,9 +4144,9 @@ globule@^1.0.0: minimatch "~3.0.2" graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== growly@^1.3.0: version "1.3.0" @@ -4061,11 +4191,11 @@ har-validator@~5.0.3: har-schema "^2.0.0" har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: - ajv "^5.3.0" + ajv "^6.5.5" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -4161,10 +4291,10 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hmac-drbg@^1.0.0: version "1.0.1" @@ -4227,21 +4357,21 @@ html-loader@^0.5.5: object-assign "^4.1.1" html-minifier@^3.2.3, html-minifier@^3.5.8: - version "3.5.20" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14" - integrity sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA== + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== dependencies: camel-case "3.0.x" clean-css "4.2.x" commander "2.17.x" - he "1.1.x" + he "1.2.x" param-case "2.1.x" relateurl "0.2.x" uglify-js "3.4.x" html-webpack-plugin@^3.2.0: version "3.2.0" - resolved "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= dependencies: html-minifier "^3.2.3" @@ -4253,16 +4383,16 @@ html-webpack-plugin@^3.2.0: util.promisify "1.0.0" htmlparser2@^3.9.0: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= + version "3.10.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" + integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== dependencies: domelementtype "^1.3.0" domhandler "^2.3.0" domutils "^1.5.1" entities "^1.1.1" inherits "^2.0.1" - readable-stream "^2.0.2" + readable-stream "^3.0.6" htmlparser2@~3.3.0: version "3.3.0" @@ -4279,19 +4409,9 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" - resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" @@ -4300,13 +4420,13 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: statuses ">= 1.4.0 < 2" http-parser-js@>=0.4.0: - version "0.4.13" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" - integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= + version "0.5.0" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" + integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== http-proxy-middleware@~0.18.0: version "0.18.0" - resolved "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== dependencies: http-proxy "^1.16.2" @@ -4345,11 +4465,6 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4357,7 +4472,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4493,7 +4608,7 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@6.2.0, inquirer@^6.0.0: +inquirer@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== @@ -4607,12 +4722,12 @@ is-buffer@^1.1.5: is-builtin-module@^1.0.0: version "1.0.0" - resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.1, is-callable@^1.1.3: +is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== @@ -4832,10 +4947,12 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -5077,9 +5194,9 @@ istanbul@0.4.5: wordwrap "^1.0.0" jasmine-core@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.2.1.tgz#8e4ff5b861603ee83343f2b49eee6a0ffe9650ce" - integrity sha512-pa9tbBWgU0EE4SWgc85T4sa886ufuQdsgruQANhECYjwqgV4z7Vw/499aCaP8ZH79JDS4vhm8doDG9HO4+e4sA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.3.0.tgz#dea1cdc634bc93c7e0d4ad27185df30fa971b10e" + integrity sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA== jasmine-core@~2.8.0: version "2.8.0" @@ -5514,9 +5631,9 @@ jsesc@^1.3.0: integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" - integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" @@ -5561,9 +5678,9 @@ json3@^3.3.2: integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= json5@2.x: - version "2.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.0.1.tgz#3d6d0d1066039eb50984e66a7840e4f4b7a2c660" - integrity sha512-t6N/86QDIRYvOL259jR5c5TbtMnekl2Ib314mGeMh37zAwjgbWHieqijPH7pWaogmJq1F2I4Sphg19U1s+ZnXQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== dependencies: minimist "^1.2.0" @@ -5662,9 +5779,9 @@ karma-coverage-istanbul-reporter@^2.0.2: minimatch "^3.0.4" karma-jasmine-html-reporter@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.3.1.tgz#17db92e76ecbce97b281c97c9ac3d8b1723848f9" - integrity sha512-J8pUc58QeRhpHQ+sXBRZ016ZW9ZOjU4vjYA6Jah69WvBaqR7tGvXUzy7w/DoULbNrD8+hnZCpvdeEtqXtirY2g== + version "1.4.0" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.4.0.tgz#1abbd30d4509a8c82b96707ae7d2fa4da459ca19" + integrity sha512-0wxhwA8PLPpICZ4o2GRnPi67hf3JhfQm5WCB8nElh4qsE6wRNOTtrqooyBPNqI087Xr2SBhxLg5fU+BJ/qxRrw== karma-jasmine@^1.1.2: version "1.1.2" @@ -5679,9 +5796,9 @@ karma-source-map-support@1.3.0: source-map-support "^0.5.5" karma@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-3.0.0.tgz#6da83461a8a28d8224575c3b5b874e271b4730c3" - integrity sha512-ZTjyuDXVXhXsvJ1E4CnZzbCjSxD6sEdzEsFYogLuZM0yqvg/mgz+O+R1jb0J7uAQeuzdY8kJgx6hSNXLwFuHIQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.1.tgz#94c8edd20fb9597ccde343326da009737fb0423a" + integrity sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -5850,7 +5967,7 @@ load-ip-set@^2.1.0: load-json-file@^1.0.0: version "1.1.0" - resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" @@ -5861,7 +5978,7 @@ load-json-file@^1.0.0: load-json-file@^2.0.0: version "2.0.0" - resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" @@ -5870,9 +5987,9 @@ load-json-file@^2.0.0: strip-bom "^3.0.0" loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= + version "2.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== loader-utils@1.1.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0: version "1.1.0" @@ -5919,11 +6036,6 @@ lodash.assign@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -5964,7 +6076,7 @@ lodash.tail@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -5977,9 +6089,9 @@ log-symbols@^2.1.0: chalk "^2.0.1" log4js@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.5.tgz#b80146bfebad68b430d4f3569556d8a6edfef303" - integrity sha512-IX5c3G/7fuTtdr0JjOT2OIR12aTESVhsH6cEsijloYwKgcPRlO6DgOU72v0UFhWcoV1HN6+M3dwT89qVPLXm0w== + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== dependencies: circular-json "^0.5.5" date-format "^1.2.0" @@ -6085,9 +6197,9 @@ mamacro@^0.0.3: integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== map-age-cleaner@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" - integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" @@ -6125,12 +6237,13 @@ math-random@^1.0.1: integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" inherits "^2.0.1" + safe-buffer "^5.1.2" mdurl@^1.0.1: version "1.0.1" @@ -6142,7 +6255,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mediasource@^2.0.0, mediasource@^2.1.0: +mediasource@^2.1.0, mediasource@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.2.2.tgz#2fe826f14e51da97fa4bf87be7b808a0b11d3a4c" integrity sha512-yIyAJMcu1mudTkxZ0jDAKnZJJba4eWPCxxtZRMpoaA4/AI7m7nqbRjmdxmi+x3hKTohb5vC9Yd3IBF/SUzp1vQ== @@ -6209,9 +6322,9 @@ merge-stream@^1.0.1: readable-stream "^2.0.1" merge@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== methods@~1.1.2: version "1.1.2" @@ -6264,17 +6377,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.36.0 < 2", mime-db@~1.36.0: - version "1.36.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" - integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== +"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: - version "2.1.20" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" - integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== dependencies: - mime-db "~1.36.0" + mime-db "~1.37.0" mime@1.4.1: version "1.4.1" @@ -6336,31 +6449,31 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: minimist@0.0.8: version "0.0.8" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" - integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w== +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== +minizlib@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" + integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== dependencies: minipass "^2.2.1" @@ -6414,7 +6527,7 @@ mixin-object@^2.0.1: mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" - resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" @@ -6456,12 +6569,12 @@ mp4-stream@^2.0.0: next-event "^1.0.0" readable-stream "^2.0.3" -mpd-parser@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-0.6.1.tgz#27e7aafe075817846ce55406ac03711df1ce0eb7" - integrity sha512-3ucsY5NJMABltTLtYMSDfqZpvKV4yF8YvMx91hZFrHiblseuoKq4XUQ5IkcdtFAIRBAkPhXMU3/eunTFNCNsHw== +mpd-parser@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-0.7.0.tgz#d36e3322579fce23d657f71a3c2f3e6cc5ce4002" + integrity sha512-nkzVIkecaDz3q7p4ToN3GR0FV2Odbh0w2sJ8ijsyw79JcBrJoUD3KHIiI8gL0hEDlex7mrVpTxXBsRHowUBmPw== dependencies: - global "^4.3.0" + global "^4.3.2" url-toolkit "^2.1.1" ms@2.0.0: @@ -6506,9 +6619,9 @@ mux.js@4.5.1: integrity sha512-j4rEyZKCRinGaSiBxPx9YD9B782TMPHPOlKyaMY07vIGTNYg4ouCEBvL6zX9Hh1k1fKZ5ZF3S7c+XVk6PB+Igw== nan@^2.10.0, nan@^2.9.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" - integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw== + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== nanomatch@^1.2.9: version "1.2.13" @@ -6533,9 +6646,9 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" - integrity sha512-GPL22d/U9cai87FcCPO6e+MT3vyHS2j+zwotakDc7kE2DtUAqFKMXLJCTtRp+5S75vXIwQPvIxkvlctxf9q4gQ== + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -6547,9 +6660,9 @@ negotiator@0.6.1: integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= neo-async@^2.5.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" - integrity sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw== + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== netmask@^1.0.6: version "1.0.6" @@ -6590,9 +6703,9 @@ ngx-clipboard@11.1.7: tslib "^1.9.0" ngx-pipes@^2.1.7: - version "2.3.5" - resolved "https://registry.yarnpkg.com/ngx-pipes/-/ngx-pipes-2.3.5.tgz#3a5663dcd540d04f1a7997db50b33bf4c2b1f03e" - integrity sha512-dufw+PjkDGuqZKDOlhIKGPfnpoYRqVrms4aRL05Bf2bhCwvSuMSWWKwbRU7oXF1GbPDk1VdEEWxt1NGNHgU5eQ== + version "2.3.6" + resolved "https://registry.yarnpkg.com/ngx-pipes/-/ngx-pipes-2.3.6.tgz#3c7ba04844f0191262165d89d3aecf1a45b9d410" + integrity sha512-BLbZyqa7UjSp+qOmj5elPyMXedvgC5lI6W9kIDXaxE+4TIAPsbmLK3axo8NW22Bu73DgRYy8Ftepv3XV2dMqDg== dependencies: tslib "^1.9.0" @@ -6604,9 +6717,9 @@ ngx-qrcode2@^0.0.9: qrcode "^0.8.2" ngx-window-token@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ngx-window-token/-/ngx-window-token-1.0.0.tgz#12acb174fbbcffa5c60b3fea5a6ea78cc3304793" - integrity sha512-n+ZTyuNKHGccKoaofIgNCSJ7XgfujDodSYOxauY5eE6s4sxCriMBZelBIMqjaEuIE2GleViIwlCzb/j45rakPA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/ngx-window-token/-/ngx-window-token-1.0.2.tgz#2ebadd300fee1f61eb8b851b0ad97b1f46f5e4cc" + integrity sha512-bFgvi7MYSK1p4b3Mqvn9+biXaO8QDEbpP2sEMSwr0Zgrwh6zCO3F92a6SIIzusqpZBAhxyfVSqj3mO5qIxlM5Q== dependencies: tslib "^1.9.0" @@ -6685,12 +6798,12 @@ node-libs-browser@^2.0.0: vm-browserify "0.0.4" node-notifier@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" - integrity sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg== + version "5.3.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" + integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q== dependencies: growly "^1.3.0" - semver "^5.4.1" + semver "^5.5.0" shellwords "^0.1.1" which "^1.3.0" @@ -6717,7 +6830,7 @@ node-releases@^1.0.1: dependencies: semver "^5.3.0" -node-sass@4.9.3, node-sass@^4.9.3: +node-sass@4.9.3: version "4.9.3" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== @@ -6742,6 +6855,31 @@ node-sass@4.9.3, node-sass@^4.9.3: stdout-stream "^1.4.0" "true-case-path" "^1.0.2" +node-sass@^4.9.3: + version "4.10.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.10.0.tgz#dcc2b364c0913630945ccbf7a2bbf1f926effca4" + integrity sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.10.0" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + "nopt@2 || 3", nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -6800,9 +6938,9 @@ npm-font-source-sans-pro@^1.0.2: validate-npm-package-name "^3.0.0" npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -6844,9 +6982,9 @@ npm-run-path@^2.0.0: set-blocking "~2.0.0" nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" @@ -7033,7 +7171,7 @@ os-homedir@^1.0.0: os-locale@^1.4.0: version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= dependencies: lcid "^1.0.0" @@ -7157,7 +7295,7 @@ param-case@2.1.x: parse-asn1@^5.0.0: version "5.1.1" - resolved "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== dependencies: asn1.js "^4.0.0" @@ -7322,9 +7460,9 @@ path-type@^3.0.0: pify "^3.0.0" pbkdf2@^3.0.3: - version "3.0.16" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" - integrity sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA== + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -7395,7 +7533,7 @@ pngjs@^2.3.1: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-2.3.1.tgz#11d1e12b9cb64d63e30c143a330f4c1f567da85f" integrity sha1-EdHhK5y2TWPjDBQ6Mw9MH1Z9qF8= -portfinder@1.0.17, portfinder@^1.0.9: +portfinder@1.0.17: version "1.0.17" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" integrity sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ== @@ -7404,6 +7542,15 @@ portfinder@1.0.17, portfinder@^1.0.9: debug "^2.2.0" mkdirp "0.5.x" +portfinder@^1.0.9: + version "1.0.19" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.19.tgz#07e87914a55242dcda5b833d42f018d6875b595f" + integrity sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw== + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -7438,9 +7585,9 @@ postcss-loader@3.0.0: schema-utils "^1.0.0" postcss-modules-extract-imports@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" - integrity sha1-ZhQOzs447wa/DT41XWm/WdFB6oU= + version "1.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== dependencies: postcss "^6.0.1" @@ -7469,9 +7616,9 @@ postcss-modules-values@^1.3.0: postcss "^6.0.1" postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss@7.0.5, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2: version "7.0.5" @@ -7518,9 +7665,9 @@ pretty-format@^23.6.0: ansi-styles "^3.2.0" primeng@^6.1.2: - version "6.1.4" - resolved "https://registry.yarnpkg.com/primeng/-/primeng-6.1.4.tgz#c4b92c1c9f8ba6cf717b122ed87c3701a5e1cf20" - integrity sha512-z9jkgvaOveWtylpQXp1wOZtLNcnJuivdot6EpquPGV8oBjKMxFX+2k0NbTwDINldR384rurxUd8830Wk9/Z9Nw== + version "6.1.6" + resolved "https://registry.yarnpkg.com/primeng/-/primeng-6.1.6.tgz#3a699a02507fcd5befb2fb9fe18fcc5d385f810e" + integrity sha512-9QYkXfBuSwx5zZej5QiEWhdAFJPc+f9h6PXuFtw4PzUfOhPmnoUxR5K04xeFreCNP13WwP3Uh/U3o7mY0PZtQA== private@^0.1.8, private@~0.1.5: version "0.1.8" @@ -7597,7 +7744,7 @@ protractor@^5.3.2: webdriver-js-extender "2.1.0" webdriver-manager "^12.0.6" -proxy-addr@~2.0.3: +proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== @@ -7621,15 +7768,16 @@ psl@^1.1.24: integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== public-encrypt@^4.0.0: - version "4.0.2" - resolved "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" - integrity sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q== + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" create-hash "^1.1.0" parse-asn1 "^5.0.0" randombytes "^2.0.1" + safe-buffer "^5.1.2" pump@^2.0.0, pump@^2.0.1: version "2.0.1" @@ -7715,11 +7863,6 @@ qrcode@^0.8.2: isarray "^2.0.1" pngjs "^2.3.1" -qs@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== - qs@6.5.2, qs@~6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -7736,9 +7879,9 @@ querystring@0.2.0: integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" - integrity sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" + integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== random-access-file@^2.0.1: version "2.0.1" @@ -7761,9 +7904,9 @@ random-iterate@^1.0.1: integrity sha1-99l9kt7mZl7F9toIx/ljytSyrJk= randomatic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" - integrity sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -7789,23 +7932,12 @@ range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= -range-slice-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-1.2.0.tgz#01ba954276052b783900e63d6118d8fcf3875d7f" - integrity sha1-AbqVQnYFK3g5AOY9YRjY/POHXX8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= +range-slice-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-2.0.0.tgz#1f25fc7a2cacf9ccd140c46f9cf670a1a7fe3ce6" + integrity sha512-PPYLwZ63lXi6Tv2EZ8w3M4FzC0rVqvxivaOVS8pXSp5FMIHFnvi4MWHL3UdFLhwSy50aNtJsgjY0mBC6oFL26Q== dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" + readable-stream "^3.0.2" raw-body@2.3.3: version "2.3.3" @@ -7833,24 +7965,24 @@ rc@^1.2.7: strip-json-comments "~2.0.1" react-dom@^16.4.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.2.tgz#b69ee47aa20bab5327b2b9d7c1fe2a30f2cfa9d7" - integrity sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA== + version "16.6.3" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.3.tgz#8fa7ba6883c85211b8da2d0efeffc9d3825cccc0" + integrity sha512-8ugJWRCWLGXy+7PmNh8WJz3g1TaTUt1XyoIcFN+x0Zbkoz+KKdUyx1AQLYJdbFXjuF41Nmjn5+j//rxvhFjgSQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.5.0" + scheduler "^0.11.2" react@^16.4.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react/-/react-16.5.2.tgz#19f6b444ed139baa45609eee6dc3d318b3895d42" - integrity sha512-FDCSVd3DjVTmbEAjUNX6FgfAmQ+ypJfHUsqUJOYNCBUp1h8lqmtC+0mXJ+JjsWx4KAVTkk1vKd1hLQPvEviSuw== + version "16.6.3" + resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c" + integrity sha512-zCvmH2vbEolgKxtqXL2wmGCUxUyNheYn/C+PD1YAjfxHC54+MhdruyhO7QieQrYsYeTxrn93PM2y0jRH1zEExw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.5.0" + scheduler "^0.11.2" read-cache@^1.0.0: version "1.0.0" @@ -7893,9 +8025,9 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.3, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.2, readable-stream@^2.3.3, readable-stream@^2.3.4, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.3, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.2, readable-stream@^2.3.3, readable-stream@^2.3.4, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" @@ -7908,7 +8040,7 @@ read-pkg@^2.0.0: readable-stream@1.0: version "1.0.34" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" @@ -7916,10 +8048,10 @@ readable-stream@1.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.3.tgz#a4db8813e3e0b87abdc01d5d5dbae828e59744b5" - integrity sha512-CzN1eAu5Pmh4EaDlJp1g5E37LIHR24b82XlMWRQlPFjhvOYKa4HhClRsQO21zhdDWUpdWfiKt9/L/ZL2+vwxCw== +readable-stream@^3.0.2, readable-stream@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz#351302e4c68b5abd6a2ed55376a7f9a25be3057a" + integrity sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -7927,7 +8059,7 @@ readable-stream@^3.0.2: readable-stream@~2.0.6: version "2.0.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" @@ -7998,6 +8130,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -8056,15 +8193,15 @@ render-media@^3.0.0: videostream "^2.5.1" renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - integrity sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk= + version "2.0.2" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" + integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg== dependencies: css-select "^1.1.0" - dom-converter "~0.1" + dom-converter "~0.2" htmlparser2 "~3.3.0" strip-ansi "^3.0.0" - utila "~0.3" + utila "^0.4.0" repeat-element@^1.1.2: version "1.1.3" @@ -8130,7 +8267,7 @@ request@2.87.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@^2.74.0, request@^2.83.0, request@^2.87.0: +request@^2.74.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -8297,25 +8434,13 @@ rust-result@^1.0.0: dependencies: individual "^2.0.0" -rxjs@6.3.3, rxjs@^6.3.3: +rxjs@6.3.3, rxjs@^6.1.0, rxjs@^6.3.3: version "6.3.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== dependencies: tslib "^1.9.0" -rxjs@^6.1.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" - integrity sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - safe-buffer@5.1.2, safe-buffer@^5.0.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -8357,9 +8482,9 @@ sane@^2.0.0: fsevents "^1.2.3" sanitize-html@^1.18.4: - version "1.19.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.19.0.tgz#34d8a4b864aba79602e4a32003f293fc242df0a9" - integrity sha512-Qt2imq49f2qP4537a7R2Xgx9sjTvw18jIT7zKurhu5kpYNQfMo8EZaW3OcpoXCvg3GTN4C4R3mN8ao7STUtKtA== + version "1.19.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.19.1.tgz#e8b33c69578054d6ee4f57ea152d6497f3f6fb7d" + integrity sha512-zNYr6FvBn4bZukr9x2uny6od/9YdjCLwF+FqxivqI0YOt/m9GIxfX+tWhm52tBAPUXiTTb4bJTGVagRz5b06bw== dependencies: chalk "^2.3.0" htmlparser2 "^3.9.0" @@ -8394,10 +8519,10 @@ sass-loader@7.1.0, sass-loader@^7.1.0: pify "^3.0.0" semver "^5.5.0" -sass-resources-loader@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/sass-resources-loader/-/sass-resources-loader-1.3.3.tgz#90f0e614c444f6dfb8f54ce3e1d5f64a18d31537" - integrity sha512-wEXBIn4DWE86KaYafPwoKXvyqGQdmbB7ePlGxrKTuUzwVnkgwUZXald48k+9WdwCWWffTiSr0pb9PIVGGPU/rw== +sass-resources-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sass-resources-loader/-/sass-resources-loader-2.0.0.tgz#88569c542fbf1f18f33a6578b77cc5b36c56911d" + integrity sha512-I+5FfV+Hb29U5Nt8DbslWOBgRmTv1M/EwOn4/4rc6Aqy9yjygoa8UTnyCFXfTZV8FoQyIBZbEyKSBryhByqQbA== dependencies: async "^2.1.4" chalk "^1.1.3" @@ -8413,7 +8538,7 @@ saucelabs@^1.5.0: sax@0.5.x: version "0.5.8" - resolved "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= sax@>=0.6.0, sax@^1.2.4: @@ -8421,11 +8546,12 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schedule@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.5.0.tgz#c128fffa0b402488b08b55ae74bb9df55cc29cc8" - integrity sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw== +scheduler@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.2.tgz#a8db5399d06eba5abac51b705b7151d2319d33d3" + integrity sha512-+WCP3s3wOaW4S7C1tl3TEXp4l9lJn0ZK8G3W3WKRWmw77Z2cIFUW2MiNTMHn5sCjxN+t7N43HAOOgMjyAg5hlg== dependencies: + loose-envify "^1.1.0" object-assign "^4.1.1" schema-utils@^0.3.0: @@ -8476,9 +8602,9 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: xml2js "^0.4.17" selfsigned@^1.9.1: - version "1.10.3" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" - integrity sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q== + version "1.10.4" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== dependencies: node-forge "0.7.5" @@ -8496,7 +8622,12 @@ semver-intersect@1.4.0: dependencies: semver "^5.0.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@5.5.1, semver@5.x, semver@^5.0.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.3.0, semver@^5.5, semver@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +semver@5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== @@ -8583,11 +8714,6 @@ setimmediate@^1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -8595,7 +8721,7 @@ setprototypeof@1.1.0: sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -8796,9 +8922,9 @@ sockjs@0.3.19: uuid "^3.0.1" source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-list-map@~0.1.7: version "0.1.8" @@ -8891,17 +9017,17 @@ sourcemap-codec@^1.4.1: integrity sha512-vFrY/x/NdsD7Yc8mpTJXuao9S8lq08Z/kOITHz6b7YbfI9xL8Spe5EvSQUHOI7SbpY8bRPr0U3kKSsPuqEGSfA== spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" + integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" @@ -8912,14 +9038,14 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" - integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" + integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== spdy-transport@^2.0.18: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" - integrity sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g== + version "2.1.1" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.1.tgz#c54815d73858aadd06ce63001e7d25fa6441623b" + integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q== dependencies: debug "^2.6.8" detect-node "^2.0.3" @@ -8986,19 +9112,18 @@ srcset@^1.0.0: number-is-nan "^1.0.0" sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - integrity sha1-xvxhZIo9nE52T9P8306hBeSSupg= + version "1.15.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" ecc-jsbn "~0.1.1" + getpass "^0.1.1" jsbn "~0.1.0" + safer-buffer "^2.0.2" tweetnacl "~0.14.0" ssri@^5.2.4: @@ -9016,9 +9141,9 @@ ssri@^6.0.0: figgy-pudding "^3.5.1" stack-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" - integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== static-extend@^0.1.1: version "0.1.2" @@ -9035,7 +9160,7 @@ stats-webpack-plugin@0.7.0: dependencies: lodash "^4.17.4" -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -9078,7 +9203,7 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.7.2, stream-http@^2.8.3: +stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== @@ -9089,6 +9214,16 @@ stream-http@^2.7.2, stream-http@^2.8.3: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-http@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.0.0.tgz#bd6d3c52610098699e25eb2dfcd188e30e0d12e4" + integrity sha512-JELJfd+btL9GHtxU3+XXhg9NLYrKFnhybfvRuDghtyVkOFydz3PKNT1df07AMr88qW03WHF+FSV0PySpXignCA== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^3.0.6" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" @@ -9286,14 +9421,14 @@ tar@^2.0.0: inherits "2" tar@^4: - version "4.4.6" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" - integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: - chownr "^1.0.1" + chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" + minipass "^2.3.4" + minizlib "^1.1.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.2" @@ -9313,9 +9448,9 @@ terser-webpack-plugin@1.1.0, terser-webpack-plugin@^1.1.0: worker-farm "^1.5.2" terser@^3.8.1: - version "3.8.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.8.2.tgz#48b880f949f8d038aca4dfd00a37c53d96ecf9fb" - integrity sha512-FGSBXiBJe2TSXy6pWwXpY0YcEWEK35UKL64BBbxX3aHqM4Nj0RMqXvqBuoSGfyd80t8MKQ5JwYm5jRRGTSEFNg== + version "3.10.11" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.11.tgz#e063da74b194dde9faf0a561f3a438c549d2da3f" + integrity sha512-iruZ7j14oBbRYJC5cP0/vTU7YOWjN+J1ZskEGoF78tFzXdkK2hbCL/3TRZN8XB+MuvFhvOHMp7WkOCBO4VEL5g== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -9343,22 +9478,22 @@ throat@^4.0.0: integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: - readable-stream "^2.1.5" + readable-stream "~2.3.6" xtend "~4.0.1" through@2, through@X.X.X, through@^2.3.6, through@~2.3.6: version "2.3.8" - resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.1, thunky@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" - integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== timers-browserify@^2.0.4: version "2.0.10" @@ -9506,9 +9641,9 @@ tryer@^1.0.0: integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== ts-jest@^23.1.4: - version "23.10.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.0.tgz#1b1ce1d795791dedf0229b7577b35eaed8565bbd" - integrity sha512-SbqUbCRjlPKQjm9kANW3FebLx4iLxJG/HlK+Ds3nuVlr5Z3kX7YSES/OuIPwX/mPUds4MlA5W+/C4H/njztqtw== + version "23.10.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.4.tgz#a7a953f55c9165bcaa90ff91014a178e87fe0df8" + integrity sha512-oV/wBwGUS7olSk/9yWMiSIJWbz5xO4zhftnY3gwv6s4SMg6WHF1m8XZNBvQOKQRiTAexZ9754Z13dxBq3Zgssw== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -9516,7 +9651,7 @@ ts-jest@^23.1.4: json5 "2.x" make-error "1.x" mkdirp "0.x" - semver "5.x" + semver "^5.5" yargs-parser "10.x" ts-jest@~23.1.3: @@ -9586,9 +9721,9 @@ tsutils@^2.27.2: tslib "^1.8.1" tsutils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.0.0.tgz#0c5070a17a0503e056da038c48b5a1870a50a9ad" - integrity sha512-LjHBWR0vWAUHWdIAoTjoqi56Kz+FDKBgVEuL+gVPG/Pv7QW5IdaDDeK9Txlr6U0Cmckp5EgCIq1T25qe3J6hyw== + version "3.5.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.0.tgz#42602f7df241e753a2105cc3627a664abf11f745" + integrity sha512-/FZ+pEJQixWruFejFxNPRSwg+iF6aw7PYZVRqUscJ7EnzV3zieI8byfZziUR7QjCuJFulq8SEe9JcGflO4ze4Q== dependencies: tslib "^1.8.1" @@ -9616,7 +9751,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.15, type-is@~1.6.16: +type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== @@ -9704,16 +9839,16 @@ uniq@^1.0.1: integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-filename@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" - integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" - integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== dependencies: imurmurhash "^0.1.4" @@ -9768,9 +9903,9 @@ url-join@^4.0.0: integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= url-parse@^1.1.8, url-parse@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" - integrity sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw== + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== dependencies: querystringify "^2.0.0" requires-port "^1.0.0" @@ -9855,12 +9990,7 @@ util@^0.10.3: dependencies: inherits "2.0.3" -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - integrity sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY= - -utila@~0.4: +utila@^0.4.0, utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= @@ -9875,7 +10005,7 @@ uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -v8-compile-cache@^2.0.0: +v8-compile-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== @@ -9910,23 +10040,23 @@ verror@1.10.0: extsprintf "^1.2.0" "video.js@^6 || ^7", "video.js@^6.8.0 || ^7.0.0", video.js@^7: - version "7.2.2" - resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.2.2.tgz#4a1197b2f0c265a1e50d5cd4ff41cd030e22a423" - integrity sha512-Ct9ZiYzeNiOW1v9YWbNaeSR0JUKeY3RTvG5wtvUHhUgUMImICDu7crutyY/C2u4PetoFlpkDVAIbhqi/qPDflw== + version "7.3.0" + resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.3.0.tgz#780de68a163b4ee16dfcacd78971680f18c9a68d" + integrity sha512-yJX8QlTIEpo2YN9G1RpKqIlLS9jqg8NNNN+IK2Z6vHhM6QUBzmaDFEr+BYGnvx8p7X90/SjRH1RHTPvKhghNUw== dependencies: - "@videojs/http-streaming" "1.2.4" - babel-runtime "^6.9.2" + "@babel/runtime" "^7.0.0" + "@videojs/http-streaming" "1.4.1" global "4.3.2" safe-json-parse "4.0.0" tsml "1.0.1" - videojs-font "3.0.0" + videojs-font "3.1.0" videojs-vtt.js "0.14.1" xhr "2.4.0" videojs-contextmenu-ui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/videojs-contextmenu-ui/-/videojs-contextmenu-ui-5.0.0.tgz#6943527c9b3993f3fb83867c0d0348bcd58c924c" - integrity sha512-U3UcJizH6oDVMRqb8PbRSQFaP8vRTI4cDv7Z3Co9D1icX7B4Th4XIZw/NRdzrU4kuJbHDq1e9GYxEHjlHkRbLw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/videojs-contextmenu-ui/-/videojs-contextmenu-ui-5.1.0.tgz#60834d94ce590a8dc3a31d82a301fd394379034a" + integrity sha512-pDRPh+SJBnrCG7Q95JogbPRtfODMcteJ3lubEZmLkpMu1G0Nlw2igdBcHVH4HZ/ZaM+cX+EBPVl8kz6TEtZKTw== dependencies: global "^4.3.2" video.js "^6 || ^7" @@ -9939,10 +10069,10 @@ videojs-dock@^2.0.2: global "^4.3.2" video.js "^6 || ^7" -videojs-font@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.0.0.tgz#90eafddcf26b407448c833523f5ca4ad8d5cc1af" - integrity sha512-XS6agz2T7p2cFuuXulJD70md8XMlAN617SJkMWjoTPqZWv+RU8NcZCKsE3Tk73inzxnQdihOp0cvI7NGz2ngHg== +videojs-font@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.1.0.tgz#ac33be9b517fe19299f61cccd2b3c7d75a1c6960" + integrity sha512-rxB68SVgbHD+kSwoNWNCHicKJuR2ga3bGfvGxmB+8fupsiLbnyCwTBVtrZUq4bZnD64mrKP1DxHiutxwrs59pQ== videojs-hotkeys@^0.2.21: version "0.2.22" @@ -9957,18 +10087,18 @@ videojs-vtt.js@0.14.1: global "^4.3.1" videostream@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/videostream/-/videostream-2.5.1.tgz#993a8f3efe277e5c8d26a7814ba0c68f79b20688" - integrity sha512-S3f34WE6NB1d/YUAa/EYcTURTkGaxsUqcDmsGWV1jQpQQJxeagc79/XA7ygNjzBf3DoQQ1MKTD+SocPsWSniAg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/videostream/-/videostream-2.6.0.tgz#7f0b2b84bc457c12cfe599aa2345f5cc06241ab6" + integrity sha512-nSsullx1BYClJxVSt4Fa+Ulsv0Cf7UwaHq+4LQdLkAUdmqNhY1DlGxXDWVY2gui5XV4FvDiSbXmSbGryMrrUCQ== dependencies: binary-search "^1.3.4" inherits "^2.0.1" - mediasource "^2.0.0" + mediasource "^2.2.2" mp4-box-encoding "^1.3.0" mp4-stream "^2.0.0" multistream "^2.0.2" pump "^3.0.0" - range-slice-stream "^1.2.0" + range-slice-stream "^2.0.0" vm-browserify@0.0.4: version "0.0.4" @@ -10051,9 +10181,9 @@ webidl-conversions@^4.0.2: integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-bundle-analyzer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.2.tgz#22f19ea6d1b5a15fd7a90baae0bc0f39bd1e4d48" - integrity sha512-cZG4wSQtKrSpk5RJ33dxiaAyo8bP0V+JvycAyIDFEiDIhw4LHhhVKhn40YT1w6TR9E4scHA00LnIoBtTA13Mow== + version "3.0.3" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.3.tgz#dbc7fff8f52058b6714a20fddf309d0790e3e0a0" + integrity sha512-naLWiRfmtH4UJgtUktRTLw6FdoZJ2RvCR9ePbwM9aRMsS/KjFerkPZG9epEvXRAw5d5oPdrs9+3p+afNjxW8Xw== dependencies: acorn "^5.7.3" bfj "^6.1.1" @@ -10069,21 +10199,20 @@ webpack-bundle-analyzer@^3.0.2: ws "^6.0.0" webpack-cli@^3.0.8: - version "3.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" - integrity sha512-p5NeKDtYwjZozUWq6kGNs9w+Gtw/CPvyuXjXn2HMdz8Tie+krjEg8oAtonvIyITZdvpF7XG9xDHwscLr2c+ugQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.2.tgz#17d7e01b77f89f884a2bbf9db545f0f6a648e746" + integrity sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ== dependencies: chalk "^2.4.1" cross-spawn "^6.0.5" - enhanced-resolve "^4.0.0" - global-modules-path "^2.1.0" - import-local "^1.0.0" - inquirer "^6.0.0" + enhanced-resolve "^4.1.0" + global-modules-path "^2.3.0" + import-local "^2.0.0" interpret "^1.1.0" loader-utils "^1.1.0" - supports-color "^5.4.0" - v8-compile-cache "^2.0.0" - yargs "^12.0.1" + supports-color "^5.5.0" + v8-compile-cache "^2.0.2" + yargs "^12.0.2" webpack-core@^0.6.8: version "0.6.9" @@ -10193,7 +10322,7 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack-sources@^1.1.0, webpack-sources@^1.2.0: +webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== @@ -10208,7 +10337,7 @@ webpack-subresource-integrity@1.1.0-rc.6: dependencies: webpack-core "^0.6.8" -webpack@4.19.1, webpack@^4.17.1: +webpack@4.19.1: version "4.19.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== @@ -10238,6 +10367,36 @@ webpack@4.19.1, webpack@^4.17.1: watchpack "^1.5.0" webpack-sources "^1.2.0" +webpack@^4.17.1: + version "4.25.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.25.1.tgz#4f459fbaea0f93440dc86c89f771bb3a837cfb6d" + integrity sha512-T0GU/3NRtO4tMfNzsvpdhUr8HnzA4LTdP2zd+e5zd6CdOH5vNKHnAlO+DvzccfhPdzqRrALOFcjYxx7K5DWmvA== + dependencies: + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-module-context" "1.7.11" + "@webassemblyjs/wasm-edit" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + acorn "^5.6.2" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.1.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.3.0" + websocket-driver@>=0.5.1: version "0.7.0" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" @@ -10297,18 +10456,18 @@ websocket-extensions@>=0.1.1: ut_pex "^1.1.1" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621" - integrity sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg== + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: - iconv-lite "0.4.23" + iconv-lite "0.4.24" whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== -whatwg-mimetype@^2.1.0: +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== @@ -10379,7 +10538,7 @@ worker-farm@^1.5.2: wrap-ansi@^2.0.0: version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" @@ -10407,9 +10566,9 @@ ws@^5.2.0: async-limiter "~1.0.0" ws@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" - integrity sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.0.tgz#119a9dbf92c54e190ec18d10e871d55c95cf9373" + integrity sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg== dependencies: async-limiter "~1.0.0" @@ -10538,7 +10697,7 @@ yargs@10.0.3: y18n "^3.2.1" yargs-parser "^8.0.0" -yargs@12.0.2, yargs@^12.0.1: +yargs@12.0.2, yargs@^12.0.2: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== @@ -10577,7 +10736,7 @@ yargs@9.0.1: yargs@^11.0.0: version "11.1.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" -- cgit v1.2.3 From f7454ca60a72fb199edbf58ba334801bd1e6417b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 15 Nov 2018 10:54:37 +0100 Subject: Upgrade server dep --- .../comment/video-comment-add.component.ts | 2 +- package.json | 18 +- yarn.lock | 1399 ++++++++++---------- 3 files changed, 716 insertions(+), 703 deletions(-) diff --git a/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts b/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts index bd2d52ecf..6db0eb55d 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts @@ -29,7 +29,7 @@ export class VideoCommentAddComponent extends FormReactive implements OnInit { @Output() commentCreated = new EventEmitter() @ViewChild('visitorModal') visitorModal: NgbModal - @ViewChild('textarea') private textareaElement: ElementRef + @ViewChild('textarea') textareaElement: ElementRef addingComment = false diff --git a/package.json b/package.json index 3d25a9ab8..40d0214c9 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "async": "^2.0.0", "async-lock": "^1.1.2", "async-lru": "^1.1.1", - "bcrypt": "2", + "bcrypt": "3.0.2", "bittorrent-tracker": "^9.0.0", "bluebird": "^3.5.0", "body-parser": "^1.12.4", @@ -114,7 +114,7 @@ "http-signature": "^1.2.0", "ip-anonymize": "^0.0.6", "ipaddr.js": "1.8.1", - "is-cidr": "^2.0.5", + "is-cidr": "^3.0.0", "iso-639-3": "^1.0.1", "js-yaml": "^3.5.4", "jsonld": "^1.0.1", @@ -139,9 +139,9 @@ "request": "^2.81.0", "safe-buffer": "^5.0.1", "scripty": "^1.5.0", - "sequelize": "4.38.0", + "sequelize": "4.41.2", "sequelize-typescript": "0.6.6", - "sharp": "^0.20.0", + "sharp": "^0.21.0", "srt-to-vtt": "^1.1.2", "summon-install": "^0.4.3", "useragent": "^2.3.0", @@ -156,7 +156,7 @@ "devDependencies": { "@types/async": "^2.0.40", "@types/async-lock": "^1.1.0", - "@types/bcrypt": "^2.0.0", + "@types/bcrypt": "^3.0.0", "@types/bluebird": "3.5.21", "@types/body-parser": "^1.16.3", "@types/bull": "^3.3.12", @@ -184,7 +184,7 @@ "@types/pem": "^1.9.3", "@types/redis": "^2.8.5", "@types/request": "^2.0.3", - "@types/sharp": "^0.17.6", + "@types/sharp": "^0.21.0", "@types/supertest": "^2.0.3", "@types/validator": "^9.4.0", "@types/webtorrent": "^0.98.4", @@ -193,8 +193,8 @@ "chai-json-schema": "^1.5.0", "chai-xml": "^0.3.2", "husky": "^1.0.0-rc.4", - "libxmljs": "0.19.3", - "lint-staged": "^7.1.0", + "libxmljs": "0.19.5", + "lint-staged": "^8.0.4", "maildev": "^1.0.0-rc3", "mocha": "^5.0.0", "nodemon": "^1.11.0", @@ -205,7 +205,7 @@ "ts-node": "7.0.1", "tslint": "^5.7.0", "tslint-config-standard": "^8.0.1", - "typescript": "^2.5.2", + "typescript": "^3.1.6", "xliff": "^4.0.0" }, "scripty": { diff --git a/yarn.lock b/yarn.lock index 6aeb87e3f..9aed7f24d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,14 +15,14 @@ integrity sha512-Eo8EXiqmChtkt0ETf6AQ8aiDHT3Tht6OuMSa3/9nfuyqFimp7ZwPMiufsA56A7ZUGBuwFzH860jO0d8n0lETtg== "@types/async@^2.0.40": - version "2.0.49" - resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0" - integrity sha512-Benr3i5odUkvpFkOpzGqrltGdbSs+EVCkEBGXbuR7uT0VzhXKIkhem6PDzHdx5EonA+rfbB3QvP6aDOw5+zp5Q== + version "2.0.50" + resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.50.tgz#117540e026d64e1846093abbd5adc7e27fda7bcb" + integrity sha512-VMhZMMQgV1zsR+lX/0IBfAk+8Eb7dPVMWiQGFAt3qjo5x7Ml6b77jUo0e1C3ToD+XRDXqtrfw+6AB0uUsPEr3Q== -"@types/bcrypt@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/bcrypt/-/bcrypt-2.0.0.tgz#74cccef82026341fd786cf2eb9c912c7f9107c55" - integrity sha512-/r/ihQBlYMUYHqcFXix76I3OLYTaUcU8xV2agtB2hCds2rfJI56UyKu0e2LkAW2/4HHmQKmQRFXqM8D6y3Tc5g== +"@types/bcrypt@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/bcrypt/-/bcrypt-3.0.0.tgz#851489a9065a067cb7f3c9cbe4ce9bed8bba0876" + integrity sha512-nohgNyv+1ViVcubKBh0+XiNJ3dO8nYu///9aJ4cgSqv70gBL+94SNy/iC2NLzKPT2Zt/QavrOkBVbZRLZmw6NQ== "@types/bittorrent-protocol@*": version "2.2.2" @@ -45,9 +45,9 @@ "@types/node" "*" "@types/bull@^3.3.12": - version "3.3.20" - resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.3.20.tgz#c61a597def297252419cf16ac4effdfb4d82d9c9" - integrity sha512-/dIHEfzyxsd0WZ3enmj+7z5Qg6T9bZpeJk1cfRVgUQdb4ss9vUc4WpfIqC8O0f+QwicAm90yqKxnU33xsRyp2g== + version "3.4.0" + resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.4.0.tgz#18ffefefa4dd1cfbdbdc8ca7df56c934459f6b9d" + integrity sha512-NVD2X+cUu1qNv6blsOfCr2fVsD3+O13U19dFuy9Du7PWfn1/gjFZEDk220uBuRSH5JyaP4nV6S8BLjsT5/bXUg== dependencies: "@types/bluebird" "*" "@types/ioredis" "*" @@ -77,9 +77,9 @@ "@types/chai" "*" "@types/chai@*", "@types/chai@^4.0.4": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.5.tgz#6163dc60078d215ec46186dc76062ef6ed68d39c" - integrity sha512-nyzJ08qQMY4umgXD6SzbLflQucEnoAf2H5iUxPX5t0euDgXDV+bFTJlEmEepM35/2l07jYHdAfP6YEndeTWM0w== + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" + integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== "@types/config@^0.0.34": version "0.0.34" @@ -163,9 +163,9 @@ integrity sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w== "@types/ioredis@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.0.1.tgz#dfe9de0d5dce54193975c1909f0d082e5574e2f2" - integrity sha512-pvGlg7THjfjC6hzhOBVNtD0p+B0ph2FYx0wJjDBW7rpDLe9zazQgAt2WRWm3COW6Z0ZXqmCzPkq7WrOJWJklSQ== + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.0.4.tgz#c0a809064c05e4c2663803128d46042e73c92558" + integrity sha512-QdJTMFrmKkphjoGIxItTMhP++8/6INLbgSIxB8kd9N+3OuiuiaZ2knt+OR4gFQrloac/ctwaQA1PCzISmD9afQ== dependencies: "@types/node" "*" @@ -178,9 +178,9 @@ "@types/node" "*" "@types/lodash@*", "@types/lodash@^4.14.64": - version "4.14.116" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.116.tgz#5ccf215653e3e8c786a58390751033a9adca0eb9" - integrity sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg== + version "4.14.118" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27" + integrity sha512-iiJbKLZbhSa6FYRip/9ZDX6HXhayXLDGY2Fqws9cOkEQ6XeKfaxB0sC541mowZJueYyMnVUmmG+al5/4fCDrgw== "@types/magnet-uri@*", "@types/magnet-uri@^5.1.1": version "5.1.1" @@ -233,13 +233,13 @@ "@types/express" "*" "@types/node@*", "@types/node@^10.0.8": - version "10.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.10.1.tgz#d5c96ca246a418404914d180b7fdd625ad18eca6" - integrity sha512-nzsx28VwfaIykfzMAG9TB3jxF5Nn+1/WMKnmVZc8TsB+LMIVvwUscVn7PAq+LFaY5ng5u4jp5mRROSswo76PPA== + version "10.12.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.8.tgz#d0a3ab5a6e61458c492304e2776ac136b81db927" + integrity sha512-INamyRZG4rW3lDCUmwVd5Xho/bXvQm/v1yP8V0UN1RuInU7RoWoaO570b+yLX4Ia/0szsx1wa8VzcsVlsvbWLA== "@types/node@6.0.41": version "6.0.41" - resolved "http://registry.npmjs.org/@types/node/-/node-6.0.41.tgz#578cf53aaec65887bcaf16792f8722932e8ff8ea" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.41.tgz#578cf53aaec65887bcaf16792f8722932e8ff8ea" integrity sha1-V4z1Oq7GWIe8rxZ5L4ciky6P+Oo= "@types/nodemailer@^4.3.1": @@ -251,9 +251,9 @@ "@types/node" "*" "@types/oauth2-server@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/oauth2-server/-/oauth2-server-3.0.8.tgz#0b7f5083790732ea00bf8c5e0b04b9fa1f22f22c" - integrity sha512-+P/rJsQwxMfEBu5sG9CvuqirL4BguCs1KdV3dBYob5PqxJLN6VT4m0Ol9usvCfdY+AHmkpdDaHAltA1rqzE6bw== + version "3.0.9" + resolved "https://registry.yarnpkg.com/@types/oauth2-server/-/oauth2-server-3.0.9.tgz#e3f32011862f03f399635c5916d5a383bca26fe2" + integrity sha512-NixZjyKS4TCM1mMr6QViK0rxR8iMHiE1utYje+ZGne1SgJQzLT3OOAjCrnRp70G+L8W1BXnzIPPaIxj1kYJHNg== dependencies: "@types/express" "*" @@ -284,17 +284,16 @@ integrity sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw== "@types/redis@^2.8.5": - version "2.8.6" - resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.6.tgz#3674d07a13ad76bccda4c37dc3909e4e95757e7e" - integrity sha512-kaSI4XQwCfJtPiuyCXvLxCaw2N0fMZesdob3Jh01W20vNFct+3lfvJ/4yCJxbSopXOBOzpg+pGxkW6uWZrPZHA== + version "2.8.7" + resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.7.tgz#e0825093fb1af9d5b4a7246c6d7d1163cc842c35" + integrity sha512-ZMW8M5LRxU0D4u2GhnCEqJ1/mUJKSudlCWxeP1FRxfZQqr0Pb4tonPLzDEyRpC50uvEfAP3xOLjDuUOWi0QHCQ== dependencies: - "@types/events" "*" "@types/node" "*" "@types/request@^2.0.3": - version "2.47.1" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.47.1.tgz#25410d3afbdac04c91a94ad9efc9824100735824" - integrity sha512-TV3XLvDjQbIeVxJ1Z3oCTDk/KuYwwcNKVwz2YaT0F5u86Prgc4syDAp6P96rkTQQ4bIdh+VswQIC9zS6NjY7/g== + version "2.48.1" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.1.tgz#e402d691aa6670fbbff1957b15f1270230ab42fa" + integrity sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg== dependencies: "@types/caseless" "*" "@types/form-data" "*" @@ -319,10 +318,10 @@ "@types/express-serve-static-core" "*" "@types/mime" "*" -"@types/sharp@^0.17.6": - version "0.17.10" - resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.17.10.tgz#4f546861c53fae2b1bffcdd1ae7e691cc68afa52" - integrity sha512-nISitptrYm6hUpiC+vN21cbT8Of54TubXY95N+pcqNCmmXZqd1hRk7fC5HYRRQwWJiKV/NLHx8f4CxPIsIQXqg== +"@types/sharp@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.21.0.tgz#e364b345c70e5924a5c626aaccaa236e0cfc2455" + integrity sha512-BmsCha5/lx2Afz2zwNo9F2txlkZ9HQf49N94lzSFmj5Oc7NfRMZguwVIhytb65qdY2zNF+azovzDNso6JUZpOw== dependencies: "@types/node" "*" @@ -349,9 +348,9 @@ "@types/superagent" "*" "@types/tough-cookie@*": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.3.tgz#7f226d67d654ec9070e755f46daebf014628e9d9" - integrity sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ== + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.4.tgz#821878b81bfab971b93a265a561d54ea61f9059f" + integrity sha512-Set5ZdrAaKI/qHdFlVMgm/GsAv/wkXhSTuZFkJ+JI7HK+wIkIlOaUXSXieIvJ0+OvGIqtREFoE+NHJtEq0gtEw== "@types/tv4@*": version "1.2.29" @@ -359,9 +358,9 @@ integrity sha512-NtJmi+XbYocrLb5Au4Q64srX4FlCPDvrSF/OnK3H0QJwrw40tIUoQPDoUHnZ5wpAB2KThtVyeS+kOEQyZabORg== "@types/validator@*", "@types/validator@^9.4.0": - version "9.4.2" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-9.4.2.tgz#9fec264b35f0ea21d0967eeec2dcd6a798b34350" - integrity sha512-v6H2QH+oXVdLKp9keOJi5LQSt6X5/XIOtK1YmbCzvkAT2kHW9WyQkixit9w1UgJpBGrDCqqCZlQ+Qucpmsf8hA== + version "9.4.3" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-9.4.3.tgz#11321eae0546b20f13020131ff890c294df72ecb" + integrity sha512-D4zRrAs2pTg5cva6+hJ6GrQlb/UX5NxNtk/da3Gw27enoLvbRMTTloZ1w6CCqc+kHyZvT3DsyWQZ8baTGgSg0g== "@types/webtorrent@^0.98.4": version "0.98.4" @@ -382,9 +381,9 @@ "@types/node" "*" JSONStream@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e" - integrity sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg== + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -427,7 +426,7 @@ acorn-jsx@^3.0.0: acorn@^3.0.4: version "3.3.0" - resolved "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= acorn@^5.5.0: @@ -458,9 +457,9 @@ agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: es6-promisify "^5.0.0" agentkeepalive@^3.4.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.1.tgz#4eba75cf2ad258fc09efd506cdb8d8c2971d35a4" - integrity sha512-Cte/sTY9/XcygXjJ0q58v//SnEQ7ViWExKyJpLJlLqomDbQyMLh6Is4KuWJ/wmxzhiwkGRple7Gqv1zf6Syz5w== + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== dependencies: humanize-ms "^1.2.1" @@ -477,15 +476,15 @@ ajv@^4.7.0: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.0, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= +ajv@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" + integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" + fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" alce@^1.0.0: version "1.2.0" @@ -507,11 +506,16 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: +ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -557,10 +561,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -append-field@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/append-field/-/append-field-0.1.0.tgz#6ddc58fa083c7bc545d3c5995b2830cc2366d44a" - integrity sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo= +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= application-config-path@^0.1.0: version "0.1.0" @@ -669,7 +673,7 @@ arraybuffer.slice@0.0.6: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" integrity sha1-8zshWfBTKj8xB6JywMz70a0peco= -arrify@^1.0.0: +arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= @@ -696,7 +700,7 @@ assertion-error@1.0.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" integrity sha1-x/hUOP3UZrx8oWq5DIFRN5el0js= -assertion-error@^1.0.1: +assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== @@ -743,7 +747,7 @@ async@1.5.2, async@^1.5.2, async@~1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@>=0.2.9, async@^2.0.0, async@^2.5.0, async@^2.6.0: +async@>=0.2.9, async@^2.0.0, async@^2.5.0, async@^2.6.0, async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== @@ -775,7 +779,7 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.6.0, aws4@^1.8.0: +aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== @@ -829,7 +833,7 @@ base@^0.11.1: basic-auth@1.1.0: version "1.1.0" - resolved "http://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ= basic-auth@~2.0.0: @@ -851,13 +855,13 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bcrypt@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-2.0.1.tgz#229c5afe09379789f918efe86e5e5b682e509f85" - integrity sha512-DwB7WgJPdskbR+9Y3OTJtwRq09Lmm7Na6b+4ewvXjkD0nfNRi1OozxljHm5ETlDCBq9DTy04lQz+rj+T2ztIJg== +bcrypt@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-3.0.2.tgz#3c575c49ccbfdf0875eb42aa1453f5654092a33d" + integrity sha512-kE1IaaRchCgdrmzQX/eBQKcsuL4jRHZ+O11sMvEUrI/HgFTQYAGvxlj9z7kb3zfFuwljQ5y8/NrbnXtgx5oJLg== dependencies: - nan "2.10.0" - node-pre-gyp "0.9.1" + nan "2.11.1" + node-pre-gyp "0.11.0" bencode@^2.0.0: version "2.0.0" @@ -1037,13 +1041,13 @@ bluebird@3.5.0: bluebird@^2.10.0: version "2.11.0" - resolved "http://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= -bluebird@^3.0.5, bluebird@^3.3.4, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" - integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== +bluebird@^3.0.5, bluebird@^3.3.4, bluebird@^3.4.6, bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@~3.5.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== bn.js@=2.0.4: version "2.0.4" @@ -1060,23 +1064,7 @@ bn.js@^4.4.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" - integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" - on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" - -body-parser@^1.12.4: +body-parser@1.18.3, body-parser@^1.12.4: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= @@ -1202,10 +1190,10 @@ buffer-from@^1.0.0, buffer-from@^1.1.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-writer@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz#22a936901e3029afcd7547eb4487ceb697a3bf08" - integrity sha1-Iqk2kB4wKa/NdUfrRIfOtpejvwg= +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== bufferutil@^4.0.0: version "4.0.0" @@ -1225,16 +1213,16 @@ builtins@^1.0.3: integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= bull@^3.4.2: - version "3.4.8" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.4.8.tgz#bd25ae82f47e0a092c0b06b6a13b875fa5b41bc0" - integrity sha512-dO/Dxbe7gpq8hyYlQfkLFz+N7JxTLM7KlEppViOdaaq8JSq15GgQo1wARG7E223MB6Ji9u9xTRcqXi/SwVvI1Q== + version "3.5.1" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.1.tgz#b936a1306cb7e9dc1ac9c23a0dcaf41a1370effc" + integrity sha512-stbptND5+uRmzd6gIUJlC93fikXKyrJl53HGxzyqD0ahCMeyFRlaD5kN1i+PqfZSkcHKx/kK3HOJ8knum/Yi7A== dependencies: - bluebird "^3.5.0" + bluebird "^3.5.3" cron-parser "^2.5.0" debuglog "^1.0.0" ioredis "^3.1.4" - lodash "^4.17.4" - semver "^5.5.0" + lodash "^4.17.11" + semver "^5.6.0" uuid "^3.2.1" busboy@^0.2.11: @@ -1251,9 +1239,9 @@ byline@^5.0.0: integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.3.tgz#b7c095efc68eadf82985fccd9a2df43a74fa2ccd" - integrity sha512-JGC3EV2bCzJH/ENSh3afyJrH4vwxbHTuO5ljLoI5+2iJOcEpMgP8T782jH9b5qGxf2mSUIp1lfGnfKNrRHpvVg== + version "4.0.4" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23" + integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw== bytes@1: version "1.0.0" @@ -1285,9 +1273,9 @@ cacache@^10.0.4: y18n "^4.0.0" cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" - integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== + version "11.3.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" + integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1324,6 +1312,13 @@ call-limit@~1.1.0: resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" integrity sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o= +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1331,6 +1326,13 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.0" +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" @@ -1341,6 +1343,11 @@ callsites@^0.2.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1409,20 +1416,20 @@ chai@^1.9.1: deep-eql "0.1.3" chai@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" - integrity sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw= + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== dependencies: - assertion-error "^1.0.1" - check-error "^1.0.1" - deep-eql "^3.0.0" + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" get-func-name "^2.0.0" - pathval "^1.0.0" - type-detect "^4.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" - resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" @@ -1450,7 +1457,7 @@ charset-detector@0.0.2: resolved "https://registry.yarnpkg.com/charset-detector/-/charset-detector-0.0.2.tgz#1cd5ddaf56e83259c6ef8e906ccf06f75fe9a1b2" integrity sha1-HNXdr1boMlnG746QbM8G91/pobI= -check-error@^1.0.1: +check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= @@ -1466,7 +1473,7 @@ cheerio@^0.19.0: htmlparser2 "~3.8.1" lodash "^3.2.0" -chokidar@^2.0.2: +chokidar@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== @@ -1486,14 +1493,14 @@ chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.2" -chownr@^1.0.1: +chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== chownr@~1.0.1: version "1.0.1" - resolved "http://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= chunk-store-stream@^3.0.1: @@ -1565,6 +1572,13 @@ cli-cursor@^1.0.1, cli-cursor@^1.0.2: dependencies: restore-cursor "^1.0.1" +cli-cursor@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-table3@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" @@ -1702,11 +1716,16 @@ color-convert@^1.9.0, color-convert@^1.9.1: dependencies: color-name "1.1.3" -color-name@1.1.3, color-name@^1.0.0: +color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-string@^1.5.2: version "1.5.3" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" @@ -1715,7 +1734,7 @@ color-string@^1.5.2: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@3.0.x, color@^3.0.0: +color@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== @@ -1723,6 +1742,14 @@ color@3.0.x, color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +color@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" + integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + colornames@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" @@ -1759,14 +1786,7 @@ columnify@~1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@1.0.6: - version "1.0.6" - resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= - dependencies: - delayed-stream "~1.0.0" - -combined-stream@~1.0.5, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== @@ -1774,23 +1794,23 @@ combined-stream@~1.0.5, combined-stream@~1.0.6: delayed-stream "~1.0.0" command-exists@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.7.tgz#16828f0c3ff2b0c58805861ef211b64fc15692a8" - integrity sha512-doWDvhXCcW5LK0cIUWrOQ8oMFXJv3lEQCkJpGVjM8v9SV0uhqYXB943538tEA2CiaWqSyuYUGAm5ezDwEx9xlw== + version "1.2.8" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" + integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== commander@*, commander@^2.12.1, commander@^2.13.0, commander@^2.14.1, commander@^2.8.1, commander@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== commander@2.15.1: version "2.15.1" - resolved "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== commander@2.9.0: version "2.9.0" - resolved "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= dependencies: graceful-readlink ">= 1.0.0" @@ -1987,18 +2007,19 @@ core-util-is@1.0.2, core-util-is@~1.0.0: integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cors@^2.8.1: - version "2.8.4" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" - integrity sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY= + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: object-assign "^4" vary "^1" cosmiconfig@^5.0.2, cosmiconfig@^5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" - integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== + version "5.0.7" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" + integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== dependencies: + import-fresh "^2.0.0" is-directory "^0.3.1" js-yaml "^3.9.0" parse-json "^4.0.0" @@ -2030,12 +2051,12 @@ create-torrent@^3.24.5, create-torrent@^3.33.0: simple-sha1 "^2.0.0" cron-parser@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.6.0.tgz#ae2514ceda9ccb540256e201bdd23ae814e03674" - integrity sha512-KGfDDTjBIx85MnVYcdhLccoJH/7jcYW+5Z/t3Wsg2QlJhmmjf+97z+9sQftS71lopOYYapjEKEvmWaCsym5Z4g== + version "2.7.1" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.1.tgz#d08c00b1e220db564fd1cecb5019c8dd450f84d1" + integrity sha512-gupE4KsGEVtp5X4YbUlQx6NiFt3e+VOhREPI4ZXS9FT5JcOjfw2ey1EUv3J6XWrxHR1aKYrk4uJDmdRjG39bgA== dependencies: is-nan "^1.2.1" - moment-timezone "^0.5.0" + moment-timezone "^0.5.23" cross-spawn@^3.0.0: version "3.0.1" @@ -2145,23 +2166,23 @@ dateformat@~1.0.12: meow "^3.3.0" deasync@^0.1.4: - version "0.1.13" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea" - integrity sha512-/6ngYM7AapueqLtvOzjv9+11N2fHDSrkxeMF1YPE20WIfaaawiBg+HZH1E5lHrcJxlKR42t6XPOEmMmqcAsU1g== + version "0.1.14" + resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.14.tgz#232ea2252b443948cad033d792eb3b24b0a3d828" + integrity sha512-wN8sIuEqIwyQh72AG7oY6YQODCxIp1eXzEZlZznBuwDF8Q03Tdy9QNp1BNZXeadXoklNrw+Ip1fch+KXo/+ASw== dependencies: bindings "~1.2.1" - nan "^2.0.7" + node-addon-api "^1.6.0" debug@2.2.0, debug@~2.2.0: version "2.2.0" - resolved "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo= dependencies: ms "0.7.1" debug@2.3.3: version "2.3.3" - resolved "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" integrity sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w= dependencies: ms "0.7.2" @@ -2181,9 +2202,16 @@ debug@3.1.0: ms "2.0.0" debug@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" - integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== dependencies: ms "^2.1.1" @@ -2228,7 +2256,7 @@ deep-eql@0.1.3: dependencies: type-detect "0.1.1" -deep-eql@^3.0.0: +deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== @@ -2296,17 +2324,16 @@ defined@^1.0.0: resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= dependencies: - globby "^5.0.0" + globby "^6.1.0" is-path-cwd "^1.0.0" is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" + p-map "^1.1.1" + pify "^3.0.0" rimraf "^2.2.8" delayed-stream@~1.0.0: @@ -2320,16 +2347,11 @@ delegates@^1.0.0: integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= denque@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.3.0.tgz#681092ef44a630246d3f6edb2a199230eae8e76b" - integrity sha512-4SRaSj+PqmrS1soW5/Avd7eJIM2JJIqLLmwhRqIGleZM/8KwZq80njbSS2Iqas+6oARkSkLDHEk4mm78q3JlIg== - -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= + version "1.4.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.0.tgz#79e2f0490195502107f24d9553f374837dabc916" + integrity sha512-gh513ac7aiKrAgjiIBWZG0EASyDF9p4JMWwKA8YU5s9figrL5SRNEMT6FDynsegakuhWd1wVqTvqvqAoDxw7wQ== -depd@^1.1.0, depd@~1.1.0, depd@~1.1.1, depd@~1.1.2: +depd@^1.1.0, depd@~1.1.0, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -2426,9 +2448,9 @@ dom-serializer@0, dom-serializer@~0.1.0: entities "~1.1.1" domelementtype@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= + version "1.2.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.2.1.tgz#578558ef23befac043a1abb0db07635509393479" + integrity sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA== domelementtype@~1.1.1: version "1.1.3" @@ -2493,13 +2515,13 @@ dot-prop@^4.1.0: dotenv@^5.0.1: version "5.0.1" - resolved "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== dottie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.0.tgz#da191981c8b8d713ca0115d5898cf397c2f0ddd0" - integrity sha1-2hkZgci41xPKARXViYzzl8Lw3dA= + version "2.0.1" + resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.1.tgz#697ad9d72004db7574d21f892466a3c285893659" + integrity sha512-ch5OQgvGDK2u8pSZeSYAQaV/lczImd7pMJ7BcEPXmnFVjy4yJIzP6CsODJUTH8mg1tyH1Z2abOiuJO3DjZ/GBw== double-ended-queue@^2.1.0-0: version "2.1.0-0" @@ -2513,13 +2535,13 @@ duplexer3@^0.1.4: duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" - resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" - integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== + version "3.6.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -2640,14 +2662,14 @@ entities@1.0: integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== env-variable@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.4.tgz#0d6280cf507d84242befe35a512b5ae4be77c54e" - integrity sha512-+jpGxSWG4vr6gVxUHOc4p+ilPnql7NzZxOZBxNldsKGjCF+97df3CbuX7XMaDa5oAVkKQj4rKp38rYdC4VcpDg== + version "0.0.5" + resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" + integrity sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA== err-code@^1.0.0: version "1.1.2" @@ -2676,7 +2698,7 @@ error@^7.0.0: string-template "~0.2.1" xtend "~4.0.0" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.46" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw== @@ -2719,9 +2741,9 @@ es6-promisify@^5.0.0: es6-promise "^4.0.3" es6-promisify@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.0.tgz#b526a75eaa5ca600e960bf3d5ad98c40d75c7203" - integrity sha512-8Tbqjrb8lC85dd81haajYwuRmiU2rkqNAFnlvQOJeeKqdUloIlI+JcUqeJruV4rCm5Y7oNU7jfs2FbmxhRR/2g== + version "6.0.1" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.1.tgz#6edaa45f3bd570ffe08febce66f7116be4b1cdb6" + integrity sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw== es6-set@~0.1.5: version "0.1.5" @@ -2762,7 +2784,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -2779,7 +2801,7 @@ escope@^3.6.0: eslint@^2.7.0: version "2.13.1" - resolved "http://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" integrity sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE= dependencies: chalk "^1.1.3" @@ -2900,7 +2922,7 @@ event-stream@~3.3.0: eventemitter2@~0.4.13: version "0.4.14" - resolved "http://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= execa@^0.10.0: @@ -2929,13 +2951,13 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01" - integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA== +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" + cross-spawn "^6.0.0" + get-stream "^4.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" @@ -2985,9 +3007,9 @@ express-oauth-server@^2.0.0: oauth2-server "3.0.0" express-rate-limit@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-3.2.0.tgz#92368aab15a6b17c68399d4d4b4289850f13c4fe" - integrity sha512-oJpdtmt+mJivUCS9TVnlDAh/otWno4AaKz2cZkhbfpBna4CXB/pQjyUfWv2G7/09T3HqOIvB/93kU+eSmbeeTw== + version "3.3.2" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-3.3.2.tgz#c5b2fc770d533878ce01a5dbbfadca340f3b8915" + integrity sha512-JZnnTf6ZX9ntQalCZiPHsOG9zhxyRGqfaur+WD4yIcdqzf5FJQao5dmxXbWHk093K8WRSYwNwnzkFXVYnBNudg== dependencies: defaults "^1.0.3" @@ -3001,7 +3023,7 @@ express-validator@^5.0.0: express@4.13.4: version "4.13.4" - resolved "http://registry.npmjs.org/express/-/express-4.13.4.tgz#3c0b76f3c77590c8345739061ec0bd3ba067ec24" + resolved "https://registry.yarnpkg.com/express/-/express-4.13.4.tgz#3c0b76f3c77590c8345739061ec0bd3ba067ec24" integrity sha1-PAt288d1kMg0VzkGHsC9O6Bn7CQ= dependencies: accepts "~1.2.12" @@ -3031,13 +3053,13 @@ express@4.13.4: vary "~1.0.1" express@^4.12.4, express@^4.13.3: - version "4.16.3" - resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" - integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== dependencies: accepts "~1.3.5" array-flatten "1.1.1" - body-parser "1.18.2" + body-parser "1.18.3" content-disposition "0.5.2" content-type "~1.0.4" cookie "0.3.1" @@ -3054,10 +3076,10 @@ express@^4.12.4, express@^4.13.3: on-finished "~2.3.0" parseurl "~1.3.2" path-to-regexp "0.1.7" - proxy-addr "~2.0.3" - qs "6.5.1" + proxy-addr "~2.0.4" + qs "6.5.2" range-parser "~1.2.0" - safe-buffer "5.1.1" + safe-buffer "5.1.2" send "0.16.2" serve-static "1.13.2" setprototypeof "1.1.0" @@ -3081,7 +3103,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.0, extend@~3.0.1, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -3125,10 +3147,10 @@ eyes@0.1.x: resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -3159,6 +3181,11 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" +feature-policy@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/feature-policy/-/feature-policy-0.2.0.tgz#22096de49ab240176878ffe2bde2f6ff04d48c43" + integrity sha512-2hGrlv6efG4hscYVZeaYjpzpT6I2OZgYqE2yDUzeAcKj2D1SH0AsEzqJNXzdoglEddcIXQQYop3lD97XpG75Jw== + fecha@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" @@ -3286,13 +3313,13 @@ findup-sync@~0.3.0: glob "~5.0.0" flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" - integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== dependencies: circular-json "^0.3.1" - del "^2.0.2" graceful-fs "^4.1.2" + rimraf "~2.6.2" write "^0.2.1" flat@^4.1.0: @@ -3303,9 +3330,9 @@ flat@^4.1.0: is-buffer "~2.0.3" flatmap-stream@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.0.tgz#ed54e01422cd29281800914fcb968d58b685d5f1" - integrity sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA== + version "0.1.1" + resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.1.tgz#d34f39ef3b9aa5a2fc225016bd3adf28ac5ae6ea" + integrity sha512-lAq4tLbm3sidmdCN8G3ExaxH7cUCtP5mgDvrYowsx84dcYkJJ4I28N7gkxA6+YlSXzaGLJYIDEi9WGfXzMiXdw== flatten@^1.0.2: version "1.0.2" @@ -3343,13 +3370,13 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^2.3.1, form-data@~2.3.1, form-data@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= +form-data@^2.3.1, form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "1.0.6" + combined-stream "^1.0.6" mime-types "^2.1.12" formidable@^1.2.0: @@ -3363,12 +3390,9 @@ forwarded@~0.1.0, forwarded@~0.1.2: integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= foundation-sites@^6.4.1: - version "6.4.3" - resolved "https://registry.yarnpkg.com/foundation-sites/-/foundation-sites-6.4.3.tgz#ea89eb599badf6f03dd526c51f00bdb942a844f6" - integrity sha1-6onrWZut9vA91SbFHwC9uUKoRPY= - dependencies: - jquery ">=3.0.0" - what-input "^4.1.3" + version "6.5.0" + resolved "https://registry.yarnpkg.com/foundation-sites/-/foundation-sites-6.5.0.tgz#7bd4cb33977cbcb8a1cae5ad32c7c0de0fdbfc71" + integrity sha512-iV7+/4GxR4lQKxUh7geY6dxUSKbn6w+vbZzeG8U7JiTqStfPtTS+jaepKymw5OhrmD4BYpshyDktUiEshlY60g== fragment-cache@^0.2.1: version "0.2.1" @@ -3461,9 +3485,9 @@ fs-extra@^3.0.1: universalify "^0.1.0" fs-extra@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" - integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -3518,6 +3542,15 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +g-status@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" + integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== + dependencies: + arrify "^1.0.1" + matcher "^1.0.0" + simple-git "^1.85.0" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3558,10 +3591,10 @@ generic-pool@^3.4.0: resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.4.2.tgz#92ff7196520d670839a67308092a12aadf2f6a59" integrity sha512-H7cUpwCQSiJmAHM4c/aFu6fUfrhWXW1ncyh8ftxEPMu6AiYkHw9K8br720TGPZJbk5eOH2bynjZD1yPvdDAmag== -genfun@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" - integrity sha1-7RAEHy5KfxsKOEZtF6XD4n3x38E= +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== gentle-fs@^2.0.0, gentle-fs@^2.0.1: version "2.0.1" @@ -3592,10 +3625,10 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= -get-own-enumerable-property-symbols@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" - integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug== +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== get-port@^3.1.0: version "3.2.0" @@ -3617,6 +3650,13 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -3726,13 +3766,12 @@ globby@^0.1.1: async "^0.9.0" glob "^4.0.2" -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" - arrify "^1.0.0" glob "^7.0.3" object-assign "^4.0.1" pify "^2.0.0" @@ -3756,7 +3795,7 @@ gonzales-pe-sl@^4.2.3: got@^6.7.1: version "6.7.1" - resolved "http://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" @@ -3772,9 +3811,9 @@ got@^6.7.1: url-parse-lax "^1.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.11: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== graceful-fs@~2.0.2: version "2.0.3" @@ -3836,7 +3875,7 @@ grunt-contrib-concat@^1.0.1: grunt-contrib-connect@^1.0.2: version "1.0.2" - resolved "http://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz#5cf933b91a67386044273c0b2444603cd98879ba" + resolved "https://registry.yarnpkg.com/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz#5cf933b91a67386044273c0b2444603cd98879ba" integrity sha1-XPkzuRpnOGBEJzwLJERgPNmIebo= dependencies: async "^1.5.2" @@ -3959,9 +3998,9 @@ grunt-prettify@^0.4.0: underscore.string "~2.3.3" grunt-sass@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/grunt-sass/-/grunt-sass-3.0.1.tgz#2760207d7b78db84429d9fa77d22289a6fc903a0" - integrity sha512-eKmtsPmtO+cjE1wT0EkvgavsQCzT2x+2J1tS4SuoBu3j0CDpI6o3cJUJ5CxrbjaWULpLlsu0GFiOa6nYetnaqQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/grunt-sass/-/grunt-sass-3.0.2.tgz#b4f01567ce3df4460fcc788e9e5e4c65263425ed" + integrity sha512-Ogq4cWqBre71gZIkgxIxevgzZHSIIsrKu/5yvPDl4Mvib0A4TRTJEQUdpQ0YV1iai0DPjayz02vDJE6KUVHQ2w== grunt@^1.0.3: version "1.0.3" @@ -4009,20 +4048,12 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: - ajv "^5.3.0" + ajv "^6.5.5" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -4134,13 +4165,14 @@ helmet-csp@2.7.1: platform "1.3.5" helmet@^3.12.1: - version "3.13.0" - resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.13.0.tgz#d6d46763538f77b437be77f06d0af42078b2c656" - integrity sha512-rCYnlbOBkeP6fCo4sXZNu91vIAWlbVgolwnUANtnzPANRf2kJZ2a6yjRnCqG23Tyl2/ExvJ8bDg4xUdNCIWnrw== + version "3.15.0" + resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.15.0.tgz#fe0bb80e05d9eec589e3cbecaf5384409a3a64c9" + integrity sha512-j9JjtAnWJj09lqe/PEICrhuDaX30TeokXJ9tW6ZPhVH0+LMoihDeJ58CdWeTGzM66p6EiIODmgAaWfdeIWI4Gg== dependencies: dns-prefetch-control "0.1.0" dont-sniff-mimetype "1.0.0" expect-ct "0.1.1" + feature-policy "0.2.0" frameguard "3.0.0" helmet-crossdomain "0.3.0" helmet-csp "2.7.1" @@ -4165,9 +4197,9 @@ hide-powered-by@1.0.0: integrity sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys= highlight.js@^9.1.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" - integrity sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4= + version "9.13.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" + integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== hooker@^0.2.3, hooker@~0.2.3: version "0.2.3" @@ -4224,19 +4256,9 @@ http-cache-semantics@^3.8.1: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== -http-errors@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" - resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" @@ -4246,16 +4268,16 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: http-errors@~1.3.1: version "1.3.1" - resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" integrity sha1-GX4izevUGYWF6GlO9nhhl7ke2UI= dependencies: inherits "~2.0.1" statuses "1" http-parser-js@>=0.4.0: - version "0.4.13" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" - integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= + version "0.5.0" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" + integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== http-proxy-agent@^2.1.0: version "2.1.0" @@ -4300,12 +4322,12 @@ humanize-ms@^1.2.1: ms "^2.0.0" husky@^1.0.0-rc.4: - version "1.0.0-rc.14" - resolved "https://registry.yarnpkg.com/husky/-/husky-1.0.0-rc.14.tgz#e1380575fe4cf17e1ca98791395c1baafa8064c7" - integrity sha512-lxdl0+FrKhRXvhOW978oCHCiaXQAtwoR0hdaPY1CwKd+dgbtktepEvk/3DXwQ7L1YriuG/9HDc4AHlzQ0T6cNw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-1.1.4.tgz#92f61383527d2571e9586234e5864356bfaceaa9" + integrity sha512-cZjGpS7qsaBSo3fOMUuR7erQloX3l5XzL1v/RkIqU6zrQImDdU70z5Re9fGDp7+kbYlM2EtS4aYMlahBeiCUGw== dependencies: cosmiconfig "^5.0.6" - execa "^0.9.0" + execa "^1.0.0" find-up "^3.0.0" get-stdin "^6.0.0" is-ci "^1.2.1" @@ -4320,11 +4342,6 @@ i@0.3.x: resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d" integrity sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0= -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4376,6 +4393,14 @@ immediate-chunk-store@^2.0.0: resolved "https://registry.yarnpkg.com/immediate-chunk-store/-/immediate-chunk-store-2.0.0.tgz#f313fd0cc71396d8911ad031179e1cccfda3da18" integrity sha512-5s6NiCGbtWc+OQA60jrre54w12U7tynIyUNjO5LJjNA5lWwvCv6640roq8Wk/wIuaqnd4Pgtp453OyJ7hbONkQ== +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -4452,7 +4477,7 @@ init-package-json@^1.10.3: inquirer@^0.12.0: version "0.12.0" - resolved "http://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" integrity sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34= dependencies: ansi-escapes "^1.1.0" @@ -4603,7 +4628,7 @@ is-buffer@~2.0.3: is-builtin-module@^1.0.0: version "1.0.0" - resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" @@ -4615,13 +4640,20 @@ is-ci@^1.0.10, is-ci@^1.2.1: dependencies: ci-info "^1.5.0" -is-cidr@^2.0.5, is-cidr@^2.0.6: +is-cidr@^2.0.6: version "2.0.7" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.7.tgz#0fd4b863c26b2eb2d157ed21060c4f3f8dd356ce" integrity sha512-YfOm5liUO1RoYfFh+lhiGNYtbLzem7IXzFqvfjXh+zLCEuAiznTBlQ2QcMWxsgYeOFmjzljOxJfmZID4/cRBAQ== dependencies: cidr-regex "^2.0.10" +is-cidr@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.0.0.tgz#1acf35c9e881063cd5f696d48959b30fed3eed56" + integrity sha512-8Xnnbjsb0x462VoYiGlhEi+drY8SFwrHiSYuzc/CEwco55vkehTaxAyIjEdpi3EMvLPPJAJi9FlzP+h+03gp0Q== + dependencies: + cidr-regex "^2.0.10" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4764,7 +4796,7 @@ is-number@^3.0.0: is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" - resolved "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-observable@^1.1.0: @@ -4902,11 +4934,6 @@ jest-validate@^23.5.0: leven "^2.1.0" pretty-format "^23.6.0" -jquery@>=3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" - integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg== - js-base64@^2.1.8: version "2.4.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" @@ -4914,7 +4941,7 @@ js-base64@^2.1.8: js-beautify@~1.5.4: version "1.5.10" - resolved "http://registry.npmjs.org/js-beautify/-/js-beautify-1.5.10.tgz#4d95371702699344a516ca26bf59f0a27bb75719" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.5.10.tgz#4d95371702699344a516ca26bf59f0a27bb75719" integrity sha1-TZU3FwJpk0SlFsomv1nwonu3Vxk= dependencies: config-chain "~1.1.5" @@ -4983,10 +5010,10 @@ json-refs@^2.1.6: slash "^1.0.0" uri-js "^3.0.2" -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" @@ -5019,7 +5046,7 @@ json5@^1.0.1: jsonfile@^2.1.0: version "2.4.0" - resolved "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= optionalDependencies: graceful-fs "^4.1.6" @@ -5196,9 +5223,9 @@ known-css-properties@^0.3.0: integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ== kuler@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.0.tgz#904ad31c373b781695854d32be33818bf1d60250" - integrity sha512-oyy6pu/yWRjiVfCoJebNUKFL061sNtrs9ejKTbirIwY3oiHmENVCSkHhxDV85Dkm7JYR/czMCBeoM87WilTdSg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" + integrity sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ== dependencies: colornames "^1.1.1" @@ -5288,31 +5315,34 @@ libnpx@^10.2.0: y18n "^4.0.0" yargs "^11.0.0" -libxmljs@0.19.3: - version "0.19.3" - resolved "https://registry.yarnpkg.com/libxmljs/-/libxmljs-0.19.3.tgz#3f7232a4123952b338f5334e55ea1396fa0d9cd2" - integrity sha512-0fpvneF7qpOe6PLbwFXZx+deZ/U2nethmnVLUZ9aH0Pz9Nfha9S+rlIGIS4ixtmUjwtA0VSE4LvIjVCEvboPpw== +libxmljs@0.19.5: + version "0.19.5" + resolved "https://registry.yarnpkg.com/libxmljs/-/libxmljs-0.19.5.tgz#b2f34cc12fd6a3e43670c604c42a902f339ea54d" + integrity sha512-mKlafbSIsgZCXcha6loyMN/Q1kcbNJ5N3VC/rS0vrJXdI99TzEI2i2rPp10HN/B70vSPh6bq6nHhoCT19eGtTw== dependencies: bindings "~1.3.0" nan "~2.10.0" node-pre-gyp "~0.11.0" -lint-staged@^7.1.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d" - integrity sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw== +lint-staged@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.0.4.tgz#d3c909fcf7897152cdce2d6e42500cd9b5b41a0d" + integrity sha512-Rs0VxXoyFqHMrPQgKAMy+O907+m5Po71UVPhBi7BUBwU7ZZ2aoc+mZmpOX3DVPCoTcy6+hqJa9yIZfacNpJHdg== dependencies: chalk "^2.3.1" commander "^2.14.1" cosmiconfig "^5.0.2" debug "^3.1.0" dedent "^0.7.0" - execa "^0.9.0" + del "^3.0.0" + execa "^1.0.0" find-parent-dir "^0.3.0" + g-status "^2.0.2" is-glob "^4.0.0" is-windows "^1.0.2" jest-validate "^23.5.0" - listr "^0.14.1" + listr "^0.14.2" + listr-update-renderer "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update" lodash "^4.17.5" log-symbols "^2.2.0" micromatch "^3.1.8" @@ -5321,7 +5351,7 @@ lint-staged@^7.1.0: path-is-inside "^1.0.2" pify "^3.0.0" please-upgrade-node "^3.0.2" - staged-git-files "1.1.1" + staged-git-files "1.1.2" string-argv "^0.0.2" stringify-object "^3.2.2" @@ -5330,10 +5360,9 @@ listr-silent-renderer@^1.1.1: resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= -listr-update-renderer@^0.4.0: +listr-update-renderer@^0.4.0, "listr-update-renderer@https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update": version "0.4.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" - integrity sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc= + resolved "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update#06073fa93166277607a7814f4e1f83960081414c" dependencies: chalk "^1.1.3" cli-truncate "^0.2.1" @@ -5341,7 +5370,7 @@ listr-update-renderer@^0.4.0: figures "^1.7.0" indent-string "^3.0.0" log-symbols "^1.0.2" - log-update "^1.0.2" + log-update "^2.3.0" strip-ansi "^3.0.1" listr-verbose-renderer@^0.4.0: @@ -5354,7 +5383,7 @@ listr-verbose-renderer@^0.4.0: date-fns "^1.27.2" figures "^1.7.0" -listr@^0.14.1: +listr@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.2.tgz#cbe44b021100a15376addfc2d79349ee430bfe14" integrity sha512-vmaNJ1KlGuGWShHI35X/F8r9xxS0VTHh9GejVXwSN20fG5xpq3Jh4bJbnumoT6q5EDM/8/YP1z3YMtQbFmhuXw== @@ -5370,9 +5399,9 @@ listr@^0.14.1: rxjs "^6.1.0" livereload-js@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.3.0.tgz#c3ab22e8aaf5bf3505d80d098cbad67726548c9a" - integrity sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" + integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== load-ip-set@^2.1.0: version "2.1.0" @@ -5387,7 +5416,7 @@ load-ip-set@^2.1.0: load-json-file@^1.0.0: version "1.1.0" - resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" @@ -5691,22 +5720,22 @@ lodash.without@~4.4.0: lodash@4.17.4: version "4.17.4" - resolved "http://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= lodash@=3.10.1, lodash@^3.2.0: version "3.10.1" - resolved "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.0.0, lodash@^4.11.1, lodash@^4.17.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.2, lodash@~4.17.10, lodash@~4.17.5: +lodash@^4.0.0, lodash@^4.11.1, lodash@^4.17.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.2, lodash@~4.17.10, lodash@~4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== lodash@~2.4.1: version "2.4.2" - resolved "http://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" integrity sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= log-symbols@^1.0.2: @@ -5723,13 +5752,14 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" logform@^1.9.1: version "1.10.0" @@ -5857,9 +5887,9 @@ make-fetch-happen@^3.0.0: ssri "^5.2.4" map-age-cleaner@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" - integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" @@ -5897,6 +5927,13 @@ marked@^0.3.2, marked@^0.3.5: resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== +matcher@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" + integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== + dependencies: + escape-string-regexp "^1.0.4" + maxmin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" @@ -5926,7 +5963,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mediasource@^2.0.0, mediasource@^2.1.0: +mediasource@^2.1.0, mediasource@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.2.2.tgz#2fe826f14e51da97fa4bf87be7b808a0b11d3a4c" integrity sha512-yIyAJMcu1mudTkxZ0jDAKnZJJba4eWPCxxtZRMpoaA4/AI7m7nqbRjmdxmi+x3hKTohb5vC9Yd3IBF/SUzp1vQ== @@ -5992,9 +6029,9 @@ merge-descriptors@1.0.1: integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= merge@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: version "1.1.2" @@ -6020,17 +6057,17 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: snapdragon "^0.8.1" to-regex "^3.0.2" -mime-db@~1.36.0: - version "1.36.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" - integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.6: - version "2.1.20" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" - integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== dependencies: - mime-db "~1.36.0" + mime-db "~1.37.0" mime@1.3.4: version "1.3.4" @@ -6091,36 +6128,36 @@ minimatch@^2.0.1: minimist@0.0.8: version "0.0.8" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@1.1.x: version "1.1.3" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" - integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w== +minipass@^2.2.1, minipass@^2.3.3, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== +minizlib@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" + integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== dependencies: minipass "^2.2.1" @@ -6166,14 +6203,14 @@ mixin-deep@^1.2.0: mkdirp@0.5.1, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" - resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" mkdirp@~0.3.5: version "0.3.5" - resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" integrity sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc= mocha@^5.0.0: @@ -6193,10 +6230,10 @@ mocha@^5.0.0: mkdirp "0.5.1" supports-color "5.4.0" -moment-timezone@^0.5.0, moment-timezone@^0.5.14: - version "0.5.21" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.21.tgz#3cba247d84492174dbf71de2a9848fa13207b845" - integrity sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A== +moment-timezone@^0.5.14, moment-timezone@^0.5.23: + version "0.5.23" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463" + integrity sha512-WHFH85DkCfiNMDX5D3X7hpNH3/PUhjTGcD0U1SgfBGZxJ3qUmJh5FdvaFjcClxOvB3rzdfj4oRffbI38jEnC1w== dependencies: moment ">= 2.9.0" @@ -6269,15 +6306,15 @@ ms@^2.0.0, ms@^2.1.1: integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multer@^1.1.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.3.1.tgz#c3fb3b35f50c7eefe873532f90d3dde02ce6e040" - integrity sha512-JHdEoxkA/5NgZRo91RNn4UT+HdcJV9XUo01DTkKC7vo1erNIngtuaw9Y0WI8RdTlyi+wMIbunflhghzVLuGJyw== + version "1.4.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.1.tgz#24b12a416a22fec2ade810539184bf138720159e" + integrity sha512-zzOLNRxzszwd+61JFuAo0fxdQfvku12aNJgnla0AQ+hHxFmfc/B7jBVuPr5Rmvu46Jze/iJrFpSOsD7afO8SDw== dependencies: - append-field "^0.1.0" + append-field "^1.0.0" busboy "^0.2.11" concat-stream "^1.5.2" mkdirp "^0.5.1" - object-assign "^3.0.0" + object-assign "^4.1.1" on-finished "^2.3.0" type-is "^1.6.4" xtend "^4.0.0" @@ -6300,16 +6337,16 @@ mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@2.10.0, nan@~2.10.0: +nan@2.11.1, nan@^2.10.0, nan@^2.11.1, nan@^2.9.2: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== + +nan@~2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== -nan@^2.0.7, nan@^2.10.0, nan@^2.11.0, nan@^2.9.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" - integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -6327,6 +6364,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-build-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" + integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA== + native-promise-only@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" @@ -6334,13 +6376,13 @@ native-promise-only@^0.8.1: ncp@1.0.x: version "1.0.1" - resolved "http://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246" integrity sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY= -needle@^2.2.0, needle@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" - integrity sha512-GPL22d/U9cai87FcCPO6e+MT3vyHS2j+zwotakDc7kE2DtUAqFKMXLJCTtRp+5S75vXIwQPvIxkvlctxf9q4gQ== +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -6390,12 +6432,17 @@ nocache@2.0.0: integrity sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA= node-abi@^2.2.0: - version "2.4.4" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.4.tgz#410d8968809fe616dc078a181c44a370912f12fd" - integrity sha512-DQ9Mo2mf/XectC+s6+grPPRQ1Z9gI3ZbrGv6nyXRkjwT3HrE0xvtvrfnH7YHYBLgC/KLadg+h3XHnhZw1sv88A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.5.0.tgz#942e1a78bce764bc0c1672d5821e492b9d032052" + integrity sha512-9g2twBGSP6wIR5PW7tXvAWnEWKJDH/VskdXp168xsw9VVxpEGov8K4jsP4/VeoC7b2ZAyzckvMCuQuQlw44lXg== dependencies: semver "^5.4.1" +node-addon-api@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.1.tgz#a9881c8dbc6400bac6ddedcb96eccf8051678536" + integrity sha512-GcLOYrG5/enbqH4SMsqXt6GQUQGGnDnE3FLDZzXYkCgQHuZV5UDFR+EboeY8kpG0avroyOjpFQ2qLEBosFcRIA== + node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" @@ -6433,18 +6480,18 @@ node-gyp@^3.8.0: tar "^2.0.0" which "1" -node-pre-gyp@0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" - integrity sha1-8RwHUW3ZL4cZnbx+GDjqt81WyeA= +node-pre-gyp@0.11.0, node-pre-gyp@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" + integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" - needle "^2.2.0" + needle "^2.2.1" nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" @@ -6465,26 +6512,10 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-pre-gyp@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" - integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - node-sass@^4.9.0: - version "4.9.3" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" - integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== + version "4.10.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.10.0.tgz#dcc2b364c0913630945ccbf7a2bbf1f926effca4" + integrity sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -6501,7 +6532,7 @@ node-sass@^4.9.0: nan "^2.10.0" node-gyp "^3.8.0" npmlog "^4.0.0" - request "2.87.0" + request "^2.88.0" sass-graph "^2.2.4" stdout-stream "^1.4.0" "true-case-path" "^1.0.2" @@ -6536,11 +6567,11 @@ nodemailer@^4.4.2: integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== nodemon@^1.11.0: - version "1.18.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.4.tgz#873f65fdb53220eb166180cf106b1354ac5d714d" - integrity sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg== + version "1.18.6" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.6.tgz#89b1136634d6c0afc7de24cc932a760e999e2c76" + integrity sha512-4pHQNYEZun+IkIC2jCaXEhkZnfA7rQe73i8RkdRyDJls/K+WxR7IpI5uNUsAvQ0zWvYcCDNGD+XVtw2ZG86/uQ== dependencies: - chokidar "^2.0.2" + chokidar "^2.0.4" debug "^3.1.0" ignore-by-default "^1.0.1" minimatch "^3.0.4" @@ -6650,9 +6681,9 @@ npm-logical-tree@^1.2.1: validate-npm-package-name "^3.0.0" npm-packlist@^1.1.10, npm-packlist@^1.1.11, npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -6665,10 +6696,11 @@ npm-path@^2.0.2: which "^1.2.10" npm-pick-manifest@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.1.0.tgz#dc381bdd670c35d81655e1d5a94aa3dd4d87fce5" - integrity sha512-q9zLP8cTr8xKPmMZN3naxp1k/NxVFsjxN6uWuO1tiw9gxg7wZWQ/b5UTfzD0ANw2q1lQxdLKTeCCksq+bPSgbQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" + integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== dependencies: + figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" semver "^5.4.1" @@ -6744,7 +6776,7 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -npm@^6.4.1: +npm@*: version "6.4.1" resolved "https://registry.yarnpkg.com/npm/-/npm-6.4.1.tgz#4f39f9337b557a28faed4a771d5c8802d6b4288b" integrity sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg== @@ -6875,9 +6907,9 @@ nsdeclare@0.1.0: integrity sha1-ENqhU2QjgtPPLAGpFvTrIKEosZ8= nth-check@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" @@ -6886,11 +6918,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -6913,12 +6940,7 @@ object-assign@4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -6982,9 +7004,16 @@ one-time@0.0.4: onetime@^1.0.0: version "1.1.0" - resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + open@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" @@ -6997,7 +7026,7 @@ opener@^1.5.0: opn@^4.0.0: version "4.0.2" - resolved "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" integrity sha1-erwi5kTf9jsKltWrfyeQwPAavJU= dependencies: object-assign "^4.0.1" @@ -7035,7 +7064,7 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: os-locale@^1.4.0: version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= dependencies: lcid "^1.0.0" @@ -7321,14 +7350,14 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -pathval@^1.0.0: +pathval@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= pause-stream@^0.0.11: version "0.0.11" - resolved "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= dependencies: through "~2.3" @@ -7343,9 +7372,9 @@ peek-stream@^1.1.1: through2 "^2.0.3" pem@^1.12.3: - version "1.13.1" - resolved "https://registry.yarnpkg.com/pem/-/pem-1.13.1.tgz#57dd3e0c044fbcf709db026a737e1aad7dc8330f" - integrity sha512-gA/kl8/MWWBaVRRv8M4iRkaJXEbp0L9NyG5ggZlbvQxylZAq5K5wGesAZifs89kwL/m4EGdekXtBMOzXM9rv7w== + version "1.13.2" + resolved "https://registry.yarnpkg.com/pem/-/pem-1.13.2.tgz#7b68acbb590fdc13772bca487983cb84cd7b443e" + integrity sha512-MPJWuEb/r6AG+GpZi2JnfNtGAZDeL/8+ERKwXEWRuST5i+4lq/Uy36B352OWIUSPQGH+HR1HEDcIDi+8cKxXNg== dependencies: es6-promisify "^6.0.0" md5 "^2.2.1" @@ -7382,9 +7411,9 @@ pg-hstore@^2.3.2: underscore "^1.7.0" pg-pool@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.3.tgz#c022032c8949f312a4f91fb6409ce04076be3257" - integrity sha1-wCIDLIlJ8xKk+R+2QJzgQHa+Mlc= + version "2.0.4" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.4.tgz#05ad0f2d9437d89c94ccc4f4d0a44ac65ade865b" + integrity sha512-Mi2AsmlFkVMpI28NreaDkz5DkfxLOG16C/HNwi091LDlOiDiQACtAroLxSd1vIS2imBqxdjjO9cQZg2CwsOPbw== pg-types@~1.12.1: version "1.12.1" @@ -7397,11 +7426,11 @@ pg-types@~1.12.1: postgres-interval "^1.1.0" pg@^7.4.1: - version "7.4.3" - resolved "https://registry.yarnpkg.com/pg/-/pg-7.4.3.tgz#f7b6f93f5340ecc2596afbb94a13e3d6b609834b" - integrity sha1-97b5P1NA7MJZavu5ShPj1rYJg0s= + version "7.6.1" + resolved "https://registry.yarnpkg.com/pg/-/pg-7.6.1.tgz#42c68aed37bf38b813616e3d21f4338f350c1b79" + integrity sha512-rAItIkYrRaNGinZN/Hs8F9R5mQjQSPlnzxPF+eCimSl92qnuNGR42gkpOQKP1bnvTwkSjRTBL+VNC5EcFhtCuQ== dependencies: - buffer-writer "1.0.1" + buffer-writer "2.0.0" packet-reader "0.3.1" pg-connection-string "0.1.3" pg-pool "~2.0.3" @@ -7545,22 +7574,23 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" -prebuild-install@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-4.0.0.tgz#206ce8106ce5efa4b6cf062fc8a0a7d93c17f3a8" - integrity sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA== +prebuild-install@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.1.tgz#87ba8cf17c65360a75eefeb3519e87973bf9791d" + integrity sha512-9DAccsInWHB48TBQi2eJkLPE049JuAI6FjIH0oIrij4bpDVEbX6JvlWRAcAAlUqBHhjgq0jNqA3m3bBXWm9v6w== dependencies: detect-libc "^1.0.3" expand-template "^1.0.2" github-from-package "0.0.0" minimist "^1.2.0" mkdirp "^0.5.1" + napi-build-utils "^1.0.1" node-abi "^2.2.0" noop-logger "^0.1.1" npmlog "^4.0.1" os-homedir "^1.0.1" pump "^2.0.1" - rc "^1.1.6" + rc "^1.2.7" simple-get "^2.7.0" tar-fs "^1.13.0" tunnel-agent "^0.6.0" @@ -7655,11 +7685,11 @@ proto-list@~1.2.1: integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= protoduck@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.0.tgz#752145e6be0ad834cb25716f670a713c860dce70" - integrity sha512-agsGWD8/RZrS4ga6v82Fxb0RHIS2RZnbsSue6A9/MBRhB/jcqOANAMNrqM9900b8duj+Gx+T/JMy5IowDoO/hQ== + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: - genfun "^4.0.1" + genfun "^5.0.0" proxy-addr@~1.0.10: version "1.0.10" @@ -7669,7 +7699,7 @@ proxy-addr@~1.0.10: forwarded "~0.1.0" ipaddr.js "1.0.5" -proxy-addr@~2.0.3: +proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== @@ -7759,20 +7789,15 @@ qs@4.0.0: resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" integrity sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc= -qs@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== - -qs@6.5.2, qs@^6.1.0, qs@^6.4.0, qs@^6.5.1, qs@~6.5.1, qs@~6.5.2: +qs@6.5.2, qs@^6.1.0, qs@^6.4.0, qs@^6.5.1, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.1.0.tgz#01e7d69f6a0940dac67a937d6c6325647aa4532a" - integrity sha512-pNB/Gr8SA8ff8KpUFM36o/WFAlthgaThka5bV19AD9PNTH20Pwq5Zxodif2YyHwrctp6SkL4GqlOot0qR/wGaw== + version "6.2.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.2.0.tgz#468edeb542b7e0538f9f9b1aeb26f034f19c86e1" + integrity sha512-5wupExkIt8RYL4h/FE+WTg3JHk62e6fFPWtAZA9J5IWK1PfTfKkMS93HBUHcFpeYi9KsY5pFbh+ldvEyaz5MyA== dependencies: decode-uri-component "^0.2.0" strict-uri-encode "^2.0.0" @@ -7819,23 +7844,12 @@ range-parser@~1.0.3: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" integrity sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU= -range-slice-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-1.2.0.tgz#01ba954276052b783900e63d6118d8fcf3875d7f" - integrity sha1-AbqVQnYFK3g5AOY9YRjY/POHXX8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= +range-slice-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-2.0.0.tgz#1f25fc7a2cacf9ccd140c46f9cf670a1a7fe3ce6" + integrity sha512-PPYLwZ63lXi6Tv2EZ8w3M4FzC0rVqvxivaOVS8pXSp5FMIHFnvi4MWHL3UdFLhwSy50aNtJsgjY0mBC6oFL26Q== dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" + readable-stream "^3.0.2" raw-body@2.3.3: version "2.3.3" @@ -7855,7 +7869,7 @@ raw-body@~1.1.0: bytes "1" string_decoder "0.10" -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -7866,9 +7880,9 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7, rc@^1.2.7: strip-json-comments "~2.0.1" rdf-canonize@^0.2.1: - version "0.2.4" - resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-0.2.4.tgz#1b46eb01500b6800348ac5fe0953c1be226b1446" - integrity sha512-xwAEHJt8FTe4hP9CjFgwQPFdszu4iwEintk31+9eh0rljC28vm9EhoaIlC1rQx5LaCB5oHom4+yoei4+DTdRjQ== + version "0.2.5" + resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-0.2.5.tgz#dc761d42a2e9e6bf6eec7e0e352fd5b10ff4e75a" + integrity sha512-ZSOcoziIkics9lZvFRoqRHUWoITLbXeKqXNxTuvchTf9c74/yOzzZCKxS+aTCGQp81fQZhnKUM/NsgyiBS0Mig== dependencies: bindings "^1.3.0" nan "^2.10.0" @@ -7952,9 +7966,9 @@ read@1, read@1.0.x, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.3, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.2, readable-stream@^2.3.4, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.3, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.2, readable-stream@^2.3.4, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" @@ -7967,7 +7981,7 @@ read@1, read@1.0.x, read@~1.0.1, read@~1.0.7: readable-stream@1.1: version "1.1.13" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= dependencies: core-util-is "~1.0.0" @@ -7977,7 +7991,7 @@ readable-stream@1.1: readable-stream@1.1.x, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.1.13-1, readable-stream@~1.1.10: version "1.1.14" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= dependencies: core-util-is "~1.0.0" @@ -7987,7 +8001,7 @@ readable-stream@1.1.x, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1 "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" @@ -7996,9 +8010,9 @@ readable-stream@1.1.x, "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1 string_decoder "~0.10.x" readable-stream@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.3.tgz#a4db8813e3e0b87abdc01d5d5dbae828e59744b5" - integrity sha512-CzN1eAu5Pmh4EaDlJp1g5E37LIHR24b82XlMWRQlPFjhvOYKa4HhClRsQO21zhdDWUpdWfiKt9/L/ZL2+vwxCw== + version "3.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz#351302e4c68b5abd6a2ed55376a7f9a25be3057a" + integrity sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -8053,9 +8067,9 @@ redent@^1.0.0: strip-indent "^1.0.1" redis-commands@^1.2.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" - integrity sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.4.0.tgz#52f9cf99153efcce56a8f86af986bd04e988602f" + integrity sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw== redis-parser@^2.4.0, redis-parser@^2.6.0: version "2.6.0" @@ -8151,32 +8165,6 @@ request-progress@^2.0.1: dependencies: throttleit "^1.0.0" -request@2.87.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -8226,11 +8214,28 @@ resolve-from@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pkg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-1.0.0.tgz#e19a15e78aca2e124461dc92b2e3943ef93494d9" + integrity sha1-4ZoV54rKLhJEYdySsuOUPvk0lNk= + dependencies: + resolve-from "^2.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8267,6 +8272,14 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -8354,17 +8367,12 @@ rxjs@6.2.2: tslib "^1.9.0" rxjs@^6.1.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" - integrity sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw== + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== dependencies: tslib "^1.9.0" -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - safe-buffer@5.1.2, safe-buffer@^5.0.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -8423,13 +8431,14 @@ sax@>=0.6.0, sax@^1.2.4: integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scripty@^1.5.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/scripty/-/scripty-1.7.2.tgz#92367b724cb77b086729691f7b01aa57f3ddd356" - integrity sha1-kjZ7cky3ewhnKWkfewGqV/Pd01Y= + version "1.8.0" + resolved "https://registry.yarnpkg.com/scripty/-/scripty-1.8.0.tgz#951f0b4bc3e235844b7f5355f58d31e012e0b806" + integrity sha512-KMbC6r/Afga4oWcdh5Rnr9eqsfvIPZqVnfrG9pxqwYUn4BJyBggzukagcHaDSbl1WHglAd2tVgGsoMpYtbbCMA== dependencies: - async "^1.5.2" + async "^2.6.1" glob "^7.0.3" lodash "^4.8.2" + resolve-pkg "^1.0.0" scss-tokenizer@^0.2.3: version "0.2.3" @@ -8451,10 +8460,10 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== semver@4.3.2: version "4.3.2" @@ -8532,10 +8541,10 @@ sequelize-typescript@0.6.6: es6-shim "0.35.3" glob "7.1.2" -sequelize@4.38.0: - version "4.38.0" - resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.38.0.tgz#330c1aa445d4e46b80a97d895603c01666cdc357" - integrity sha512-ZCcV2HuzU+03xunWgVeyXnPa/RYY5D2U/WUNpq+xF8VmDTLnSDsHl+pEwmiWrpZD7KdBqDczCeTgjToYyVzYQg== +sequelize@4.41.2: + version "4.41.2" + resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-4.41.2.tgz#bb9ba30d72e9eeb883c9861cd0e2cac672010883" + integrity sha512-8vPf2R0o9iEmtzkqNzwFdblO+0Mu+RNxOdLeYGGqWGlp3cushLpQucAeSGPQgf2hQVZP5yOCM1ouZKTQ5FTlvA== dependencies: bluebird "^3.5.0" cls-bluebird "^2.1.0" @@ -8612,11 +8621,6 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -8630,19 +8634,19 @@ sha@~2.0.1: graceful-fs "^4.1.2" readable-stream "^2.0.2" -sharp@^0.20.0: - version "0.20.8" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.20.8.tgz#e853f10b53b730824f0c3c5e453c79fa0812a48b" - integrity sha512-A8NaPGWRDKpmHTi8sl2xzozYXhTQWBb/GaJ8ZPU7L/vKW8wVvd4Yq+isJ0c7p9sX5gnjPQcM3eOfHuvvnZ2fOQ== +sharp@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.21.0.tgz#e3cf2e4cb9382caf78efb3d45252381730e899c4" + integrity sha512-qr6yMl0ju8EGMtjIj5U1Ojj8sKuZ99/DQaNKWmoFHxqg3692AFSrEiPI/yr0O05OWtGD8LuCw8WSGmnZcNrZaA== dependencies: color "^3.0.0" detect-libc "^1.0.3" fs-copy-file-sync "^1.1.1" - nan "^2.11.0" + nan "^2.11.1" npmlog "^4.1.2" - prebuild-install "^4.0.0" + prebuild-install "^5.2.0" semver "^5.5.1" - simple-get "^2.8.1" + simple-get "^3.0.3" tar "^4.4.6" tunnel-agent "^0.6.0" @@ -8683,7 +8687,7 @@ simple-concat@^1.0.0: resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= -simple-get@^2.7.0, simple-get@^2.8.1: +simple-get@^2.7.0: version "2.8.1" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== @@ -8692,7 +8696,7 @@ simple-get@^2.7.0, simple-get@^2.8.1: once "^1.3.1" simple-concat "^1.0.0" -simple-get@^3.0.0, simple-get@^3.0.1: +simple-get@^3.0.0, simple-get@^3.0.1, simple-get@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.0.3.tgz#924528ac3f9d7718ce5e9ec1b1a69c0be4d62efa" integrity sha512-Wvre/Jq5vgoz31Z9stYWPLn0PqRqmBDpFSdypAnHu5AvRVCYPRYGnvryNLiXu8GOBNDH82J2FRHUGMjjHUpXFw== @@ -8701,6 +8705,13 @@ simple-get@^3.0.0, simple-get@^3.0.1: once "^1.3.1" simple-concat "^1.0.0" +simple-git@^1.85.0: + version "1.107.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.107.0.tgz#12cffaf261c14d6f450f7fdb86c21ccee968b383" + integrity sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA== + dependencies: + debug "^4.0.1" + simple-peer@^9.0.0: version "9.1.2" resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.1.2.tgz#f8afa5eb83f8a17d66e437e5ac54c1221eca4b39" @@ -8885,9 +8896,9 @@ socks@^1.1.10: smart-buffer "^1.0.13" socks@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" - integrity sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w== + version "2.2.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.2.tgz#f061219fc2d4d332afb4af93e865c84d3fa26e2b" + integrity sha512-g6wjBnnMOZpE0ym6e0uHSddz9p3a+WsBaaYQaBaSCJYvrC4IXykQR9MNGjLQf38e9iIIhp3b1/Zk8YZI3KGJ0Q== dependencies: ip "^1.1.5" smart-buffer "^4.0.1" @@ -8959,17 +8970,17 @@ spawn-command@^0.0.2-1: integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" + integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" @@ -8980,9 +8991,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" - integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" + integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== spectacle-docs@^1.0.2: version "1.0.6" @@ -9069,19 +9080,18 @@ srt-to-vtt@^1.1.2: to-utf-8 "^1.2.0" sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - integrity sha1-xvxhZIo9nE52T9P8306hBeSSupg= + version "1.15.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" ecc-jsbn "~0.1.1" + getpass "^0.1.1" jsbn "~0.1.0" + safer-buffer "^2.0.2" tweetnacl "~0.14.0" ssri@^5.2.4: @@ -9108,10 +9118,10 @@ stack-trace@0.0.x: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= -staged-git-files@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b" - integrity sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A== +staged-git-files@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" + integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== static-extend@^0.1.1: version "0.1.2" @@ -9121,7 +9131,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -statuses@1, "statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": +statuses@1, "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -9150,7 +9160,7 @@ stdout-stream@^1.4.0: stream-combiner@^0.2.2: version "0.2.2" - resolved "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= dependencies: duplexer "~0.1.1" @@ -9275,11 +9285,11 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: safe-buffer "~5.1.0" stringify-object@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" - integrity sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: - get-own-enumerable-property-symbols "^2.0.1" + get-own-enumerable-property-symbols "^3.0.0" is-obj "^1.0.1" is-regexp "^1.0.0" @@ -9332,13 +9342,13 @@ strip-json-comments@~2.0.1: integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= summon-install@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/summon-install/-/summon-install-0.4.3.tgz#fa98fca67c57c9cf214ac7c48f33b9a49a6f5d97" - integrity sha512-YlcD+qgWa2oRbIM3M/RJvkJpQtXpgk2e0YFl5bmJy1oAd3fmXwNpXdwcfqlGhzFpmVdHnIyBuA6RgAamZshXtA== + version "0.4.6" + resolved "https://registry.yarnpkg.com/summon-install/-/summon-install-0.4.6.tgz#25673446e8b92f8bc0afabc464aa7b73fe946bd5" + integrity sha512-xLiRo8z2srFItquk4VXGfC6AsELPmFCYev5pipARHVCikrgCBdjHMxs2ZGfVcsOOKwTgEL6bVFutf5yF43GBZw== dependencies: descrevit "^0.1.1" dot-json "^1.0.3" - npm "^6.4.1" + npm "*" superagent@^3.8.3: version "3.8.3" @@ -9408,7 +9418,7 @@ sync-request@^4.1.0: table@^3.7.8: version "3.8.3" - resolved "http://registry.npmjs.org/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" integrity sha1-K7xULw/amGGnVdOUf+/Ys/UThV8= dependencies: ajv "^4.7.0" @@ -9429,16 +9439,16 @@ tar-fs@^1.13.0: tar-stream "^1.1.2" tar-stream@^1.1.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" - integrity sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA== + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== dependencies: bl "^1.0.0" - buffer-alloc "^1.1.0" + buffer-alloc "^1.2.0" end-of-stream "^1.0.0" fs-constants "^1.0.0" readable-stream "^2.3.0" - to-buffer "^1.1.0" + to-buffer "^1.1.1" xtend "^4.0.0" tar@^2.0.0: @@ -9451,14 +9461,14 @@ tar@^2.0.0: inherits "2" tar@^4, tar@^4.4.3, tar@^4.4.6: - version "4.4.6" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" - integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: - chownr "^1.0.1" + chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" + minipass "^2.3.4" + minizlib "^1.1.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.2" @@ -9534,22 +9544,22 @@ through2@^1.0.0: xtend ">=4.0.0 <4.1.0-0" through2@^2.0.0, through2@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: - readable-stream "^2.1.5" + readable-stream "~2.3.6" xtend "~4.0.1" through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: version "2.3.8" - resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" - integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== timed-out@^4.0.0: version "4.0.1" @@ -9557,11 +9567,11 @@ timed-out@^4.0.0: integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-ext@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.5.tgz#77147dd4e76b660c2abb8785db96574cbbd12922" - integrity sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg== + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== dependencies: - es5-ext "~0.10.14" + es5-ext "~0.10.46" next-tick "1" tiny-lr@^1.1.1: @@ -9605,7 +9615,7 @@ to-arraybuffer@^1.0.1: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-buffer@^1.1.0: +to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== @@ -9673,13 +9683,6 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -9701,9 +9704,9 @@ traverse@>=0.2.4: integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= tree-kill@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" - integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== + version "1.2.1" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" + integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== trim-newlines@^1.0.0: version "1.0.0" @@ -9788,9 +9791,9 @@ tsutils@^2.27.2: tslib "^1.8.1" tsutils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.0.0.tgz#0c5070a17a0503e056da038c48b5a1870a50a9ad" - integrity sha512-LjHBWR0vWAUHWdIAoTjoqi56Kz+FDKBgVEuL+gVPG/Pv7QW5IdaDDeK9Txlr6U0Cmckp5EgCIq1T25qe3J6hyw== + version "3.5.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.0.tgz#42602f7df241e753a2105cc3627a664abf11f745" + integrity sha512-/FZ+pEJQixWruFejFxNPRSwg+iF6aw7PYZVRqUscJ7EnzV3zieI8byfZziUR7QjCuJFulq8SEe9JcGflO4ze4Q== dependencies: tslib "^1.8.1" @@ -9823,7 +9826,7 @@ type-detect@0.1.1: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= -type-detect@^4.0.0: +type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -9836,7 +9839,7 @@ type-is@1.6.15: media-typer "0.3.0" mime-types "~2.1.15" -type-is@^1.6.4, type-is@~1.6.15, type-is@~1.6.16, type-is@~1.6.6: +type-is@^1.6.4, type-is@~1.6.16, type-is@~1.6.6: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== @@ -9856,10 +9859,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^2.5.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== +typescript@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" + integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== uglify-js@^3.1.4, uglify-js@~3.4.0: version "3.4.9" @@ -9911,9 +9914,9 @@ underscore.string@~2.3.3: integrity sha1-ccCL9rQosRM/N+ePo6Icgvcymw0= underscore.string@~3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" - integrity sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s= + version "3.3.5" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" + integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== dependencies: sprintf-js "^1.0.3" util-deprecate "^1.0.2" @@ -9944,16 +9947,16 @@ uniq@^1.0.1: integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-filename@^1.1.0, unique-filename@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" - integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" - integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== dependencies: imurmurhash "^0.1.4" @@ -10020,6 +10023,13 @@ uri-js@^3.0.2: dependencies: punycode "^2.1.0" +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + uri-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32" @@ -10152,9 +10162,9 @@ validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: builtins "^1.0.3" validator@^10.2.0, validator@^10.4.0: - version "10.7.1" - resolved "https://registry.yarnpkg.com/validator/-/validator-10.7.1.tgz#dd4cc750c2134ce4a15a2acfc7b233669d659c5b" - integrity sha512-tbB5JrTczfeHKLw3PnFRzGFlF1xUAwSgXEDb66EuX1ffCirspYpDEZo3Vc9j38gPdL4JKrDc5UPFfgYiw1IWRQ== + version "10.9.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-10.9.0.tgz#d10c11673b5061fb7ccf4c1114412411b2bac2a8" + integrity sha512-hZJcZSWz9poXBlAkjjcsNAdrZ6JbjD3kWlNjq/+vE7RLLS/+8PAj3qVVwrwsOz/WL8jPmZ1hYkRvtlUeZAm4ug== vary@^1, vary@~1.1.2: version "1.1.2" @@ -10176,18 +10186,18 @@ verror@1.10.0: extsprintf "^1.2.0" videostream@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/videostream/-/videostream-2.5.1.tgz#993a8f3efe277e5c8d26a7814ba0c68f79b20688" - integrity sha512-S3f34WE6NB1d/YUAa/EYcTURTkGaxsUqcDmsGWV1jQpQQJxeagc79/XA7ygNjzBf3DoQQ1MKTD+SocPsWSniAg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/videostream/-/videostream-2.6.0.tgz#7f0b2b84bc457c12cfe599aa2345f5cc06241ab6" + integrity sha512-nSsullx1BYClJxVSt4Fa+Ulsv0Cf7UwaHq+4LQdLkAUdmqNhY1DlGxXDWVY2gui5XV4FvDiSbXmSbGryMrrUCQ== dependencies: binary-search "^1.3.4" inherits "^2.0.1" - mediasource "^2.0.0" + mediasource "^2.2.2" mp4-box-encoding "^1.3.0" mp4-stream "^2.0.0" multistream "^2.0.2" pump "^3.0.0" - range-slice-stream "^1.2.0" + range-slice-stream "^2.0.0" wcwidth@^1.0.0: version "1.0.1" @@ -10262,11 +10272,6 @@ webtorrent@^0.102.1: ut_metadata "^3.3.0" ut_pex "^1.1.1" -what-input@^4.1.3: - version "4.3.1" - resolved "https://registry.yarnpkg.com/what-input/-/what-input-4.3.1.tgz#b8ea7554ba1d9171887c4c6addf28185fec3d31d" - integrity sha512-7KD71RWNRWI9M08shZ8+n/2UjO5amwsG9PMSXWz0iIlH8H2DVbHE8Z2tW1RqQa0kIwdeqdUIffFz7crDfkcbAw== - which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -10297,9 +10302,9 @@ wide-align@^1.1.0: string-width "^1.0.2 || 2" widest-line@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" - integrity sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM= + version "2.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" @@ -10318,7 +10323,7 @@ winston-transport@^4.2.0: winston@2.1.x: version "2.1.1" - resolved "http://registry.npmjs.org/winston/-/winston-2.1.1.tgz#3c9349d196207fd1bdff9d4bc43ef72510e3a12e" + resolved "https://registry.yarnpkg.com/winston/-/winston-2.1.1.tgz#3c9349d196207fd1bdff9d4bc43ef72510e3a12e" integrity sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4= dependencies: async "~1.0.0" @@ -10382,12 +10387,20 @@ worker-farm@^1.6.0: wrap-ansi@^2.0.0: version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -10418,9 +10431,9 @@ ws@1.1.2: ultron "1.0.x" ws@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" - integrity sha512-c2UlYcAZp1VS8AORtpq6y4RJIkJ9dQz18W32SpR/qXGfLDZ2jU4y4wKvvZwqbi7U6gxFQTeE+urMbXU/tsDy4w== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.0.tgz#119a9dbf92c54e190ec18d10e871d55c95cf9373" + integrity sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg== dependencies: async-limiter "~1.0.0" @@ -10546,7 +10559,7 @@ yargs-parser@^9.0.2: yargs@^11.0.0: version "11.1.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" -- cgit v1.2.3 From 6cb3482ceba2e0564a05b525699f29a1f5ff20a2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 15 Nov 2018 11:20:23 +0100 Subject: Remove wrong redundancy test --- server/tests/api/redundancy/redundancy.ts | 36 +-- server/tests/api/server/redundancy.ts | 479 ------------------------------ 2 files changed, 16 insertions(+), 499 deletions(-) delete mode 100644 server/tests/api/server/redundancy.ts diff --git a/server/tests/api/redundancy/redundancy.ts b/server/tests/api/redundancy/redundancy.ts index 1960854b6..47f4e59fc 100644 --- a/server/tests/api/redundancy/redundancy.ts +++ b/server/tests/api/redundancy/redundancy.ts @@ -54,7 +54,7 @@ async function runServers (strategy: VideoRedundancyStrategy, additionalParams: immutableAssign({ min_lifetime: '1 hour', strategy: strategy, - size: '100KB' + size: '200KB' }, additionalParams) ] } @@ -111,8 +111,8 @@ async function checkStatsWith2Webseed (strategy: VideoRedundancyStrategy) { const stat = data.videosRedundancy[0] expect(stat.strategy).to.equal(strategy) - expect(stat.totalSize).to.equal(102400) - expect(stat.totalUsed).to.be.at.least(1).and.below(102401) + expect(stat.totalSize).to.equal(204800) + expect(stat.totalUsed).to.be.at.least(1).and.below(204801) expect(stat.totalVideoFiles).to.equal(4) expect(stat.totalVideos).to.equal(1) } @@ -125,7 +125,7 @@ async function checkStatsWith1Webseed (strategy: VideoRedundancyStrategy) { const stat = data.videosRedundancy[0] expect(stat.strategy).to.equal(strategy) - expect(stat.totalSize).to.equal(102400) + expect(stat.totalSize).to.equal(204800) expect(stat.totalUsed).to.equal(0) expect(stat.totalVideoFiles).to.equal(0) expect(stat.totalVideos).to.equal(0) @@ -223,7 +223,7 @@ describe('Test videos redundancy', function () { return enableRedundancyOnServer1() }) - it('Should have 2 webseed on the first video', async function () { + it('Should have 2 webseeds on the first video', async function () { this.timeout(40000) await waitJobs(servers) @@ -270,7 +270,7 @@ describe('Test videos redundancy', function () { return enableRedundancyOnServer1() }) - it('Should have 2 webseed on the first video', async function () { + it('Should have 2 webseeds on the first video', async function () { this.timeout(40000) await waitJobs(servers) @@ -338,7 +338,7 @@ describe('Test videos redundancy', function () { await waitJobs(servers) }) - it('Should have 2 webseed on the first video', async function () { + it('Should have 2 webseeds on the first video', async function () { this.timeout(40000) await waitJobs(servers) @@ -419,7 +419,7 @@ describe('Test videos redundancy', function () { killallServers([ servers[0] ]) - await wait(10000) + await wait(15000) await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001') }) @@ -451,27 +451,23 @@ describe('Test videos redundancy', function () { video2Server2UUID = res.body.video.uuid }) - it('Should cache video 2 webseed on the first video', async function () { - this.timeout(50000) + it('Should cache video 2 webseeds on the first video', async function () { + this.timeout(120000) await waitJobs(servers) - await wait(7000) + let checked = false - try { - await check1WebSeed(strategy, video1Server2UUID) - await check2Webseeds(strategy, video2Server2UUID) - } catch { - await wait(3000) + while (checked === false) { + await wait(1000) try { await check1WebSeed(strategy, video1Server2UUID) await check2Webseeds(strategy, video2Server2UUID) - } catch { - await wait(5000) - await check1WebSeed(strategy, video1Server2UUID) - await check2Webseeds(strategy, video2Server2UUID) + checked = true + } catch { + checked = false } } }) diff --git a/server/tests/api/server/redundancy.ts b/server/tests/api/server/redundancy.ts deleted file mode 100644 index 77a2d61a4..000000000 --- a/server/tests/api/server/redundancy.ts +++ /dev/null @@ -1,479 +0,0 @@ -/* tslint:disable:no-unused-expression */ - -import * as chai from 'chai' -import 'mocha' -import { VideoDetails } from '../../../../shared/models/videos' -import { - doubleFollow, - flushAndRunMultipleServers, - getFollowingListPaginationAndSort, - getVideo, - immutableAssign, - killallServers, makeGetRequest, - root, - ServerInfo, - setAccessTokensToServers, unfollow, - uploadVideo, - viewVideo, - wait, - waitUntilLog, - checkVideoFilesWereRemoved, removeVideo -} from '../../utils' -import { waitJobs } from '../../utils/server/jobs' -import * as magnetUtil from 'magnet-uri' -import { updateRedundancy } from '../../utils/server/redundancy' -import { ActorFollow } from '../../../../shared/models/actors' -import { readdir } from 'fs-extra' -import { join } from 'path' -import { VideoRedundancyStrategy } from '../../../../shared/models/redundancy' -import { getStats } from '../../utils/server/stats' -import { ServerStats } from '../../../../shared/models/server/server-stats.model' - -const expect = chai.expect - -let servers: ServerInfo[] = [] -let video1Server2UUID: string - -function checkMagnetWebseeds (file: { magnetUri: string, resolution: { id: number } }, baseWebseeds: string[], server: ServerInfo) { - const parsed = magnetUtil.decode(file.magnetUri) - - for (const ws of baseWebseeds) { - const found = parsed.urlList.find(url => url === `${ws}-${file.resolution.id}.mp4`) - expect(found, `Webseed ${ws} not found in ${file.magnetUri} on server ${server.url}`).to.not.be.undefined - } - - expect(parsed.urlList).to.have.lengthOf(baseWebseeds.length) -} - -async function runServers (strategy: VideoRedundancyStrategy, additionalParams: any = {}) { - const config = { - redundancy: { - videos: { - check_interval: '5 seconds', - strategies: [ - immutableAssign({ - min_lifetime: '1 hour', - strategy: strategy, - size: '200KB' - }, additionalParams) - ] - } - } - } - servers = await flushAndRunMultipleServers(3, config) - - // Get the access tokens - await setAccessTokensToServers(servers) - - { - const res = await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, { name: 'video 1 server 2' }) - video1Server2UUID = res.body.video.uuid - - await viewVideo(servers[ 1 ].url, video1Server2UUID) - } - - await waitJobs(servers) - - // Server 1 and server 2 follow each other - await doubleFollow(servers[ 0 ], servers[ 1 ]) - // Server 1 and server 3 follow each other - await doubleFollow(servers[ 0 ], servers[ 2 ]) - // Server 2 and server 3 follow each other - await doubleFollow(servers[ 1 ], servers[ 2 ]) - - await waitJobs(servers) -} - -async function check1WebSeed (strategy: VideoRedundancyStrategy, videoUUID?: string) { - if (!videoUUID) videoUUID = video1Server2UUID - - const webseeds = [ - 'http://localhost:9002/static/webseed/' + videoUUID - ] - - for (const server of servers) { - { - const res = await getVideo(server.url, videoUUID) - - const video: VideoDetails = res.body - for (const f of video.files) { - checkMagnetWebseeds(f, webseeds, server) - } - } - } -} - -async function checkStatsWith2Webseed (strategy: VideoRedundancyStrategy) { - const res = await getStats(servers[0].url) - const data: ServerStats = res.body - - expect(data.videosRedundancy).to.have.lengthOf(1) - const stat = data.videosRedundancy[0] - - expect(stat.strategy).to.equal(strategy) - expect(stat.totalSize).to.equal(204800) - expect(stat.totalUsed).to.be.at.least(1).and.below(204800) - expect(stat.totalVideoFiles).to.equal(4) - expect(stat.totalVideos).to.equal(1) -} - -async function checkStatsWith1Webseed (strategy: VideoRedundancyStrategy) { - const res = await getStats(servers[0].url) - const data: ServerStats = res.body - - expect(data.videosRedundancy).to.have.lengthOf(1) - - const stat = data.videosRedundancy[0] - expect(stat.strategy).to.equal(strategy) - expect(stat.totalSize).to.equal(204800) - expect(stat.totalUsed).to.equal(0) - expect(stat.totalVideoFiles).to.equal(0) - expect(stat.totalVideos).to.equal(0) -} - -async function check2Webseeds (strategy: VideoRedundancyStrategy, videoUUID?: string) { - if (!videoUUID) videoUUID = video1Server2UUID - - const webseeds = [ - 'http://localhost:9001/static/webseed/' + videoUUID, - 'http://localhost:9002/static/webseed/' + videoUUID - ] - - for (const server of servers) { - const res = await getVideo(server.url, videoUUID) - - const video: VideoDetails = res.body - - for (const file of video.files) { - checkMagnetWebseeds(file, webseeds, server) - - // Only servers 1 and 2 have the video - if (server.serverNumber !== 3) { - await makeGetRequest({ - url: server.url, - statusCodeExpected: 200, - path: '/static/webseed/' + `${videoUUID}-${file.resolution.id}.mp4`, - contentType: null - }) - } - } - } - - for (const directory of [ 'test1', 'test2' ]) { - const files = await readdir(join(root(), directory, 'videos')) - expect(files).to.have.length.at.least(4) - - for (const resolution of [ 240, 360, 480, 720 ]) { - expect(files.find(f => f === `${videoUUID}-${resolution}.mp4`)).to.not.be.undefined - } - } -} - -async function enableRedundancyOnServer1 () { - await updateRedundancy(servers[ 0 ].url, servers[ 0 ].accessToken, servers[ 1 ].host, true) - - const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 5, '-createdAt') - const follows: ActorFollow[] = res.body.data - const server2 = follows.find(f => f.following.host === 'localhost:9002') - const server3 = follows.find(f => f.following.host === 'localhost:9003') - - expect(server3).to.not.be.undefined - expect(server3.following.hostRedundancyAllowed).to.be.false - - expect(server2).to.not.be.undefined - expect(server2.following.hostRedundancyAllowed).to.be.true -} - -async function disableRedundancyOnServer1 () { - await updateRedundancy(servers[ 0 ].url, servers[ 0 ].accessToken, servers[ 1 ].host, false) - - const res = await getFollowingListPaginationAndSort(servers[ 0 ].url, 0, 5, '-createdAt') - const follows: ActorFollow[] = res.body.data - const server2 = follows.find(f => f.following.host === 'localhost:9002') - const server3 = follows.find(f => f.following.host === 'localhost:9003') - - expect(server3).to.not.be.undefined - expect(server3.following.hostRedundancyAllowed).to.be.false - - expect(server2).to.not.be.undefined - expect(server2.following.hostRedundancyAllowed).to.be.false -} - -async function cleanServers () { - killallServers(servers) -} - -describe('Test videos redundancy', function () { - - describe('With most-views strategy', function () { - const strategy = 'most-views' - - before(function () { - this.timeout(120000) - - return runServers(strategy) - }) - - it('Should have 1 webseed on the first video', async function () { - await check1WebSeed(strategy) - await checkStatsWith1Webseed(strategy) - }) - - it('Should enable redundancy on server 1', function () { - return enableRedundancyOnServer1() - }) - - it('Should have 2 webseeds on the first video', async function () { - this.timeout(40000) - - await waitJobs(servers) - await waitUntilLog(servers[0], 'Duplicated ', 4) - await waitJobs(servers) - - await check2Webseeds(strategy) - await checkStatsWith2Webseed(strategy) - }) - - it('Should undo redundancy on server 1 and remove duplicated videos', async function () { - this.timeout(40000) - - await disableRedundancyOnServer1() - - await waitJobs(servers) - await wait(5000) - - await check1WebSeed(strategy) - - await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ]) - }) - - after(function () { - return cleanServers() - }) - }) - - describe('With trending strategy', function () { - const strategy = 'trending' - - before(function () { - this.timeout(120000) - - return runServers(strategy) - }) - - it('Should have 1 webseed on the first video', async function () { - await check1WebSeed(strategy) - await checkStatsWith1Webseed(strategy) - }) - - it('Should enable redundancy on server 1', function () { - return enableRedundancyOnServer1() - }) - - it('Should have 2 webseeds on the first video', async function () { - this.timeout(40000) - - await waitJobs(servers) - await waitUntilLog(servers[0], 'Duplicated ', 4) - await waitJobs(servers) - - await check2Webseeds(strategy) - await checkStatsWith2Webseed(strategy) - }) - - it('Should unfollow on server 1 and remove duplicated videos', async function () { - this.timeout(40000) - - await unfollow(servers[0].url, servers[0].accessToken, servers[1]) - - await waitJobs(servers) - await wait(5000) - - await check1WebSeed(strategy) - - await checkVideoFilesWereRemoved(video1Server2UUID, servers[0].serverNumber, [ 'videos' ]) - }) - - after(function () { - return cleanServers() - }) - }) - - describe('With recently added strategy', function () { - const strategy = 'recently-added' - - before(function () { - this.timeout(120000) - - return runServers(strategy, { min_views: 3 }) - }) - - it('Should have 1 webseed on the first video', async function () { - await check1WebSeed(strategy) - await checkStatsWith1Webseed(strategy) - }) - - it('Should enable redundancy on server 1', function () { - return enableRedundancyOnServer1() - }) - - it('Should still have 1 webseed on the first video', async function () { - this.timeout(40000) - - await waitJobs(servers) - await wait(15000) - await waitJobs(servers) - - await check1WebSeed(strategy) - await checkStatsWith1Webseed(strategy) - }) - - it('Should view 2 times the first video to have > min_views config', async function () { - this.timeout(40000) - - await viewVideo(servers[ 0 ].url, video1Server2UUID) - await viewVideo(servers[ 2 ].url, video1Server2UUID) - - await wait(10000) - await waitJobs(servers) - }) - - it('Should have 2 webseeds on the first video', async function () { - this.timeout(40000) - - await waitJobs(servers) - await waitUntilLog(servers[0], 'Duplicated ', 4) - await waitJobs(servers) - - await check2Webseeds(strategy) - await checkStatsWith2Webseed(strategy) - }) - - it('Should remove the video and the redundancy files', async function () { - this.timeout(20000) - - await removeVideo(servers[1].url, servers[1].accessToken, video1Server2UUID) - - await waitJobs(servers) - - for (const server of servers) { - await checkVideoFilesWereRemoved(video1Server2UUID, server.serverNumber) - } - }) - - after(function () { - return cleanServers() - }) - }) - - describe('Test expiration', function () { - const strategy = 'recently-added' - - async function checkContains (servers: ServerInfo[], str: string) { - for (const server of servers) { - const res = await getVideo(server.url, video1Server2UUID) - const video: VideoDetails = res.body - - for (const f of video.files) { - expect(f.magnetUri).to.contain(str) - } - } - } - - async function checkNotContains (servers: ServerInfo[], str: string) { - for (const server of servers) { - const res = await getVideo(server.url, video1Server2UUID) - const video: VideoDetails = res.body - - for (const f of video.files) { - expect(f.magnetUri).to.not.contain(str) - } - } - } - - before(async function () { - this.timeout(120000) - - await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 }) - - await enableRedundancyOnServer1() - }) - - it('Should still have 2 webseedss after 10 seconds', async function () { - this.timeout(40000) - - await wait(10000) - - try { - await checkContains(servers, 'http%3A%2F%2Flocalhost%3A9001') - } catch { - // Maybe a server deleted a redundancy in the scheduler - await wait(2000) - - await checkContains(servers, 'http%3A%2F%2Flocalhost%3A9001') - } - }) - - it('Should stop server 1 and expire video redundancy', async function () { - this.timeout(40000) - - killallServers([ servers[0] ]) - - await wait(15000) - - await checkNotContains([ servers[1], servers[2] ], 'http%3A%2F%2Flocalhost%3A9001') - }) - - after(function () { - return killallServers([ servers[1], servers[2] ]) - }) - }) - - describe('Test file replacement', function () { - let video2Server2UUID: string - const strategy = 'recently-added' - - before(async function () { - this.timeout(120000) - - await runServers(strategy, { min_lifetime: '7 seconds', min_views: 0 }) - - await enableRedundancyOnServer1() - - await waitJobs(servers) - await waitUntilLog(servers[0], 'Duplicated ', 4) - await waitJobs(servers) - - await check2Webseeds(strategy) - await checkStatsWith2Webseed(strategy) - - const res = await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, { name: 'video 2 server 2' }) - video2Server2UUID = res.body.video.uuid - }) - - it('Should cache video 2 webseeds on the first video', async function () { - this.timeout(120000) - - await waitJobs(servers) - - let checked = false - - while (checked === false) { - await wait(1000) - - try { - await check1WebSeed(strategy, video1Server2UUID) - await check2Webseeds(strategy, video2Server2UUID) - - checked = true - } catch { - checked = false - } - } - }) - - after(function () { - return cleanServers() - }) - }) -}) -- cgit v1.2.3 From 3e9e6f2f14fda845e6000cfada07d1bfb176bd21 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Thu, 15 Nov 2018 14:10:15 +0100 Subject: migrate Swagger 2.0 spec to OpenAPI 3.0.0 --- README.md | 5 +- package.json | 14 +- scripts/generate-api-doc.sh | 5 - support/doc/api/accounts.yaml | 7 - support/doc/api/commons.yaml | 23 - support/doc/api/html/index.html | 8998 -------------------- support/doc/api/html/javascripts/spectacle.js | 242 - support/doc/api/html/javascripts/spectacle.min.js | 1 - support/doc/api/html/stylesheets/foundation.css | 2285 ----- .../doc/api/html/stylesheets/foundation.min.css | 1 - support/doc/api/html/stylesheets/spectacle.css | 1375 --- support/doc/api/html/stylesheets/spectacle.min.css | 1 - support/doc/api/openapi.yaml | 2054 ++--- support/doc/api/users.yaml | 7 - support/doc/api/video-channels.yaml | 7 - support/doc/api/video-comments.yaml | 13 - support/doc/api/videos.yaml | 87 - support/doc/development/server/code.md | 10 +- yarn.lock | 1795 +--- 19 files changed, 1228 insertions(+), 15702 deletions(-) delete mode 100755 scripts/generate-api-doc.sh delete mode 100644 support/doc/api/accounts.yaml delete mode 100644 support/doc/api/commons.yaml delete mode 100644 support/doc/api/html/index.html delete mode 100644 support/doc/api/html/javascripts/spectacle.js delete mode 100644 support/doc/api/html/javascripts/spectacle.min.js delete mode 100644 support/doc/api/html/stylesheets/foundation.css delete mode 100644 support/doc/api/html/stylesheets/foundation.min.css delete mode 100644 support/doc/api/html/stylesheets/spectacle.css delete mode 100644 support/doc/api/html/stylesheets/spectacle.min.css delete mode 100644 support/doc/api/users.yaml delete mode 100644 support/doc/api/video-channels.yaml delete mode 100644 support/doc/api/video-comments.yaml delete mode 100644 support/doc/api/videos.yaml diff --git a/README.md b/README.md index a13f454e2..3303d8a32 100644 --- a/README.md +++ b/README.md @@ -183,9 +183,8 @@ See [ARCHITECTURE.md](/ARCHITECTURE.md) for a more detailed explanation of the a #### Backend * REST API: - * Quick Start: [/support/doc/api/quickstart.md](/support/doc/api/quickstart.md) - * Swagger/OpenAPI schema: [/support/doc/api/openapi.yaml](/support/doc/api/openapi.yaml) - * HTML explorer: [/support/doc/api/html/index.html](https://htmlpreview.github.io/?https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/api/html/index.html) + * OpenAPI 3.0.0 schema: [/support/doc/api/openapi.yaml](/support/doc/api/openapi.yaml) + * HTML explorer: [docs.joinpeertube.org/api.html](http://docs.joinpeertube.org/api.html) * Servers communicate with each other with [Activity Pub](https://www.w3.org/TR/activitypub/). * Each server has its own users who query it (search videos, query where the diff --git a/package.json b/package.json index 40d0214c9..391e1ff90 100644 --- a/package.json +++ b/package.json @@ -49,14 +49,12 @@ "create-import-video-file-job": "node ./dist/scripts/create-import-video-file-job.js", "test": "scripty", "help": "scripty", - "generate-api-doc": "scripty", "generate-cli-doc": "scripty", "parse-log": "node ./dist/scripts/parse-log.js", "prune-storage": "node ./dist/scripts/prune-storage.js", "optimize-old-videos": "node ./dist/scripts/optimize-old-videos.js", "postinstall": "cd client && yarn install --pure-lockfile", "tsc": "tsc", - "spectacle-docs": "node_modules/spectacle-docs/bin/spectacle.js", "commander": "commander", "ng": "ng", "nodemon": "nodemon", @@ -72,13 +70,21 @@ }, "husky": { "hooks": { - "pre-commit": "lint-staged && ./scripts/openapi-peertube-version.sh" + "pre-commit": "./scripts/openapi-peertube-version.sh && lint-staged" } }, "lint-staged": { "*.scss": [ "sass-lint -c client/.sass-lint.yml", "git add" + ], + "support/doc/api/*.yaml": [ + "node ./node_modules/swagger-cli/bin/swagger-cli.js validate support/doc/api/openapi.yaml", + "git add" + ], + "server/tools/README.md": [ + "npm run generate-cli-doc", + "git add" ] }, "resolutions": { @@ -200,8 +206,8 @@ "nodemon": "^1.11.0", "sass-lint": "^1.12.1", "source-map-support": "^0.5.0", - "spectacle-docs": "^1.0.2", "supertest": "^3.0.0", + "swagger-cli": "^2.2.0", "ts-node": "7.0.1", "tslint": "^5.7.0", "tslint-config-standard": "^8.0.1", diff --git a/scripts/generate-api-doc.sh b/scripts/generate-api-doc.sh deleted file mode 100755 index 7d48db7a5..000000000 --- a/scripts/generate-api-doc.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -eu - -npm run spectacle-docs -- -t support/doc/api/html support/doc/api/openapi.yaml diff --git a/support/doc/api/accounts.yaml b/support/doc/api/accounts.yaml deleted file mode 100644 index c5b20040d..000000000 --- a/support/doc/api/accounts.yaml +++ /dev/null @@ -1,7 +0,0 @@ -parameters: - name: - name: name - in: path - required: true - type: string - description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)' \ No newline at end of file diff --git a/support/doc/api/commons.yaml b/support/doc/api/commons.yaml deleted file mode 100644 index c8bab3c80..000000000 --- a/support/doc/api/commons.yaml +++ /dev/null @@ -1,23 +0,0 @@ -parameters: - start: - name: start - in: query - required: false - type: number - description: 'Offset' - count: - name: count - in: query - required: false - type: number - description: 'Number of items' - sort: - name: sort - in: query - required: false - type: string - description: 'Sort column (-createdAt for example)' - -responses: - emptySuccess: - description: 'Successful operation' \ No newline at end of file diff --git a/support/doc/api/html/index.html b/support/doc/api/html/index.html deleted file mode 100644 index 7e53ce675..000000000 --- a/support/doc/api/html/index.html +++ /dev/null @@ -1,8998 +0,0 @@ - - - - - - PeerTube | API Reference - - - - - - - -
    - -
    - -
    -
    -

    PeerTube - API Reference -

    -
    -
    -
    -

    Introduction

    -

    The PeerTube API is built on HTTP(S). Our API is RESTful. It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. You can use your favorite HTTP/REST library for your programming language to use PeerTube. No official SDK is currently provided.

    -

    Authentication

    -

    When you sign up for an account, you are given the possibility to generate sessions, and authenticate using this session token. One session token can currently be used at a time.

    -
    -
    -
    -
    API Endpoint
    -
    https://peertube.example.com/api/v1
    - -
    Request Content-Types: - application/json -
    -
    Response Content-Types: - application/json; charset=utf-8 -
    -
    Schemes: - https -
    -
    Version: - 1.1.0-alpha.2 -
    -
    -
    -
    -
    - -

    Authentication

    -
    -
    -
    -

    - OAuth2 - -

    -
    -

    In the header: - Authorization: Bearer <token> -

    -

    Authenticating via OAuth requires the following steps:

    -
      -
    • Have an account with sufficient authorization levels
    • -
    • - Generate a Bearer Token
    • -
    • Make Authenticated Requests
    • -
    -
    -
    -
    -
    -
    type
    -
    -
    oauth2
    -
    -
    -
    -
    flow
    -
    -
    password
    -
    -
    -
    -
    tokenUrl
    -
    -
    https://peertube.example.com/api/v1/users/token
    -
    -
    -
    -
    scopes
    -
    -
    - admin -

    Admin scope

    - moderator -

    Moderator scope

    - user -

    User scope

    -
    -
    -
    -
    -
    -
    -

    Accounts

    -
    -
    -

    Using some features of PeerTube require authentication, for which Accounts provide different levels of permission as well as associated user information. Accounts also encompass remote accounts discovered across the federation.

    -
    -
    -
    - - -
    - Accounts - -
    - - -

    - Get the account by name -

    -
    -
    -
    - GET - /accounts/{name} -
    -
    -
    -
    -
    -
    -
    -
    -
    name: - - string - - -
    - -
    in path
    -
    -
    -

    The name of the account (chocobozzz or - chocobozzz@peertube.cpy.re for example)

    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Account - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "displayName": "string",
    -  "id": "number",
    -  "uuid": "string",
    -  "url": "string",
    -  "name": "string",
    -  "host": "string",
    -  "followingCount": "number",
    -  "followersCount": "number",
    -  "createdAt": "string",
    -  "updatedAt": "string",
    -  "avatar": {
    -    "path": "string",
    -    "createdAt": "string",
    -    "updatedAt": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - Accounts - - Video - -
    - - -

    - Get videos for an account, provided the name of that account -

    -
    -
    -
    - GET - /accounts/{name}/videos -
    -
    -
    -
    -
    -
    -
    -
    -
    name: - - string - - -
    - -
    in path
    -
    -
    -

    The name of the account (chocobozzz or - chocobozzz@peertube.cpy.re for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - Accounts - -
    - - -

    - Get all accounts -

    -
    -
    -
    - GET - /accounts -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Account - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Account - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/jsonhttps://peertube.cpy.re/api/v1 -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "displayName": "string",
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -

    Config

    -
    -
    -

    Each server exposes public information regarding supported videos and options.

    -
    -
    -
    - - -
    - Config - -
    - - -

    - Get the configuration of the server -

    -
    -
    -
    - GET - /config -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - ServerConfig - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "signup": {
    -    "allowed": "boolean"
    -  },
    -  "transcoding": {
    -    "enabledResolutions": [
    -      "number"
    -    ]
    -  },
    -  "avatar": {
    -    "file": {
    -      "size": {
    -        "max": "number"
    -      }
    -    },
    -    "extensions": [
    -      "string"
    -    ]
    -  },
    -  "video": {
    -    "file": {
    -      "extensions": [
    -        "string"
    -      ]
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -

    Feeds

    -
    -
    -

    Feeds of videos and feeds of comments allow to see updates and get them in an aggregator or script of your choice.

    -
    -
    -
    - - -
    - Feeds - -
    - - -

    - Get the feed of videos for the server, with optional filter by account name or id -

    -
    -
    -
    - GET - /feeds/videos.{format} -
    -
    -
    -
    -
    -
    -
    -
    -
    format: - - string - - xml, - atom, - json - - - xml - -
    - -
    in path
    -
    -
    -

    The format expected (xml defaults to RSS 2.0, atom to ATOM 1.0 and json to JSON FEED 1.0

    -
    -
    -
    -
    -
    accountId: - - number - - -
    -
    in query
    -
    -
    -

    The id of the local account to filter to (beware, users IDs and not actors IDs which will return empty feeds

    -
    -
    -
    -
    -
    accountName: - - string - - -
    -
    in query
    -
    -
    -

    The name of the local account to filter to

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/atom+xml, application/rss+xml, application/json -
    -
    -
    -
    -

    Job

    -
    -
    -

    Jobs are long-running tasks enqueued and processed by the instance itself. No additional worker registration is currently available.

    -
    -
    -
    - - -
    - Job - -
    - - -

    - Get list of jobs -

    -
    -
    -
    - GET - /jobs -
    -
    -
    -
    -
    -
    -
    -
    -
    state: - - string - - -
    - -
    in path
    -
    -
    -

    The state of the job

    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Job - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Job - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "state": "string",
    -    "category": "string",
    -    "handlerName": "string",
    -    "handlerInputData": "string",
    -    "createdAt": "string",
    -    "updatedAt": "string"
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin -
    -
    -
    -
    -
    -

    ServerFollowing

    -
    -
    -

    Managing servers which the instance interacts with is crucial to the concept of federation in PeerTube and external video indexation. The PeerTube server then deals with inter-server ActivityPub operations and propagates information across its social graph by posting activities to actors' inbox endpoints.

    -
    -
    -
    - - - - - -

    - Unfollow a server by hostname -

    -
    -
    -
    - DELETE - /server/following/{host} -
    -
    -
    -
    -
    -
    -
    -
    -
    host: - - string - - -
    - -
    in path
    -
    -
    -

    The host to unfollow

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    201 Created
    -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin -
    -
    -
    -
    -
    -
    - - - - - -

    - Get followers of the server -

    -
    -
    -
    - GET - /server/followers -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Follow - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Follow - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "follower": {
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "following": {
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "score": "number",
    -    "state": "string",
    -    "createdAt": "string",
    -    "updatedAt": "string"
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    - - - - - -

    - Get servers followed by the server -

    -
    -
    -
    - GET - /server/following -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Follow - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Follow - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "follower": {
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "following": {
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "score": "number",
    -    "state": "string",
    -    "createdAt": "string",
    -    "updatedAt": "string"
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    - - - - - -

    - Follow a server -

    -
    -
    -
    - POST - /server/following -
    -
    -
    -
    -
    -
    -
    -
    -
    - - Follow - -
    -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "id": "number",
    -  "follower": {
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "following": {
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "score": "number",
    -  "state": "string",
    -  "createdAt": "string",
    -  "updatedAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin -
    -
    -
    -
    -
    -

    VideoAbuse

    -
    -
    -

    Video abuses deal with reports of local or remote videos alike.

    -
    -
    -
    - - -
    - VideoAbuse - -
    - - -

    - Get list of reported video abuses -

    -
    -
    -
    - GET - /videos/abuse -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - VideoAbuse - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - VideoAbuse - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "reason": "string",
    -    "reporterAccount": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "video": {
    -      "id": "number",
    -      "name": "string",
    -      "uuid": "string",
    -      "url": "string"
    -    },
    -    "createdAt": "string"
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - VideoAbuse - -
    - - -

    - Report an abuse, on a video by its id -

    -
    -
    -
    - POST - /videos/{id}/abuse -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -

    Video

    -
    -
    -

    Operations dealing with listing, uploading, fetching or modifying videos.

    -
    -
    -
    - - -
    - Accounts - - Video - -
    - - -

    - Get videos for an account, provided the name of that account -

    -
    -
    -
    - GET - /accounts/{name}/videos -
    -
    -
    -
    -
    -
    -
    -
    -
    name: - - string - - -
    - -
    in path
    -
    -
    -

    The name of the account (chocobozzz or - chocobozzz@peertube.cpy.re for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get list of videos -

    -
    -
    -
    - GET - /videos -
    -
    -
    -
    -
    -
    -
    -
    -
    category: - - number - - -
    -
    in query
    -
    -
    -

    category id of the video

    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Video - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "uuid": "string",
    -    "createdAt": "string",
    -    "publishedAt": "string",
    -    "updatedAt": "string",
    -    "category": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "licence": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "language": {
    -      "id": "string",
    -      "label": "string"
    -    },
    -    "privacy": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "isLocal": "boolean",
    -    "name": "string",
    -    "thumbnailPath": "string",
    -    "previewPath": "string",
    -    "embedPath": "string",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean",
    -    "account": {
    -      "name": "string",
    -      "displayName": "string",
    -      "url": "string",
    -      "host": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get list of video licences known by the server -

    -
    -
    -
    - GET - /videos/categories -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - string[] - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  "string"
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get list of video licences known by the server -

    -
    -
    -
    - GET - /videos/licences -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - string[] - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  "string"
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get list of languages known by the server -

    -
    -
    -
    - GET - /videos/languages -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - string[] - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  "string"
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get list of privacy policies supported by the server -

    -
    -
    -
    - GET - /videos/privacies -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - string[] - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  "string"
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Update metadata for a video by its id -

    -
    -
    -
    - PUT - /videos/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    thumbnailfile: - - file - - -
    -
    in formData
    -
    -
    -

    Video thumbnail file

    -
    -
    -
    -
    -
    previewfile: - - file - - -
    -
    in formData
    -
    -
    -

    Video preview file

    -
    -
    -
    -
    -
    category: - - number - - -
    -
    in formData
    -
    -
    -

    Video category

    -
    -
    -
    -
    -
    licence: - - number - - -
    -
    in formData
    -
    -
    -

    Video licence

    -
    -
    -
    -
    -
    language: - - string - - -
    -
    in formData
    -
    -
    -

    Video language

    -
    -
    -
    -
    -
    description: - - string - - -
    -
    in formData
    -
    -
    -

    Video description

    -
    -
    -
    -
    -
    waitTranscoding: - - boolean - - -
    -
    in formData
    -
    -
    -

    Whether or not we wait transcoding before publish the video

    -
    -
    -
    -
    -
    support: - - string - - -
    -
    in formData
    -
    -
    -

    Text describing how to support the video uploader

    -
    -
    -
    -
    -
    nsfw: - - boolean - - -
    -
    in formData
    -
    -
    -

    Whether or not this video contains sensitive content

    -
    -
    -
    -
    -
    name: - - string - - -
    -
    in formData
    -
    -
    -

    Video name

    -
    -
    -
    -
    -
    tags: - - string[] - - -
    -
    in formData
    -
    -
    -

    Video tags

    -
    -
    -
    -
    -
    commentsEnabled: - - boolean - - -
    -
    in formData
    -
    -
    -

    Enable or disable comments for this video

    -
    -
    -
    -
    -
    privacy: - - string - - Public, - Unlisted - - - -
    -
    in formData
    -
    -
    -

    Video privacy

    -
    -
    -
    -
    -
    scheduleUpdate: - - object - - -
    -
    in formData
    -
    -
    -

    Schedule an update at a specific datetime

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get a video by its id -

    -
    -
    -
    - GET - /videos/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Delete a video by its id -

    -
    -
    -
    - DELETE - /videos/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Get a video description by its id -

    -
    -
    -
    - GET - /videos/{id}/description -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - string - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    "string"
    -
    - -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Add a view to the video by its id -

    -
    -
    -
    - POST - /videos/{id}/views -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    - - -
    - Video - -
    - - -

    - Upload a video file with its metadata -

    -
    -
    -
    - POST - /videos/upload -
    -
    -
    -
    -
    -
    -
    -
    -
    videofile: - - file - - -
    - -
    in formData
    -
    -
    -

    Video file

    -
    -
    -
    -
    -
    channelId: - - number - - -
    - -
    in formData
    -
    -
    -

    Channel id that will contain this video

    -
    -
    -
    -
    -
    thumbnailfile: - - file - - -
    -
    in formData
    -
    -
    -

    Video thumbnail file

    -
    -
    -
    -
    -
    previewfile: - - file - - -
    -
    in formData
    -
    -
    -

    Video preview file

    -
    -
    -
    -
    -
    category: - - number - - -
    -
    in formData
    -
    -
    -

    Video category

    -
    -
    -
    -
    -
    licence: - - number - - -
    -
    in formData
    -
    -
    -

    Video licence

    -
    -
    -
    -
    -
    language: - - string - - -
    -
    in formData
    -
    -
    -

    Video language

    -
    -
    -
    -
    -
    description: - - string - - -
    -
    in formData
    -
    -
    -

    Video description

    -
    -
    -
    -
    -
    waitTranscoding: - - boolean - - -
    -
    in formData
    -
    -
    -

    Whether or not we wait transcoding before publish the video

    -
    -
    -
    -
    -
    support: - - string - - -
    -
    in formData
    -
    -
    -

    Text describing how to support the video uploader

    -
    -
    -
    -
    -
    nsfw: - - boolean - - -
    -
    in formData
    -
    -
    -

    Whether or not this video contains sensitive content

    -
    -
    -
    -
    -
    name: - - string - - -
    -
    in formData
    -
    -
    -

    Video name

    -
    -
    -
    -
    -
    tags: - - string[] - - -
    -
    in formData
    -
    -
    -

    Video tags

    -
    -
    -
    -
    -
    commentsEnabled: - - boolean - - -
    -
    in formData
    -
    -
    -

    Enable or disable comments for this video

    -
    -
    -
    -
    -
    privacy: - - string - - Public, - Unlisted - - - -
    -
    in formData
    -
    -
    -

    Video privacy

    -
    -
    -
    -
    -
    scheduleUpdate: - - object - - -
    -
    in formData
    -
    -
    -

    Schedule an update at a specific datetime

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    - - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "video": {
    -    "id": "number",
    -    "uuid": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -

    Search

    -
    -
    -

    The search helps to find - videos from within the instance and beyond. Videos from other instances federated by the instance (that is, instances followed by the instance) can be found via keywords and other criteria of the advanced search.

    -
    -
    -
    - - -
    - Search - -
    - - -

    - Get the videos corresponding to a given query -

    -
    -
    -
    - GET - /search/videos -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    search: - - string - - -
    - -
    in query
    -
    -
    -

    String to search

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Video - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "uuid": "string",
    -    "createdAt": "string",
    -    "publishedAt": "string",
    -    "updatedAt": "string",
    -    "category": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "licence": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "language": {
    -      "id": "string",
    -      "label": "string"
    -    },
    -    "privacy": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "isLocal": "boolean",
    -    "name": "string",
    -    "thumbnailPath": "string",
    -    "previewPath": "string",
    -    "embedPath": "string",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean",
    -    "account": {
    -      "name": "string",
    -      "displayName": "string",
    -      "url": "string",
    -      "host": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -

    VideoComment

    -
    -
    -

    Operations dealing with comments to a video. Comments are organized in threads.

    -
    -
    -
    - - -
    - VideoComment - -
    - - -

    - Get the comment threads of a video by its id -

    -
    -
    -
    - GET - /videos/{id}/comment-threads -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    - - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "total": "number",
    -  "data": [
    -    {
    -      "id": "number",
    -      "url": "string",
    -      "text": "string",
    -      "threadId": "number",
    -      "inReplyToCommentId": "number",
    -      "videoId": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "totalReplies": "number",
    -      "account": {
    -        "displayName": "string",
    -        "id": "number",
    -        "uuid": "string",
    -        "url": "string",
    -        "name": "string",
    -        "host": "string",
    -        "followingCount": "number",
    -        "followersCount": "number",
    -        "createdAt": "string",
    -        "updatedAt": "string",
    -        "avatar": {
    -          "path": "string",
    -          "createdAt": "string",
    -          "updatedAt": "string"
    -        }
    -      }
    -    }
    -  ]
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - VideoComment - -
    - - -

    - Creates a comment thread, on a video by its id -

    -
    -
    -
    - POST - /videos/{id}/comment-threads -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    - - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - VideoComment - -
    - - -

    - Get the comment thread by its id, of a video by its id -

    -
    -
    -
    - GET - /videos/{id}/comment-threads/{threadId} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    threadId: - - number - - -
    - -
    in path
    -
    -
    -

    The thread id (root comment id)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    - - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  },
    -  "children": [
    -    {
    -      "comment": {
    -        "id": "number",
    -        "url": "string",
    -        "text": "string",
    -        "threadId": "number",
    -        "inReplyToCommentId": "number",
    -        "videoId": "number",
    -        "createdAt": "string",
    -        "updatedAt": "string",
    -        "totalReplies": "number",
    -        "account": {
    -          "displayName": "string",
    -          "id": "number",
    -          "uuid": "string",
    -          "url": "string",
    -          "name": "string",
    -          "host": "string",
    -          "followingCount": "number",
    -          "followersCount": "number",
    -          "createdAt": "string",
    -          "updatedAt": "string",
    -          "avatar": {
    -            "path": "string",
    -            "createdAt": "string",
    -            "updatedAt": "string"
    -          }
    -        }
    -      },
    -      "children": [
    -        {
    -          "comment": {
    -            "id": "number",
    -            "url": "string",
    -            "text": "string",
    -            "threadId": "number",
    -            "inReplyToCommentId": "number",
    -            "videoId": "number",
    -            "createdAt": "string",
    -            "updatedAt": "string",
    -            "totalReplies": "number",
    -            "account": {
    -              "id": "number",
    -              "uuid": "string",
    -              "url": "string",
    -              "name": "string",
    -              "host": "string",
    -              "followingCount": "number",
    -              "followersCount": "number",
    -              "createdAt": "string",
    -              "updatedAt": "string",
    -              "avatar": {
    -                "path": "string",
    -                "createdAt": "string",
    -                "updatedAt": "string"
    -              }
    -            }
    -          }
    -        }
    -      ]
    -    }
    -  ]
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - VideoComment - -
    - - -

    - Creates a comment in a comment thread by its id, of a video by its id -

    -
    -
    -
    - POST - /videos/{id}/comments/{commentId} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    threadId: - - number - - -
    - -
    in path
    -
    -
    -

    The comment id

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    - - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - VideoComment - -
    - - -

    - Delete a comment in a comment therad by its id, of a video by its id -

    -
    -
    -
    - DELETE - /videos/{id}/comments/{commentId} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    threadId: - - number - - -
    - -
    in path
    -
    -
    -

    The comment id

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -

    VideoChannel

    -
    -
    -

    Operations dealing with creation, modification and video listing of a user's channels.

    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Get list of video channels -

    -
    -
    -
    - GET - /video-channels -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - VideoChannel - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - VideoChannel - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "displayName": "string",
    -    "description": "string",
    -    "isLocal": "boolean",
    -    "ownerAccount": {
    -      "id": "number",
    -      "uuid": "string"
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Creates a video channel for the current user -

    -
    -
    -
    - POST - /video-channels -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "name": "string",
    -  "description": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Get a video channel by its id -

    -
    -
    -
    - GET - /video-channels/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video channel id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - VideoChannel - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "displayName": "string",
    -  "description": "string",
    -  "isLocal": "boolean",
    -  "ownerAccount": {
    -    "id": "number",
    -    "uuid": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Update a video channel by its id -

    -
    -
    -
    - PUT - /video-channels/{id} -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video channel id or uuid

    -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "name": "string",
    -  "description": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Delete a video channel by its id -

    -
    -
    -
    - DELETE - /video-channels/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video channel id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Get videos of a video channel by its id -

    -
    -
    -
    - GET - /video-channels/{id}/videos -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video channel id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    - - -
    - VideoChannel - -
    - - -

    - Get video channels of an account by its name -

    -
    -
    -
    - GET - /accounts/{name}/video-channels -
    -
    -
    -
    -
    -
    -
    -
    -
    name: - - string - - -
    - -
    in path
    -
    -
    -

    The name of the account (chocobozzz or - chocobozzz@peertube.cpy.re for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - VideoChannel - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - VideoChannel - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "displayName": "string",
    -    "description": "string",
    -    "isLocal": "boolean",
    -    "ownerAccount": {
    -      "id": "number",
    -      "uuid": "string"
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -

    User

    -
    - - -
    - User - -
    - - -

    - Creates user -

    -
    -
    -
    - POST - /users -
    -
    -
    -
    -
    -
    -
    -
    -
    - - AddUser - -
    -
    -
    - -

    User to create

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "username": "string",
    -  "password": "string",
    -  "email": "string",
    -  "videoQuota": "string",
    -  "role": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - AddUserResponse - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "uuid": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Get a list of users -

    -
    -
    -
    - GET - /users -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - User - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - User - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "username": "string",
    -    "email": "string",
    -    "displayNSFW": "boolean",
    -    "autoPlayVideo": "boolean",
    -    "role": "string",
    -    "videoQuota": "number",
    -    "createdAt": "string",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "videoChannels": [
    -      {
    -        "displayName": "string",
    -        "description": "string",
    -        "isLocal": "boolean",
    -        "ownerAccount": {
    -          "id": "number",
    -          "uuid": "string"
    -        }
    -      }
    -    ]
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Delete a user by its id -

    -
    -
    -
    - DELETE - /users/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - number - - -
    - -
    in path
    -
    -
    -

    The user id

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Get user by its id -

    -
    -
    -
    - GET - /users/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - number - - -
    - -
    in path
    -
    -
    -

    The user id

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - User - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "number",
    -  "username": "string",
    -  "email": "string",
    -  "displayNSFW": "boolean",
    -  "autoPlayVideo": "boolean",
    -  "role": "string",
    -  "videoQuota": "number",
    -  "createdAt": "string",
    -  "account": {
    -    "displayName": "string",
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "videoChannels": [
    -    {
    -      "displayName": "string",
    -      "description": "string",
    -      "isLocal": "boolean",
    -      "ownerAccount": {
    -        "id": "number",
    -        "uuid": "string"
    -      }
    -    }
    -  ]
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Update user profile by its id -

    -
    -
    -
    - PUT - /users/{id} -
    -
    -
    -
    -
    -
    -
    -
    -
    - - UpdateUser - -
    -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    id: - - number - - -
    - -
    in path
    -
    -
    -

    The user id

    -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "id": "string",
    -  "email": "string",
    -  "videoQuota": "string",
    -  "role": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Get current user information -

    -
    -
    -
    - GET - /users/me -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - User - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - User - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "username": "string",
    -    "email": "string",
    -    "displayNSFW": "boolean",
    -    "autoPlayVideo": "boolean",
    -    "role": "string",
    -    "videoQuota": "number",
    -    "createdAt": "string",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    },
    -    "videoChannels": [
    -      {
    -        "displayName": "string",
    -        "description": "string",
    -        "isLocal": "boolean",
    -        "ownerAccount": {
    -          "id": "number",
    -          "uuid": "string"
    -        }
    -      }
    -    ]
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Update current user information -

    -
    -
    -
    - PUT - /users/me -
    -
    -
    -
    -
    -
    -
    -
    -
    - - UpdateMe - -
    -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "password": "string",
    -  "email": "string",
    -  "displayNSFW": "string",
    -  "autoPlayVideo": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Get current user used quota -

    -
    -
    -
    - GET - /users/me/video-quota-used -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - number - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    "number"
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Get rating of video by its id, among those of the current user -

    -
    -
    -
    - GET - /users/me/videos/{videoId}/rating -
    -
    -
    -
    -
    -
    -
    -
    -
    videoId: - - string - - -
    - -
    in path
    -
    -
    -

    The video id

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    - - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "id": "string",
    -  "rating": "number"
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Get videos of the current user -

    -
    -
    -
    - GET - /users/me/videos -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Video - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - Video - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "uuid": "string",
    -    "createdAt": "string",
    -    "publishedAt": "string",
    -    "updatedAt": "string",
    -    "category": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "licence": {
    -      "id": "number",
    -      "label": "string"
    -    },
    -    "language": {
    -      "id": "string",
    -      "label": "string"
    -    },
    -    "privacy": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "isLocal": "boolean",
    -    "name": "string",
    -    "thumbnailPath": "string",
    -    "previewPath": "string",
    -    "embedPath": "string",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean",
    -    "account": {
    -      "name": "string",
    -      "displayName": "string",
    -      "url": "string",
    -      "host": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Register a user -

    -
    -
    -
    - POST - /users/register -
    -
    -
    -
    -
    -
    -
    -
    -
    - - RegisterUser - -
    -
    -
    - -

    undefined

    - -
    -
    -
    -
    -
    -
    -
    Request Content-Types: - application/json -
    -
    Request Example
    -
    {
    -  "username": "string",
    -  "password": "string",
    -  "email": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    - - -
    - User - -
    - - -

    - Update current user avatar -

    -
    -
    -
    - POST - /users/me/avatar/pick -
    -
    -
    -
    -
    -
    -
    -
    -
    avatarfile: - - file - - -
    -
    in formData
    -
    -
    -

    The file to upload.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - Avatar - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    {
    -  "path": "string",
    -  "createdAt": "string",
    -  "updatedAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -

    VideoBlacklist

    -
    - - - - - -

    - Put on blacklist a video by its id -

    -
    -
    -
    - POST - /videos/{id}/blacklist -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin, - moderator -
    -
    -
    -
    -
    -
    - - - - - -

    - Delete an entry of the blacklist of a video by its id -

    -
    -
    -
    - DELETE - /videos/{id}/blacklist -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin, - moderator -
    -
    -
    -
    -
    -
    - - - - - -

    - Get list of videos on blacklist -

    -
    -
    -
    - GET - /videos/blacklist -
    -
    -
    -
    -
    -
    -
    -
    -
    start: - - number - - -
    -
    in query
    -
    -
    -

    Offset

    -
    -
    -
    -
    -
    count: - - number - - -
    -
    in query
    -
    -
    -

    Number of items

    -
    -
    -
    -
    -
    sort: - - string - - -
    -
    in query
    -
    -
    -

    Sort column (-createdAt for example)

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    200 OK
    -
    - - VideoBlacklist - -
    - -
    -
    -

    successful operation

    -
    -
    -
    -
    type
    -
    - - - VideoBlacklist - - - -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    Response Example - (200 OK) -
    -
    [
    -  {
    -    "id": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "name": "string",
    -    "uuid": "string",
    -    "description": "string",
    -    "duration": "number",
    -    "views": "number",
    -    "likes": "number",
    -    "dislikes": "number",
    -    "nsfw": "boolean"
    -  }
    -]
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 - - admin, - moderator -
    -
    -
    -
    -
    -

    VideoRate

    -
    - - -
    - VideoRate - -
    - - -

    - Vote for a video by its id -

    -
    -
    -
    - PUT - /videos/{id}/rate -
    -
    -
    -
    -
    -
    -
    -
    -
    id: - - string - - -
    - -
    in path
    -
    -
    -

    The video id or uuid

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    204 No Content
    -
    -
    -

    Successful operation

    -
    -
    -
    -
    -
    -
    Response Content-Types: - application/json -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    - OAuth2 -
    -
    -
    -
    -
    -

    Schema Definitions

    -
    -

    - VideoConstantNumber: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - label: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "label": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoConstantString: - -

    -
    -
    -
    -
    -
    - id: - string - -
    -
    - label: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "string",
    -  "label": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoPrivacy: string - -

    -
    -
    - string - - Public, - Unlisted, - Private - - -
    -
    -
    -
    -

    - Video: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - uuid: - string - -
    -
    - createdAt: - string - -
    -
    - publishedAt: - string - -
    -
    - updatedAt: - string - -
    -
    - category: - - - VideoConstantNumber - - - -
    -
    - licence: - - - VideoConstantNumber - - - -
    -
    - language: - - - VideoConstantString - - - -
    -
    - privacy: - - - VideoPrivacy - - - -
    -
    - description: - string - -
    -
    - duration: - number - -
    -
    - isLocal: - boolean - -
    -
    - name: - string - -
    -
    - thumbnailPath: - string - -
    -
    - previewPath: - string - -
    -
    - embedPath: - string - -
    -
    - views: - number - -
    -
    - likes: - number - -
    -
    - dislikes: - number - -
    -
    - nsfw: - boolean - -
    -
    - account: - object - -
    -
    -
    -
    -
    - name: - string - -
    -
    - displayName: - string - -
    -
    - url: - string - -
    -
    - host: - string - -
    -
    - avatar: - - - Avatar - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "createdAt": "string",
    -  "publishedAt": "string",
    -  "updatedAt": "string",
    -  "category": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "licence": {
    -    "id": "number",
    -    "label": "string"
    -  },
    -  "language": {
    -    "id": "string",
    -    "label": "string"
    -  },
    -  "privacy": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "isLocal": "boolean",
    -  "name": "string",
    -  "thumbnailPath": "string",
    -  "previewPath": "string",
    -  "embedPath": "string",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean",
    -  "account": {
    -    "name": "string",
    -    "displayName": "string",
    -    "url": "string",
    -    "host": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoAbuse: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - reason: - string - -
    -
    - reporterAccount: - - - Account - - - -
    -
    - video: - object - -
    -
    -
    -
    -
    - id: - number - -
    -
    - name: - string - -
    -
    - uuid: - string - -
    -
    - url: - string - -
    -
    -
    -
    -
    - createdAt: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "reason": "string",
    -  "reporterAccount": {
    -    "displayName": "string",
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "video": {
    -    "id": "number",
    -    "name": "string",
    -    "uuid": "string",
    -    "url": "string"
    -  },
    -  "createdAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoBlacklist: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - videoId: - number - -
    -
    - createdAt: - string - -
    -
    - updatedAt: - string - -
    -
    - name: - string - -
    -
    - uuid: - string - -
    -
    - description: - string - -
    -
    - duration: - number - -
    -
    - views: - number - -
    -
    - likes: - number - -
    -
    - dislikes: - number - -
    -
    - nsfw: - boolean - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "videoId": "number",
    -  "createdAt": "string",
    -  "updatedAt": "string",
    -  "name": "string",
    -  "uuid": "string",
    -  "description": "string",
    -  "duration": "number",
    -  "views": "number",
    -  "likes": "number",
    -  "dislikes": "number",
    -  "nsfw": "boolean"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoChannel: - -

    -
    -
    -
    -
    -
    - displayName: - string - -
    -
    - description: - string - -
    -
    - isLocal: - boolean - -
    -
    - ownerAccount: - object - -
    -
    -
    -
    -
    - id: - number - -
    -
    - uuid: - string - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "displayName": "string",
    -  "description": "string",
    -  "isLocal": "boolean",
    -  "ownerAccount": {
    -    "id": "number",
    -    "uuid": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoComment: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - url: - string - -
    -
    - text: - string - -
    -
    - threadId: - number - -
    -
    - inReplyToCommentId: - number - -
    -
    - videoId: - number - -
    -
    - createdAt: - string - -
    -
    - updatedAt: - string - -
    -
    - totalReplies: - number - -
    -
    - account: - - - Account - - - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "url": "string",
    -  "text": "string",
    -  "threadId": "number",
    -  "inReplyToCommentId": "number",
    -  "videoId": "number",
    -  "createdAt": "string",
    -  "updatedAt": "string",
    -  "totalReplies": "number",
    -  "account": {
    -    "displayName": "string",
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoCommentThreadTree: - -

    -
    -
    -
    -
    -
    - comment: - - - VideoComment - - - -
    -
    - children: - - - VideoCommentThreadTree - - - -
    -
    -
    - - - VideoCommentThreadTree - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  },
    -  "children": [
    -    {
    -      "comment": {
    -        "id": "number",
    -        "url": "string",
    -        "text": "string",
    -        "threadId": "number",
    -        "inReplyToCommentId": "number",
    -        "videoId": "number",
    -        "createdAt": "string",
    -        "updatedAt": "string",
    -        "totalReplies": "number",
    -        "account": {
    -          "displayName": "string",
    -          "id": "number",
    -          "uuid": "string",
    -          "url": "string",
    -          "name": "string",
    -          "host": "string",
    -          "followingCount": "number",
    -          "followersCount": "number",
    -          "createdAt": "string",
    -          "updatedAt": "string",
    -          "avatar": {
    -            "path": "string",
    -            "createdAt": "string",
    -            "updatedAt": "string"
    -          }
    -        }
    -      },
    -      "children": [
    -        {
    -          "comment": {
    -            "id": "number",
    -            "url": "string",
    -            "text": "string",
    -            "threadId": "number",
    -            "inReplyToCommentId": "number",
    -            "videoId": "number",
    -            "createdAt": "string",
    -            "updatedAt": "string",
    -            "totalReplies": "number",
    -            "account": {
    -              "displayName": "string",
    -              "id": "number",
    -              "uuid": "string",
    -              "url": "string",
    -              "name": "string",
    -              "host": "string",
    -              "followingCount": "number",
    -              "followersCount": "number",
    -              "createdAt": "string",
    -              "updatedAt": "string",
    -              "avatar": {
    -                "path": "string",
    -                "createdAt": "string",
    -                "updatedAt": "string"
    -              }
    -            }
    -          }
    -        }
    -      ]
    -    }
    -  ]
    -}
    -
    - -
    -
    -
    -
    -
    -

    - Avatar: - -

    -
    -
    -
    -
    -
    - path: - string - -
    -
    - createdAt: - string - -
    -
    - updatedAt: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "path": "string",
    -  "createdAt": "string",
    -  "updatedAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - Actor: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - uuid: - string - -
    -
    - url: - string - -
    -
    - name: - string - -
    -
    - host: - string - -
    -
    - followingCount: - number - -
    -
    - followersCount: - number - -
    -
    - createdAt: - string - -
    -
    - updatedAt: - string - -
    -
    - avatar: - - - Avatar - - - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "uuid": "string",
    -  "url": "string",
    -  "name": "string",
    -  "host": "string",
    -  "followingCount": "number",
    -  "followersCount": "number",
    -  "createdAt": "string",
    -  "updatedAt": "string",
    -  "avatar": {
    -    "path": "string",
    -    "createdAt": "string",
    -    "updatedAt": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - Account: - -

    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - displayName: - string - -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "displayName": "string",
    -  "id": "number",
    -  "uuid": "string",
    -  "url": "string",
    -  "name": "string",
    -  "host": "string",
    -  "followingCount": "number",
    -  "followersCount": "number",
    -  "createdAt": "string",
    -  "updatedAt": "string",
    -  "avatar": {
    -    "path": "string",
    -    "createdAt": "string",
    -    "updatedAt": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - User: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - username: - string - -
    -
    - email: - string - -
    -
    - displayNSFW: - boolean - -
    -
    - autoPlayVideo: - boolean - -
    -
    - role: - string - - User, - Moderator, - Administrator - - -
    -
    - videoQuota: - number - -
    -
    - createdAt: - string - -
    -
    - account: - - - Account - - - -
    -
    - videoChannels: - - - VideoChannel - - - -
    -
    -
    - - - VideoChannel - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "username": "string",
    -  "email": "string",
    -  "displayNSFW": "boolean",
    -  "autoPlayVideo": "boolean",
    -  "role": "string",
    -  "videoQuota": "number",
    -  "createdAt": "string",
    -  "account": {
    -    "displayName": "string",
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "videoChannels": [
    -    {
    -      "displayName": "string",
    -      "description": "string",
    -      "isLocal": "boolean",
    -      "ownerAccount": {
    -        "id": "number",
    -        "uuid": "string"
    -      }
    -    }
    -  ]
    -}
    -
    - -
    -
    -
    -
    -
    -

    - ServerConfig: - -

    -
    -
    -
    -
    -
    - signup: - object - -
    -
    -
    -
    -
    - allowed: - boolean - -
    -
    -
    -
    -
    - transcoding: - object - -
    -
    -
    -
    -
    - enabledResolutions: - number[] - -
    -
    -
    - number - -
    -
    -
    -
    -
    -
    -
    - avatar: - object - -
    -
    -
    -
    -
    - file: - object - -
    -
    -
    -
    -
    - size: - object - -
    -
    -
    -
    -
    - max: - number - -
    -
    -
    -
    -
    -
    -
    -
    - extensions: - string[] - -
    -
    -
    - string - -
    -
    -
    -
    -
    -
    -
    - video: - object - -
    -
    -
    -
    -
    - file: - object - -
    -
    -
    -
    -
    - extensions: - string[] - -
    -
    -
    - string - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "signup": {
    -    "allowed": "boolean"
    -  },
    -  "transcoding": {
    -    "enabledResolutions": [
    -      "number"
    -    ]
    -  },
    -  "avatar": {
    -    "file": {
    -      "size": {
    -        "max": "number"
    -      }
    -    },
    -    "extensions": [
    -      "string"
    -    ]
    -  },
    -  "video": {
    -    "file": {
    -      "extensions": [
    -        "string"
    -      ]
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - Follow: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - follower: - - - Actor - - - -
    -
    - following: - - - Actor - - - -
    -
    - score: - number - -
    -
    - state: - string - - pending, - accepted - - -
    -
    - createdAt: - string - -
    -
    - updatedAt: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "follower": {
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "following": {
    -    "id": "number",
    -    "uuid": "string",
    -    "url": "string",
    -    "name": "string",
    -    "host": "string",
    -    "followingCount": "number",
    -    "followersCount": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "avatar": {
    -      "path": "string",
    -      "createdAt": "string",
    -      "updatedAt": "string"
    -    }
    -  },
    -  "score": "number",
    -  "state": "string",
    -  "createdAt": "string",
    -  "updatedAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - Job: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - state: - string - - pending, - processing, - error, - success - - -
    -
    - category: - string - - transcoding, - activitypub-http - - -
    -
    - handlerName: - string - -
    -
    - handlerInputData: - string - -
    -
    - createdAt: - string - -
    -
    - updatedAt: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "state": "string",
    -  "category": "string",
    -  "handlerName": "string",
    -  "handlerInputData": "string",
    -  "createdAt": "string",
    -  "updatedAt": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - AddUserResponse: - -

    -
    -
    -
    -
    -
    - id: - number - -
    -
    - uuid: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "number",
    -  "uuid": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoUploadResponse: - -

    -
    -
    -
    -
    -
    - video: - object - -
    -
    -
    -
    -
    - id: - number - -
    -
    - uuid: - string - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "video": {
    -    "id": "number",
    -    "uuid": "string"
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - CommentThreadResponse: - -

    -
    -
    -
    -
    -
    - total: - number - -
    -
    - data: - - - VideoComment - - - -
    -
    -
    - - - VideoComment - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "total": "number",
    -  "data": [
    -    {
    -      "id": "number",
    -      "url": "string",
    -      "text": "string",
    -      "threadId": "number",
    -      "inReplyToCommentId": "number",
    -      "videoId": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "totalReplies": "number",
    -      "account": {
    -        "displayName": "string",
    -        "id": "number",
    -        "uuid": "string",
    -        "url": "string",
    -        "name": "string",
    -        "host": "string",
    -        "followingCount": "number",
    -        "followersCount": "number",
    -        "createdAt": "string",
    -        "updatedAt": "string",
    -        "avatar": {
    -          "path": "string",
    -          "createdAt": "string",
    -          "updatedAt": "string"
    -        }
    -      }
    -    }
    -  ]
    -}
    -
    - -
    -
    -
    -
    -
    -

    - CommentThreadPostResponse: - -

    -
    -
    -
    -
    -
    - comment: - - - VideoComment - - - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "comment": {
    -    "id": "number",
    -    "url": "string",
    -    "text": "string",
    -    "threadId": "number",
    -    "inReplyToCommentId": "number",
    -    "videoId": "number",
    -    "createdAt": "string",
    -    "updatedAt": "string",
    -    "totalReplies": "number",
    -    "account": {
    -      "displayName": "string",
    -      "id": "number",
    -      "uuid": "string",
    -      "url": "string",
    -      "name": "string",
    -      "host": "string",
    -      "followingCount": "number",
    -      "followersCount": "number",
    -      "createdAt": "string",
    -      "updatedAt": "string",
    -      "avatar": {
    -        "path": "string",
    -        "createdAt": "string",
    -        "updatedAt": "string"
    -      }
    -    }
    -  }
    -}
    -
    - -
    -
    -
    -
    -
    -

    - AddUser: - -

    -
    -
    -
    -
    -
    - username: - string - - -
    -
    -

    The user username

    -
    -
    - password: - string - - -
    -
    -

    The user password

    -
    -
    - email: - string - - -
    -
    -

    The user email

    -
    -
    - videoQuota: - string - - -
    -
    -

    The user videoQuota

    -
    -
    - role: - string - - -
    -
    -

    The user role

    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "username": "string",
    -  "password": "string",
    -  "email": "string",
    -  "videoQuota": "string",
    -  "role": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - UpdateUser: - -

    -
    -
    -
    -
    -
    - id: - string - - -
    -
    -

    The user id

    -
    -
    - email: - string - - -
    -
    -

    The updated email of the user

    -
    -
    - videoQuota: - string - - -
    -
    -

    The updated videoQuota of the user

    -
    -
    - role: - string - - -
    -
    -

    The updated role of the user

    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "string",
    -  "email": "string",
    -  "videoQuota": "string",
    -  "role": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - UpdateMe: - -

    -
    -
    -
    -
    -
    - password: - string - - -
    -
    -

    Your new password

    -
    -
    - email: - string - - -
    -
    -

    Your new email

    -
    -
    - displayNSFW: - string - - -
    -
    -

    Your new displayNSFW

    -
    -
    - autoPlayVideo: - string - - -
    -
    -

    Your new autoPlayVideo

    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "password": "string",
    -  "email": "string",
    -  "displayNSFW": "string",
    -  "autoPlayVideo": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - GetMeVideoRating: - -

    -
    -
    -
    -
    -
    - id: - string - - -
    -
    -

    Id of the video

    -
    -
    - rating: - number - - -
    -
    -

    Rating of the video

    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "id": "string",
    -  "rating": "number"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - RegisterUser: - -

    -
    -
    -
    -
    -
    - username: - string - - -
    -
    -

    The username of the user

    -
    -
    - password: - string - - -
    -
    -

    The password of the user

    -
    -
    - email: - string - - -
    -
    -

    The email of the user

    -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "username": "string",
    -  "password": "string",
    -  "email": "string"
    -}
    -
    - -
    -
    -
    -
    -
    -

    - VideoChannelInput: - -

    -
    -
    -
    -
    -
    - name: - string - -
    -
    - description: - string - -
    -
    -
    -
    -
    -
    -
    Example
    -
    {
    -  "name": "string",
    -  "description": "string"
    -}
    -
    - -
    -
    -
    -
    - -
    -
    -
    - - \ No newline at end of file diff --git a/support/doc/api/html/javascripts/spectacle.js b/support/doc/api/html/javascripts/spectacle.js deleted file mode 100644 index e75fc6a3a..000000000 --- a/support/doc/api/html/javascripts/spectacle.js +++ /dev/null @@ -1,242 +0,0 @@ -$(function() { - // $(document).foundation(); - - var $sidebar = $('#sidebar'); - if ($sidebar.length) { - var $docs = $('#docs'); - var $nav = $sidebar.find('nav'); - - // - // Setup sidebar navigation - var traverse = new Traverse($nav, { - threshold: 10, - barOffset: $sidebar.position().top - }); - - $nav.on('update.traverse', function(event, element) { - $nav.find('section').removeClass('expand'); - var $section = element.parents('section:first'); - if ($section.length) { - $section.addClass('expand'); - } - }); - - // - // Bind the drawer layout - var $drawerLayout = $('.drawer-layout'), - $drawer = $drawerLayout.find('.drawer'), - closeDrawer = function() { - $drawer.removeClass('slide-right slide-left'); - $drawer.find('.drawer-overlay').remove(); - $drawerLayout.removeClass('drawer-open drawer-slide-left-large drawer-slide-right-large'); - return false; - }; - - // Drawer open buttons - $drawerLayout.find('[data-drawer-slide]').click(function(e) { - var $this = $(this), - direction = $this.data('drawer-slide'); - $drawerLayout.addClass('drawer-open'); - $drawer.addClass('slide-' + direction); - - var $overlay = $('') - $drawer.append($overlay); - $overlay.click(closeDrawer); - - return false; - }); - - // Drawer close buttons - $drawerLayout.find('[data-drawer-close]').click(closeDrawer); - } -}); - -/** - * Creates a new instance of Traverse. - * @class - * @fires Traverse#init - * @param {Object} element - jQuery object to add the trigger to. - * @param {Object} options - Overrides to the default plugin settings. - */ -function Traverse(element, options) { - this.$element = element; - this.options = $.extend({}, Traverse.defaults, this.$element.data(), options); - - this._init(); -} - -/** - * Default settings for plugin - */ -Traverse.defaults = { - /** - * Amount of time, in ms, the animated scrolling should take between locations. - * @option - * @example 500 - */ - animationDuration: 500, - /** - * Animation style to use when scrolling between locations. - * @option - * @example 'ease-in-out' - */ - animationEasing: 'linear', - /** - * Number of pixels to use as a marker for location changes. - * @option - * @example 50 - */ - threshold: 50, - /** - * Class applied to the active locations link on the traverse container. - * @option - * @example 'active' - */ - activeClass: 'active', - /** - * Allows the script to manipulate the url of the current page, and if supported, alter the history. - * @option - * @example true - */ - deepLinking: false, - /** - * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar. - * @option - * @example 25 - */ - barOffset: 0 -}; - -/** - * Initializes the Traverse plugin and calls functions to get equalizer functioning on load. - * @private - */ -Traverse.prototype._init = function() { - var id = this.$element[0].id, // || Foundation.GetYoDigits(6, 'traverse'), - _this = this; - this.$targets = $('[data-traverse-target]'); - this.$links = this.$element.find('a'); - this.$element.attr({ - 'data-resize': id, - 'data-scroll': id, - 'id': id - }); - this.$active = $(); - this.scrollPos = parseInt(window.pageYOffset, 10); - - this._events(); -}; - -/** - * Calculates an array of pixel values that are the demarcation lines between locations on the page. - * Can be invoked if new elements are added or the size of a location changes. - * @function - */ -Traverse.prototype.calcPoints = function(){ - var _this = this, - body = document.body, - html = document.documentElement; - - this.points = []; - this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight)); - this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight)); - - this.$targets.each(function(){ - var $tar = $(this), - pt = $tar.offset().top; // Math.round($tar.offset().top - _this.options.threshold); - $tar.targetPoint = pt; - _this.points.push(pt); - }); -}; - -/** - * Initializes events for Traverse. - * @private - */ -Traverse.prototype._events = function() { - var _this = this, - $body = $('html, body'), - opts = { - duration: _this.options.animationDuration, - easing: _this.options.animationEasing - }; - - $(window).one('load', function(){ - _this.calcPoints(); - _this._updateActive(); - - $(this).resize(function(e) { - _this.reflow(); - }).scroll(function(e) { - _this._updateActive(); - }); - }) - - this.$element.on('click', 'a[href^="#"]', function(e) { //'click.zf.traverse' - e.preventDefault(); - var arrival = this.getAttribute('href').replace(".", "\\."), - scrollPos = $(arrival).offset().top - _this.options.barOffset; // - _this.options.threshold / 2 - _this.options.barOffset; - - $body.stop(true).animate({ - scrollTop: scrollPos - }, opts); - }); -}; - -/** - * Calls necessary functions to update Traverse upon DOM change - * @function - */ -Traverse.prototype.reflow = function(){ - this.calcPoints(); - this._updateActive(); -}; - -/** - * Updates the visibility of an active location link, - * and updates the url hash for the page, if deepLinking enabled. - * @private - * @function - * @fires Traverse#update - */ - Traverse.prototype._updateActive = function(){ - var winPos = parseInt(window.pageYOffset, 10), - curIdx; - - if(winPos + this.winHeight === this.docHeight){ curIdx = this.points.length - 1; } - else if(winPos < this.points[0]){ curIdx = 0; } - else{ - var isDown = this.scrollPos < winPos, - _this = this, - curVisible = this.points.filter(function(p, i){ - return isDown ? - p <= (winPos + _this.options.barOffset + _this.options.threshold) : - (p - (_this.options.barOffset + _this.options.threshold)) <= winPos; - // p <= (winPos - (offset - _this.options.threshold)) : - // (p - (-offset + _this.options.threshold)) <= winPos; - }); - curIdx = curVisible.length ? curVisible.length - 1 : 0; - } - - var $prev = this.$active; - var $next = this.$links.eq(curIdx); - this.$active.removeClass(this.options.activeClass); - this.$active = $next.addClass(this.options.activeClass); - - if(this.options.deepLinking){ - var hash = this.$active[0].getAttribute('href'); - if(window.history.pushState){ - window.history.pushState(null, null, hash); - }else{ - window.location.hash = hash; - } - } - - this.scrollPos = winPos; - - // Fire event if the active element was changed - var changed = $prev[0] !== $next[0]; - if (changed) { - this.$element.trigger('update.traverse', [this.$active]); - } - }; diff --git a/support/doc/api/html/javascripts/spectacle.min.js b/support/doc/api/html/javascripts/spectacle.min.js deleted file mode 100644 index f8d0b1fbd..000000000 --- a/support/doc/api/html/javascripts/spectacle.min.js +++ /dev/null @@ -1 +0,0 @@ -function Traverse(t,e){this.$element=t,this.options=$.extend({},Traverse.defaults,this.$element.data(),e),this._init()}$(function(){var t=$("#sidebar");if(t.length){$("#docs");var s=t.find("nav");new Traverse(s,{threshold:10,barOffset:t.position().top});s.on("update.traverse",function(t,e){s.find("section").removeClass("expand");var i=e.parents("section:first");i.length&&i.addClass("expand")});var a=$(".drawer-layout"),n=a.find(".drawer"),r=function(){return n.removeClass("slide-right slide-left"),n.find(".drawer-overlay").remove(),a.removeClass("drawer-open drawer-slide-left-large drawer-slide-right-large"),!1};a.find("[data-drawer-slide]").click(function(t){var e=$(this).data("drawer-slide");a.addClass("drawer-open"),n.addClass("slide-"+e);var i=$('');return n.append(i),i.click(r),!1}),a.find("[data-drawer-close]").click(r)}}),Traverse.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"active",deepLinking:!1,barOffset:0},Traverse.prototype._init=function(){var t=this.$element[0].id;this.$targets=$("[data-traverse-target]"),this.$links=this.$element.find("a"),this.$element.attr({"data-resize":t,"data-scroll":t,id:t}),this.$active=$(),this.scrollPos=parseInt(window.pageYOffset,10),this._events()},Traverse.prototype.calcPoints=function(){var i=this,t=document.body,e=document.documentElement;this.points=[],this.winHeight=Math.round(Math.max(window.innerHeight,e.clientHeight)),this.docHeight=Math.round(Math.max(t.scrollHeight,t.offsetHeight,e.clientHeight,e.scrollHeight,e.offsetHeight)),this.$targets.each(function(){var t=$(this),e=t.offset().top;t.targetPoint=e,i.points.push(e)})},Traverse.prototype._events=function(){var s=this,a=$("html, body"),n={duration:s.options.animationDuration,easing:s.options.animationEasing};$(window).one("load",function(){s.calcPoints(),s._updateActive(),$(this).resize(function(t){s.reflow()}).scroll(function(t){s._updateActive()})}),this.$element.on("click",'a[href^="#"]',function(t){t.preventDefault();var e=this.getAttribute("href").replace(".","\\."),i=$(e).offset().top-s.options.barOffset;a.stop(!0).animate({scrollTop:i},n)})},Traverse.prototype.reflow=function(){this.calcPoints(),this._updateActive()},Traverse.prototype._updateActive=function(){var t,i=parseInt(window.pageYOffset,10);if(i+this.winHeight===this.docHeight)t=this.points.length-1;else if(i

    -
    +
    +
    Sorry, but something went wrong
    + {{ error }} +
    + +
    Congratulations, the video will be imported with BitTorrent! You can already add information about this video.
    diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.scss b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.scss index 262b0b68e..00626cd7b 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.scss +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.scss @@ -7,6 +7,14 @@ $width-size: 190px; @include peertube-select-container($width-size); } +.alert.alert-danger { + text-align: center; + + & > div { + font-weight: $font-semibold; + } +} + .import-video-torrent { display: flex; flex-direction: column; diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts index e13c06ce9..13776ae36 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts @@ -12,6 +12,7 @@ import { VideoEdit } from '@app/shared/video/video-edit.model' import { FormValidatorService } from '@app/shared' import { VideoCaptionService } from '@app/shared/video-caption' import { VideoImportService } from '@app/shared/video-import' +import { scrollToTop } from '@app/shared/misc/utils' @Component({ selector: 'my-video-import-torrent', @@ -23,9 +24,9 @@ import { VideoImportService } from '@app/shared/video-import' }) export class VideoImportTorrentComponent extends VideoSend implements OnInit, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() + @Output() firstStepError = new EventEmitter() @ViewChild('torrentfileInput') torrentfileInput: ElementRef - videoFileName: string magnetUri = '' isImportingVideo = false @@ -33,6 +34,7 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca isUpdatingVideo = false video: VideoEdit + error: string protected readonly DEFAULT_VIDEO_PRIVACY = VideoPrivacy.PUBLIC @@ -104,6 +106,7 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca err => { this.loadingBar.complete() this.isImportingVideo = false + this.firstStepError.emit() this.notificationsService.error(this.i18n('Error'), err.message) } ) @@ -129,8 +132,8 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca }, err => { - this.isUpdatingVideo = false - this.notificationsService.error(this.i18n('Error'), err.message) + this.error = err.message + scrollToTop() console.error(err) } ) diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.html b/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.html index 9f5fc6d22..533446672 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.html +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.html @@ -37,7 +37,13 @@
    -
    + +
    +
    Sorry, but something went wrong
    + {{ error }} +
    + +
    Congratulations, the video behind {{ targetUrl }} will be imported! You can already add information about this video.
    diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.scss b/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.scss index 7c6deda1d..e907edc70 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.scss +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.scss @@ -7,6 +7,14 @@ $width-size: 190px; @include peertube-select-container($width-size); } +.alert.alert-danger { + text-align: center; + + & > div { + font-weight: $font-semibold; + } +} + .import-video-url { display: flex; flex-direction: column; diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.ts index 031e557ed..9cdface75 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-import-url.component.ts @@ -12,6 +12,7 @@ import { VideoEdit } from '@app/shared/video/video-edit.model' import { FormValidatorService } from '@app/shared' import { VideoCaptionService } from '@app/shared/video-caption' import { VideoImportService } from '@app/shared/video-import' +import { scrollToTop } from '@app/shared/misc/utils' @Component({ selector: 'my-video-import-url', @@ -23,15 +24,16 @@ import { VideoImportService } from '@app/shared/video-import' }) export class VideoImportUrlComponent extends VideoSend implements OnInit, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() + @Output() firstStepError = new EventEmitter() targetUrl = '' - videoFileName: string isImportingVideo = false hasImportedVideo = false isUpdatingVideo = false video: VideoEdit + error: string protected readonly DEFAULT_VIDEO_PRIVACY = VideoPrivacy.PUBLIC @@ -96,6 +98,7 @@ export class VideoImportUrlComponent extends VideoSend implements OnInit, CanCom err => { this.loadingBar.complete() this.isImportingVideo = false + this.firstStepError.emit() this.notificationsService.error(this.i18n('Error'), err.message) } ) @@ -121,8 +124,8 @@ export class VideoImportUrlComponent extends VideoSend implements OnInit, CanCom }, err => { - this.isUpdatingVideo = false - this.notificationsService.error(this.i18n('Error'), err.message) + this.error = err.message + scrollToTop() console.error(err) } ) diff --git a/client/src/app/videos/+video-edit/video-add-components/video-send.ts b/client/src/app/videos/+video-edit/video-add-components/video-send.ts index 1bf22e1a9..71d2544d8 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-send.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-send.ts @@ -21,6 +21,7 @@ export abstract class VideoSend extends FormReactive implements OnInit { firstStepChannelId = 0 abstract firstStepDone: EventEmitter + abstract firstStepError: EventEmitter protected abstract readonly DEFAULT_VIDEO_PRIVACY: VideoPrivacy protected loadingBar: LoadingBarService diff --git a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.html b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.html index fa57c8cb5..a09f54dfc 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.html +++ b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.html @@ -29,7 +29,7 @@
    -
    +
    +
    +
    Sorry, but something went wrong
    + {{ error }} +
    +
    - \ No newline at end of file + diff --git a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.scss b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.scss index dbae5230d..cf1725ef9 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.scss +++ b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.scss @@ -5,6 +5,14 @@ @include peertube-select-container(190px); } +.alert.alert-danger { + text-align: center; + + & > div { + font-weight: $font-semibold; + } +} + .upload-video { display: flex; flex-direction: column; @@ -82,4 +90,4 @@ margin-left: 10px; } -} \ No newline at end of file +} diff --git a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts index 8e2d0deaf..3fcb71ac3 100644 --- a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts +++ b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts @@ -14,6 +14,7 @@ import { VideoSend } from '@app/videos/+video-edit/video-add-components/video-se import { CanComponentDeactivate } from '@app/shared/guards/can-deactivate-guard.service' import { FormValidatorService, UserService } from '@app/shared' import { VideoCaptionService } from '@app/shared/video-caption' +import { scrollToTop } from '@app/shared/misc/utils' @Component({ selector: 'my-video-upload', @@ -25,6 +26,7 @@ import { VideoCaptionService } from '@app/shared/video-caption' }) export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() + @Output() firstStepError = new EventEmitter() @ViewChild('videofileInput') videofileInput: ElementRef // So that it can be accessed in the template @@ -43,6 +45,8 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy uuid: '' } + error: string + protected readonly DEFAULT_VIDEO_PRIVACY = VideoPrivacy.PUBLIC constructor ( @@ -201,6 +205,7 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy this.isUploadingVideo = false this.videoUploadPercents = 0 this.videoUploadObservable = null + this.firstStepError.emit() this.notificationsService.error(this.i18n('Error'), err.message) } ) @@ -235,8 +240,8 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy }, err => { - this.isUpdatingVideo = false - this.notificationsService.error(this.i18n('Error'), err.message) + this.error = err.message + scrollToTop() console.error(err) } ) diff --git a/client/src/app/videos/+video-edit/video-add.component.html b/client/src/app/videos/+video-edit/video-add.component.html index e14e23aed..72a233b72 100644 --- a/client/src/app/videos/+video-edit/video-add.component.html +++ b/client/src/app/videos/+video-edit/video-add.component.html @@ -6,24 +6,24 @@ - + Upload a file - + Import with URL - + Import with torrent - + diff --git a/client/src/app/videos/+video-edit/video-add.component.ts b/client/src/app/videos/+video-edit/video-add.component.ts index 1a9247dbe..57a9d0ca7 100644 --- a/client/src/app/videos/+video-edit/video-add.component.ts +++ b/client/src/app/videos/+video-edit/video-add.component.ts @@ -27,6 +27,11 @@ export class VideoAddComponent implements CanComponentDeactivate { this.videoName = videoName } + onError () { + this.videoName = undefined + this.secondStepType = undefined + } + canDeactivate () { if (this.secondStepType === 'upload') return this.videoUpload.canDeactivate() if (this.secondStepType === 'import-url') return this.videoImportUrl.canDeactivate() diff --git a/server/middlewares/validators/videos/videos.ts b/server/middlewares/validators/videos/videos.ts index 656d161d8..bf21bca8c 100644 --- a/server/middlewares/validators/videos/videos.ts +++ b/server/middlewares/validators/videos/videos.ts @@ -393,6 +393,8 @@ export { function areErrorsInScheduleUpdate (req: express.Request, res: express.Response) { if (req.body.scheduleUpdate) { if (!req.body.scheduleUpdate.updateAt) { + logger.warn('Invalid parameters: scheduleUpdate.updateAt is mandatory.') + res.status(400) .json({ error: 'Schedule update at is mandatory.' }) -- cgit v1.2.3 From 8d1fa36ad22a21a9b0fb6bf51a27d09954220013 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Nov 2018 11:18:13 +0100 Subject: Do not host remote AP objects --- server/controllers/activitypub/client.ts | 12 +++++++++++- server/middlewares/cache.ts | 7 +++++++ server/models/redundancy/video-redundancy.ts | 7 +++++-- server/tests/api/check-params/user-subscriptions.ts | 5 +++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/server/controllers/activitypub/client.ts b/server/controllers/activitypub/client.ts index ffbf1ba19..a342a48d4 100644 --- a/server/controllers/activitypub/client.ts +++ b/server/controllers/activitypub/client.ts @@ -39,6 +39,7 @@ import { import { VideoCaptionModel } from '../../models/video/video-caption' import { videoRedundancyGetValidator } from '../../middlewares/validators/redundancy' import { getServerActor } from '../../helpers/utils' +import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy' const activityPubClientRouter = express.Router() @@ -164,6 +165,8 @@ function getAccountVideoRate (rateType: VideoRateType) { async function videoController (req: express.Request, res: express.Response, next: express.NextFunction) { const video: VideoModel = res.locals.video + if (video.isOwned() === false) return res.redirect(video.url) + // We need captions to render AP object video.VideoCaptions = await VideoCaptionModel.listVideoCaptions(video.id) @@ -180,6 +183,9 @@ async function videoController (req: express.Request, res: express.Response, nex async function videoAnnounceController (req: express.Request, res: express.Response, next: express.NextFunction) { const share = res.locals.videoShare as VideoShareModel + + if (share.Actor.isOwned() === false) return res.redirect(share.url) + const { activity } = await buildAnnounceWithVideoAudience(share.Actor, share, res.locals.video, undefined) return activityPubResponse(activityPubContextify(activity), res) @@ -252,6 +258,8 @@ async function videoChannelFollowingController (req: express.Request, res: expre async function videoCommentController (req: express.Request, res: express.Response, next: express.NextFunction) { const videoComment: VideoCommentModel = res.locals.videoComment + if (videoComment.isOwned() === false) return res.redirect(videoComment.url) + const threadParentComments = await VideoCommentModel.listThreadParentComments(videoComment, undefined) const isPublic = true // Comments are always public const audience = getAudience(videoComment.Account.Actor, isPublic) @@ -267,7 +275,9 @@ async function videoCommentController (req: express.Request, res: express.Respon } async function videoRedundancyController (req: express.Request, res: express.Response) { - const videoRedundancy = res.locals.videoRedundancy + const videoRedundancy: VideoRedundancyModel = res.locals.videoRedundancy + if (videoRedundancy.isOwned() === false) return res.redirect(videoRedundancy.url) + const serverActor = await getServerActor() const audience = getAudience(serverActor) diff --git a/server/middlewares/cache.ts b/server/middlewares/cache.ts index 1e00fc731..8ffe75700 100644 --- a/server/middlewares/cache.ts +++ b/server/middlewares/cache.ts @@ -19,6 +19,7 @@ function cacheRoute (lifetimeArg: string | number) { logger.debug('No cached results for route %s.', req.originalUrl) const sendSave = res.send.bind(res) + const redirectSave = res.redirect.bind(res) res.send = (body) => { if (res.statusCode >= 200 && res.statusCode < 400) { @@ -38,6 +39,12 @@ function cacheRoute (lifetimeArg: string | number) { return sendSave(body) } + res.redirect = url => { + done() + + return redirectSave(url) + } + return next() } diff --git a/server/models/redundancy/video-redundancy.ts b/server/models/redundancy/video-redundancy.ts index 35e0cd3b1..9de4356b4 100644 --- a/server/models/redundancy/video-redundancy.ts +++ b/server/models/redundancy/video-redundancy.ts @@ -117,8 +117,7 @@ export class VideoRedundancyModel extends Model { @BeforeDestroy static async removeFile (instance: VideoRedundancyModel) { - // Not us - if (!instance.strategy) return + if (!instance.isOwned()) return const videoFile = await VideoFileModel.loadWithVideo(instance.videoFileId) @@ -404,6 +403,10 @@ export class VideoRedundancyModel extends Model { })) } + isOwned () { + return !!this.strategy + } + toActivityPubObject (): CacheFileObject { return { id: this.url, diff --git a/server/tests/api/check-params/user-subscriptions.ts b/server/tests/api/check-params/user-subscriptions.ts index 9fba99ac8..6af7ed43b 100644 --- a/server/tests/api/check-params/user-subscriptions.ts +++ b/server/tests/api/check-params/user-subscriptions.ts @@ -15,6 +15,7 @@ import { userLogin } from '../../utils' import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '../../utils/requests/check-api-params' +import { waitJobs } from '../../utils/server/jobs' describe('Test user subscriptions API validators', function () { const path = '/api/v1/users/me/subscriptions' @@ -141,6 +142,8 @@ describe('Test user subscriptions API validators', function () { }) it('Should succeed with the correct parameters', async function () { + this.timeout(20000) + await makePostBodyRequest({ url: server.url, path, @@ -148,6 +151,8 @@ describe('Test user subscriptions API validators', function () { fields: { uri: 'user1_channel@localhost:9001' }, statusCodeExpected: 204 }) + + await waitJobs([ server ]) }) }) -- cgit v1.2.3 From cfd140abd6b748b4307d64fc33ea5aac73f94262 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 16 Nov 2018 11:05:28 +0100 Subject: remove superfluous privacy field for upload --- support/doc/api/openapi.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 666e48a41..9f2997774 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -771,7 +771,6 @@ paths: - videofile - channelId - name - - privacy x-code-samples: - lang: Shell source: | @@ -781,7 +780,6 @@ paths: PASSWORD="" FILE_PATH="" CHANNEL_ID="" - PRIVACY="1" # public: 1, unlisted: 2, private: 3 NAME="" API_PATH="https://peertube2.cpy.re/api/v1" @@ -798,7 +796,6 @@ paths: videofile@$FILE_PATH \ channelId=$CHANNEL_ID \ name=$NAME \ - privacy=$PRIVACY \ "Authorization:Bearer $token" /videos/abuse: get: -- cgit v1.2.3 From 6441981bc6e5063dd09e742e4e34ab848ab00ea8 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 16 Nov 2018 12:11:00 +0100 Subject: adding ownership and watching video APIs to the spec --- support/doc/api/openapi.yaml | 132 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 9f2997774..8f5f886a1 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -22,6 +22,8 @@ info: When you sign up for an account, you are given the possibility to generate sessions, and authenticate using this session token. One session token can currently be used at a time. +externalDocs: + url: https://docs.joinpeertube.org/api.html tags: - name: Accounts description: > @@ -144,7 +146,7 @@ paths: get: tags: - Config - summary: Get the configuration of the server + summary: Get the public configuration of the server responses: '200': description: successful operation @@ -152,6 +154,45 @@ paths: application/json: schema: $ref: '#/components/schemas/ServerConfig' + /config/about: + get: + summary: Get the instance about page content + tags: + - Config + responses: + '200': + description: successful operation + /config/custom: + get: + summary: Get the runtime configuration of the server + tags: + - Config + security: + - OAuth2: + - admin + responses: + '200': + description: successful operation + put: + summary: Set the runtime configuration of the server + tags: + - Config + security: + - OAuth2: + - admin + responses: + '200': + description: successful operation + delete: + summary: Delete the runtime configuration of the server + tags: + - Config + security: + - OAuth2: + - admin + responses: + '200': + description: successful operation '/feeds/videos.{format}': get: summary: >- @@ -701,6 +742,85 @@ paths: responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' + '/videos/{id}/watching': + put: + summary: Indicate progress of in watching the video by its id for a user + tags: + - Video + security: + - OAuth2: [] + parameters: + - $ref: '#/components/parameters/id2' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserWatchingVideo' + required: true + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' + /videos/ownership: + get: + summary: Get list of video ownership changes requests + tags: + - Video + security: + - OAuth2: [] + parameters: + - $ref: '#/components/parameters/id2' + responses: + '200': + description: successful operation + '/videos/ownership/{id}/accept': + post: + summary: Refuse ownership change request for video by its id + tags: + - Video + security: + - OAuth2: [] + parameters: + - $ref: '#/components/parameters/id2' + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' + '/videos/ownership/{id}/refuse': + post: + summary: Accept ownership change request for video by its id + tags: + - Video + security: + - OAuth2: [] + parameters: + - $ref: '#/components/parameters/id2' + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' + '/videos/{id}/give-ownership': + post: + summary: Request change of ownership for a video you own, by its id + tags: + - Video + security: + - OAuth2: [] + parameters: + - $ref: '#/components/parameters/id2' + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + username: + type: string + required: + - username + responses: + '204': + $ref: '#/paths/~1users~1me/put/responses/204' + '400': + description: 'Changing video ownership to a remote account is not supported yet' /videos/upload: post: summary: Upload a video file with its metadata @@ -1093,8 +1213,12 @@ paths: items: $ref: '#/components/schemas/Video' servers: + - url: 'https://peertube.cpy.re/api/v1' + description: Live Test Server (live data - stable version) - url: 'https://peertube2.cpy.re/api/v1' - description: Live Server + description: Live Test Server (live data - bleeding edge version) + - url: 'https://peertube3.cpy.re/api/v1' + description: Live Test Server (live data - bleeding edge version) components: parameters: start: @@ -1414,6 +1538,10 @@ components: type: array items: $ref: '#/components/schemas/VideoChannel' + UserWatchingVideo: + properties: + currentTime: + type: number ServerConfig: properties: signup: -- cgit v1.2.3 From 5776f78e3b3f3a371ec30c7fcb11e7ca17f2f65e Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 16 Nov 2018 14:33:48 +0100 Subject: grouping tags by main category in the spec --- support/doc/api/openapi.yaml | 159 +++++++++++++++++++++++++++++++------------ 1 file changed, 114 insertions(+), 45 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 8f5f886a1..5764a0e30 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -10,29 +10,41 @@ info: url: 'https://github.com/Chocobozzz/PeerTube/blob/master/LICENSE' x-logo: url: 'https://joinpeertube.org/img/brand.png' + altText: PeerTube Project Homepage description: | # Introduction The PeerTube API is built on HTTP(S). Our API is RESTful. It has predictable resource URLs. It returns HTTP response codes to indicate errors. It also accepts and returns JSON in the HTTP body. You can use your favorite HTTP/REST library for your programming language to use PeerTube. No official - SDK is currently provided. + SDK is currently provided, but the spec API is fully compatible with + [openapi-generator](https://github.com/OpenAPITools/openapi-generator/wiki/API-client-generator-HOWTO) + which generates a client SDK in the language of your choice. # Authentication When you sign up for an account, you are given the possibility to generate sessions, and authenticate using this session token. One session token can currently be used at a time. + + # Errors + The API uses standard HTTP status codes to indicate the success or failure + of the API call. The body of the response will be JSON in the following + format. + + ``` + { + "code": "unauthorized_request", // example inner error code + "error": "Token is invalid." // example exposed error message + } + ``` externalDocs: url: https://docs.joinpeertube.org/api.html tags: - name: Accounts description: > Using some features of PeerTube require authentication, for which Accounts - provide different levels of permission as well as associated user - information. - - Accounts also encompass remote accounts discovered across the federation. + information. Accounts also encompass remote accounts discovered across the federation. - name: Config description: > Each server exposes public information regarding supported videos and @@ -44,23 +56,15 @@ tags: - name: Job description: > Jobs are long-running tasks enqueued and processed by the instance - itself. - - No additional worker registration is currently available. - - name: ServerFollowing + itself. No additional worker registration is currently available. + - name: Server Following description: > Managing servers which the instance interacts with is crucial to the - concept - - of federation in PeerTube and external video indexation. The PeerTube - server - - then deals with inter-server ActivityPub operations and propagates - + concept of federation in PeerTube and external video indexation. The PeerTube + server then deals with inter-server ActivityPub operations and propagates information across its social graph by posting activities to actors' inbox - endpoints. - - name: VideoAbuse + - name: Video Abuse description: | Video abuses deal with reports of local or remote videos alike. - name: Video @@ -72,16 +76,50 @@ tags: Videos from other instances federated by the instance (that is, instances followed by the instance) can be found via keywords and other criteria of the advanced search. - - name: VideoComment + - name: Video Comment description: > Operations dealing with comments to a video. Comments are organized in threads. - - name: VideoChannel + - name: Video Channel description: > Operations dealing with creation, modification and video listing of a - user's - - channels. + user's channels. + - name: Video Blacklist + description: > + Operations dealing with blacklisting videos (removing them from view and + preventing interactions). + - name: Video Rate + description: > + Voting for a video. +x-tagGroups: + - name: Accounts + tags: + - Accounts + - User + - name: Videos + tags: + - Video + - Video Channel + - Video Comment + - Video Abuse + - Video Following + - Video Rate + - name: Moderation + tags: + - Video Blacklist + - name: Public Instance Information + tags: + - Config + - Server Following + - name: Notifications + tags: + - Feeds + - name: Jobs + tags: + - Job + - name: Search + tags: + - Search paths: '/accounts/{name}': get: @@ -128,6 +166,37 @@ paths: source: | # pip install httpie http -b GET https://peertube2.cpy.re/api/v1/accounts/{name}/videos + - lang: Ruby + source: | + require 'uri' + require 'net/http' + + url = URI("https://peertube2.cpy.re/api/v1/accounts/{name}/videos") + + http = Net::HTTP.new(url.host, url.port) + http.use_ssl = true + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + + request = Net::HTTP::Post.new(url) + request["content-type"] = 'application/json' + response = http.request(request) + puts response.read_body + - lang: Python + source: | + import http.client + + conn = http.client.HTTPSConnection("https://peertube2.cpy.re/api/v1") + + headers = { + 'content-type': "application/json" + } + + conn.request("POST", "/accounts/{name}/videos", None, headers) + + res = conn.getresponse() + data = res.read() + + print(data.decode("utf-8")) /accounts: get: tags: @@ -264,7 +333,7 @@ paths: - OAuth2: - admin tags: - - ServerFollowing + - Server Following summary: Unfollow a server by hostname parameters: - name: host @@ -279,7 +348,7 @@ paths: /server/followers: get: tags: - - ServerFollowing + - Server Following summary: Get followers of the server parameters: - $ref: '#/components/parameters/start' @@ -297,7 +366,7 @@ paths: /server/following: get: tags: - - ServerFollowing + - Server Following summary: Get servers followed by the server parameters: - $ref: '#/components/parameters/start' @@ -317,7 +386,7 @@ paths: - OAuth2: - admin tags: - - ServerFollowing + - Server Following summary: Follow a server responses: '204': @@ -923,7 +992,7 @@ paths: security: - OAuth2: [] tags: - - VideoAbuse + - Video Abuse parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -943,7 +1012,7 @@ paths: security: - OAuth2: [] tags: - - VideoAbuse + - Video Abuse parameters: - $ref: '#/components/parameters/id2' responses: @@ -957,7 +1026,7 @@ paths: - admin - moderator tags: - - VideoBlacklist + - Video Blacklist parameters: - $ref: '#/components/parameters/id2' responses: @@ -970,7 +1039,7 @@ paths: - admin - moderator tags: - - VideoBlacklist + - Video Blacklist parameters: - $ref: '#/components/parameters/id2' responses: @@ -984,7 +1053,7 @@ paths: - admin - moderator tags: - - VideoBlacklist + - Video Blacklist parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -1002,7 +1071,7 @@ paths: get: summary: Get list of video channels tags: - - VideoChannel + - Video Channel parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' @@ -1021,7 +1090,7 @@ paths: security: - OAuth2: [] tags: - - VideoChannel + - Video Channel responses: '204': $ref: '#/paths/~1users~1me/put/responses/204' @@ -1031,7 +1100,7 @@ paths: get: summary: Get a video channel by its id tags: - - VideoChannel + - Video Channel parameters: - $ref: '#/components/parameters/id3' responses: @@ -1046,7 +1115,7 @@ paths: security: - OAuth2: [] tags: - - VideoChannel + - Video Channel parameters: - $ref: '#/components/parameters/id3' responses: @@ -1059,7 +1128,7 @@ paths: security: - OAuth2: [] tags: - - VideoChannel + - Video Channel parameters: - $ref: '#/components/parameters/id3' responses: @@ -1069,7 +1138,7 @@ paths: get: summary: Get videos of a video channel by its id tags: - - VideoChannel + - Video Channel parameters: - $ref: '#/components/parameters/id3' responses: @@ -1083,7 +1152,7 @@ paths: get: summary: Get video channels of an account by its name tags: - - VideoChannel + - Video Channel parameters: - $ref: '#/components/parameters/name' responses: @@ -1099,7 +1168,7 @@ paths: get: summary: Get the comment threads of a video by its id tags: - - VideoComment + - Video Comment parameters: - $ref: '#/components/parameters/id2' - $ref: '#/components/parameters/start' @@ -1117,7 +1186,7 @@ paths: security: - OAuth2: [] tags: - - VideoComment + - Video Comment parameters: - $ref: '#/components/parameters/id2' responses: @@ -1131,7 +1200,7 @@ paths: get: summary: 'Get the comment thread by its id, of a video by its id' tags: - - VideoComment + - Video Comment parameters: - $ref: '#/components/parameters/id2' - name: threadId @@ -1153,7 +1222,7 @@ paths: security: - OAuth2: [] tags: - - VideoComment + - Video Comment parameters: - $ref: '#/components/parameters/id2' - $ref: '#/components/parameters/commentId' @@ -1169,7 +1238,7 @@ paths: security: - OAuth2: [] tags: - - VideoComment + - Video Comment parameters: - $ref: '#/components/parameters/id2' - $ref: '#/components/parameters/commentId' @@ -1182,7 +1251,7 @@ paths: security: - OAuth2: [] tags: - - VideoRate + - Video Rate parameters: - $ref: '#/components/parameters/id2' responses: -- cgit v1.2.3 From 8d4273463fb19d503b1aa0a32dc289f292ed614e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Nov 2018 15:02:48 +0100 Subject: Check follow constraints when getting a video --- .../videos/+video-watch/video-watch.component.ts | 2 +- config/default.yaml | 5 +- config/production.yaml.example | 5 +- server/controllers/api/videos/index.ts | 2 + server/middlewares/oauth.ts | 16 ++ server/middlewares/validators/videos/videos.ts | 52 +++-- server/models/video/video.ts | 17 ++ server/tests/api/server/follow-constraints.ts | 215 +++++++++++++++++++++ server/tests/api/server/index.ts | 1 + 9 files changed, 301 insertions(+), 14 deletions(-) create mode 100644 server/tests/api/server/follow-constraints.ts 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 d0151ceb1..09ee96bdc 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts @@ -114,7 +114,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { ) .pipe( // If 401, the video is private or blacklisted so redirect to 404 - catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 401, 404 ])) + catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 401, 403, 404 ])) ) .subscribe(([ video, captionsResult ]) => { const startTime = this.route.snapshot.queryParams.start diff --git a/config/default.yaml b/config/default.yaml index 0d7d948c2..257ec7ed1 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -58,7 +58,10 @@ log: level: 'info' # debug/info/warning/error search: - remote_uri: # Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance + # Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance + # If enabled, the associated group will be able to "escape" from the instance follows + # That means they will be able to follow channels, watch videos, list videos of non followed instances + remote_uri: users: true anonymous: false diff --git a/config/production.yaml.example b/config/production.yaml.example index f9da8e0dd..ac15fc736 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example @@ -59,7 +59,10 @@ log: level: 'info' # debug/info/warning/error search: - remote_uri: # Add ability to search remote videos/actors by URI, that may not be federated with your instance + # Add ability to fetch remote videos/actors by their URI, that may not be federated with your instance + # If enabled, the associated group will be able to "escape" from the instance follows + # That means they will be able to follow channels, watch videos, list videos of non followed instances + remote_uri: users: true anonymous: false diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index e654bdd09..89fd0432f 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -31,6 +31,7 @@ import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, + checkVideoFollowConstraints, commonVideosFiltersValidator, optionalAuthenticate, paginationValidator, @@ -123,6 +124,7 @@ videosRouter.get('/:id/description', videosRouter.get('/:id', optionalAuthenticate, asyncMiddleware(videosGetValidator), + asyncMiddleware(checkVideoFollowConstraints), getVideo ) videosRouter.post('/:id/views', diff --git a/server/middlewares/oauth.ts b/server/middlewares/oauth.ts index 5233b66bd..8c1df2c3e 100644 --- a/server/middlewares/oauth.ts +++ b/server/middlewares/oauth.ts @@ -28,9 +28,24 @@ function authenticate (req: express.Request, res: express.Response, next: expres }) } +function authenticatePromiseIfNeeded (req: express.Request, res: express.Response) { + return new Promise(resolve => { + // Already authenticated? (or tried to) + if (res.locals.oauth && res.locals.oauth.token.User) return resolve() + + if (res.locals.authenticated === false) return res.sendStatus(401) + + authenticate(req, res, () => { + return resolve() + }) + }) +} + function optionalAuthenticate (req: express.Request, res: express.Response, next: express.NextFunction) { if (req.header('authorization')) return authenticate(req, res, next) + res.locals.authenticated = false + return next() } @@ -53,6 +68,7 @@ function token (req: express.Request, res: express.Response, next: express.NextF export { authenticate, + authenticatePromiseIfNeeded, optionalAuthenticate, token } diff --git a/server/middlewares/validators/videos/videos.ts b/server/middlewares/validators/videos/videos.ts index bf21bca8c..051a19e16 100644 --- a/server/middlewares/validators/videos/videos.ts +++ b/server/middlewares/validators/videos/videos.ts @@ -31,8 +31,8 @@ import { } from '../../../helpers/custom-validators/videos' import { getDurationFromVideoFile } from '../../../helpers/ffmpeg-utils' import { logger } from '../../../helpers/logger' -import { CONSTRAINTS_FIELDS } from '../../../initializers' -import { authenticate } from '../../oauth' +import { CONFIG, CONSTRAINTS_FIELDS } from '../../../initializers' +import { authenticatePromiseIfNeeded } from '../../oauth' import { areValidationErrors } from '../utils' import { cleanUpReqFiles } from '../../../helpers/express-utils' import { VideoModel } from '../../../models/video/video' @@ -43,6 +43,7 @@ import { VideoChangeOwnershipModel } from '../../../models/video/video-change-ow import { AccountModel } from '../../../models/account/account' import { VideoFetchType } from '../../../helpers/video' import { isNSFWQueryValid, isNumberArray, isStringArray } from '../../../helpers/custom-validators/search' +import { getServerActor } from '../../../helpers/utils' const videosAddValidator = getCommonVideoAttributes().concat([ body('videofile') @@ -127,6 +128,31 @@ const videosUpdateValidator = getCommonVideoAttributes().concat([ } ]) +async function checkVideoFollowConstraints (req: express.Request, res: express.Response, next: express.NextFunction) { + const video: VideoModel = res.locals.video + + // Anybody can watch local videos + if (video.isOwned() === true) return next() + + // Logged user + if (res.locals.oauth) { + // Users can search or watch remote videos + if (CONFIG.SEARCH.REMOTE_URI.USERS === true) return next() + } + + // Anybody can search or watch remote videos + if (CONFIG.SEARCH.REMOTE_URI.ANONYMOUS === true) return next() + + // Check our instance follows an actor that shared this video + const serverActor = await getServerActor() + if (await VideoModel.checkVideoHasInstanceFollow(video.id, serverActor.id) === true) return next() + + return res.status(403) + .json({ + error: 'Cannot get this video regarding follow constraints.' + }) +} + const videosCustomGetValidator = (fetchType: VideoFetchType) => { return [ param('id').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid id'), @@ -141,17 +167,20 @@ const videosCustomGetValidator = (fetchType: VideoFetchType) => { // Video private or blacklisted if (video.privacy === VideoPrivacy.PRIVATE || video.VideoBlacklist) { - return authenticate(req, res, () => { - const user: UserModel = res.locals.oauth.token.User + await authenticatePromiseIfNeeded(req, res) + + const user: UserModel = res.locals.oauth ? res.locals.oauth.token.User : null - // Only the owner or a user that have blacklist rights can see the video - if (video.VideoChannel.Account.userId !== user.id && !user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)) { - return res.status(403) - .json({ error: 'Cannot get this private or blacklisted video.' }) - } + // Only the owner or a user that have blacklist rights can see the video + if ( + !user || + (video.VideoChannel.Account.userId !== user.id && !user.hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)) + ) { + return res.status(403) + .json({ error: 'Cannot get this private or blacklisted video.' }) + } - return next() - }) + return next() } // Video is public, anyone can access it @@ -376,6 +405,7 @@ export { videosAddValidator, videosUpdateValidator, videosGetValidator, + checkVideoFollowConstraints, videosCustomGetValidator, videosRemoveValidator, diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 6c183933b..1e68b380c 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -1253,6 +1253,23 @@ export class VideoModel extends Model { }) } + static checkVideoHasInstanceFollow (videoId: number, followerActorId: number) { + // Instances only share videos + const query = 'SELECT 1 FROM "videoShare" ' + + 'INNER JOIN "actorFollow" ON "actorFollow"."targetActorId" = "videoShare"."actorId" ' + + 'WHERE "actorFollow"."actorId" = $followerActorId AND "videoShare"."videoId" = $videoId ' + + 'LIMIT 1' + + const options = { + type: Sequelize.QueryTypes.SELECT, + bind: { followerActorId, videoId }, + raw: true + } + + return VideoModel.sequelize.query(query, options) + .then(results => results.length === 1) + } + // threshold corresponds to how many video the field should have to be returned static async getRandomFieldSamples (field: 'category' | 'channelId', threshold: number, count: number) { const serverActor = await getServerActor() diff --git a/server/tests/api/server/follow-constraints.ts b/server/tests/api/server/follow-constraints.ts new file mode 100644 index 000000000..3135fc568 --- /dev/null +++ b/server/tests/api/server/follow-constraints.ts @@ -0,0 +1,215 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { doubleFollow, getAccountVideos, getVideo, getVideoChannelVideos, getVideoWithToken } from '../../utils' +import { flushAndRunMultipleServers, killallServers, ServerInfo, setAccessTokensToServers, uploadVideo } from '../../utils/index' +import { unfollow } from '../../utils/server/follows' +import { userLogin } from '../../utils/users/login' +import { createUser } from '../../utils/users/users' + +const expect = chai.expect + +describe('Test follow constraints', function () { + let servers: ServerInfo[] = [] + let video1UUID: string + let video2UUID: string + let userAccessToken: string + + before(async function () { + this.timeout(30000) + + servers = await flushAndRunMultipleServers(2) + + // Get the access tokens + await setAccessTokensToServers(servers) + + { + const res = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, { name: 'video server 1' }) + video1UUID = res.body.video.uuid + } + { + const res = await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, { name: 'video server 2' }) + video2UUID = res.body.video.uuid + } + + const user = { + username: 'user1', + password: 'super_password' + } + await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) + userAccessToken = await userLogin(servers[0], user) + + await doubleFollow(servers[0], servers[1]) + }) + + describe('With a followed instance', function () { + + describe('With an unlogged user', function () { + + it('Should get the local video', async function () { + await getVideo(servers[0].url, video1UUID, 200) + }) + + it('Should get the remote video', async function () { + await getVideo(servers[0].url, video2UUID, 200) + }) + + it('Should list local account videos', async function () { + const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list remote account videos', async function () { + const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list local channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, undefined, 'root_channel@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list remote channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, undefined, 'root_channel@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + }) + + describe('With a logged user', function () { + it('Should get the local video', async function () { + await getVideoWithToken(servers[0].url, userAccessToken, video1UUID, 200) + }) + + it('Should get the remote video', async function () { + await getVideoWithToken(servers[0].url, userAccessToken, video2UUID, 200) + }) + + it('Should list local account videos', async function () { + const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list remote account videos', async function () { + const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list local channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, userAccessToken, 'root_channel@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list remote channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, userAccessToken, 'root_channel@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + }) + }) + + describe('With a non followed instance', function () { + + before(async function () { + this.timeout(30000) + + await unfollow(servers[0].url, servers[0].accessToken, servers[1]) + }) + + describe('With an unlogged user', function () { + + it('Should get the local video', async function () { + await getVideo(servers[0].url, video1UUID, 200) + }) + + it('Should not get the remote video', async function () { + await getVideo(servers[0].url, video2UUID, 403) + }) + + it('Should list local account videos', async function () { + const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should not list remote account videos', async function () { + const res = await getAccountVideos(servers[0].url, undefined, 'root@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(0) + expect(res.body.data).to.have.lengthOf(0) + }) + + it('Should list local channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, undefined, 'root_channel@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should not list remote channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, undefined, 'root_channel@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(0) + expect(res.body.data).to.have.lengthOf(0) + }) + }) + + describe('With a logged user', function () { + it('Should get the local video', async function () { + await getVideoWithToken(servers[0].url, userAccessToken, video1UUID, 200) + }) + + it('Should get the remote video', async function () { + await getVideoWithToken(servers[0].url, userAccessToken, video2UUID, 200) + }) + + it('Should list local account videos', async function () { + const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list remote account videos', async function () { + const res = await getAccountVideos(servers[0].url, userAccessToken, 'root@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list local channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, userAccessToken, 'root_channel@localhost:9001', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + + it('Should list remote channel videos', async function () { + const res = await getVideoChannelVideos(servers[0].url, userAccessToken, 'root_channel@localhost:9002', 0, 5) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + }) + }) + }) + + after(async function () { + killallServers(servers) + }) +}) diff --git a/server/tests/api/server/index.ts b/server/tests/api/server/index.ts index 78ab7e18b..6afcab1f9 100644 --- a/server/tests/api/server/index.ts +++ b/server/tests/api/server/index.ts @@ -1,5 +1,6 @@ import './config' import './email' +import './follow-constraints' import './follows' import './handle-down' import './jobs' -- cgit v1.2.3 From babecc3c09cd4ed06fe643a97fff4bcc31c5a9be Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Nov 2018 15:38:09 +0100 Subject: Fix AP collections pagination --- server/controllers/activitypub/client.ts | 4 ++-- server/helpers/activitypub.ts | 14 +++++++------- server/models/activitypub/actor-follow.ts | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/server/controllers/activitypub/client.ts b/server/controllers/activitypub/client.ts index a342a48d4..d9d385460 100644 --- a/server/controllers/activitypub/client.ts +++ b/server/controllers/activitypub/client.ts @@ -298,7 +298,7 @@ async function actorFollowing (req: express.Request, actor: ActorModel) { return ActorFollowModel.listAcceptedFollowingUrlsForApi([ actor.id ], undefined, start, count) } - return activityPubCollectionPagination(CONFIG.WEBSERVER.URL + req.url, handler, req.query.page) + return activityPubCollectionPagination(CONFIG.WEBSERVER.URL + req.path, handler, req.query.page) } async function actorFollowers (req: express.Request, actor: ActorModel) { @@ -306,7 +306,7 @@ async function actorFollowers (req: express.Request, actor: ActorModel) { return ActorFollowModel.listAcceptedFollowerUrlsForApi([ actor.id ], undefined, start, count) } - return activityPubCollectionPagination(CONFIG.WEBSERVER.URL + req.url, handler, req.query.page) + return activityPubCollectionPagination(CONFIG.WEBSERVER.URL + req.path, handler, req.query.page) } function videoRates (req: express.Request, rateType: VideoRateType, video: VideoModel, url: string) { diff --git a/server/helpers/activitypub.ts b/server/helpers/activitypub.ts index 4bf6e387d..bcbd9be59 100644 --- a/server/helpers/activitypub.ts +++ b/server/helpers/activitypub.ts @@ -57,16 +57,16 @@ function activityPubContextify (data: T) { } type ActivityPubCollectionPaginationHandler = (start: number, count: number) => Bluebird> | Promise> -async function activityPubCollectionPagination (url: string, handler: ActivityPubCollectionPaginationHandler, page?: any) { +async function activityPubCollectionPagination (baseUrl: string, handler: ActivityPubCollectionPaginationHandler, page?: any) { if (!page || !validator.isInt(page)) { // We just display the first page URL, we only need the total items const result = await handler(0, 1) return { - id: url, + id: baseUrl, type: 'OrderedCollection', totalItems: result.total, - first: url + '?page=1' + first: baseUrl + '?page=1' } } @@ -81,19 +81,19 @@ async function activityPubCollectionPagination (url: string, handler: ActivityPu // There are more results if (result.total > page * ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE) { - next = url + '?page=' + (page + 1) + next = baseUrl + '?page=' + (page + 1) } if (page > 1) { - prev = url + '?page=' + (page - 1) + prev = baseUrl + '?page=' + (page - 1) } return { - id: url + '?page=' + page, + id: baseUrl + '?page=' + page, type: 'OrderedCollectionPage', prev, next, - partOf: url, + partOf: baseUrl, orderedItems: result.data, totalItems: result.total } diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index 3373355ef..0a6935083 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -509,12 +509,12 @@ export class ActorFollowModel extends Model { tasks.push(ActorFollowModel.sequelize.query(query, options)) } - const [ followers, [ { total } ] ] = await Promise.all(tasks) + const [ followers, [ dataTotal ] ] = await Promise.all(tasks) const urls: string[] = followers.map(f => f.url) return { data: urls, - total: parseInt(total, 10) + total: dataTotal ? parseInt(dataTotal.total, 10) : 0 } } -- cgit v1.2.3 From 58d515e32fe1d0133435b3a5e550c6ff24906fff Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Nov 2018 16:48:17 +0100 Subject: Fix images size when downloading them --- server/helpers/requests.ts | 12 +++++++++++- server/lib/activitypub/actor.ts | 9 +++------ server/lib/activitypub/videos.ts | 10 +++------- server/lib/job-queue/handlers/video-import.ts | 10 +++++----- server/tests/api/redundancy/redundancy.ts | 5 +++-- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/server/helpers/requests.ts b/server/helpers/requests.ts index 51facc9e0..805930a9f 100644 --- a/server/helpers/requests.ts +++ b/server/helpers/requests.ts @@ -2,6 +2,7 @@ import * as Bluebird from 'bluebird' import { createWriteStream } from 'fs-extra' import * as request from 'request' import { ACTIVITY_PUB } from '../initializers' +import { processImage } from './image-utils' function doRequest ( requestOptions: request.CoreOptions & request.UriOptions & { activityPub?: boolean } @@ -27,9 +28,18 @@ function doRequestAndSaveToFile (requestOptions: request.CoreOptions & request.U }) } +async function downloadImage (url: string, destPath: string, size: { width: number, height: number }) { + const tmpPath = destPath + '.tmp' + + await doRequestAndSaveToFile({ method: 'GET', uri: url }, tmpPath) + + await processImage({ path: tmpPath }, destPath, size) +} + // --------------------------------------------------------------------------- export { doRequest, - doRequestAndSaveToFile + doRequestAndSaveToFile, + downloadImage } diff --git a/server/lib/activitypub/actor.ts b/server/lib/activitypub/actor.ts index b16a00669..218dbc6a7 100644 --- a/server/lib/activitypub/actor.ts +++ b/server/lib/activitypub/actor.ts @@ -11,9 +11,9 @@ import { isActivityPubUrlValid } from '../../helpers/custom-validators/activityp import { retryTransactionWrapper, updateInstanceWithAnother } from '../../helpers/database-utils' import { logger } from '../../helpers/logger' import { createPrivateAndPublicKeys } from '../../helpers/peertube-crypto' -import { doRequest, doRequestAndSaveToFile } from '../../helpers/requests' +import { doRequest, doRequestAndSaveToFile, downloadImage } from '../../helpers/requests' import { getUrlFromWebfinger } from '../../helpers/webfinger' -import { CONFIG, IMAGE_MIMETYPE_EXT, sequelizeTypescript } from '../../initializers' +import { AVATARS_SIZE, CONFIG, IMAGE_MIMETYPE_EXT, PREVIEWS_SIZE, sequelizeTypescript } from '../../initializers' import { AccountModel } from '../../models/account/account' import { ActorModel } from '../../models/activitypub/actor' import { AvatarModel } from '../../models/avatar/avatar' @@ -180,10 +180,7 @@ async function fetchAvatarIfExists (actorJSON: ActivityPubActor) { const avatarName = uuidv4() + extension const destPath = join(CONFIG.STORAGE.AVATARS_DIR, avatarName) - await doRequestAndSaveToFile({ - method: 'GET', - uri: actorJSON.icon.url - }, destPath) + await downloadImage(actorJSON.icon.url, destPath, AVATARS_SIZE) return avatarName } diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 5bd03c8c6..80de92f24 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -10,8 +10,8 @@ import { sanitizeAndCheckVideoTorrentObject } from '../../helpers/custom-validat import { isVideoFileInfoHashValid } from '../../helpers/custom-validators/videos' import { resetSequelizeInstance, retryTransactionWrapper } from '../../helpers/database-utils' import { logger } from '../../helpers/logger' -import { doRequest, doRequestAndSaveToFile } from '../../helpers/requests' -import { ACTIVITY_PUB, CONFIG, REMOTE_SCHEME, sequelizeTypescript, VIDEO_MIMETYPE_EXT } from '../../initializers' +import { doRequest, downloadImage } from '../../helpers/requests' +import { ACTIVITY_PUB, CONFIG, REMOTE_SCHEME, sequelizeTypescript, THUMBNAILS_SIZE, VIDEO_MIMETYPE_EXT } from '../../initializers' import { ActorModel } from '../../models/activitypub/actor' import { TagModel } from '../../models/video/tag' import { VideoModel } from '../../models/video/video' @@ -97,11 +97,7 @@ function generateThumbnailFromUrl (video: VideoModel, icon: ActivityIconObject) const thumbnailName = video.getThumbnailName() const thumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, thumbnailName) - const options = { - method: 'GET', - uri: icon.url - } - return doRequestAndSaveToFile(options, thumbnailPath) + return downloadImage(icon.url, thumbnailPath, THUMBNAILS_SIZE) } function getOrCreateVideoChannelFromVideoObject (videoObject: VideoTorrentObject) { diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts index e3f2a276c..4de901c0c 100644 --- a/server/lib/job-queue/handlers/video-import.ts +++ b/server/lib/job-queue/handlers/video-import.ts @@ -6,8 +6,8 @@ import { VideoImportState } from '../../../../shared/models/videos' import { getDurationFromVideoFile, getVideoFileFPS, getVideoFileResolution } from '../../../helpers/ffmpeg-utils' import { extname, join } from 'path' import { VideoFileModel } from '../../../models/video/video-file' -import { CONFIG, sequelizeTypescript, VIDEO_IMPORT_TIMEOUT } from '../../../initializers' -import { doRequestAndSaveToFile } from '../../../helpers/requests' +import { CONFIG, PREVIEWS_SIZE, sequelizeTypescript, THUMBNAILS_SIZE, VIDEO_IMPORT_TIMEOUT } from '../../../initializers' +import { doRequestAndSaveToFile, downloadImage } from '../../../helpers/requests' import { VideoState } from '../../../../shared' import { JobQueue } from '../index' import { federateVideoIfNeeded } from '../../activitypub' @@ -133,7 +133,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide videoId: videoImport.videoId } videoFile = new VideoFileModel(videoFileData) - // Import if the import fails, to clean files + // To clean files if the import fails videoImport.Video.VideoFiles = [ videoFile ] // Move file @@ -145,7 +145,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide if (options.downloadThumbnail) { if (options.thumbnailUrl) { const destThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, videoImport.Video.getThumbnailName()) - await doRequestAndSaveToFile({ method: 'GET', uri: options.thumbnailUrl }, destThumbnailPath) + await downloadImage(options.thumbnailUrl, destThumbnailPath, THUMBNAILS_SIZE) } else { await videoImport.Video.createThumbnail(videoFile) } @@ -157,7 +157,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide if (options.downloadPreview) { if (options.thumbnailUrl) { const destPreviewPath = join(CONFIG.STORAGE.PREVIEWS_DIR, videoImport.Video.getPreviewName()) - await doRequestAndSaveToFile({ method: 'GET', uri: options.thumbnailUrl }, destPreviewPath) + await downloadImage(options.thumbnailUrl, destPreviewPath, PREVIEWS_SIZE) } else { await videoImport.Video.createPreview(videoFile) } diff --git a/server/tests/api/redundancy/redundancy.ts b/server/tests/api/redundancy/redundancy.ts index 47f4e59fc..a8a2f305f 100644 --- a/server/tests/api/redundancy/redundancy.ts +++ b/server/tests/api/redundancy/redundancy.ts @@ -17,7 +17,7 @@ import { viewVideo, wait, waitUntilLog, - checkVideoFilesWereRemoved, removeVideo + checkVideoFilesWereRemoved, removeVideo, getVideoWithToken } from '../../utils' import { waitJobs } from '../../utils/server/jobs' import * as magnetUtil from 'magnet-uri' @@ -93,7 +93,8 @@ async function check1WebSeed (strategy: VideoRedundancyStrategy, videoUUID?: str for (const server of servers) { { - const res = await getVideo(server.url, videoUUID) + // With token to avoid issues with video follow constraints + const res = await getVideoWithToken(server.url, server.accessToken, videoUUID) const video: VideoDetails = res.body for (const f of video.files) { -- cgit v1.2.3 From d8c9996ce2b4de3ef1f2d36f63e461006bab58ed Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Nov 2018 17:02:21 +0100 Subject: Improve message visibility on signup --- client/src/app/signup/signup.component.html | 3 ++- client/src/app/signup/signup.component.ts | 20 +++++++++++--------- .../shared/video-caption-add-modal.component.ts | 1 + 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/client/src/app/signup/signup.component.html b/client/src/app/signup/signup.component.html index 531a97814..0207a166e 100644 --- a/client/src/app/signup/signup.component.html +++ b/client/src/app/signup/signup.component.html @@ -4,6 +4,7 @@ Create an account
    +
    {{ info }}
    {{ error }}
    @@ -59,7 +60,7 @@
    - +
    diff --git a/client/src/app/signup/signup.component.ts b/client/src/app/signup/signup.component.ts index cf2657b85..607d64893 100644 --- a/client/src/app/signup/signup.component.ts +++ b/client/src/app/signup/signup.component.ts @@ -12,7 +12,9 @@ import { FormValidatorService } from '@app/shared/forms/form-validators/form-val styleUrls: [ './signup.component.scss' ] }) export class SignupComponent extends FormReactive implements OnInit { + info: string = null error: string = null + signupDone = false constructor ( protected formValidatorService: FormValidatorService, @@ -50,17 +52,17 @@ export class SignupComponent extends FormReactive implements OnInit { this.userService.signup(userCreate).subscribe( () => { + this.signupDone = true + if (this.requiresEmailVerification) { - this.notificationsService.alert( - this.i18n('Welcome'), - this.i18n('Please check your email to verify your account and complete signup.') - ) - } else { - this.notificationsService.success( - this.i18n('Success'), - this.i18n('Registration for {{username}} complete.', { username: userCreate.username }) - ) + this.info = this.i18n('Welcome! Now please check your emails to verify your account and complete signup.') + return } + + this.notificationsService.success( + this.i18n('Success'), + this.i18n('Registration for {{username}} complete.', { username: userCreate.username }) + ) this.redirectService.redirectToHomepage() }, diff --git a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts index 796fbe531..eaf819726 100644 --- a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts +++ b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts @@ -60,6 +60,7 @@ export class VideoCaptionAddModalComponent extends FormReactive implements OnIni hide () { this.closingModal = true this.openedModal.close() + this.form.reset() } isReplacingExistingCaption () { -- cgit v1.2.3 From 43e9d2af7d3525bc709e4c6d15fe85f65795f5fa Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Nov 2018 17:06:19 +0100 Subject: Auto login user on signup --- client/src/app/signup/signup.component.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/client/src/app/signup/signup.component.ts b/client/src/app/signup/signup.component.ts index 607d64893..3341d4e09 100644 --- a/client/src/app/signup/signup.component.ts +++ b/client/src/app/signup/signup.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core' import { NotificationsService } from 'angular2-notifications' import { UserCreate } from '../../../../shared' import { FormReactive, UserService, UserValidatorsService } from '../shared' -import { RedirectService, ServerService } from '@app/core' +import { AuthService, RedirectService, ServerService } from '@app/core' import { I18n } from '@ngx-translate/i18n-polyfill' import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' @@ -18,6 +18,7 @@ export class SignupComponent extends FormReactive implements OnInit { constructor ( protected formValidatorService: FormValidatorService, + private authService: AuthService, private userValidatorsService: UserValidatorsService, private notificationsService: NotificationsService, private userService: UserService, @@ -59,11 +60,20 @@ export class SignupComponent extends FormReactive implements OnInit { return } - this.notificationsService.success( - this.i18n('Success'), - this.i18n('Registration for {{username}} complete.', { username: userCreate.username }) - ) - this.redirectService.redirectToHomepage() + // Auto login + this.authService.login(userCreate.username, userCreate.password) + .subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('You are now logged in as {{username}}!', { username: userCreate.username }) + ) + + this.redirectService.redirectToHomepage() + }, + + err => this.error = err.message + ) }, err => this.error = err.message -- cgit v1.2.3 From 9ab81fc4a91c84b5276a269d5913008a40f365ce Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sat, 17 Nov 2018 15:15:45 +0100 Subject: =?UTF-8?q?grouping=20moderation=20endpoints=20in=20the=20REST?= =?UTF-8?q?=C2=A0API=20spec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- support/doc/api/openapi.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 5764a0e30..ea524d8d2 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -106,6 +106,7 @@ x-tagGroups: - Video Rate - name: Moderation tags: + - Vdieo Abuse - Video Blacklist - name: Public Instance Information tags: -- cgit v1.2.3 From 9d0b856e930ee1c676d16a56408a3e4a18f8f978 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sat, 17 Nov 2018 15:17:33 +0100 Subject: (quickfix) typo in openapi spec groups --- support/doc/api/openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index ea524d8d2..af829cc62 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -106,7 +106,7 @@ x-tagGroups: - Video Rate - name: Moderation tags: - - Vdieo Abuse + - Video Abuse - Video Blacklist - name: Public Instance Information tags: -- cgit v1.2.3 From a8a63227781c6815532cb7a68699b08fdb0368be Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Nov 2018 11:24:31 +0100 Subject: Optimize image resizing --- .../verify-account-email.component.ts | 1 - server/helpers/image-utils.ts | 19 +++++++++++++++++-- server/lib/activitypub/videos.ts | 10 ++++++---- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/client/src/app/+verify-account/verify-account-email/verify-account-email.component.ts b/client/src/app/+verify-account/verify-account-email/verify-account-email.component.ts index 26b3bf4b1..e4a5522c8 100644 --- a/client/src/app/+verify-account/verify-account-email/verify-account-email.component.ts +++ b/client/src/app/+verify-account/verify-account-email/verify-account-email.component.ts @@ -25,7 +25,6 @@ export class VerifyAccountEmailComponent implements OnInit { } ngOnInit () { - this.userId = this.route.snapshot.queryParams['userId'] this.verificationString = this.route.snapshot.queryParams['verificationString'] diff --git a/server/helpers/image-utils.ts b/server/helpers/image-utils.ts index 3eaa674ed..da3285b13 100644 --- a/server/helpers/image-utils.ts +++ b/server/helpers/image-utils.ts @@ -1,13 +1,28 @@ import 'multer' import * as sharp from 'sharp' -import { remove } from 'fs-extra' +import { move, remove } from 'fs-extra' async function processImage ( physicalFile: { path: string }, destination: string, newSize: { width: number, height: number } ) { - await sharp(physicalFile.path) + if (physicalFile.path === destination) { + throw new Error('Sharp needs an input path different that the output path.') + } + + const sharpInstance = sharp(physicalFile.path) + const metadata = await sharpInstance.metadata() + + // No need to resize + if (metadata.width === newSize.width && metadata.height === newSize.height) { + await move(physicalFile.path, destination, { overwrite: true }) + return + } + + await remove(destination) + + await sharpInstance .resize(newSize.width, newSize.height) .toFile(destination) diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 80de92f24..6ff9baefe 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -242,10 +242,6 @@ async function updateVideoFromAP (options: { if (options.updateViews === true) options.video.set('views', videoData.views) await options.video.save(sequelizeOptions) - // Don't block on request - generateThumbnailFromUrl(options.video, options.videoObject.icon) - .catch(err => logger.warn('Cannot generate thumbnail of %s.', options.videoObject.id, { err })) - { const videoFileAttributes = videoFileActivityUrlToDBAttributes(options.video, options.videoObject) const newVideoFiles = videoFileAttributes.map(a => new VideoFileModel(a)) @@ -293,6 +289,12 @@ async function updateVideoFromAP (options: { logger.debug('Cannot update the remote video.', { err }) throw err } + + try { + await generateThumbnailFromUrl(options.video, options.videoObject.icon) + } catch (err) { + logger.warn('Cannot generate thumbnail of %s.', options.videoObject.id, { err }) + } } export { -- cgit v1.2.3 From 361805c48b14c5402c9984485c67c45a1a3113cc Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Nov 2018 14:34:01 +0100 Subject: Fix checkbox margins --- .../edit-custom-config.component.html | 69 +++++++++++++--------- .../my-account-video-settings.component.html | 20 ++++--- server/helpers/activitypub.ts | 10 ++-- server/lib/activitypub/actor.ts | 8 +-- server/lib/activitypub/process/process.ts | 4 +- server/lib/activitypub/share.ts | 4 +- server/lib/activitypub/video-rates.ts | 4 +- server/lib/activitypub/videos.ts | 4 +- 8 files changed, 69 insertions(+), 54 deletions(-) diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html index dfbbfbb29..fd4d3d9c9 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html @@ -87,15 +87,19 @@
    Signup
    - +
    + +
    - +
    + +
    @@ -110,15 +114,19 @@
    Import
    - +
    + +
    - +
    + +
    Administrator
    @@ -184,13 +192,15 @@
    - +
    + +
    @@ -199,11 +209,13 @@
    Transcoding
    - +
    + +
    @@ -226,7 +238,6 @@ [inputName]="getResolutionKey(resolution)" [formControlName]="getResolutionKey(resolution)" i18n-labelText labelText="Resolution {{resolution}} enabled" > -
    diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html index 8be8a66cc..049119fa8 100644 --- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html +++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html @@ -15,15 +15,19 @@
    - +
    + +
    - +
    + +
    diff --git a/server/helpers/activitypub.ts b/server/helpers/activitypub.ts index bcbd9be59..79b76fa0b 100644 --- a/server/helpers/activitypub.ts +++ b/server/helpers/activitypub.ts @@ -1,7 +1,7 @@ import * as Bluebird from 'bluebird' import * as validator from 'validator' import { ResultList } from '../../shared/models' -import { Activity, ActivityPubActor } from '../../shared/models/activitypub' +import { Activity } from '../../shared/models/activitypub' import { ACTIVITY_PUB } from '../initializers' import { ActorModel } from '../models/activitypub/actor' import { signJsonLDObject } from './peertube-crypto' @@ -106,10 +106,10 @@ function buildSignedActivity (byActor: ActorModel, data: Object) { return signJsonLDObject(byActor, activity) as Promise } -function getActorUrl (activityActor: string | ActivityPubActor) { - if (typeof activityActor === 'string') return activityActor +function getAPUrl (activity: string | { id: string }) { + if (typeof activity === 'string') return activity - return activityActor.id + return activity.id } function checkUrlsSameHost (url1: string, url2: string) { @@ -123,7 +123,7 @@ function checkUrlsSameHost (url1: string, url2: string) { export { checkUrlsSameHost, - getActorUrl, + getAPUrl, activityPubContextify, activityPubCollectionPagination, buildSignedActivity diff --git a/server/lib/activitypub/actor.ts b/server/lib/activitypub/actor.ts index 218dbc6a7..504263c99 100644 --- a/server/lib/activitypub/actor.ts +++ b/server/lib/activitypub/actor.ts @@ -5,15 +5,15 @@ import * as url from 'url' import * as uuidv4 from 'uuid/v4' import { ActivityPubActor, ActivityPubActorType } from '../../../shared/models/activitypub' import { ActivityPubAttributedTo } from '../../../shared/models/activitypub/objects' -import { checkUrlsSameHost, getActorUrl } from '../../helpers/activitypub' +import { checkUrlsSameHost, getAPUrl } from '../../helpers/activitypub' import { isActorObjectValid, normalizeActor } from '../../helpers/custom-validators/activitypub/actor' import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc' import { retryTransactionWrapper, updateInstanceWithAnother } from '../../helpers/database-utils' import { logger } from '../../helpers/logger' import { createPrivateAndPublicKeys } from '../../helpers/peertube-crypto' -import { doRequest, doRequestAndSaveToFile, downloadImage } from '../../helpers/requests' +import { doRequest, downloadImage } from '../../helpers/requests' import { getUrlFromWebfinger } from '../../helpers/webfinger' -import { AVATARS_SIZE, CONFIG, IMAGE_MIMETYPE_EXT, PREVIEWS_SIZE, sequelizeTypescript } from '../../initializers' +import { AVATARS_SIZE, CONFIG, IMAGE_MIMETYPE_EXT, sequelizeTypescript } from '../../initializers' import { AccountModel } from '../../models/account/account' import { ActorModel } from '../../models/activitypub/actor' import { AvatarModel } from '../../models/avatar/avatar' @@ -43,7 +43,7 @@ async function getOrCreateActorAndServerAndModel ( recurseIfNeeded = true, updateCollections = false ) { - const actorUrl = getActorUrl(activityActor) + const actorUrl = getAPUrl(activityActor) let created = false let actor = await fetchActorByUrl(actorUrl, fetchType) diff --git a/server/lib/activitypub/process/process.ts b/server/lib/activitypub/process/process.ts index b9b255ddf..bcc5cac7a 100644 --- a/server/lib/activitypub/process/process.ts +++ b/server/lib/activitypub/process/process.ts @@ -1,5 +1,5 @@ import { Activity, ActivityType } from '../../../../shared/models/activitypub' -import { checkUrlsSameHost, getActorUrl } from '../../../helpers/activitypub' +import { checkUrlsSameHost, getAPUrl } from '../../../helpers/activitypub' import { logger } from '../../../helpers/logger' import { ActorModel } from '../../../models/activitypub/actor' import { processAcceptActivity } from './process-accept' @@ -40,7 +40,7 @@ async function processActivities ( continue } - const actorUrl = getActorUrl(activity.actor) + const actorUrl = getAPUrl(activity.actor) // When we fetch remote data, we don't have signature if (options.signatureActor && actorUrl !== options.signatureActor.url) { diff --git a/server/lib/activitypub/share.ts b/server/lib/activitypub/share.ts index d2649e2d5..5dcba778c 100644 --- a/server/lib/activitypub/share.ts +++ b/server/lib/activitypub/share.ts @@ -11,7 +11,7 @@ import { doRequest } from '../../helpers/requests' import { getOrCreateActorAndServerAndModel } from './actor' import { logger } from '../../helpers/logger' import { CRAWL_REQUEST_CONCURRENCY } from '../../initializers' -import { checkUrlsSameHost, getActorUrl } from '../../helpers/activitypub' +import { checkUrlsSameHost, getAPUrl } from '../../helpers/activitypub' async function shareVideoByServerAndChannel (video: VideoModel, t: Transaction) { if (video.privacy === VideoPrivacy.PRIVATE) return undefined @@ -41,7 +41,7 @@ async function addVideoShares (shareUrls: string[], instance: VideoModel) { }) if (!body || !body.actor) throw new Error('Body or body actor is invalid') - const actorUrl = getActorUrl(body.actor) + const actorUrl = getAPUrl(body.actor) if (checkUrlsSameHost(shareUrl, actorUrl) !== true) { throw new Error(`Actor url ${actorUrl} has not the same host than the share url ${shareUrl}`) } diff --git a/server/lib/activitypub/video-rates.ts b/server/lib/activitypub/video-rates.ts index 1854b44c4..2cce67f0c 100644 --- a/server/lib/activitypub/video-rates.ts +++ b/server/lib/activitypub/video-rates.ts @@ -9,7 +9,7 @@ import { AccountVideoRateModel } from '../../models/account/account-video-rate' import { logger } from '../../helpers/logger' import { CRAWL_REQUEST_CONCURRENCY } from '../../initializers' import { doRequest } from '../../helpers/requests' -import { checkUrlsSameHost, getActorUrl } from '../../helpers/activitypub' +import { checkUrlsSameHost, getAPUrl } from '../../helpers/activitypub' import { ActorModel } from '../../models/activitypub/actor' import { getVideoDislikeActivityPubUrl, getVideoLikeActivityPubUrl } from './url' @@ -26,7 +26,7 @@ async function createRates (ratesUrl: string[], video: VideoModel, rate: VideoRa }) if (!body || !body.actor) throw new Error('Body or body actor is invalid') - const actorUrl = getActorUrl(body.actor) + const actorUrl = getAPUrl(body.actor) if (checkUrlsSameHost(actorUrl, rateUrl) !== true) { throw new Error(`Rate url ${rateUrl} has not the same host than actor url ${actorUrl}`) } diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 6ff9baefe..4cecf9345 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -29,7 +29,7 @@ import { createRates } from './video-rates' import { addVideoShares, shareVideoByServerAndChannel } from './share' import { AccountModel } from '../../models/account/account' import { fetchVideoByUrl, VideoFetchByUrlType } from '../../helpers/video' -import { checkUrlsSameHost } from '../../helpers/activitypub' +import { checkUrlsSameHost, getAPUrl } from '../../helpers/activitypub' async function federateVideoIfNeeded (video: VideoModel, isNewVideo: boolean, transaction?: sequelize.Transaction) { // If the video is not private and published, we federate it @@ -167,7 +167,7 @@ async function getOrCreateVideoAndAccountAndChannel (options: { const refreshViews = options.refreshViews || false // Get video url - const videoUrl = typeof options.videoObject === 'string' ? options.videoObject : options.videoObject.id + const videoUrl = getAPUrl(options.videoObject) let videoFromDatabase = await fetchVideoByUrl(videoUrl, fetchType) if (videoFromDatabase) { -- cgit v1.2.3 From 0b2f03d3712f438f67eccf86b67acd047284f9b4 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Nov 2018 15:21:09 +0100 Subject: Speedup peertube startup --- server.ts | 6 ++++-- server/initializers/database.ts | 32 +++++++++++++++++--------------- server/initializers/installer.ts | 21 +++++++++++++++------ server/lib/user.ts | 15 +++++++++++---- 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/server.ts b/server.ts index f3514cf9c..3025a6fd7 100644 --- a/server.ts +++ b/server.ts @@ -204,9 +204,11 @@ async function startApplication () { // Email initialization Emailer.Instance.init() - await Emailer.Instance.checkConnectionOrDie() - await JobQueue.Instance.init() + await Promise.all([ + Emailer.Instance.checkConnectionOrDie(), + JobQueue.Instance.init() + ]) // Caches initializations VideosPreviewCache.Instance.init(CONFIG.CACHE.PREVIEWS.SIZE, CACHE.PREVIEWS.MAX_AGE) diff --git a/server/initializers/database.ts b/server/initializers/database.ts index dd5b9bf67..40cd659ab 100644 --- a/server/initializers/database.ts +++ b/server/initializers/database.ts @@ -119,25 +119,27 @@ export { // --------------------------------------------------------------------------- async function checkPostgresExtensions () { - const extensions = [ - 'pg_trgm', - 'unaccent' + const promises = [ + checkPostgresExtension('pg_trgm'), + checkPostgresExtension('unaccent') ] - for (const extension of extensions) { - const query = `SELECT true AS enabled FROM pg_available_extensions WHERE name = '${extension}' AND installed_version IS NOT NULL;` - const [ res ] = await sequelizeTypescript.query(query, { raw: true }) + return Promise.all(promises) +} + +async function checkPostgresExtension (extension: string) { + const query = `SELECT true AS enabled FROM pg_available_extensions WHERE name = '${extension}' AND installed_version IS NOT NULL;` + const [ res ] = await sequelizeTypescript.query(query, { raw: true }) - if (!res || res.length === 0 || res[ 0 ][ 'enabled' ] !== true) { - // Try to create the extension ourself - try { - await sequelizeTypescript.query(`CREATE EXTENSION ${extension};`, { raw: true }) + if (!res || res.length === 0 || res[ 0 ][ 'enabled' ] !== true) { + // Try to create the extension ourself + try { + await sequelizeTypescript.query(`CREATE EXTENSION ${extension};`, { raw: true }) - } catch { - const errorMessage = `You need to enable ${extension} extension in PostgreSQL. ` + - `You can do so by running 'CREATE EXTENSION ${extension};' as a PostgreSQL super user in ${CONFIG.DATABASE.DBNAME} database.` - throw new Error(errorMessage) - } + } catch { + const errorMessage = `You need to enable ${extension} extension in PostgreSQL. ` + + `You can do so by running 'CREATE EXTENSION ${extension};' as a PostgreSQL super user in ${CONFIG.DATABASE.DBNAME} database.` + throw new Error(errorMessage) } } } diff --git a/server/initializers/installer.ts b/server/initializers/installer.ts index c952ad46c..b9a9da183 100644 --- a/server/initializers/installer.ts +++ b/server/initializers/installer.ts @@ -12,12 +12,21 @@ import { remove, ensureDir } from 'fs-extra' async function installApplication () { try { - await sequelizeTypescript.sync() - await removeCacheDirectories() - await createDirectoriesIfNotExist() - await createApplicationIfNotExist() - await createOAuthClientIfNotExist() - await createOAuthAdminIfNotExist() + await Promise.all([ + // Database related + sequelizeTypescript.sync() + .then(() => { + return Promise.all([ + createApplicationIfNotExist(), + createOAuthClientIfNotExist(), + createOAuthAdminIfNotExist() + ]) + }), + + // Directories + removeCacheDirectories() + .then(() => createDirectoriesIfNotExist()) + ]) } catch (err) { logger.error('Cannot install application.', { err }) process.exit(-1) diff --git a/server/lib/user.ts b/server/lib/user.ts index db29469eb..acb883e23 100644 --- a/server/lib/user.ts +++ b/server/lib/user.ts @@ -17,8 +17,10 @@ async function createUserAccountAndChannel (userToCreate: UserModel, validateUse validate: validateUser } - const userCreated = await userToCreate.save(userOptions) - const accountCreated = await createLocalAccountWithoutKeys(userToCreate.username, userToCreate.id, null, t) + const [ userCreated, accountCreated ] = await Promise.all([ + userToCreate.save(userOptions), + createLocalAccountWithoutKeys(userToCreate.username, userToCreate.id, null, t) + ]) userCreated.Account = accountCreated let channelName = userCreated.username + '_channel' @@ -37,8 +39,13 @@ async function createUserAccountAndChannel (userToCreate: UserModel, validateUse return { user: userCreated, account: accountCreated, videoChannel } }) - account.Actor = await setAsyncActorKeys(account.Actor) - videoChannel.Actor = await setAsyncActorKeys(videoChannel.Actor) + const [ accountKeys, channelKeys ] = await Promise.all([ + setAsyncActorKeys(account.Actor), + setAsyncActorKeys(videoChannel.Actor) + ]) + + account.Actor = accountKeys + videoChannel.Actor = channelKeys return { user, account, videoChannel } as { user: UserModel, account: AccountModel, videoChannel: VideoChannelModel } } -- cgit v1.2.3 From d175a6f7ab9dd53e36f9f52769ac02dbfdc57e3e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Nov 2018 17:08:18 +0100 Subject: Cleanup tests imports --- scripts/travis.sh | 15 ++++++--------- server/helpers/ffmpeg-utils.ts | 2 +- server/lib/user.ts | 6 ++---- server/models/account/user.ts | 4 ++-- server/models/oauth/oauth-token.ts | 4 ++-- server/tests/api/activitypub/security.ts | 3 ++- server/tests/api/users/index.ts | 2 +- server/tests/api/videos/video-blacklist-management.ts | 3 +-- server/tests/api/videos/video-channels.ts | 6 ++++-- server/tests/api/videos/video-schedule-update.ts | 1 - server/tests/api/videos/video-transcoder.ts | 6 ++---- server/tests/utils/index.ts | 1 - server/tests/utils/requests/check-api-params.ts | 2 +- server/tests/utils/search/videos.ts | 2 +- server/tests/utils/server/config.ts | 2 +- server/tests/utils/server/jobs.ts | 3 ++- server/tests/utils/server/stats.ts | 2 +- server/tests/utils/users/accounts.ts | 2 +- server/tests/utils/users/blocklist.ts | 2 +- server/tests/utils/users/user-subscriptions.ts | 2 +- server/tests/utils/users/users.ts | 2 +- server/tests/utils/videos/video-abuses.ts | 2 +- server/tests/utils/videos/video-captions.ts | 4 ++-- server/tests/utils/videos/video-channels.ts | 2 +- server/tests/utils/videos/video-comments.ts | 2 +- server/tests/utils/videos/video-imports.ts | 2 +- server/tests/utils/videos/videos.ts | 4 ++-- 27 files changed, 41 insertions(+), 47 deletions(-) diff --git a/scripts/travis.sh b/scripts/travis.sh index 49b7233e1..509b40d87 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -11,28 +11,25 @@ killall -q peertube || true if [ "$1" = "misc" ]; then npm run build -- --light-fr - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/client.ts \ + mocha --timeout 5000 --exit --require ts-node/register --bail server/tests/client.ts \ server/tests/feeds/index.ts \ server/tests/misc-endpoints.ts \ server/tests/helpers/index.ts -elif [ "$1" = "api" ]; then - npm run build:server - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index.ts elif [ "$1" = "cli" ]; then npm run build:server - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/cli/index.ts + mocha --timeout 5000 --exit --require ts-node/register --bail server/tests/cli/index.ts elif [ "$1" = "api-1" ]; then npm run build:server - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-1.ts + mocha --timeout 5000 --exit --require ts-node/register --bail server/tests/api/index-1.ts elif [ "$1" = "api-2" ]; then npm run build:server - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-2.ts + mocha --timeout 5000 --exit --require ts-node/register --bail server/tests/api/index-2.ts elif [ "$1" = "api-3" ]; then npm run build:server - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-3.ts + mocha --timeout 5000 --exit --require ts-node/register --bail server/tests/api/index-3.ts elif [ "$1" = "api-4" ]; then npm run build:server - mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-4.ts + mocha --timeout 5000 --exit --require ts-node/register --bail server/tests/api/index-4.ts elif [ "$1" = "lint" ]; then npm run tslint -- --project ./tsconfig.json -c ./tslint.json server.ts "server/**/*.ts" "shared/**/*.ts" diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index 8b9045038..b59e7e40e 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts @@ -1,7 +1,7 @@ import * as ffmpeg from 'fluent-ffmpeg' import { join } from 'path' import { getTargetBitrate, VideoResolution } from '../../shared/models/videos' -import { CONFIG, FFMPEG_NICE, VIDEO_TRANSCODING_FPS } from '../initializers' +import { CONFIG, FFMPEG_NICE, VIDEO_TRANSCODING_FPS } from '../initializers/constants' import { processImage } from './image-utils' import { logger } from './logger' import { checkFFmpegEncoders } from '../initializers/checker-before-init' diff --git a/server/lib/user.ts b/server/lib/user.ts index acb883e23..29d6d087d 100644 --- a/server/lib/user.ts +++ b/server/lib/user.ts @@ -17,10 +17,8 @@ async function createUserAccountAndChannel (userToCreate: UserModel, validateUse validate: validateUser } - const [ userCreated, accountCreated ] = await Promise.all([ - userToCreate.save(userOptions), - createLocalAccountWithoutKeys(userToCreate.username, userToCreate.id, null, t) - ]) + const userCreated = await userToCreate.save(userOptions) + const accountCreated = await createLocalAccountWithoutKeys(userCreated.username, userCreated.id, null, t) userCreated.Account = accountCreated let channelName = userCreated.username + '_channel' diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 34aafa1a7..1843603f1 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts @@ -1,6 +1,6 @@ import * as Sequelize from 'sequelize' import { - AfterDelete, + AfterDestroy, AfterUpdate, AllowNull, BeforeCreate, @@ -179,7 +179,7 @@ export class UserModel extends Model { } @AfterUpdate - @AfterDelete + @AfterDestroy static removeTokenCache (instance: UserModel) { return clearCacheByUserId(instance.id) } diff --git a/server/models/oauth/oauth-token.ts b/server/models/oauth/oauth-token.ts index ecf846821..08d892da4 100644 --- a/server/models/oauth/oauth-token.ts +++ b/server/models/oauth/oauth-token.ts @@ -1,5 +1,5 @@ import { - AfterDelete, + AfterDestroy, AfterUpdate, AllowNull, BelongsTo, @@ -126,7 +126,7 @@ export class OAuthTokenModel extends Model { OAuthClients: OAuthClientModel[] @AfterUpdate - @AfterDelete + @AfterDestroy static removeTokenCache (token: OAuthTokenModel) { return clearCacheByToken(token.accessToken) } diff --git a/server/tests/api/activitypub/security.ts b/server/tests/api/activitypub/security.ts index e7899bb14..7349749f1 100644 --- a/server/tests/api/activitypub/security.ts +++ b/server/tests/api/activitypub/security.ts @@ -2,12 +2,13 @@ import 'mocha' -import { flushAndRunMultipleServers, flushTests, killallServers, makePOSTAPRequest, makeFollowRequest, ServerInfo } from '../../utils' +import { flushAndRunMultipleServers, flushTests, killallServers, ServerInfo } from '../../utils' import { HTTP_SIGNATURE } from '../../../initializers' import { buildDigest, buildGlobalHeaders } from '../../../lib/job-queue/handlers/utils/activitypub-http-utils' import * as chai from 'chai' import { setActorField } from '../../utils/miscs/sql' import { activityPubContextify, buildSignedActivity } from '../../../helpers/activitypub' +import { makeFollowRequest, makePOSTAPRequest } from '../../utils/requests/activitypub' const expect = chai.expect diff --git a/server/tests/api/users/index.ts b/server/tests/api/users/index.ts index 0a1b8b0b2..ff433315d 100644 --- a/server/tests/api/users/index.ts +++ b/server/tests/api/users/index.ts @@ -1,5 +1,5 @@ import './blocklist' import './user-subscriptions' import './users' -import './users-verification' import './users-multiple-servers' +import './users-verification' diff --git a/server/tests/api/videos/video-blacklist-management.ts b/server/tests/api/videos/video-blacklist-management.ts index 7bf39dc99..fab577b30 100644 --- a/server/tests/api/videos/video-blacklist-management.ts +++ b/server/tests/api/videos/video-blacklist-management.ts @@ -1,7 +1,7 @@ /* tslint:disable:no-unused-expression */ import * as chai from 'chai' -import * as lodash from 'lodash' +import { orderBy } from 'lodash' import 'mocha' import { addVideoToBlacklist, @@ -22,7 +22,6 @@ import { waitJobs } from '../../utils/server/jobs' import { VideoAbuse } from '../../../../shared/models/videos' const expect = chai.expect -const orderBy = lodash.orderBy describe('Test video blacklist management', function () { let servers: ServerInfo[] = [] diff --git a/server/tests/api/videos/video-channels.ts b/server/tests/api/videos/video-channels.ts index 8138c65d6..41429a3d8 100644 --- a/server/tests/api/videos/video-channels.ts +++ b/server/tests/api/videos/video-channels.ts @@ -7,10 +7,12 @@ import { createUser, doubleFollow, flushAndRunMultipleServers, - getVideoChannelVideos, serverLogin, testImage, + getVideoChannelVideos, + testImage, updateVideo, updateVideoChannelAvatar, - uploadVideo, wait, userLogin + uploadVideo, + userLogin } from '../../utils' import { addVideoChannel, diff --git a/server/tests/api/videos/video-schedule-update.ts b/server/tests/api/videos/video-schedule-update.ts index a260fa4da..b226a9d50 100644 --- a/server/tests/api/videos/video-schedule-update.ts +++ b/server/tests/api/videos/video-schedule-update.ts @@ -16,7 +16,6 @@ import { uploadVideo, wait } from '../../utils' -import { join } from 'path' import { waitJobs } from '../../utils/server/jobs' const expect = chai.expect diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index 85795d2ed..23920d452 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts @@ -3,13 +3,13 @@ import * as chai from 'chai' import 'mocha' import { omit } from 'lodash' -import * as ffmpeg from 'fluent-ffmpeg' import { getMaxBitrate, VideoDetails, VideoResolution, VideoState } from '../../../../shared/models/videos' import { audio, getVideoFileBitrate, getVideoFileFPS, getVideoFileResolution } from '../../../helpers/ffmpeg-utils' import { buildAbsoluteFixturePath, doubleFollow, flushAndRunMultipleServers, + generateHighBitrateVideo, getMyVideos, getVideo, getVideosList, @@ -18,12 +18,10 @@ import { ServerInfo, setAccessTokensToServers, uploadVideo, - webtorrentAdd, - generateHighBitrateVideo + webtorrentAdd } from '../../utils' import { join } from 'path' import { waitJobs } from '../../utils/server/jobs' -import { pathExists } from 'fs-extra' import { VIDEO_TRANSCODING_FPS } from '../../../../server/initializers/constants' const expect = chai.expect diff --git a/server/tests/utils/index.ts b/server/tests/utils/index.ts index 905d93823..8349631c9 100644 --- a/server/tests/utils/index.ts +++ b/server/tests/utils/index.ts @@ -7,7 +7,6 @@ export * from './miscs/miscs' export * from './miscs/stubs' export * from './server/follows' export * from './requests/requests' -export * from './requests/activitypub' export * from './server/servers' export * from './videos/services' export * from './users/users' diff --git a/server/tests/utils/requests/check-api-params.ts b/server/tests/utils/requests/check-api-params.ts index edb47e0e9..a2a549682 100644 --- a/server/tests/utils/requests/check-api-params.ts +++ b/server/tests/utils/requests/check-api-params.ts @@ -1,5 +1,5 @@ import { makeGetRequest } from './requests' -import { immutableAssign } from '..' +import { immutableAssign } from '../miscs/miscs' function checkBadStartPagination (url: string, path: string, token?: string, query = {}) { return makeGetRequest({ diff --git a/server/tests/utils/search/videos.ts b/server/tests/utils/search/videos.ts index 3a0c10e42..8c0037ccc 100644 --- a/server/tests/utils/search/videos.ts +++ b/server/tests/utils/search/videos.ts @@ -2,7 +2,7 @@ import * as request from 'supertest' import { VideosSearchQuery } from '../../../../shared/models/search' -import { immutableAssign } from '..' +import { immutableAssign } from '../miscs/miscs' function searchVideo (url: string, search: string) { const path = '/api/v1/search/videos' diff --git a/server/tests/utils/server/config.ts b/server/tests/utils/server/config.ts index b85e02ab7..aa3100d34 100644 --- a/server/tests/utils/server/config.ts +++ b/server/tests/utils/server/config.ts @@ -1,4 +1,4 @@ -import { makeDeleteRequest, makeGetRequest, makePutBodyRequest } from '../' +import { makeDeleteRequest, makeGetRequest, makePutBodyRequest } from '../requests/requests' import { CustomConfig } from '../../../../shared/models/server/custom-config.model' function getConfig (url: string) { diff --git a/server/tests/utils/server/jobs.ts b/server/tests/utils/server/jobs.ts index 4c02cace5..26180ec72 100644 --- a/server/tests/utils/server/jobs.ts +++ b/server/tests/utils/server/jobs.ts @@ -1,6 +1,7 @@ import * as request from 'supertest' import { Job, JobState } from '../../../../shared/models' -import { ServerInfo, wait } from '../index' +import { ServerInfo } from './servers' +import { wait } from '../miscs/miscs' function getJobsList (url: string, accessToken: string, state: JobState) { const path = '/api/v1/jobs/' + state diff --git a/server/tests/utils/server/stats.ts b/server/tests/utils/server/stats.ts index 01989d952..6f079ad18 100644 --- a/server/tests/utils/server/stats.ts +++ b/server/tests/utils/server/stats.ts @@ -1,4 +1,4 @@ -import { makeGetRequest } from '../' +import { makeGetRequest } from '../requests/requests' function getStats (url: string, useCache = false) { const path = '/api/v1/server/stats' diff --git a/server/tests/utils/users/accounts.ts b/server/tests/utils/users/accounts.ts index f82b8d906..257fa5b27 100644 --- a/server/tests/utils/users/accounts.ts +++ b/server/tests/utils/users/accounts.ts @@ -4,7 +4,7 @@ import { expect } from 'chai' import { existsSync, readdir } from 'fs-extra' import { join } from 'path' import { Account } from '../../../../shared/models/actors' -import { root } from '../index' +import { root } from '../miscs/miscs' import { makeGetRequest } from '../requests/requests' function getAccountsList (url: string, sort = '-createdAt', statusCodeExpected = 200) { diff --git a/server/tests/utils/users/blocklist.ts b/server/tests/utils/users/blocklist.ts index 35b537571..0ead5e5f6 100644 --- a/server/tests/utils/users/blocklist.ts +++ b/server/tests/utils/users/blocklist.ts @@ -1,6 +1,6 @@ /* tslint:disable:no-unused-expression */ -import { makeDeleteRequest, makePostBodyRequest } from '../index' +import { makeDeleteRequest, makePostBodyRequest } from '../requests/requests' import { makeGetRequest } from '../requests/requests' function getAccountBlocklistByAccount ( diff --git a/server/tests/utils/users/user-subscriptions.ts b/server/tests/utils/users/user-subscriptions.ts index b0e7da7cc..7148fbfca 100644 --- a/server/tests/utils/users/user-subscriptions.ts +++ b/server/tests/utils/users/user-subscriptions.ts @@ -1,4 +1,4 @@ -import { makeDeleteRequest, makeGetRequest, makePostBodyRequest } from '../' +import { makeDeleteRequest, makeGetRequest, makePostBodyRequest } from '../requests/requests' function addUserSubscription (url: string, token: string, targetUri: string, statusCodeExpected = 204) { const path = '/api/v1/users/me/subscriptions' diff --git a/server/tests/utils/users/users.ts b/server/tests/utils/users/users.ts index d77233d62..2c21a9ecf 100644 --- a/server/tests/utils/users/users.ts +++ b/server/tests/utils/users/users.ts @@ -1,5 +1,5 @@ import * as request from 'supertest' -import { makePostBodyRequest, makePutBodyRequest, updateAvatarRequest } from '../' +import { makePostBodyRequest, makePutBodyRequest, updateAvatarRequest } from '../requests/requests' import { UserRole } from '../../../../shared/index' import { NSFWPolicyType } from '../../../../shared/models/videos/nsfw-policy.type' diff --git a/server/tests/utils/videos/video-abuses.ts b/server/tests/utils/videos/video-abuses.ts index 14907e6a0..4ad82ad8c 100644 --- a/server/tests/utils/videos/video-abuses.ts +++ b/server/tests/utils/videos/video-abuses.ts @@ -1,6 +1,6 @@ import * as request from 'supertest' import { VideoAbuseUpdate } from '../../../../shared/models/videos/abuse/video-abuse-update.model' -import { makeDeleteRequest, makePutBodyRequest } from '..' +import { makeDeleteRequest, makePutBodyRequest } from '../requests/requests' function reportVideoAbuse (url: string, token: string, videoId: number | string, reason: string, specialStatus = 200) { const path = '/api/v1/videos/' + videoId + '/abuse' diff --git a/server/tests/utils/videos/video-captions.ts b/server/tests/utils/videos/video-captions.ts index 41e52be07..8d67f617b 100644 --- a/server/tests/utils/videos/video-captions.ts +++ b/server/tests/utils/videos/video-captions.ts @@ -1,7 +1,7 @@ -import { makeDeleteRequest, makeGetRequest } from '../' -import { buildAbsoluteFixturePath, makeUploadRequest } from '../index' +import { makeDeleteRequest, makeGetRequest, makeUploadRequest } from '../requests/requests' import * as request from 'supertest' import * as chai from 'chai' +import { buildAbsoluteFixturePath } from '../miscs/miscs' const expect = chai.expect diff --git a/server/tests/utils/videos/video-channels.ts b/server/tests/utils/videos/video-channels.ts index 092985777..70e8d1a6b 100644 --- a/server/tests/utils/videos/video-channels.ts +++ b/server/tests/utils/videos/video-channels.ts @@ -1,6 +1,6 @@ import * as request from 'supertest' import { VideoChannelCreate, VideoChannelUpdate } from '../../../../shared/models/videos' -import { updateAvatarRequest } from '../index' +import { updateAvatarRequest } from '../requests/requests' function getVideoChannelsList (url: string, start: number, count: number, sort?: string) { const path = '/api/v1/video-channels' diff --git a/server/tests/utils/videos/video-comments.ts b/server/tests/utils/videos/video-comments.ts index 7d4cae364..0ebf69ced 100644 --- a/server/tests/utils/videos/video-comments.ts +++ b/server/tests/utils/videos/video-comments.ts @@ -1,5 +1,5 @@ import * as request from 'supertest' -import { makeDeleteRequest } from '../' +import { makeDeleteRequest } from '../requests/requests' function getVideoCommentThreads (url: string, videoId: number | string, start: number, count: number, sort?: string, token?: string) { const path = '/api/v1/videos/' + videoId + '/comment-threads' diff --git a/server/tests/utils/videos/video-imports.ts b/server/tests/utils/videos/video-imports.ts index 59dfd481a..eb985a5b1 100644 --- a/server/tests/utils/videos/video-imports.ts +++ b/server/tests/utils/videos/video-imports.ts @@ -1,5 +1,5 @@ import { VideoImportCreate } from '../../../../shared/models/videos' -import { makeGetRequest, makeUploadRequest } from '..' +import { makeGetRequest, makeUploadRequest } from '../requests/requests' function getYoutubeVideoUrl () { return 'https://youtu.be/msX3jv1XdvM' diff --git a/server/tests/utils/videos/videos.ts b/server/tests/utils/videos/videos.ts index 87c385f38..d6c3e5dac 100644 --- a/server/tests/utils/videos/videos.ts +++ b/server/tests/utils/videos/videos.ts @@ -17,8 +17,8 @@ import { testImage } from '../' import { VideoDetails, VideoPrivacy } from '../../../../shared/models/videos' -import { VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES } from '../../../initializers' -import { dateIsValid, webtorrentAdd } from '../index' +import { VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PRIVACIES } from '../../../initializers/constants' +import { dateIsValid, webtorrentAdd } from '../miscs/miscs' type VideoAttributes = { name?: string -- cgit v1.2.3 From 65f02679303bbf7beebe222eff3ad9394fe23fea Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 19 Nov 2018 22:07:29 +0100 Subject: fix rest api quickstart and specify values in openapi spec --- support/doc/api/openapi.yaml | 9 +++++++-- support/doc/api/quickstart.md | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index af829cc62..8fbc52e99 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -101,14 +101,13 @@ x-tagGroups: - Video - Video Channel - Video Comment - - Video Abuse - Video Following - Video Rate - name: Moderation tags: - Video Abuse - Video Blacklist - - name: Public Instance Information + - name: Instance Configuration tags: - Config - Server Following @@ -316,6 +315,12 @@ paths: description: The state of the job schema: type: string + enum: + - active + - completed + - failed + - waiting + - delayed - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - $ref: '#/components/parameters/sort' diff --git a/support/doc/api/quickstart.md b/support/doc/api/quickstart.md index 844248a7f..6c19b59ee 100644 --- a/support/doc/api/quickstart.md +++ b/support/doc/api/quickstart.md @@ -43,7 +43,7 @@ Response example: Just use the `access_token` in the `Authorization` header: ``` -$ curl -H 'Authorization: Bearer 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0' https://peertube.example.com/api/v1/jobs/complete +$ curl -H 'Authorization: Bearer 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0' https://peertube.example.com/api/v1/jobs/completed ``` @@ -51,4 +51,4 @@ $ curl -H 'Authorization: Bearer 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0' https ``` $ curl https://peertube.example.com/api/v1/videos -``` \ No newline at end of file +``` -- cgit v1.2.3 From d216b5387fb774d1355df3ace002f7be469bd450 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 19 Nov 2018 22:10:35 +0100 Subject: add job state in path in openapi spec --- support/doc/api/openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 8fbc52e99..aa6be7e87 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -300,7 +300,7 @@ paths: responses: '200': description: successful operation - /jobs: + /jobs/{state}: get: summary: Get list of jobs security: -- cgit v1.2.3 From 35adc403b7eed6d1309bbce901268a76dd01b6ef Mon Sep 17 00:00:00 2001 From: buoyantair Date: Tue, 20 Nov 2018 12:33:52 +0530 Subject: Fix dependency issues --- server/tests/api/server/follow-constraints.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/server/tests/api/server/follow-constraints.ts b/server/tests/api/server/follow-constraints.ts index 3135fc568..8bb073c41 100644 --- a/server/tests/api/server/follow-constraints.ts +++ b/server/tests/api/server/follow-constraints.ts @@ -2,11 +2,21 @@ import * as chai from 'chai' import 'mocha' -import { doubleFollow, getAccountVideos, getVideo, getVideoChannelVideos, getVideoWithToken } from '../../utils' -import { flushAndRunMultipleServers, killallServers, ServerInfo, setAccessTokensToServers, uploadVideo } from '../../utils/index' -import { unfollow } from '../../utils/server/follows' -import { userLogin } from '../../utils/users/login' -import { createUser } from '../../utils/users/users' +import { + doubleFollow, + getAccountVideos, + getVideo, + getVideoChannelVideos, + getVideoWithToken, + flushAndRunMultipleServers, + killallServers, + ServerInfo, + setAccessTokensToServers, + uploadVideo +} from '../../../../shared/utils' +import { unfollow } from '../../../../shared/utils/server/follows' +import { userLogin } from '../../../../shared/utils/users/login' +import { createUser } from '../../../../shared/utils/users/users' const expect = chai.expect -- cgit v1.2.3 From f107470e50236e2a073f3f7dbab87c79e8364b56 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Nov 2018 17:36:20 +0100 Subject: Fix search title --- client/src/app/search/search.component.ts | 3 ++- server/tests/utils/users/blocklist.ts | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/app/search/search.component.ts b/client/src/app/search/search.component.ts index ecffcafc1..3d17e6d96 100644 --- a/client/src/app/search/search.component.ts +++ b/client/src/app/search/search.component.ts @@ -146,7 +146,8 @@ export class SearchComponent implements OnInit, OnDestroy { } private updateTitle () { - this.metaService.setTitle(this.i18n('Search') + ' ' + this.currentSearch) + const suffix = this.currentSearch ? ' ' + this.currentSearch : '' + this.metaService.setTitle(this.i18n('Search') + suffix) } private updateUrlFromAdvancedSearch () { diff --git a/server/tests/utils/users/blocklist.ts b/server/tests/utils/users/blocklist.ts index 0ead5e5f6..5feb84179 100644 --- a/server/tests/utils/users/blocklist.ts +++ b/server/tests/utils/users/blocklist.ts @@ -1,7 +1,6 @@ /* tslint:disable:no-unused-expression */ -import { makeDeleteRequest, makePostBodyRequest } from '../requests/requests' -import { makeGetRequest } from '../requests/requests' +import { makeGetRequest, makeDeleteRequest, makePostBodyRequest } from '../requests/requests' function getAccountBlocklistByAccount ( url: string, -- cgit v1.2.3 From 04b8c3fba614efc3827f583096c78b08cb668470 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 20 Nov 2018 10:05:51 +0100 Subject: Delete invalid or deleted remote videos --- server/controllers/api/videos/index.ts | 7 +- server/initializers/constants.ts | 15 ++- server/lib/activitypub/process/process-update.ts | 1 - server/lib/activitypub/videos.ts | 113 +++++++++++---------- .../job-queue/handlers/activitypub-refresher.ts | 40 ++++++++ server/lib/job-queue/job-queue.ts | 8 +- server/models/video/video.ts | 6 ++ server/tests/api/activitypub/index.ts | 1 + server/tests/api/activitypub/refresher.ts | 84 +++++++++++++++ shared/models/server/job.model.ts | 3 +- 10 files changed, 212 insertions(+), 66 deletions(-) create mode 100644 server/lib/job-queue/handlers/activitypub-refresher.ts create mode 100644 server/tests/api/activitypub/refresher.ts diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 89fd0432f..b659f53ed 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -387,6 +387,11 @@ async function updateVideo (req: express.Request, res: express.Response) { function getVideo (req: express.Request, res: express.Response) { const videoInstance = res.locals.video + if (videoInstance.isOutdated()) { + JobQueue.Instance.createJob({ type: 'activitypub-refresher', payload: { type: 'video', videoUrl: videoInstance.url } }) + .catch(err => logger.error('Cannot create AP refresher job for video %s.', videoInstance.url, { err })) + } + return res.json(videoInstance.toFormattedDetailsJSON()) } @@ -429,7 +434,7 @@ async function getVideoDescription (req: express.Request, res: express.Response) return res.json({ description }) } -async function listVideos (req: express.Request, res: express.Response, next: express.NextFunction) { +async function listVideos (req: express.Request, res: express.Response) { const resultList = await VideoModel.listForApi({ start: req.query.start, count: req.query.count, diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index ae3d671bb..aa243859c 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -102,7 +102,8 @@ const JOB_ATTEMPTS: { [ id in JobType ]: number } = { 'video-file': 1, 'video-import': 1, 'email': 5, - 'videos-views': 1 + 'videos-views': 1, + 'activitypub-refresher': 1 } const JOB_CONCURRENCY: { [ id in JobType ]: number } = { 'activitypub-http-broadcast': 1, @@ -113,7 +114,8 @@ const JOB_CONCURRENCY: { [ id in JobType ]: number } = { 'video-file': 1, 'video-import': 1, 'email': 5, - 'videos-views': 1 + 'videos-views': 1, + 'activitypub-refresher': 1 } const JOB_TTL: { [ id in JobType ]: number } = { 'activitypub-http-broadcast': 60000 * 10, // 10 minutes @@ -124,11 +126,12 @@ const JOB_TTL: { [ id in JobType ]: number } = { 'video-file': 1000 * 3600 * 48, // 2 days, transcoding could be long 'video-import': 1000 * 3600 * 2, // hours 'email': 60000 * 10, // 10 minutes - 'videos-views': undefined // Unlimited + 'videos-views': undefined, // Unlimited + 'activitypub-refresher': 60000 * 10 // 10 minutes } const REPEAT_JOBS: { [ id: string ]: EveryRepeatOptions | CronRepeatOptions } = { 'videos-views': { - cron: '1 * * * *' // At 1 minutes past the hour + cron: '1 * * * *' // At 1 minute past the hour } } @@ -543,7 +546,7 @@ const HTTP_SIGNATURE = { // --------------------------------------------------------------------------- -const PRIVATE_RSA_KEY_SIZE = 2048 +let PRIVATE_RSA_KEY_SIZE = 2048 // Password encryption const BCRYPT_SALT_SIZE = 10 @@ -647,6 +650,8 @@ const TRACKER_RATE_LIMITS = { // Special constants for a test instance if (isTestInstance() === true) { + PRIVATE_RSA_KEY_SIZE = 1024 + ACTOR_FOLLOW_SCORE.BASE = 20 REMOTE_SCHEME.HTTP = 'http' diff --git a/server/lib/activitypub/process/process-update.ts b/server/lib/activitypub/process/process-update.ts index bd4013555..03831a00e 100644 --- a/server/lib/activitypub/process/process-update.ts +++ b/server/lib/activitypub/process/process-update.ts @@ -59,7 +59,6 @@ async function processUpdateVideo (actor: ActorModel, activity: ActivityUpdate) videoObject, account: actor.Account, channel: channelActor.VideoChannel, - updateViews: true, overrideTo: activity.to } return updateVideoFromAP(updateOptions) diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 4cecf9345..998f90330 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -117,7 +117,7 @@ type SyncParam = { shares: boolean comments: boolean thumbnail: boolean - refreshVideo: boolean + refreshVideo?: boolean } async function syncVideoExternalAttributes (video: VideoModel, fetchedVideo: VideoTorrentObject, syncParam: SyncParam) { logger.info('Adding likes/dislikes/shares/comments of video %s.', video.uuid) @@ -158,13 +158,11 @@ async function syncVideoExternalAttributes (video: VideoModel, fetchedVideo: Vid async function getOrCreateVideoAndAccountAndChannel (options: { videoObject: VideoTorrentObject | string, syncParam?: SyncParam, - fetchType?: VideoFetchByUrlType, - refreshViews?: boolean + fetchType?: VideoFetchByUrlType }) { // Default params const syncParam = options.syncParam || { likes: true, dislikes: true, shares: true, comments: true, thumbnail: true, refreshVideo: false } const fetchType = options.fetchType || 'all' - const refreshViews = options.refreshViews || false // Get video url const videoUrl = getAPUrl(options.videoObject) @@ -174,11 +172,11 @@ async function getOrCreateVideoAndAccountAndChannel (options: { const refreshOptions = { video: videoFromDatabase, fetchedType: fetchType, - syncParam, - refreshViews + syncParam } - const p = refreshVideoIfNeeded(refreshOptions) - if (syncParam.refreshVideo === true) videoFromDatabase = await p + + if (syncParam.refreshVideo === true) videoFromDatabase = await refreshVideoIfNeeded(refreshOptions) + else await JobQueue.Instance.createJob({ type: 'activitypub-refresher', payload: { type: 'video', videoUrl: videoFromDatabase.url } }) return { video: videoFromDatabase } } @@ -199,7 +197,6 @@ async function updateVideoFromAP (options: { videoObject: VideoTorrentObject, account: AccountModel, channel: VideoChannelModel, - updateViews: boolean, overrideTo?: string[] }) { logger.debug('Updating remote video "%s".', options.videoObject.uuid) @@ -238,8 +235,8 @@ async function updateVideoFromAP (options: { options.video.set('publishedAt', videoData.publishedAt) options.video.set('privacy', videoData.privacy) options.video.set('channelId', videoData.channelId) + options.video.set('views', videoData.views) - if (options.updateViews === true) options.video.set('views', videoData.views) await options.video.save(sequelizeOptions) { @@ -297,8 +294,58 @@ async function updateVideoFromAP (options: { } } +async function refreshVideoIfNeeded (options: { + video: VideoModel, + fetchedType: VideoFetchByUrlType, + syncParam: SyncParam +}): Promise { + if (!options.video.isOutdated()) return options.video + + // We need more attributes if the argument video was fetched with not enough joints + const video = options.fetchedType === 'all' ? options.video : await VideoModel.loadByUrlAndPopulateAccount(options.video.url) + + try { + const { response, videoObject } = await fetchRemoteVideo(video.url) + if (response.statusCode === 404) { + logger.info('Cannot refresh remote video %s: video does not exist anymore. Deleting it.', video.url) + + // Video does not exist anymore + await video.destroy() + return undefined + } + + if (videoObject === undefined) { + logger.warn('Cannot refresh remote video %s: invalid body.', video.url) + + await video.setAsRefreshed() + return video + } + + const channelActor = await getOrCreateVideoChannelFromVideoObject(videoObject) + const account = await AccountModel.load(channelActor.VideoChannel.accountId) + + const updateOptions = { + video, + videoObject, + account, + channel: channelActor.VideoChannel + } + await retryTransactionWrapper(updateVideoFromAP, updateOptions) + await syncVideoExternalAttributes(video, videoObject, options.syncParam) + + return video + } catch (err) { + logger.warn('Cannot refresh video %s.', options.video.url, { err }) + + // Don't refresh in loop + await video.setAsRefreshed() + return video + } +} + export { updateVideoFromAP, + refreshVideoIfNeeded, federateVideoIfNeeded, fetchRemoteVideo, getOrCreateVideoAndAccountAndChannel, @@ -362,52 +409,6 @@ async function createVideo (videoObject: VideoTorrentObject, channelActor: Actor return videoCreated } -async function refreshVideoIfNeeded (options: { - video: VideoModel, - fetchedType: VideoFetchByUrlType, - syncParam: SyncParam, - refreshViews: boolean -}): Promise { - if (!options.video.isOutdated()) return options.video - - // We need more attributes if the argument video was fetched with not enough joints - const video = options.fetchedType === 'all' ? options.video : await VideoModel.loadByUrlAndPopulateAccount(options.video.url) - - try { - const { response, videoObject } = await fetchRemoteVideo(video.url) - if (response.statusCode === 404) { - logger.info('Cannot refresh remote video %s: video does not exist anymore. Deleting it.', video.url) - - // Video does not exist anymore - await video.destroy() - return undefined - } - - if (videoObject === undefined) { - logger.warn('Cannot refresh remote video %s: invalid body.', video.url) - return video - } - - const channelActor = await getOrCreateVideoChannelFromVideoObject(videoObject) - const account = await AccountModel.load(channelActor.VideoChannel.accountId) - - const updateOptions = { - video, - videoObject, - account, - channel: channelActor.VideoChannel, - updateViews: options.refreshViews - } - await retryTransactionWrapper(updateVideoFromAP, updateOptions) - await syncVideoExternalAttributes(video, videoObject, options.syncParam) - - return video - } catch (err) { - logger.warn('Cannot refresh video %s.', options.video.url, { err }) - return video - } -} - async function videoActivityObjectToDBAttributes ( videoChannel: VideoChannelModel, videoObject: VideoTorrentObject, diff --git a/server/lib/job-queue/handlers/activitypub-refresher.ts b/server/lib/job-queue/handlers/activitypub-refresher.ts new file mode 100644 index 000000000..7752b3b40 --- /dev/null +++ b/server/lib/job-queue/handlers/activitypub-refresher.ts @@ -0,0 +1,40 @@ +import * as Bull from 'bull' +import { logger } from '../../../helpers/logger' +import { fetchVideoByUrl } from '../../../helpers/video' +import { refreshVideoIfNeeded } from '../../activitypub' + +export type RefreshPayload = { + videoUrl: string + type: 'video' +} + +async function refreshAPObject (job: Bull.Job) { + const payload = job.data as RefreshPayload + logger.info('Processing AP refresher in job %d.', job.id) + + if (payload.type === 'video') return refreshAPVideo(payload.videoUrl) +} + +// --------------------------------------------------------------------------- + +export { + refreshAPObject +} + +// --------------------------------------------------------------------------- + +async function refreshAPVideo (videoUrl: string) { + const fetchType = 'all' as 'all' + const syncParam = { likes: true, dislikes: true, shares: true, comments: true, thumbnail: true } + + const videoFromDatabase = await fetchVideoByUrl(videoUrl, fetchType) + if (videoFromDatabase) { + const refreshOptions = { + video: videoFromDatabase, + fetchedType: fetchType, + syncParam + } + + await refreshVideoIfNeeded(refreshOptions) + } +} diff --git a/server/lib/job-queue/job-queue.ts b/server/lib/job-queue/job-queue.ts index 4cfd4d253..5862e178f 100644 --- a/server/lib/job-queue/job-queue.ts +++ b/server/lib/job-queue/job-queue.ts @@ -11,6 +11,7 @@ import { processVideoFile, processVideoFileImport, VideoFileImportPayload, Video import { ActivitypubFollowPayload, processActivityPubFollow } from './handlers/activitypub-follow' import { processVideoImport, VideoImportPayload } from './handlers/video-import' import { processVideosViews } from './handlers/video-views' +import { refreshAPObject, RefreshPayload } from './handlers/activitypub-refresher' type CreateJobArgument = { type: 'activitypub-http-broadcast', payload: ActivitypubHttpBroadcastPayload } | @@ -21,6 +22,7 @@ type CreateJobArgument = { type: 'video-file', payload: VideoFilePayload } | { type: 'email', payload: EmailPayload } | { type: 'video-import', payload: VideoImportPayload } | + { type: 'activitypub-refresher', payload: RefreshPayload } | { type: 'videos-views', payload: {} } const handlers: { [ id in JobType ]: (job: Bull.Job) => Promise} = { @@ -32,7 +34,8 @@ const handlers: { [ id in JobType ]: (job: Bull.Job) => Promise} = { 'video-file': processVideoFile, 'email': processEmail, 'video-import': processVideoImport, - 'videos-views': processVideosViews + 'videos-views': processVideosViews, + 'activitypub-refresher': refreshAPObject } const jobTypes: JobType[] = [ @@ -44,7 +47,8 @@ const jobTypes: JobType[] = [ 'video-file', 'video-file-import', 'video-import', - 'videos-views' + 'videos-views', + 'activitypub-refresher' ] class JobQueue { diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 1e68b380c..0f18d9f0c 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -1561,6 +1561,12 @@ export class VideoModel extends Model { (now - updatedAtTime) > ACTIVITY_PUB.VIDEO_REFRESH_INTERVAL } + setAsRefreshed () { + this.changed('updatedAt', true) + + return this.save() + } + getBaseUrls () { let baseUrlHttp let baseUrlWs diff --git a/server/tests/api/activitypub/index.ts b/server/tests/api/activitypub/index.ts index e748f32e9..450053309 100644 --- a/server/tests/api/activitypub/index.ts +++ b/server/tests/api/activitypub/index.ts @@ -1,4 +1,5 @@ import './client' import './fetch' import './helpers' +import './refresher' import './security' diff --git a/server/tests/api/activitypub/refresher.ts b/server/tests/api/activitypub/refresher.ts new file mode 100644 index 000000000..67e04f79e --- /dev/null +++ b/server/tests/api/activitypub/refresher.ts @@ -0,0 +1,84 @@ +/* tslint:disable:no-unused-expression */ + +import 'mocha' +import { doubleFollow, getVideo, reRunServer } from '../../utils' +import { flushAndRunMultipleServers, killallServers, ServerInfo, setAccessTokensToServers, uploadVideo, wait } from '../../utils/index' +import { waitJobs } from '../../utils/server/jobs' +import { setVideoField } from '../../utils/miscs/sql' + +describe('Test AP refresher', function () { + let servers: ServerInfo[] = [] + let videoUUID1: string + let videoUUID2: string + let videoUUID3: string + + before(async function () { + this.timeout(30000) + + servers = await flushAndRunMultipleServers(2) + + // Get the access tokens + await setAccessTokensToServers(servers) + + { + const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video1' }) + videoUUID1 = res.body.video.uuid + } + + { + const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video2' }) + videoUUID2 = res.body.video.uuid + } + + { + const res = await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'video3' }) + videoUUID3 = res.body.video.uuid + } + + await doubleFollow(servers[0], servers[1]) + }) + + it('Should remove a deleted remote video', async function () { + this.timeout(60000) + + await wait(10000) + + // Change UUID so the remote server returns a 404 + await setVideoField(2, videoUUID1, 'uuid', '304afe4f-39f9-4d49-8ed7-ac57b86b174f') + + await getVideo(servers[0].url, videoUUID1) + await getVideo(servers[0].url, videoUUID2) + + await waitJobs(servers) + + await getVideo(servers[0].url, videoUUID1, 404) + await getVideo(servers[0].url, videoUUID2, 200) + }) + + it('Should not update a remote video if the remote instance is down', async function () { + this.timeout(60000) + + killallServers([ servers[1] ]) + + await setVideoField(2, videoUUID3, 'uuid', '304afe4f-39f9-4d49-8ed7-ac57b86b174e') + + // Video will need a refresh + await wait(10000) + + await getVideo(servers[0].url, videoUUID3) + // The refresh should fail + await waitJobs([ servers[0] ]) + + await reRunServer(servers[1]) + + // Should not refresh the video, even if the last refresh failed (to avoir a loop on dead instances) + await getVideo(servers[0].url, videoUUID3) + await waitJobs(servers) + + await getVideo(servers[0].url, videoUUID3, 200) + }) + + after(async function () { + killallServers(servers) + }) +}) diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts index 4046297c4..85bc9541b 100644 --- a/shared/models/server/job.model.ts +++ b/shared/models/server/job.model.ts @@ -8,7 +8,8 @@ export type JobType = 'activitypub-http-unicast' | 'video-file' | 'email' | 'video-import' | - 'videos-views' + 'videos-views' | + 'activitypub-refresher' export interface Job { id: number -- cgit v1.2.3 From fc2ec87a8c4dcfbb91a1a62cf4c07a2a8e6a50fe Mon Sep 17 00:00:00 2001 From: Josh Morel Date: Wed, 21 Nov 2018 02:48:29 -0500 Subject: enable email verification by admin (#1348) * enable email verification by admin * rename/label to set email as verified to be more explicit that admin is not sending another email to confirm * add update user emailVerified check-params test * make user.model emailVerified property required --- .../users/user-list/user-list.component.html | 12 +++++++++- .../+admin/users/user-list/user-list.component.ts | 26 +++++++++++++++++++++- .../user-moderation-dropdown.component.ts | 25 ++++++++++++++++++++- client/src/app/shared/users/user.model.ts | 2 ++ client/src/app/shared/users/user.service.ts | 9 ++++++++ server/controllers/api/users/index.ts | 1 + server/middlewares/validators/users.ts | 1 + server/tests/api/check-params/users.ts | 9 ++++++++ server/tests/api/users/users.ts | 2 ++ server/tests/utils/users/users.ts | 2 ++ shared/models/users/user-update.model.ts | 1 + shared/models/users/user.model.ts | 1 + 12 files changed, 88 insertions(+), 3 deletions(-) diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html index 5684004a5..556ab3c5d 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.html +++ b/client/src/app/+admin/users/user-list/user-list.component.html @@ -65,7 +65,17 @@ (banned) - {{ user.email }} + {{ user.email }} + + + ? {{ user.email }} + + + + ✓ {{ user.email }} + + + {{ user.videoQuotaUsed }} / {{ user.videoQuota }} {{ user.roleLabel }} {{ user.createdAt }} diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index 31e783622..fb085c133 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, ViewChild } from '@angular/core' import { NotificationsService } from 'angular2-notifications' import { SortMeta } from 'primeng/components/common/sortmeta' -import { ConfirmService } from '../../../core' +import { ConfirmService, ServerService } from '../../../core' import { RestPagination, RestTable, UserService } from '../../../shared' import { I18n } from '@ngx-translate/i18n-polyfill' import { User } from '../../../../../../shared' @@ -28,12 +28,17 @@ export class UserListComponent extends RestTable implements OnInit { constructor ( private notificationsService: NotificationsService, private confirmService: ConfirmService, + private serverService: ServerService, private userService: UserService, private i18n: I18n ) { super() } + get requiresEmailVerification () { + return this.serverService.getConfig().signup.requiresEmailVerification + } + ngOnInit () { this.initialize() @@ -51,6 +56,11 @@ export class UserListComponent extends RestTable implements OnInit { label: this.i18n('Unban'), handler: users => this.unbanUsers(users), isDisplayed: users => users.every(u => u.blocked === true) + }, + { + label: this.i18n('Set Email as Verified'), + handler: users => this.setEmailsAsVerified(users), + isDisplayed: users => this.requiresEmailVerification && users.every(u => !u.blocked && u.emailVerified === false) } ] } @@ -114,6 +124,20 @@ export class UserListComponent extends RestTable implements OnInit { ) } + async setEmailsAsVerified (users: User[]) { + this.userService.updateUsers(users, { emailVerified: true }).subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('{{num}} users email set as verified.', { num: users.length }) + ) + this.loadData() + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + isInSelectionMode () { return this.selectedUsers.length !== 0 } diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts index 908f0b8e0..460750740 100644 --- a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts +++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts @@ -4,7 +4,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill' import { DropdownAction } from '@app/shared/buttons/action-dropdown.component' import { UserBanModalComponent } from '@app/shared/moderation/user-ban-modal.component' import { UserService } from '@app/shared/users' -import { AuthService, ConfirmService } from '@app/core' +import { AuthService, ConfirmService, ServerService } from '@app/core' import { User, UserRight } from '../../../../../shared/models/users' import { Account } from '@app/shared/account/account.model' import { BlocklistService } from '@app/shared/blocklist' @@ -32,11 +32,16 @@ export class UserModerationDropdownComponent implements OnChanges { private authService: AuthService, private notificationsService: NotificationsService, private confirmService: ConfirmService, + private serverService: ServerService, private userService: UserService, private blocklistService: BlocklistService, private i18n: I18n ) { } + get requiresEmailVerification () { + return this.serverService.getConfig().signup.requiresEmailVerification + } + ngOnChanges () { this.buildActions() } @@ -97,6 +102,19 @@ export class UserModerationDropdownComponent implements OnChanges { ) } + setEmailAsVerified (user: User) { + this.userService.updateUser(user.id, { emailVerified: true }).subscribe( + () => { + this.notificationsService.success( + this.i18n('Success'), + this.i18n('User {{username}} email set as verified', { username: user.username }) + ) + }, + + err => this.notificationsService.error(this.i18n('Error'), err.message) + ) + } + blockAccountByUser (account: Account) { this.blocklistService.blockAccountByUser(account) .subscribe( @@ -264,6 +282,11 @@ export class UserModerationDropdownComponent implements OnChanges { label: this.i18n('Unban'), handler: ({ user }: { user: User }) => this.unbanUser(user), isDisplayed: ({ user }: { user: User }) => user.blocked + }, + { + label: this.i18n('Set Email as Verified'), + handler: ({ user }: { user: User }) => this.setEmailAsVerified(user), + isDisplayed: ({ user }: { user: User }) => this.requiresEmailVerification && !user.blocked && user.emailVerified === false } ]) } diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index 7c840ffa7..9819829fd 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts @@ -15,6 +15,7 @@ export type UserConstructorHash = { username: string, email: string, role: UserRole, + emailVerified?: boolean, videoQuota?: number, videoQuotaDaily?: number, nsfwPolicy?: NSFWPolicyType, @@ -31,6 +32,7 @@ export class User implements UserServerModel { id: number username: string email: string + emailVerified: boolean role: UserRole nsfwPolicy: NSFWPolicyType webTorrentEnabled: boolean diff --git a/client/src/app/shared/users/user.service.ts b/client/src/app/shared/users/user.service.ts index 27a81f0a2..cc5c051f1 100644 --- a/client/src/app/shared/users/user.service.ts +++ b/client/src/app/shared/users/user.service.ts @@ -153,6 +153,15 @@ export class UserService { ) } + updateUsers (users: User[], userUpdate: UserUpdate) { + return from(users) + .pipe( + concatMap(u => this.authHttp.put(UserService.BASE_USERS_URL + u.id, userUpdate)), + toArray(), + catchError(err => this.restExtractor.handleError(err)) + ) + } + getUser (userId: number) { return this.authHttp.get(UserService.BASE_USERS_URL + userId) .pipe(catchError(err => this.restExtractor.handleError(err))) diff --git a/server/controllers/api/users/index.ts b/server/controllers/api/users/index.ts index 9fcb8077f..87fab4a40 100644 --- a/server/controllers/api/users/index.ts +++ b/server/controllers/api/users/index.ts @@ -262,6 +262,7 @@ async function updateUser (req: express.Request, res: express.Response, next: ex const roleChanged = body.role !== undefined && body.role !== userToUpdate.role if (body.email !== undefined) userToUpdate.email = body.email + if (body.emailVerified !== undefined) userToUpdate.emailVerified = body.emailVerified if (body.videoQuota !== undefined) userToUpdate.videoQuota = body.videoQuota if (body.videoQuotaDaily !== undefined) userToUpdate.videoQuotaDaily = body.videoQuotaDaily if (body.role !== undefined) userToUpdate.role = body.role diff --git a/server/middlewares/validators/users.ts b/server/middlewares/validators/users.ts index 61297120a..ccaf2eeb6 100644 --- a/server/middlewares/validators/users.ts +++ b/server/middlewares/validators/users.ts @@ -114,6 +114,7 @@ const deleteMeValidator = [ const usersUpdateValidator = [ param('id').isInt().not().isEmpty().withMessage('Should have a valid id'), body('email').optional().isEmail().withMessage('Should have a valid email attribute'), + body('emailVerified').optional().isBoolean().withMessage('Should have a valid email verified attribute'), body('videoQuota').optional().custom(isUserVideoQuotaValid).withMessage('Should have a valid user quota'), body('videoQuotaDaily').optional().custom(isUserVideoQuotaDailyValid).withMessage('Should have a valid daily user quota'), body('role').optional().custom(isUserRoleValid).withMessage('Should have a valid role'), diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts index ec46609a4..273be1679 100644 --- a/server/tests/api/check-params/users.ts +++ b/server/tests/api/check-params/users.ts @@ -428,6 +428,14 @@ describe('Test users API validators', function () { await makePutBodyRequest({ url: server.url, path: path + userId, token: server.accessToken, fields }) }) + it('Should fail with an invalid emailVerified attribute', async function () { + const fields = { + emailVerified: 'yes' + } + + await makePutBodyRequest({ url: server.url, path: path + userId, token: server.accessToken, fields }) + }) + it('Should fail with an invalid videoQuota attribute', async function () { const fields = { videoQuota: -90 @@ -463,6 +471,7 @@ describe('Test users API validators', function () { it('Should succeed with the correct params', async function () { const fields = { email: 'email@example.com', + emailVerified: true, videoQuota: 42, role: UserRole.MODERATOR } diff --git a/server/tests/api/users/users.ts b/server/tests/api/users/users.ts index 513bca8a0..e7bb845b9 100644 --- a/server/tests/api/users/users.ts +++ b/server/tests/api/users/users.ts @@ -478,6 +478,7 @@ describe('Test users', function () { userId, accessToken, email: 'updated2@example.com', + emailVerified: true, videoQuota: 42, role: UserRole.MODERATOR }) @@ -487,6 +488,7 @@ describe('Test users', function () { expect(user.username).to.equal('user_1') expect(user.email).to.equal('updated2@example.com') + expect(user.emailVerified).to.be.true expect(user.nsfwPolicy).to.equal('do_not_list') expect(user.videoQuota).to.equal(42) expect(user.roleLabel).to.equal('Moderator') diff --git a/server/tests/utils/users/users.ts b/server/tests/utils/users/users.ts index 2c21a9ecf..f12992315 100644 --- a/server/tests/utils/users/users.ts +++ b/server/tests/utils/users/users.ts @@ -206,6 +206,7 @@ function updateUser (options: { userId: number, accessToken: string, email?: string, + emailVerified?: boolean, videoQuota?: number, videoQuotaDaily?: number, role?: UserRole @@ -214,6 +215,7 @@ function updateUser (options: { const toSend = {} if (options.email !== undefined && options.email !== null) toSend['email'] = options.email + if (options.emailVerified !== undefined && options.emailVerified !== null) toSend['emailVerified'] = options.emailVerified if (options.videoQuota !== undefined && options.videoQuota !== null) toSend['videoQuota'] = options.videoQuota if (options.videoQuotaDaily !== undefined && options.videoQuotaDaily !== null) toSend['videoQuotaDaily'] = options.videoQuotaDaily if (options.role !== undefined && options.role !== null) toSend['role'] = options.role diff --git a/shared/models/users/user-update.model.ts b/shared/models/users/user-update.model.ts index ce866fb18..abde51321 100644 --- a/shared/models/users/user-update.model.ts +++ b/shared/models/users/user-update.model.ts @@ -2,6 +2,7 @@ import { UserRole } from './user-role' export interface UserUpdate { email?: string + emailVerified?: boolean videoQuota?: number videoQuotaDaily?: number role?: UserRole diff --git a/shared/models/users/user.model.ts b/shared/models/users/user.model.ts index 8147dc48e..82af17516 100644 --- a/shared/models/users/user.model.ts +++ b/shared/models/users/user.model.ts @@ -7,6 +7,7 @@ export interface User { id: number username: string email: string + emailVerified: boolean nsfwPolicy: NSFWPolicyType autoPlayVideo: boolean role: UserRole -- cgit v1.2.3 From 31d45e0e0bbb9ab8ddca47af4e2d1d2905c938b3 Mon Sep 17 00:00:00 2001 From: Mateusz Piotrowski <0mp@FreeBSD.org> Date: Wed, 21 Nov 2018 10:18:44 +0100 Subject: Improve FreeBSD setup instructions Use install(1) instead of cp(1) and chmod(1) to install the service file. Also, use sysrc(8) to enable the PeerTube service in rc.conf(5). --- support/doc/production.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/support/doc/production.md b/support/doc/production.md index 35c7de3b5..16efe17c4 100644 --- a/support/doc/production.md +++ b/support/doc/production.md @@ -185,9 +185,8 @@ $ sudo journalctl -feu peertube On FreeBSD, copy the startup script and update rc.conf: ``` -$ sudo cp /var/www/peertube/peertube-latest/support/freebsd/peertube /usr/local/etc/rc.d/ -$ sudo chmod +x /usr/local/etc/rc.d/peertube -$ sudo echo peertube_enable="YES" >> /etc/rc.conf +$ sudo install -m 0555 /var/www/peertube/peertube-latest/support/freebsd/peertube /usr/local/etc/rc.d/ +$ sudo sysrc peertube_enable="YES" ``` Run: -- cgit v1.2.3 From 0f49023061c8c60a609ebf96871b925c90235c08 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Wed, 21 Nov 2018 01:02:47 +0100 Subject: make POST /users have integer role enum --- support/doc/api/openapi.yaml | 7 ++++++- support/doc/api/quickstart.md | 12 ++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index aa6be7e87..f0c0b46b1 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1741,7 +1741,12 @@ components: type: string description: 'The user videoQuota ' role: - type: string + type: integer + format: int32 + enum: + - 0 + - 1 + - 2 description: 'The user role ' required: - username diff --git a/support/doc/api/quickstart.md b/support/doc/api/quickstart.md index 6c19b59ee..00874a1c9 100644 --- a/support/doc/api/quickstart.md +++ b/support/doc/api/quickstart.md @@ -6,13 +6,13 @@ Some endpoints need authentication. We use OAuth 2.0 so first fetch the client tokens: -``` +```bash $ curl https://peertube.example.com/api/v1/oauth-clients/local ``` Response example: -``` +```json { "client_id": "v1ikx5hnfop4mdpnci8nsqh93c45rldf", "client_secret": "AjWiOapPltI6EnsWQwlFarRtLh4u8tDt" @@ -23,7 +23,7 @@ Response example: Now you can fetch the user token: -``` +```bash $ curl -X POST \ -d "client_id=v1ikx5hnfop4mdpnci8nsqh93c45rldf&client_secret=AjWiOapPltI6EnsWQwlFarRtLh4u8tDt&grant_type=password&response_type=code&username=your_user&password=your_password" \ https://peertube.example.com/api/v1/users/token @@ -31,7 +31,7 @@ $ curl -X POST \ Response example: -``` +```json { "access_token": "90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0", "token_type": "Bearer", @@ -42,13 +42,13 @@ Response example: Just use the `access_token` in the `Authorization` header: -``` +```bash $ curl -H 'Authorization: Bearer 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0' https://peertube.example.com/api/v1/jobs/completed ``` ### List videos -``` +```bash $ curl https://peertube.example.com/api/v1/videos ``` -- cgit v1.2.3 From fef13f148028f0922c0643eee999f141fee3a2c7 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Wed, 21 Nov 2018 15:35:26 +0100 Subject: Various improvements for docker-compose --- support/doc/docker.md | 1 - support/docker/production/.env | 2 +- support/docker/production/config/traefik.toml | 3 +++ support/docker/production/docker-compose.yml | 16 ++++++++++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/support/doc/docker.md b/support/doc/docker.md index cab336344..c20746486 100644 --- a/support/doc/docker.md +++ b/support/doc/docker.md @@ -63,7 +63,6 @@ Pull the latest images and rerun PeerTube: ```shell $ cd /your/peertube/directory -$ docker-compose down $ docker-compose pull $ docker-compose up -d ``` diff --git a/support/docker/production/.env b/support/docker/production/.env index 4a649d655..f27def3b4 100644 --- a/support/docker/production/.env +++ b/support/docker/production/.env @@ -9,7 +9,7 @@ PEERTUBE_TRUST_PROXY=["127.0.0.1"] #PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback", "192.168.1.0/24"] PEERTUBE_SMTP_USERNAME= PEERTUBE_SMTP_PASSWORD= -PEERTUBE_SMTP_HOSTNAME= +PEERTUBE_SMTP_HOSTNAME=postfix PEERTUBE_SMTP_PORT=25 PEERTUBE_SMTP_FROM=noreply@domain.tld PEERTUBE_SMTP_TLS=true diff --git a/support/docker/production/config/traefik.toml b/support/docker/production/config/traefik.toml index 882c95548..6abced3db 100644 --- a/support/docker/production/config/traefik.toml +++ b/support/docker/production/config/traefik.toml @@ -1,9 +1,12 @@ # Uncomment this line in order to enable debugging through logs # debug = true defaultEntryPoints = ["http", "https"] + [entryPoints] [entryPoints.http] address = ":80" + [entryPoints.http.redirect] + entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] diff --git a/support/docker/production/docker-compose.yml b/support/docker/production/docker-compose.yml index 220c19fba..1b0a28ffb 100644 --- a/support/docker/production/docker-compose.yml +++ b/support/docker/production/docker-compose.yml @@ -4,16 +4,19 @@ services: reverse-proxy: image: traefik - command: --api --docker # Enables the web UI and tells Træfik to listen to docker + command: --docker # Tells Træfik to listen to docker ports: - "80:80" # The HTTP port - "443:443" # The HTTPS port - - "8080:8080" # The Web UI (enabled by --api) volumes: - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events - ./docker-volume/traefik/acme.json:/etc/acme.json - ./docker-volume/traefik/traefik.toml:/traefik.toml restart: "always" + # If you want to use the Traefik dashboard, you should expose it on a + # subdomain with HTTPS and authentification: + # https://medium.com/@xavier.priour/secure-traefik-dashboard-with-https-and-password-in-docker-5b657e2aa15f + # https://github.com/containous/traefik/issues/880#issuecomment-310301168 peertube: # If you don't want to use the official image and build one from sources @@ -38,6 +41,7 @@ services: depends_on: - postgres - redis + - postfix restart: "always" postgres: @@ -59,3 +63,11 @@ services: restart: "always" labels: traefik.enable: "false" + + postfix: + image: mwader/postfix-relay + environment: + - POSTFIX_myhostname=${PEERTUBE_WEBSERVER_HOSTNAME} + labels: + traefik.enable: "false" + restart: "always" -- cgit v1.2.3 From 9fa0ea41aaa511bed3aa179dacc312fad6170c21 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 21 Nov 2018 16:29:09 +0100 Subject: Fix youtube video import --- server/helpers/youtube-dl.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/helpers/youtube-dl.ts b/server/helpers/youtube-dl.ts index 70b4e1b78..2a5663042 100644 --- a/server/helpers/youtube-dl.ts +++ b/server/helpers/youtube-dl.ts @@ -24,10 +24,10 @@ const processOptions = { function getYoutubeDLInfo (url: string, opts?: string[]): Promise { return new Promise(async (res, rej) => { - const options = opts || [ '-j', '--flat-playlist' ] + const args = opts || [ '-j', '--flat-playlist' ] const youtubeDL = await safeGetYoutubeDL() - youtubeDL.getInfo(url, options, (err, info) => { + youtubeDL.getInfo(url, args, processOptions, (err, info) => { if (err) return rej(err) if (info.is_live === true) return rej(new Error('Cannot download a live streaming.')) -- cgit v1.2.3 From f97c91f7ec4afc26ab790fbefa63d11b3060f40f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 21 Nov 2018 17:05:31 +0100 Subject: Add separators in user moderation dropdown --- .../shared/buttons/action-dropdown.component.html | 20 +++++++++++++------- .../shared/buttons/action-dropdown.component.scss | 6 +++++- .../app/shared/buttons/action-dropdown.component.ts | 8 +++++++- .../moderation/user-moderation-dropdown.component.ts | 16 +++++++++++----- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/client/src/app/shared/buttons/action-dropdown.component.html b/client/src/app/shared/buttons/action-dropdown.component.html index 48230d6d8..90651f217 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.html +++ b/client/src/app/shared/buttons/action-dropdown.component.html @@ -8,14 +8,20 @@
    -
    \ No newline at end of file +
    diff --git a/client/src/app/shared/buttons/action-dropdown.component.scss b/client/src/app/shared/buttons/action-dropdown.component.scss index 92c4d1d2c..a4fcceeee 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.scss +++ b/client/src/app/shared/buttons/action-dropdown.component.scss @@ -1,6 +1,10 @@ @import '_variables'; @import '_mixins'; +.dropdown-divider:last-child { + display: none; +} + .action-button { @include peertube-button; @@ -52,4 +56,4 @@ width: 100%; } } -} \ No newline at end of file +} diff --git a/client/src/app/shared/buttons/action-dropdown.component.ts b/client/src/app/shared/buttons/action-dropdown.component.ts index d8026ef41..275e2b51e 100644 --- a/client/src/app/shared/buttons/action-dropdown.component.ts +++ b/client/src/app/shared/buttons/action-dropdown.component.ts @@ -14,10 +14,16 @@ export type DropdownAction = { }) export class ActionDropdownComponent { - @Input() actions: DropdownAction[] = [] + @Input() actions: DropdownAction[] | DropdownAction[][] = [] @Input() entry: T @Input() placement = 'bottom-left' @Input() buttonSize: 'normal' | 'small' = 'normal' @Input() label: string @Input() theme: 'orange' | 'grey' = 'grey' + + getActions () { + if (this.actions.length !== 0 && Array.isArray(this.actions[0])) return this.actions + + return [ this.actions ] + } } diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts index 460750740..47967f8e5 100644 --- a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts +++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts @@ -26,7 +26,7 @@ export class UserModerationDropdownComponent implements OnChanges { @Output() userChanged = new EventEmitter() @Output() userDeleted = new EventEmitter() - userActions: DropdownAction<{ user: User, account: Account }>[] = [] + userActions: DropdownAction<{ user: User, account: Account }>[][] = [] constructor ( private authService: AuthService, @@ -264,7 +264,7 @@ export class UserModerationDropdownComponent implements OnChanges { if (this.user && authUser.id === this.user.id) return if (this.user && authUser.hasRight(UserRight.MANAGE_USERS)) { - this.userActions = this.userActions.concat([ + this.userActions.push([ { label: this.i18n('Edit'), linkBuilder: ({ user }) => this.getRouterUserEditLink(user) @@ -294,7 +294,7 @@ export class UserModerationDropdownComponent implements OnChanges { // Actions on accounts/servers if (this.account) { // User actions - this.userActions = this.userActions.concat([ + this.userActions.push([ { label: this.i18n('Mute this account'), isDisplayed: ({ account }: { account: Account }) => account.mutedByUser === false, @@ -317,9 +317,11 @@ export class UserModerationDropdownComponent implements OnChanges { } ]) + let instanceActions: DropdownAction<{ user: User, account: Account }>[] = [] + // Instance actions if (authUser.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) { - this.userActions = this.userActions.concat([ + instanceActions = instanceActions.concat([ { label: this.i18n('Mute this account by your instance'), isDisplayed: ({ account }: { account: Account }) => account.mutedByInstance === false, @@ -335,7 +337,7 @@ export class UserModerationDropdownComponent implements OnChanges { // Instance actions if (authUser.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) { - this.userActions = this.userActions.concat([ + instanceActions = instanceActions.concat([ { label: this.i18n('Mute the instance by your instance'), isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === false, @@ -348,6 +350,10 @@ export class UserModerationDropdownComponent implements OnChanges { } ]) } + + if (instanceActions.length !== 0) { + this.userActions.push(instanceActions) + } } } } -- cgit v1.2.3 From a99e2d9448f12ebfb7e824fd34470b52206fd7a8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 21 Nov 2018 17:11:56 +0100 Subject: Reload user table when setting an email to verified --- client/src/app/shared/moderation/user-moderation-dropdown.component.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts index 47967f8e5..d391246e0 100644 --- a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts +++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts @@ -109,6 +109,8 @@ export class UserModerationDropdownComponent implements OnChanges { this.i18n('Success'), this.i18n('User {{username}} email set as verified', { username: user.username }) ) + + this.userChanged.emit() }, err => this.notificationsService.error(this.i18n('Error'), err.message) -- cgit v1.2.3 From 38c62754833c7133772a387dd8ebac306e2e5d89 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 11:29:13 +0100 Subject: Update changelog --- CHANGELOG.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e6fdd725..ff336daf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,53 @@ # Changelog +## v1.1.0-rc.1 (since v1.1.0-alpha.2) + +### Maintenance + + * Improve REST API documentation: https://docs.joinpeertube.org/api.html ([@rigelk](https://github.com/rigelk)) + * Add CLI option to run PeerTube without client ([@rigelk](https://github.com/rigelk)) + * Add manpage to peertube CLI ([@rigelk](https://github.com/rigelk)) + * Make backups of files in optimize-old-videos script ([@Nutomic](https://github.com/nutomic)) + * Allow peertube-import-videos.ts CLI script to run concurrently ([@McFlat](https://github.com/mcflat)) + +### Docker + + * Improve docker compose template ([@Nutomic](https://github.com/nutomic)) + * Add postfix image + * Redirect HTTP -> HTTPS + * Disable Træfik web UI + * Add ability to set an array in `PEERTUBE_TRUST_PROXY` ([LecygneNoir](https://github.com/LecygneNoir)) + +### Features + + * Add background effect to activated menu entry + * Improve video upload error handling + * Improve message visibility on signup + * Auto login user on signup if email verification is disabled + * Speed up PeerTube startup (in particular the first one) + * Delete invalid or deleted remote videos + * Add ability to admin to set email as verified ([@joshmorel](https://github.com/joshmorel)) + * Add separators in user moderation dropdown + +### Bug fixes + + * Check follow constraints when getting a video + * Fix application-config initialization in CLI tools ([Yetangitu](https://github.com/Yetangitu)) + * Fix video pixel format compatibility (using yuv420p) ([@rigelk](https://github.com/rigelk)) + * Fix video `state` AP context ([tcitworld](https://github.com/tcitworld)) + * Fix Linked Signature compatibility + * Fix AP collections pagination + * Fix too big thumbnails (when using URL import) + * Do not host remote AP objects: use redirection instead + * Fix video miniature with a long name + * Fix video views inconsistencies inside the federation + * Fix video embed in Wordpress Gutenberg + * Fix video channel videos url when scrolling + * Fix player progress bar/seeking when changing resolution + * Fix search tab title with no search + * Fix YouTube video import with some videos + + ## v1.1.0-alpha.2 (since v1.1.0-alpha.1) ### Security/Maintenance/Federation -- cgit v1.2.3 From eca8bf4660749da0a0ed70b4828f5680f9564f45 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 11:29:51 +0100 Subject: Update credits --- CREDITS.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 326f9da07..ad5125227 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -3,31 +3,33 @@ * [Chocobozzz](https://github.com/Chocobozzz) * [rigelk](https://github.com/rigelk) * [gegeweb](https://github.com/gegeweb) - * [Jorropo](https://github.com/Jorropo) * [Nutomic](https://github.com/Nutomic) + * [Jorropo](https://github.com/Jorropo) * [BO41](https://github.com/BO41) * [bnjbvr](https://github.com/bnjbvr) * [DavidLibeau](https://github.com/DavidLibeau) * [jankeromnes](https://github.com/jankeromnes) + * [joshmorel](https://github.com/joshmorel) * [JohnXLivingston](https://github.com/JohnXLivingston) * [kaiyou](https://github.com/kaiyou) * [DimitriGilbert](https://github.com/DimitriGilbert) * [floSoX](https://github.com/floSoX) * [Green-Star](https://github.com/Green-Star) - * [joshmorel](https://github.com/joshmorel) * [rezonant](https://github.com/rezonant) * [ldidry](https://github.com/ldidry) + * [McFlat](https://github.com/McFlat) * [okhin](https://github.com/okhin) * [daftaupe](https://github.com/daftaupe) + * [thomaskuntzz](https://github.com/thomaskuntzz) + * [LecygneNoir](https://github.com/LecygneNoir) * [fflorent](https://github.com/fflorent) * [dedesite](https://github.com/dedesite) * [Nautigsam](https://github.com/Nautigsam) + * [tcitworld](https://github.com/tcitworld) * [am97](https://github.com/am97) * [dadall](https://github.com/dadall) * [jonathanraes](https://github.com/jonathanraes) - * [LecygneNoir](https://github.com/LecygneNoir) * [anoadragon453](https://github.com/anoadragon453) - * [McFlat](https://github.com/McFlat) * [rhaamo](https://github.com/rhaamo) * [mrflos](https://github.com/mrflos) * [jocelynj](https://github.com/jocelynj) @@ -36,7 +38,6 @@ * [scanlime](https://github.com/scanlime) * [flyingrub](https://github.com/flyingrub) * [SerCom-KC](https://github.com/SerCom-KC) - * [tcitworld](https://github.com/tcitworld) * [valvin1](https://github.com/valvin1) * [taziden](https://github.com/taziden) * [sticmac](https://github.com/sticmac) @@ -48,6 +49,7 @@ * [xyproto](https://github.com/xyproto) * [Anton-Latukha](https://github.com/Anton-Latukha) * [noplanman](https://github.com/noplanman) + * [auberanger](https://github.com/auberanger) * [austinheap](https://github.com/austinheap) * [benabbottnz](https://github.com/benabbottnz) * [ewft](https://github.com/ewft) @@ -59,14 +61,18 @@ * [ebrehault](https://github.com/ebrehault) * [DatBewar](https://github.com/DatBewar) * [ReK2Fernandez](https://github.com/ReK2Fernandez) + * [Yetangitu](https://github.com/Yetangitu) * [grizio](https://github.com/grizio) * [Glandos](https://github.com/Glandos) * [lanodan](https://github.com/lanodan) + * [jagannathBhat](https://github.com/jagannathBhat) * [jlebras](https://github.com/jlebras) * [alcalyn](https://github.com/alcalyn) * [mkody](https://github.com/mkody) + * [pichouk](https://github.com/pichouk) * [zapashcanon](https://github.com/zapashcanon) * [mart-e](https://github.com/mart-e) + * [0mp](https://github.com/0mp) * [1000i100](https://github.com/1000i100) * [zeograd](https://github.com/zeograd) * [PhieF](https://github.com/PhieF) @@ -95,11 +101,13 @@ # Translations + * [abdhessuk](https://trad.framasoft.org/zanata/profile/view/abdhessuk) * [abidin24](https://trad.framasoft.org/zanata/profile/view/abidin24) * [aditoo](https://trad.framasoft.org/zanata/profile/view/aditoo) * [alice](https://trad.framasoft.org/zanata/profile/view/alice) * [anastasia](https://trad.framasoft.org/zanata/profile/view/anastasia) * [autom](https://trad.framasoft.org/zanata/profile/view/autom) + * [balaji](https://trad.framasoft.org/zanata/profile/view/balaji) * [bristow](https://trad.framasoft.org/zanata/profile/view/bristow) * [butterflyoffire](https://trad.framasoft.org/zanata/profile/view/butterflyoffire) * [chocobozzz](https://trad.framasoft.org/zanata/profile/view/chocobozzz) @@ -110,6 +118,7 @@ * [ehsaan](https://trad.framasoft.org/zanata/profile/view/ehsaan) * [esoforte](https://trad.framasoft.org/zanata/profile/view/esoforte) * [fkohrt](https://trad.framasoft.org/zanata/profile/view/fkohrt) + * [giqtaqisi](https://trad.framasoft.org/zanata/profile/view/giqtaqisi) * [goofy](https://trad.framasoft.org/zanata/profile/view/goofy) * [gorkaazk](https://trad.framasoft.org/zanata/profile/view/gorkaazk) * [gwendald](https://trad.framasoft.org/zanata/profile/view/gwendald) @@ -120,8 +129,10 @@ * [kedemferre](https://trad.framasoft.org/zanata/profile/view/kedemferre) * [kousha](https://trad.framasoft.org/zanata/profile/view/kousha) * [krkk](https://trad.framasoft.org/zanata/profile/view/krkk) + * [landrok](https://trad.framasoft.org/zanata/profile/view/landrok) * [m4sk1n](https://trad.framasoft.org/zanata/profile/view/m4sk1n) * [matograine](https://trad.framasoft.org/zanata/profile/view/matograine) + * [medow](https://trad.framasoft.org/zanata/profile/view/medow) * [mhu](https://trad.framasoft.org/zanata/profile/view/mhu) * [midgard](https://trad.framasoft.org/zanata/profile/view/midgard) * [nbrucy](https://trad.framasoft.org/zanata/profile/view/nbrucy) @@ -138,6 +149,7 @@ * [s8321414](https://trad.framasoft.org/zanata/profile/view/s8321414) * [sato_ss](https://trad.framasoft.org/zanata/profile/view/sato_ss) * [sercom_kc](https://trad.framasoft.org/zanata/profile/view/sercom_kc) + * [severo](https://trad.framasoft.org/zanata/profile/view/severo) * [silkevicious](https://trad.framasoft.org/zanata/profile/view/silkevicious) * [sosha](https://trad.framasoft.org/zanata/profile/view/sosha) * [spla](https://trad.framasoft.org/zanata/profile/view/spla) @@ -148,7 +160,9 @@ * [thibaultmartin](https://trad.framasoft.org/zanata/profile/view/thibaultmartin) * [tirifto](https://trad.framasoft.org/zanata/profile/view/tirifto) * [tuxayo](https://trad.framasoft.org/zanata/profile/view/tuxayo) + * [unextro](https://trad.framasoft.org/zanata/profile/view/unextro) * [unzarida](https://trad.framasoft.org/zanata/profile/view/unzarida) + * [vincent](https://trad.framasoft.org/zanata/profile/view/vincent) * [wanhua](https://trad.framasoft.org/zanata/profile/view/wanhua) * [xinayder](https://trad.framasoft.org/zanata/profile/view/xinayder) * [xosem](https://trad.framasoft.org/zanata/profile/view/xosem) -- cgit v1.2.3 From 6b01ed7b0cd7b170b38ceedf3f49aa86f296f2ab Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 11:34:02 +0100 Subject: Update translations --- client/src/locale/source/angular_en_US.xml | 204 ++-- client/src/locale/target/angular_ar_001.xml | 535 ++++++++- client/src/locale/target/angular_ca_ES.xml | 107 +- client/src/locale/target/angular_cs_CZ.xml | 575 ++++++++-- client/src/locale/target/angular_de_DE.xml | 354 +++--- client/src/locale/target/angular_eo.xml | 121 +- client/src/locale/target/angular_es_ES.xml | 713 ++++++++++-- client/src/locale/target/angular_eu_ES.xml | 732 ++++++++++-- client/src/locale/target/angular_fa_IR.xml | 21 +- client/src/locale/target/angular_fr_FR.xml | 610 ++++++++-- client/src/locale/target/angular_gl_ES.xml | 72 +- client/src/locale/target/angular_it_IT.xml | 450 ++++++-- client/src/locale/target/angular_ja_JP.xml | 203 +++- client/src/locale/target/angular_jbo.xml | 1347 +++++++++++++++++++++++ client/src/locale/target/angular_nl_NL.xml | 50 +- client/src/locale/target/angular_oc.xml | 617 +++++++++-- client/src/locale/target/angular_pl_PL.xml | 123 +-- client/src/locale/target/angular_pt_BR.xml | 165 +-- client/src/locale/target/angular_ru_RU.xml | 101 +- client/src/locale/target/angular_sv_SE.xml | 574 ++++++++-- client/src/locale/target/angular_ta.xml | 514 +++++++++ client/src/locale/target/angular_zh_Hans_CN.xml | 595 ++++++++-- client/src/locale/target/angular_zh_Hant_TW.xml | 599 ++++++++-- client/src/locale/target/player_ar_001.xml | 26 +- client/src/locale/target/player_oc.json | 2 +- client/src/locale/target/server_ar_001.xml | 20 +- client/src/locale/target/server_cs_CZ.json | 2 +- client/src/locale/target/server_de_DE.json | 2 +- client/src/locale/target/server_eo.json | 2 +- client/src/locale/target/server_es_ES.json | 2 +- client/src/locale/target/server_eu_ES.json | 2 +- client/src/locale/target/server_fr_FR.json | 2 +- client/src/locale/target/server_oc.json | 2 +- client/src/locale/target/server_sv_SE.json | 2 +- client/src/locale/target/server_zh_Hans_CN.json | 2 +- client/src/locale/target/server_zh_Hant_TW.json | 2 +- 36 files changed, 7725 insertions(+), 1725 deletions(-) create mode 100644 client/src/locale/target/angular_jbo.xml create mode 100644 client/src/locale/target/angular_ta.xml diff --git a/client/src/locale/source/angular_en_US.xml b/client/src/locale/source/angular_en_US.xml index e3c4e66a3..7ebdd8e07 100644 --- a/client/src/locale/source/angular_en_US.xml +++ b/client/src/locale/source/angular_en_US.xml @@ -230,13 +230,13 @@ Unlisted app/shared/video/video-miniature.component.html - 12 + 10 Private app/shared/video/video-miniature.component.html - 13 + 11 <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views @@ -504,11 +504,11 @@ app/signup/signup.component.html - 41 + 42 app/signup/signup.component.html - 43 + 44 app/+admin/users/user-edit/user-edit.component.html @@ -552,11 +552,11 @@ app/signup/signup.component.html - 30 + 31 app/signup/signup.component.html - 32 + 33 app/+admin/users/user-edit/user-edit.component.html @@ -628,7 +628,7 @@ Username app/signup/signup.component.html - 12 + 13 app/+admin/users/user-edit/user-edit.component.html @@ -642,19 +642,19 @@ Example: jane_doe app/signup/signup.component.html - 16 + 17 I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance app/signup/signup.component.html - 54 + 55 Signup app/signup/signup.component.html - 62 + 63 app/+about/about-instance/about-instance.component.html @@ -668,7 +668,7 @@ Features found on this instance app/signup/signup.component.html - 66 + 67 <x id="INTERPOLATION" equiv-text="{{ pagination.totalItems | myNumberFormatter }}"/> results @@ -1533,25 +1533,25 @@ Signup enabled app/+admin/config/edit-custom-config/edit-custom-config.component.html - 92 + 93 Signup requires email verification app/+admin/config/edit-custom-config/edit-custom-config.component.html - 97 + 100 Signup limit app/+admin/config/edit-custom-config/edit-custom-config.component.html - 101 + 105 Import app/+admin/config/edit-custom-config/edit-custom-config.component.html - 111 + 115 app/videos/+video-edit/video-add-components/video-import-url.component.html @@ -1565,43 +1565,43 @@ Video import with HTTP URL (i.e. YouTube) enabled app/+admin/config/edit-custom-config/edit-custom-config.component.html - 115 + 120 Video import with a torrent file or a magnet URI enabled app/+admin/config/edit-custom-config/edit-custom-config.component.html - 120 + 127 Administrator app/+admin/config/edit-custom-config/edit-custom-config.component.html - 123 + 131 Admin email app/+admin/config/edit-custom-config/edit-custom-config.component.html - 126 + 134 Users app/+admin/config/edit-custom-config/edit-custom-config.component.html - 136 + 144 User default video quota app/+admin/config/edit-custom-config/edit-custom-config.component.html - 139 + 147 User default daily upload limit app/+admin/config/edit-custom-config/edit-custom-config.component.html - 153 + 161 Basic configuration @@ -1613,69 +1613,69 @@ Twitter app/+admin/config/edit-custom-config/edit-custom-config.component.html - 170 + 178 Your Twitter username app/+admin/config/edit-custom-config/edit-custom-config.component.html - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. app/+admin/config/edit-custom-config/edit-custom-config.component.html - 176 + 184 Instance whitelisted by Twitter app/+admin/config/edit-custom-config/edit-custom-config.component.html - 189 + 198 - + If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. + If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> + Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. app/+admin/config/edit-custom-config/edit-custom-config.component.html - 190 + 199 Services app/+admin/config/edit-custom-config/edit-custom-config.component.html - 168 + 176 Transcoding app/+admin/config/edit-custom-config/edit-custom-config.component.html - 200 + 210 Transcoding enabled app/+admin/config/edit-custom-config/edit-custom-config.component.html - 204 + 215 If you disable transcoding, many videos from your users will not work! app/+admin/config/edit-custom-config/edit-custom-config.component.html - 205 + 216 Transcoding threads app/+admin/config/edit-custom-config/edit-custom-config.component.html - 211 + 223 Resolution <x id="INTERPOLATION" equiv-text="{{resolution}}"/> enabled app/+admin/config/edit-custom-config/edit-custom-config.component.html - 227 + 239 @@ -1685,43 +1685,43 @@ app/+admin/config/edit-custom-config/edit-custom-config.component.html - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. app/+admin/config/edit-custom-config/edit-custom-config.component.html - 238 + 249 Previews cache size app/+admin/config/edit-custom-config/edit-custom-config.component.html - 243 + 254 Video captions cache size app/+admin/config/edit-custom-config/edit-custom-config.component.html - 254 + 265 Customizations app/+admin/config/edit-custom-config/edit-custom-config.component.html - 264 + 275 JavaScript app/+admin/config/edit-custom-config/edit-custom-config.component.html - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> app/+admin/config/edit-custom-config/edit-custom-config.component.html - 270 + 281 @@ -1741,25 +1741,25 @@ app/+admin/config/edit-custom-config/edit-custom-config.component.html - 286 + 297 Advanced configuration app/+admin/config/edit-custom-config/edit-custom-config.component.html - 197 + 207 Update configuration app/+admin/config/edit-custom-config/edit-custom-config.component.html - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. app/+admin/config/edit-custom-config/edit-custom-config.component.html - 315 + 326 @@ -2098,11 +2098,23 @@ app/videos/+video-watch/video-watch.component.html 133 + + User's email must be verified to login + + app/+admin/users/user-list/user-list.component.html + 70 + + + User's email is verified / User can login without email verification + + app/+admin/users/user-list/user-list.component.html + 74 + Ban reason: app/+admin/users/user-list/user-list.component.html - 82 + 92 Moderation comment @@ -2638,19 +2650,19 @@ When you will upload a video in this channel, the video support field will be au Use WebTorrent to exchange parts of the video with others app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html - 20 + 21 Automatically plays video app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html - 25 + 28 Save app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html - 28 + 32 Update my profile @@ -2806,23 +2818,37 @@ When you will upload a video in this channel, the video support field will be au app/videos/+video-watch/video-watch.component.html 159 + + Sorry, but something went wrong + + app/videos/+video-edit/video-add-components/video-import-url.component.html + 42 + + + app/videos/+video-edit/video-add-components/video-upload.component.html + 41 + + + app/videos/+video-edit/video-add-components/video-import-torrent.component.html + 49 + Congratulations, the video behind <x id="INTERPOLATION" equiv-text="{{ targetUrl }}"/> will be imported! You can already add information about this video. app/videos/+video-edit/video-add-components/video-import-url.component.html - 40 + 46 Update app/videos/+video-edit/video-add-components/video-import-url.component.html - 57 + 63 app/videos/+video-edit/video-add-components/video-import-torrent.component.html - 65 + 70 app/videos/+video-edit/video-update.component.html @@ -2848,13 +2874,13 @@ When you will upload a video in this channel, the video support field will be au Publish will be available when upload is finished app/videos/+video-edit/video-add-components/video-upload.component.html - 48 + 53 Publish app/videos/+video-edit/video-add-components/video-upload.component.html - 55 + 60 Select the torrent to import @@ -2886,7 +2912,7 @@ When you will upload a video in this channel, the video support field will be au app/videos/+video-edit/video-add-components/video-import-torrent.component.html - 48 + 53 Import <x id="INTERPOLATION" equiv-text="{{ videoName }}"/> @@ -3639,6 +3665,10 @@ When you will upload a video in this channel, the video support field will be au src/app/+admin/users/user-list/user-list.component.ts 1 + + src/app/+admin/users/user-list/user-list.component.ts + 1 + src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts 1 @@ -3784,7 +3814,7 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/shared/user-subscription/subscribe-button.component.ts + src/app/shared/moderation/user-moderation-dropdown.component.ts 1 @@ -3796,7 +3826,7 @@ When you will upload a video in this channel, the video support field will be au 1 - src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts + src/app/shared/user-subscription/subscribe-button.component.ts 1 @@ -3807,14 +3837,6 @@ When you will upload a video in this channel, the video support field will be au src/app/videos/+video-edit/video-add-components/video-import-url.component.ts 1 - - src/app/videos/+video-edit/video-add-components/video-import-url.component.ts - 1 - - - src/app/videos/+video-edit/video-add-components/video-upload.component.ts - 1 - src/app/videos/+video-edit/video-add-components/video-upload.component.ts 1 @@ -3984,6 +4006,10 @@ When you will upload a video in this channel, the video support field will be au src/app/+admin/users/user-list/user-list.component.ts 1 + + src/app/+admin/users/user-list/user-list.component.ts + 1 + src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts 1 @@ -4100,6 +4126,10 @@ When you will upload a video in this channel, the video support field will be au src/app/shared/moderation/user-moderation-dropdown.component.ts 1 + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + src/app/signup/signup.component.ts 1 @@ -4455,6 +4485,17 @@ When you will upload a video in this channel, the video support field will be au 1 + + Set Email as Verified + + src/app/+admin/users/user-list/user-list.component.ts + 1 + + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + You cannot ban root. @@ -4505,6 +4546,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + <x id="INTERPOLATION" equiv-text="{{num}}"/> users email set as verified. + + src/app/+admin/users/user-list/user-list.component.ts + 1 + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> unmuted. @@ -6132,6 +6180,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + User <x id="INTERPOLATION" equiv-text="{{username}}"/> email set as verified + + src/app/shared/moderation/user-moderation-dropdown.component.ts + 1 + + Account <x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/> muted. @@ -6314,22 +6369,15 @@ When you will upload a video in this channel, the video support field will be au 1 - - Welcome - - src/app/signup/signup.component.ts - 1 - - - - Please check your email to verify your account and complete signup. + + Welcome! Now please check your emails to verify your account and complete signup. src/app/signup/signup.component.ts 1 - - Registration for <x id="INTERPOLATION" equiv-text="{{username}}"/> complete. + + You are now logged in as <x id="INTERPOLATION" equiv-text="{{username}}"/>! src/app/signup/signup.component.ts 1 diff --git a/client/src/locale/target/angular_ar_001.xml b/client/src/locale/target/angular_ar_001.xml index 1154e07c7..386d190ff 100644 --- a/client/src/locale/target/angular_ar_001.xml +++ b/client/src/locale/target/angular_ar_001.xml @@ -38,6 +38,27 @@ 27 + + Select month + أختر الشهر + + 7 + + + + Select year + أختر السنة + + 16 + + + + «« + »» + + 7 + + First الأول @@ -45,6 +66,13 @@ 5 + + « + » + + 15 + + Previous السابق @@ -52,6 +80,13 @@ 13 + + » + « + + 29 + + Next التالي @@ -59,6 +94,13 @@ 27 + + »» + «« + + 36 + + Last الأخير @@ -66,6 +108,13 @@ 34 + + % + % + + 6 + + Increment hours زيادة الساعات @@ -73,6 +122,13 @@ 9 + + HH + ساعة + + 12 + + Hours ساعات @@ -94,6 +150,13 @@ 28 + + MM + دقيقة + + 31 + + Minutes دقائق @@ -115,6 +178,13 @@ 47 + + SS + ثانية + + 50 + + Seconds ثواني @@ -150,6 +220,27 @@ 10 + + (extensions: , max size: ) + (extensions: , max size: ) + + 11 + + + + Unlisted + غير مفهرس + + 10 + + + + Private + خاص + + 11 + + - views - مشاهدة @@ -192,6 +283,66 @@ 19 + + + + Subscribe + + + + + + + + Subscribe + + + + + + + 5 + + + + + Unsubscribe + + + إلغاء الإشتراك + + + 18 + + + + Using an ActivityPub account + مستخدماً حساب ActivityPub + + 36 + + + + Subscribe with an account on + إشتراك بإستخدام حسابك علي + + 39 + + + + Subscribe with your local account + إشترك مستخدماً حسابك المحلي + + 40 + + + + Subscribe with a Mastodon account: + إشترك مستخدما حسابك علي Mastodon + + 43 + + Video quota حصة الفيديو @@ -213,6 +364,13 @@ 11 + + Ban this user + حظر هذا المستخدم + + 25 + + Login @@ -367,14 +525,7 @@ Example: jane_doe مثال: jane_doe - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - قرأت و وافقت على<a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>شروط</a> مثيل الخادوم - - 54 + 17 @@ -388,7 +539,7 @@ Features found on this instance مميزات مثيل الخادوم - 66 + 67 @@ -828,6 +979,34 @@ 94 + + Banned + تم حظره + + 12 + + + + Muted + تم كتمه + + 13 + + + + Muted by your instance + تم كتمه عبر مثيل خادومك + + 14 + + + + Instance muted + مثيل الخادوم مكتوم + + 15 + + subscribers مشترك @@ -930,21 +1109,21 @@ Signup enabled التسجيل مُفعل - 92 + 93 Signup requires email verification يتطلب التسجيل رسالة تأكيد - 97 + 100 Signup limit حد التسجيل - 101 + 105 @@ -958,35 +1137,35 @@ Administrator المدير - 123 + 131 Admin email البريد الإلكتروني للمدير - 126 + 134 Users المستخدِمون - 136 + 144 User default video quota حصة الفيديو الافتراضية للمستخدم - 139 + 147 User default daily upload limit حد الرفع الإفتراضي للمستخدِم - 153 + 161 @@ -1000,42 +1179,42 @@ Twitter تويتر - 170 + 178 Your Twitter username اسم المستخدِم الخاص بك على تويتر - 173 + 181 Services الخدمات - 168 + 176 Customizations التخصيصات - 264 + 275 JavaScript الجافا سكريبت - 267 + 278 Advanced configuration الإعدادات المتقدمة - 197 + 207 @@ -1065,6 +1244,15 @@ 11 + + + Jobs + + الإجراءات + + 15 + + Configuration @@ -1074,6 +1262,13 @@ 19 + + Filter... + تصفية... + + 27 + + Host المضيف @@ -1088,6 +1283,20 @@ 10 + + Accepted + تم القبول + + 32 + + + + Pending + معلق + + 33 + + Manage follows إدارة المتابِعون @@ -1116,6 +1325,13 @@ 9 + + Jobs list + قائمة الإجراءات + + 2 + + Type النوع @@ -1172,6 +1388,13 @@ 133 + + Ban reason: + سبب الحظر: + + 92 + + Moderation comment تعليق الإشراف @@ -1263,6 +1486,20 @@ 7 + + Account + الحساب + + 12 + + + + Unmute + إلغاء الكتم + + 23 + + My settings إعداداتي @@ -1305,6 +1542,20 @@ 18 + + Misc + أخرى + + 24 + + + + Muted instances + مثيلات الخوادم المكتومة + + 2 + + Video quota: تقم الفيديو: @@ -1421,6 +1672,13 @@ 8 + + Select the target channel + اختيار القناة الهدف + + 9 + + Status الحالة @@ -1449,6 +1707,13 @@ 30 + + Current password + الكلمة السرية الحالية + + 7 + + New password الكلمة السرية الجديدة @@ -1467,14 +1732,14 @@ Automatically plays video التشغيل التلقائي للفيديو - 25 + 28 Save حفظ - 28 + 32 @@ -1540,11 +1805,25 @@ 159 + + Update + تحديث + + 92 + + + + Scheduled + مبرمجة + + 25 + + Publish أنشر - 55 + 60 @@ -1554,6 +1833,13 @@ 6 + + Or + أو + + 11 + + Upload a file إرسال ملف @@ -1568,6 +1854,13 @@ 17 + + Import with torrent + استيراد عبر التورنت + + 24 + + Title العنوان @@ -1582,6 +1875,20 @@ 191 + + + Tag + + وسم + + 21 + + + + Enter a new tag + أدخل وسمًا جديدا + + 21 + + Enable video comments السماح بالتعليق على الفيديوهات @@ -1691,6 +1998,13 @@ 74 + + QR-Code + رمز الاستجابة السريعة + + 29 + + Close إغلاق @@ -1796,6 +2110,29 @@ 152 + + More information + المزيد من التفاصيل + + 212 + + + + Get more information + احصل على معلومات أكثر + + 212 + + + + + OK + + نعم + + 215 + + Other videos @@ -1846,6 +2183,13 @@ 20 + + login to comment + قم بتسجيل الدخول للتعليق + + 35 + + Reply الرد @@ -1874,6 +2218,41 @@ 1 + + 240p + 240p + + 1 + + + + 360p + 360p + + 1 + + + + 480p + 480p + + 1 + + + + 720p + 720p + + 1 + + + + 1080p + 1080p + + 1 + + Success تم بنجاح @@ -1909,6 +2288,13 @@ 1 + + Delete this report + حذف هذا التقرير + + 1 + + Do you really want to remove this video from the blacklist? It will be available again in the videos list. هل تريد إزالت هذا الفيديو من قائمة الحجب؟ سيكون متوفرا في قائمة الفيديوهات مجددا. @@ -2007,6 +2393,13 @@ 1 + + This name already exists on this instance. + هذا الإسم موجود على مثيل الخادوم هذا. + + 1 + + Create إنشاء @@ -2042,6 +2435,13 @@ 1 + + Incorrect username or password. + اسم المستخدم أو كلمة المرور خاطئة. + + 1 + + You account is blocked. إنّ حسابك مُقفَل. @@ -2168,6 +2568,34 @@ 1 + + Name is required. + الاسم مطلوب. + + 1 + + + + Comment is required. + التعليق مطلوب. + + 1 + + + + Video name is required. + اسم الفيديو مطلوب. + + 1 + + + + Video privacy is required. + خصوصية لافيديو مطلوبة. + + 1 + + This file is too large. حجم هذا الملف كبير جدًّا. @@ -2525,6 +2953,34 @@ 1 + + Mute this account + أكتم هذا الحساب + + 1 + + + + Unmute this account + إلغاء الكتم عن هذا الحساب + + 1 + + + + Mute the instance + كتم مثيل الخادوم + + 1 + + + + Unmute the instance + الغاء الكتم عن مثيل الخادوم + + 1 + + Subscribed مشترك @@ -2532,9 +2988,16 @@ 1 - - Welcome - مرحبًا + + Moderator + مشرف + + 1 + + + + Info + معلومات 1 @@ -2567,6 +3030,20 @@ 1 + + Copied + تم نسخه + + 1 + + + + Like the video + الإعجاب بالفيديو + + 1 + + Do you really want to delete this video? متأكد أنك تريد حذف هذه الفيديو؟ diff --git a/client/src/locale/target/angular_ca_ES.xml b/client/src/locale/target/angular_ca_ES.xml index 3e0b01658..7444b71b0 100644 --- a/client/src/locale/target/angular_ca_ES.xml +++ b/client/src/locale/target/angular_ca_ES.xml @@ -211,13 +211,6 @@ 8 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - He llegit i estic d'acord amb <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> d'aquesta instància - - 54 - - Signup Registra't @@ -696,19 +689,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube només està en fase beta i vol oferir les millors contramesures possibles en el moment de llançar el estable. -     Mentrestant, volem provar diferents idees relacionades amb aquest tema: - - - 85 - - Set a limit to the number of peers sent by the tracker Estableix un límit al nombre de punts enviats pel rastrejador @@ -867,42 +847,42 @@ Signup enabled Registre activat - 92 + 93 Signup limit Limit de registres - 101 + 105 Administrator Administrador - 123 + 131 Admin email Correu del Administrador - 126 + 134 Users Usuaris - 136 + 144 User default video quota Quota de vídeo per defecte de l'usuari - 139 + 147 @@ -916,112 +896,112 @@ Twitter Twitter - 170 + 178 Your Twitter username El teu nom d'usuari de Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indica el compte de Twitter del lloc web o plataforma en què es va publicar el contingut. - 176 + 184 Instance whitelisted by Twitter Instància a la llista blanca de Twitter - 189 + 198 Services Serveis - 168 + 176 Transcoding Transcodificació - 200 + 210 Transcoding enabled Transcodificació activada - 204 + 215 If you disable transcoding, many videos from your users will not work! Si desactives la transcodificació, molts vídeos dels teus usuaris no funcionaran. - 205 + 216 Transcoding threads Subprocessos per la transcodificació - 211 + 223 Previews cache size Memòria cau per a visualitzacions prèvies - 243 + 254 Customizations Personalitzacions - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Escriu directament el codi JavaScript.<br />Exemple: <pre>console.log('la meva instància és sorprenent');</pre> - 270 + 281 Advanced configuration Configuració avançada - 197 + 207 Update configuration Actualitza la configuració - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Sembla que la configuració no és vàlida. Cerca possibles errors a les diferents pestanyes. - 315 + 326 @@ -1417,14 +1397,14 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir Automatically plays video Reprodueix vídeo automàticament - 25 + 28 Save Desa - 28 + 32 @@ -1505,14 +1485,14 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir Publish will be available when upload is finished La publicació estarà disponible quan finalitzi la càrrega - 48 + 53 Publish Publica - 55 + 60 @@ -2409,13 +2389,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - Description cannot be more than 250 characters long. - La descripció no pot tenir més de 250 caràcters. - - 1 - - Report reason is required. Cal un motiu del informe. @@ -2437,13 +2410,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - Description cannot be more than 500 characters long. - La descripció no pot tenir més de 500 caràcters. - - 1 - - Support text must be at least 3 characters long. El text de suport ha de tenir un mínim de 3 caràcters. @@ -2451,13 +2417,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - Support text cannot be more than 500 characters long. - El text de suport no pot tenir més de 500 caràcters. - - 1 - - Comment is required. Es requereix comentari. @@ -2549,13 +2508,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - Video support cannot be more than 500 characters long. - La compatibilitat de vídeo no pot tenir més de 500 caràcters. - - 1 - - A date is required to schedule video update. Es requereix una data per programar l'actualització de vídeo. @@ -3088,13 +3040,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplir 1 - - Registration for complete. - El registre per és complet. - - 1 - - But associated data (tags, description...) will be lost, are you sure you want to leave this page? Però es perdran les dades associades (etiquetes, descripció ...), estàs segur que vols deixar aquesta pàgina? diff --git a/client/src/locale/target/angular_cs_CZ.xml b/client/src/locale/target/angular_cs_CZ.xml index 81644aa52..59af08639 100644 --- a/client/src/locale/target/angular_cs_CZ.xml +++ b/client/src/locale/target/angular_cs_CZ.xml @@ -38,6 +38,20 @@ 27 + + Select month + Zvolte měsíc + + 7 + + + + Select year + Zvolte rok + + 16 + + «« «« @@ -101,6 +115,20 @@ 6 + + Increment hours + Zvýšit hodiny + + 9 + + + + HH + HH + + 12 + + Hours Hodiny @@ -108,6 +136,27 @@ 14 + + Decrement hours + Snížit hodiny + + 19 + + + + Increment minutes + Zvýšit minuty + + 28 + + + + MM + MM + + 31 + + Minutes Minuty @@ -115,6 +164,27 @@ 33 + + Decrement minutes + Snížit minuty + + 38 + + + + Increment seconds + Zvýšit sekundy + + 47 + + + + SS + SS + + 50 + + Seconds Sekundy @@ -122,6 +192,27 @@ 52 + + Decrement seconds + Snížit sekundy + + 57 + + + + PM + PM + + 65 + + + + AM + AM + + 66 + + Cancel Zrušit @@ -136,6 +227,20 @@ 11 + + Unlisted + Neveřejné + + 10 + + + + Private + Soukromé + + 11 + + - views - zhlédnutí @@ -178,6 +283,85 @@ 19 + + + + Subscribe + + + + + + + + Odebírat + + + + + + + 5 + + + + + Unsubscribe + + +Přestat odebírat + + 18 + + + + Using an ActivityPub account + Pomocí účtu ActivityPub + + 36 + + + + Subscribe with an account on + Odebírat účtem na + + 39 + + + + Subscribe with your local account + Odebírat přes místní účet + + 40 + + + + Subscribe with a Mastodon account: + Odebírat přes Mastodon účet + + 43 + + + + Subscribe via RSS + Odebírat RSS + + 49 + + + + + Remote subscribe + Remote interact + + + Vzdálený odběr + Vzdálená interakce + + + 10 + + Video quota Limit na videa @@ -196,6 +380,13 @@ 14 + + Ban + Zablokovat + + 3 + + Reason... Důvod... @@ -203,6 +394,23 @@ 11 + + + A banned user will no longer be able to login. + + +Blokovaný uživatel se už nebude moci přihlásit. + + 17 + + + + Ban this user + Zablokovat tohoto uživatele + + 25 + + Login @@ -214,6 +422,13 @@ 2 + + Request new verification email. + Vyžádat nový ověřovací e-mail. + + 12 + + User Uživatel @@ -356,6 +571,20 @@ 8 + + Example: jane_doe + Příklad: jana_novakova + + 17 + + + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + Je mi alespoň 16let a souhlasím s <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Podmínkami</a> této instance + + 55 + + Signup Registrovat @@ -363,6 +592,69 @@ 88 + + Features found on this instance + Funkce podporované touto instancí + + 67 + + + + results + výsledků + + 5 + + + + + for + + + pro + + + 6 + + + + + Filters + + + + Filtry + + + + 16 + + + + + No results found + + + Nebyly nalezeny žádné výsledky + + + 28 + + + + subscribers + odběratelů + + 44 + + + + - views + - zhlédnutí + + 55 + + Change the language Změnit jazyk @@ -370,6 +662,50 @@ 88 + + + My public profile + + + Můj veřejný profil + + + 18 + + + + + My account + + + Můj účet + + + 22 + + + + + My videos + + + Moje videa + + + 26 + + + + + Log out + + + Odhlásit + + + 30 + + Create an account Vytvořit účet @@ -384,6 +720,20 @@ 24 + + Subscriptions + Odběry + + 47 + + + + Overview + Přehled + + 52 + + Trending Trendy @@ -405,6 +755,13 @@ 67 + + More + Další + + 72 + + Administration Administrace @@ -419,6 +776,13 @@ 25 + + Toggle dark interface + Přepnout tmavé rozhraní + + 94 + + Search... Hledat... @@ -433,6 +797,34 @@ 9 + + Sort + Seřadit + + 6 + + + + Published date + Datum publikace + + 15 + + + + Yes + Ano + + 37 + + + + No + Ne + + 42 + + Category Kategorie @@ -454,6 +846,27 @@ 182 + + All of these tags + Všechny tyto štítky + + 82 + + + + One of these tags + Jeden z těchto štítků + + 87 + + + + Filter + Filtr + + 94 + + No results. Žádné výsledky. @@ -461,6 +874,47 @@ 17 + + + + + + + + + 6 + + + + + # + + + # + + + 14 + + + + + + + + + + + + + + + + + + + 22 + + Instance Instance @@ -593,8 +1047,8 @@ This implies that your IP address is stored in the instance's BitTorrent tracker as long as you download or watch the video. - PeerTube používá BitTorrent protokol pro sdílení pásma mezi uživateli. - To znamená, že vaše IP adresa je uložena v BitTorrent trackeru služby po dobu stahování nebo sledování videa. + PeerTube používá protokol BitTorrent pro sdílení přenosu mezi uživateli. + To znamená, že vaše IP adresa je uložena v trackeru BitTorrent této instance po dobu stahování nebo sledování videa. 20 @@ -624,8 +1078,8 @@ If we want to spy all PeerTube's videos, we have to send as many requests as there are videos (so potentially a lot) - HTTP požadavek musí být zaslán na každý tracker pro každé špehované video. - Pokud bychom chtěli špehovat všechna videa na PeerTube, museli bychom poslat tolik požadavků, kolik je zde uloženo video (tedy potenciálně hodně) + na každý tracker musí být zaslán HTTP požadavek za každé špehované video. + Pokud bychom chtěli špehovat všechna videa na PeerTube, museli bychom poslat tolik požadavků, kolik je na PeerTube videí (tedy potenciálně hodně) 33 @@ -637,7 +1091,7 @@ Pro každý odeslaný požadavek vrátí tracker limitovaný počet náhodných peerů. - Pro příklad, pokud je zde 1000 peerů ve skupině a tracker pošle pouze 20 peerů pro každý požadavek, muselo být odesláno alespoň 50 požadavků na získání všech peerů ve skupině + Například, pokud je zde 1000 peerů ve skupině a tracker pošle pouze 20 peerů pro každý požadavek, muselo být odesláno alespoň 50 požadavků na získání všech peerů ve skupině 38 @@ -685,6 +1139,13 @@ 62 + + How does PeerTube compare with YouTube? + Jaký e PeerTube v porovnání s YouTube? + + 67 + + The threats to privacy in YouTube are different from PeerTube's. @@ -693,8 +1154,8 @@ Ohrožení soukromí je na YouTube odlišné od toho na PeerTube. - V případě YouTube, služba o vás sbírá obrovské mnžoství osobních informací (nejen vaší IP adresu), aby je poté analyzovala a sledovala vás. - Kromě toho, YouTube je vlastněn Google/Alphabet, společností, která vás sleduje napříč různými webslužbami (skrze AdSense nebo Google Analytics). + V případě YouTube, tato služba o vás sbírá obrovské mnžoství osobních informací (nejen vaší IP adresu), aby je poté analyzovala a sledovala vás. + Kromě toho, YouTube je vlastněn Google/Alphabet, společností, která vás sleduje napříč různými webovými stránkami (přes AdSense nebo Google Analytics). 69 @@ -729,19 +1190,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube je pouze v beta verzi a snaží se přinést pouze ta nejlepší možná opatření v době vydání stabilní verze. - Mezitím, chceme otestovat různé návrhy řešení tohoto problému: - - - 85 - - Set a limit to the number of peers sent by the tracker Nastavit limit počtu peerů odeslaných trackerem @@ -900,42 +1348,42 @@ Signup enabled Povolit registrace - 92 + 93 Signup limit Limit registrací - 101 + 105 Administrator Administrátor - 123 + 131 Admin email Email administrátora - 126 + 134 Users Uživatelé - 136 + 144 User default video quota Výchozí limit na uživatele - 139 + 147 @@ -949,112 +1397,112 @@ Twitter Twitter - 170 + 178 Your Twitter username Váš účet na Twitteru - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Uveďte Twitter účet stránky nebo služby, na které byl obsah publikován. - 176 + 184 Instance whitelisted by Twitter Twitter povolil tuto instanci - 189 + 198 Services Služby - 168 + 176 Transcoding Překódování - 200 + 210 Transcoding enabled Překódování povoleno - 204 + 215 If you disable transcoding, many videos from your users will not work! Pokud zakážete překódování, mnoho videí od vašich uživatelů nebude fungovat! - 205 + 216 Transcoding threads Vlákna na překódování - 211 + 223 Previews cache size Velikost mezipaměti náhledů - 243 + 254 Customizations Přizpůsobení - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Pište přímo JavaScript kód.<br />Například: <pre>console.log('moje instance je úžasná');</pre> - 270 + 281 Advanced configuration Pokročilá nastavení - 197 + 207 Update configuration Aktualizovat nastavení - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Zdá se, že vaše konfigurace není validní. Prosím, vyhledejte potencialní chyby v jiné záložce. - 315 + 326 @@ -1450,14 +1898,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video Automaticky přehrávat videa - 25 + 28 Save Uložit - 28 + 32 @@ -1538,14 +1986,14 @@ When you will upload a video in this channel, the video support field will be au Publish will be available when upload is finished Publikovat lze jakmile bude dokončeno nahrávání - 48 + 53 Publish Publikovat - 55 + 60 @@ -2442,13 +2890,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 250 characters long. - Popis nesmí být delší než 250 znaků. - - 1 - - Report reason is required. Důvod nahlášení je vyžadován. @@ -2470,13 +2911,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 500 characters long. - Popis nesmí být delší než 500 znaků. - - 1 - - Support text must be at least 3 characters long. Text pro podporu musí mít délku minimálně 3 znaky. @@ -2484,13 +2918,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Support text cannot be more than 500 characters long. - Text pro podporu nesmí být delší než 500 znaků. - - 1 - - Comment is required. Komentář je vyžadován. @@ -2582,13 +3009,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Video support cannot be more than 500 characters long. - Text pro podporu videa nesmí být delší než 500 znaků. - - 1 - - A date is required to schedule video update. Datum k naplánování aktualizace videa je vyžadováno. @@ -3128,13 +3548,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Registration for complete. - Registrace dokončena. - - 1 - - But associated data (tags, description...) will be lost, are you sure you want to leave this page? Přiřazená data (tagy, popis...) budou ztraceny, opravdu chcete opustit tuto stránku? diff --git a/client/src/locale/target/angular_de_DE.xml b/client/src/locale/target/angular_de_DE.xml index 6f5f436e8..c49c6d701 100644 --- a/client/src/locale/target/angular_de_DE.xml +++ b/client/src/locale/target/angular_de_DE.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + nicht gelistet + + 10 + + + + Private + Privat + + 11 + + - views - Aufrufe @@ -583,14 +597,7 @@ Konto erstellen Example: jane_doe Beispiel: lisa_schmidt - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Ich habe die <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Bestimmungen</a> dieser Instanz gelesen und stimme ihnen zu. - - 54 + 17 @@ -604,7 +611,7 @@ Konto erstellen Features found on this instance Besonderheiten dieser Instanz - 66 + 67 @@ -883,6 +890,13 @@ Konto erstellen 94 + + Display unlisted and private videos + Private und nicht gelisteten Videos aufzeigen + + 11 + + No results. Keine Ergebnisse. @@ -1228,19 +1242,6 @@ Konto erstellen 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube befindet sich noch in der Beta-Phase und möchte in der stabilen Version die besten Gegenmaßnahmen bereitstellen. - Bis dahin wollen wir verschiedene Ideen in diesem Zusammenhang ausprobieren: - - - 85 - - Set a limit to the number of peers sent by the tracker Die Zahl der Peers, die durch einen Tracker gesendet wird, begrenzen. @@ -1276,6 +1277,36 @@ Konto erstellen 95 + + Banned + + 12 + + + + Muted + + 13 + + + + Muted by your instance + + 14 + + + + Instance muted + + 15 + + + + Instance muted by your instance + + 16 + + subscribers Abonnenten @@ -1406,21 +1437,21 @@ Konto erstellen Signup enabled Registrierung aktiviert - 92 + 93 Signup requires email verification Registrierung erfordert eine Bestätigung der E-Mail-Adresse - 97 + 100 Signup limit Obergrenze für Registrierungen - 101 + 105 @@ -1430,46 +1461,53 @@ Konto erstellen 42 + + Video import with HTTP URL (i.e. YouTube) enabled + Video durch HTTP URL (z.b. YouTube©) import erlaubt. + + 120 + + Video import with a torrent file or a magnet URI enabled Video-Import über eine Torrent-Datei oder einen Magnet-Link aktiviert - 120 + 127 Administrator Administrator - 123 + 131 Admin email Admin E-Mail - 126 + 134 Users Benutzer - 136 + 144 User default video quota Standardkontingent für die Videos eines Nutzers - 139 + 147 User default daily upload limit Tägliches Obergrenze eines Nutzers beim Hochladen - 153 + 161 @@ -1483,81 +1521,70 @@ Konto erstellen Twitter Twitter - 170 + 178 Your Twitter username Dein Twitter-Benutzername - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Zeigt den Twitter-Account für die Webseite, auf der der Inhalt veröffentlicht wurde. - 176 + 184 Instance whitelisted by Twitter Instanz von Twitter vertraut - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - Wenn deiner Instanz von Twitter vertraut wird, wird ein Video-Player in den Twitter-Feed deiner geteilten PeerTube-Videos eingebettet.<br /> - Wenn der Instanz nicht vertraut wird, benutzen wir ein Vorschaubild, das zu deiner PeerTube-Instanz führt.<br /><br /> - Markiere dieses Kontrollkästchen, speichere die Einstellung und probiere es auf <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> mit einer Video-URL deiner Instanz aus (https://example.com/videos/watch/blabla), um herauszufinden, ob deiner Instanz vertraut wird. - - 190 + 198 Services Dienste - 168 + 176 Transcoding Transkodierung - 200 + 210 Transcoding enabled Transkodierung an - 204 + 215 If you disable transcoding, many videos from your users will not work! Wenn du die Transkodierung abschaltest, werden viele Videos nicht laufen! - 205 + 216 Transcoding threads Transcodierungsthreads - 211 + 223 Resolution enabled Eingestellte Auflösung: - 227 + 239 @@ -1572,49 +1599,49 @@ Konto erstellen - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Einige Dateien (Vorschau, Untertitel) werden nicht verteilt gespeichert. Wir laden sie direkt von der Ursprungsinstanz und speichern sie zwischen. - 238 + 249 Previews cache size Cachegröße der Vorschau - 243 + 254 Video captions cache size Cachegröße der Untertitel - 254 + 265 Customizations Personalisierung - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Füge dein JavaScript ein.<br />Beispiel: <pre>console.log('Meine Instanz ist großartig');</pre> - 270 + 281 @@ -1649,28 +1676,28 @@ Konto erstellen </pre> - 286 + 297 Advanced configuration Erweiterte Einstellungen - 197 + 207 Update configuration Einstellungen aktualisieren - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Die Einstellungen sind anscheinend ungültig. Bitte suche nach potentiellen Fehlern in den verschiedenen Reitern. - 315 + 326 @@ -1753,6 +1780,13 @@ Konto erstellen 21 + + Filter... + Filtern... + + 27 + + ID ID @@ -1933,6 +1967,12 @@ Konto erstellen 40 + + (banned) + + 65 + + Go to the account page Zur Kontoseite gehen @@ -1944,7 +1984,7 @@ Konto erstellen Ban reason: Grund für die Sperrung: - 82 + 92 @@ -2077,6 +2117,37 @@ Konto erstellen 7 + + Muted accounts + + 2 + + + + Muted servers + + 11 + + + + Account + Account + + 12 + + + + Muted at + + 13 + + + + Unmute + + 23 + + My settings Meine Einstellungen @@ -2119,6 +2190,12 @@ Konto erstellen 18 + + Muted instances + + 2 + + Ownership changes Besitzer ändern @@ -2380,18 +2457,25 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 3 + + Use WebTorrent to exchange parts of the video with others + WebTorrent benutzen, um Videoteile mit Andere zu verbreiten. + + 21 + + Automatically plays video Videos automatisch abspielen - 25 + 28 Save Speichern - 28 + 32 @@ -2551,7 +2635,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Gückwunsch, das Video unter wird importiert. Du kannst bereits Informationen über dieses Video hinzufügen. - 40 + 46 @@ -2579,14 +2663,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Publish will be available when upload is finished Veröffentlichung ist möglich, sobald das Hochladen abgeschlossen ist - 48 + 53 Publish Veröffentlichen - 55 + 60 @@ -2625,7 +2709,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa Glückwunsch, dieses Video wird mittels BitTorrent importiert! Du kannst bereits Informationen über dieses Video hinzufügen. - 48 + 53 @@ -3594,6 +3678,12 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + Account unmuted by your instance. + + 1 + + Comment updated. Kommentar aktualisiert. @@ -3622,13 +3712,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Do you really want to delete this abuse? - Möchtest du diese Missbrauchsmeldung wirklich löschen? - - 1 - - Abuse deleted. Missbrauchsmeldung gelöscht. @@ -3692,6 +3775,12 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + If you remove these users, you will not be able to create others with the same username! + + 1 + + Ownership accepted Besitz geworden @@ -3902,6 +3991,54 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + Subscribe to the account + + 1 + + + + Go to the videos overview page + Zum Videoübersichtseite gehen + + 1 + + + + Go to the trending videos page + Zum Trendingsvideosseite gehen + + 1 + + + + Go to the recently added videos page + Zum neuliche hingefügten videos Seite gehen + + 1 + + + + Go to the local videos page + Zum lokalvideoseite gehen + + 1 + + + + Go to the videos upload page + Zum videouploadsseite gehen + + 1 + + + + Go to my videos + zur meine Videos gehen + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -4296,13 +4433,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Description cannot be more than 250 characters long. - Die Beschreibung darf nicht mehr als 250 Zeichen umfassen. - - 1 - - You must to agree with the instance terms in order to registering on it. Um dich auf dieser Instanz zu registrieren, musst du den Bestimmungen zustimmen. @@ -4436,13 +4566,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Description cannot be more than 500 characters long. - Die Beschreibung darf nicht mehr als 500 Zeichen umfassen. - - 1 - - Support text must be at least 3 characters long. Die Beschreibung zur Unterstützung muss mindestens 3 Zeichen umfassen. @@ -4450,13 +4573,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Support text cannot be more than 500 characters long. - Die Beschreibung zur Unterstützung darf nicht mehr als 500 Zeichen umfassen. - - 1 - - Comment is required. Bitte gib einen Kommentar ein. @@ -4548,13 +4664,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Video support cannot be more than 500 characters long. - Die Beschreibung zur Unterstützung darf nicht mehr als 500 Zeichen umfassen. - - 1 - - A date is required to schedule video update. Bitte gib ein ein Datum für die geplante Veröffentlichung ein. @@ -5199,27 +5308,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 - - Welcome - Willkommen - - 1 - - - - Please check your email to verify your account and complete signup. - Bitte sieh nun in deinen E-Mails nach, um die Registrierung abzuschließen. - - 1 - - - - Registration for complete. - Registrierung für abgeschlossen. - - 1 - - Video to import updated. Zu importierendes Video wurde aktualisiert. @@ -5332,6 +5420,20 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa 1 + + Like the video + Das Video gefällt Mir ! + + 1 + + + + Dislike the video + Das Video gefällt Mir nicht mehr. + + 1 + + Do you really want to delete this video? Möchtest du das Video wirklich löschen? diff --git a/client/src/locale/target/angular_eo.xml b/client/src/locale/target/angular_eo.xml index f3d70d813..faa52fbdb 100644 --- a/client/src/locale/target/angular_eo.xml +++ b/client/src/locale/target/angular_eo.xml @@ -331,13 +331,6 @@ 8 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Mi legis kaj konsentis <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>la kondiĉojn</a> de ĉi tiu nodo - - 54 - - Signup Registriĝo @@ -875,19 +868,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube estas nur beta-versia, kaj ni volas liveri kiel eble plej bonajn ŝirmojn kiam la stabilo versio eldoniĝos. - Dume, ni volas testi diversajn ideojn pri la problemo: - - - 85 - - Set a limit to the number of peers sent by the tracker Limigi nombron da samtavolanoj sendatan de la kunordigilo @@ -1053,21 +1033,21 @@ Signup enabled Registriĝoj ŝaltitaj - 92 + 93 Signup requires email verification Registriĝo bezonas kontrolon de retpoŝtadreso - 97 + 100 Signup limit Limo de registriĝoj - 101 + 105 @@ -1081,35 +1061,35 @@ Video import with a torrent file or a magnet URI enabled Enporto de filmoj per torenta dosiero aŭ magneta ligilo ŝaltita - 120 + 127 Administrator Administranto - 123 + 131 Admin email Retpoŝtadreso de administranto - 126 + 134 Users Uzantoj - 136 + 144 User default video quota Norma datumlimo por filmoj de uzantoj - 139 + 147 @@ -1123,133 +1103,133 @@ Twitter Tvitero - 170 + 178 Your Twitter username Via Tvitera salutnomo - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indikas konton de Twitter por la retejo aŭ platformo, sur kiu la afero publikiĝis. - 176 + 184 Instance whitelisted by Twitter Nodo permesata de Twitter - 189 + 198 Services Servoj - 168 + 176 Transcoding Transkodado - 200 + 210 Transcoding enabled Transkodado ŝaltita - 204 + 215 If you disable transcoding, many videos from your users will not work! Se vi malŝaltos transkodadon, multaj filmoj de viaj uzantoj eble ne funkcios! - 205 + 216 Transcoding threads Fadenoj por transkodado - 211 + 223 Resolution enabled Distingo ŝaltita - 227 + 239 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Iuj dosieroj ne estas federataj (antaŭrigardoj, transskriboj). Ni prenas kaj kaŝmemoras ilin rekte el la fonta nodo. - 238 + 249 Previews cache size Grando de antaŭrigarda kaŝmemoro - 243 + 254 Video captions cache size Grandeco de kaŝmemoro por filmaj transskriboj. - 254 + 265 Customizations Adaptoj - 264 + 275 JavaScript Ĝavoskripto - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Skribu rekte Ĝavoskriptan kodon.<br />Ekzemple: <pre>console.log('mia nodo bonegas');</pre> - 270 + 281 Advanced configuration Specialaj agordoj - 197 + 207 Update configuration Efektivigi agordojn - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Ŝajnas, ke la agordo estas nevalida. Bonvolu serĉi eblajn erarojn en la langetoj. - 315 + 326 @@ -1694,14 +1674,14 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos Automatically plays video Memfare ludas filmon - 25 + 28 Save Konservi - 28 + 32 @@ -1800,7 +1780,7 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos Gratulon; la filmo enportiĝos! Vi jam povas aldoni informojn pri ĝi. - 40 + 46 @@ -1821,14 +1801,14 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos Publish will be available when upload is finished Eldono eblos post fino de alŝuto - 48 + 53 Publish Eldoni - 55 + 60 @@ -1860,7 +1840,7 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos Gratulon; la filmo enportiĝos per « BitTorrent »! Vi jam povas aldoni informojn pri ĝi. - 48 + 53 @@ -3006,13 +2986,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - Description cannot be more than 250 characters long. - Priskribo ne povas havi pli ol 250 signojn. - - 1 - - You must to agree with the instance terms in order to registering on it. Vi devas konsenti kun la kondiĉoj de la nodo por registriĝi ĉe ĝi. @@ -3055,13 +3028,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - Description cannot be more than 500 characters long. - Priskribo ne povas havi pli ol 500 signojn. - - 1 - - Support text must be at least 3 characters long. Teksto pri subteno devas havi almenaŭ 3 signojn. @@ -3069,13 +3035,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - Support text cannot be more than 500 characters long. - Teksto pri subteno ne povas havi pli ol 500 signojn. - - 1 - - Comment is required. Necesas komento. @@ -3167,13 +3126,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - Video support cannot be more than 500 characters long. - Loka teksto pri subteno ne povas havi pli ol 500 signojn. - - 1 - - A date is required to schedule video update. Necesas dato por plani ĝisdatigon de filmo. @@ -3713,13 +3665,6 @@ Kiam vi alŝutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos 1 - - Registration for complete. - Registriĝo de finita. - - 1 - - Your video was uploaded to your account and is private. Via filmo alŝutiĝis al via konto kaj estas privata. diff --git a/client/src/locale/target/angular_es_ES.xml b/client/src/locale/target/angular_es_ES.xml index a44b06b84..947c9a91d 100644 --- a/client/src/locale/target/angular_es_ES.xml +++ b/client/src/locale/target/angular_es_ES.xml @@ -3,6 +3,223 @@ + + Close + Cerrar + + 2 + + + + Previous + Anterior + + 13 + + + + Next + Siguiente + + 17 + + + + Previous month + Último mes + + 5 + + + + Next month + Próximo mes + + 27 + + + + Select month + Seleccionar un mes + + 7 + + + + Select year + Seleccionar un año + + 16 + + + + «« + «« + + 7 + + + + First + Primero + + 5 + + + + « + « + + 15 + + + + Previous + Anterior + + 13 + + + + » + » + + 29 + + + + Next + Siguiente + + 27 + + + + »» + »» + + 36 + + + + Last + Último + + 34 + + + + % + % + + 6 + + + + Increment hours + Aumentar horas + + 9 + + + + HH + h + + 12 + + + + Hours + horas + + 14 + + + + Decrement hours + Disminuir horas + + 19 + + + + Increment minutes + Aumentar minutos + + 28 + + + + MM + m + + 31 + + + + Minutes + minutos + + 33 + + + + Decrement minutes + minutos + + 38 + + + + Increment seconds + aumentar segundos + + 47 + + + + SS + s + + 50 + + + + Seconds + segundos + + 52 + + + + Decrement seconds + disminuir segundos + + 57 + + + + PM + pm + + 65 + + + + AM + am + + 66 + + + + Cancel + cancelar + + 10 + + (extensions: , max size: ) (extensioness: , tamaño máximo: ) @@ -10,6 +227,20 @@ 11 + + Unlisted + No listado + + 10 + + + + Private + Privado + + 11 + + - views - visualizaciones @@ -52,6 +283,106 @@ 19 + + + + Subscribe + + + + + + + + Suscribirse + + + + + + + 5 + + + + + Unsubscribe + + +Cancelar la subscripción + + 18 + + + + Using an ActivityPub account + Usar una cuenta ActivityPub + + 36 + + + + Subscribe with an account on + Suscribirse con una cuenta sobre + + 39 + + + + Subscribe with your local account + Suscribirse con su cuenta local + + 40 + + + + Subscribe with a Mastodon account: + Suscribirse con una cuenta Mastodon: + + 43 + + + + Using a syndication feed + Usar un flujo de sindicación + + 48 + + + + Subscribe via RSS + Suscribirse vía RSS + + 49 + + + + + Remote subscribe + Remote interact + + + Suscripción remota + Interacción remota + + + 10 + + + + You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there. + Puede suscribirse al canal usando cualquier instancia del fediverse compatible con ActivityPub. Por ejemplo con Mastodon o Pleroma puede ingresar el URL del canal en el campo de búsqueda y suscribirse allí. + + 17 + + + + You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there. + Puede interactuar con eso usando cualquier instancia del fediverse compatible con ActivityPub. Por ejemplo con Mastodon o Pleroma puedes ingresar el URL actual en el campo de búsqueda e interactuar con el desde allí. + + 22 + + Video quota Cuota de vídeo @@ -59,6 +390,24 @@ 42 + + + Unlimited ( per day) + + + Illimitado ( por día) + + + 14 + + + + Ban + Expulsar + + 3 + + Reason... Motivo... @@ -66,6 +415,24 @@ 11 + + + A banned user will no longer be able to login. + + + Un usuario expulsado ya no podrá conectarse. + + + 17 + + + + Ban this user + Expulsar este usuario + + 25 + + Login @@ -76,6 +443,13 @@ Iniciar sesión 2 + + Request new verification email. + Solicitar un nuevo correo de verificación. + + 12 + + User Usuario @@ -216,11 +590,18 @@ Iniciar sesión 8 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - He leído y estoy de acuerdo con los <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Términos de uso</a> de este nodo + + Example: jane_doe + Ejemplo: jane_doe - 54 + 17 + + + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + Tengo 16 años o más y estoy de acuerdo con los <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Términos</a> de esta instancia + + 55 @@ -230,6 +611,13 @@ Iniciar sesión 88 + + Features found on this instance + Funcionalidades encontradas en esta instancia + + 67 + + results resultados @@ -248,6 +636,19 @@ Iniciar sesión 6 + + + Filters + + + + Filtros + + + + 16 + + No results found @@ -259,6 +660,20 @@ Iniciar sesión 28 + + subscribers + suscriptores + + 44 + + + + - views + - vistas + + 55 + + Change the language Cambiar el idioma @@ -266,6 +681,50 @@ Iniciar sesión 88 + + + My public profile + + + Mi perfil público + + + 18 + + + + + My account + + + Mi cuenta + + + 22 + + + + + My videos + + + Mis vídeos + + + 26 + + + + + Log out + + + Desconectarse + + + 30 + + Create an account Crear una cuenta @@ -280,6 +739,20 @@ Iniciar sesión 24 + + Subscriptions + Suscripciones + + 47 + + + + Overview + Vista general + + 52 + + Trending Tendencias @@ -322,6 +795,20 @@ Iniciar sesión 25 + + Show keyboard shortcuts + Mostrar los atajos de teclado + + 91 + + + + Toggle dark interface + Alternar con la interfaz oscura + + 94 + + Search... Buscar... @@ -420,6 +907,13 @@ Iniciar sesión 94 + + Display unlisted and private videos + Mostrar los vídeos no listados y privados + + 11 + + No results. Ningún resultados @@ -427,6 +921,47 @@ Iniciar sesión 17 + + + + + + + + + 6 + + + + + # + + + # + + + 14 + + + + + + + + + + + + + + + + + + + 22 + + Instance Nodo @@ -724,14 +1259,14 @@ Iniciar sesión 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: - PeerTube está solo en beta, y quiere proporcionar las mejores contramedidas posibles para cuando se publique la versión estable. - Mientras tanto, queremos probar diferentes ideas relacionadas con este problema: + PeerTube está en sus primeros pasos, y quiere proponer las mejores contramedidas posibles al momento de la publicación de la versión estable. + Mientras tanto, queremos probar diferentes ideas relacionadas con el problema: 85 @@ -772,6 +1307,41 @@ Iniciar sesión 95 + + Banned + Expulsados + + 12 + + + + Muted + Silenciados + + 13 + + + + Muted by your instance + Silenciados por tu instancia + + 14 + + + + Instance muted + Instancia silenciada + + 15 + + + + Instance muted by your instance + Instancia silenciada por tu instancia + + 16 + + subscribers suscriptores @@ -835,6 +1405,13 @@ Iniciar sesión 55 + + Videos Overview + Vista general de los vídeos + + 58 + + Videos Trending Vídeos en Tendencia @@ -895,14 +1472,21 @@ Iniciar sesión Signup enabled Registro habilitado - 92 + 93 + + + + Signup requires email verification + La suscripción requiere una verificación mediante correo electrónico + + 100 Signup limit Límite de registro - 101 + 105 @@ -912,39 +1496,53 @@ Iniciar sesión 42 + + Video import with HTTP URL (i.e. YouTube) enabled + La importación de vídeos mediante URL HTTP (por ejemplo YouTube) está activada + + 120 + + Video import with a torrent file or a magnet URI enabled Importar video con un archivo torrent o un enlace magnet activado - 120 + 127 Administrator Administrador - 123 + 131 Admin email Correo del administrador - 126 + 134 Users Usuarios - 136 + 144 User default video quota Cuota de vídeo por defecto del usuario - 139 + 147 + + + + User default daily upload limit + Límite diario de subida por día por usuario + + 161 @@ -958,133 +1556,133 @@ Iniciar sesión Twitter Twitter - 170 + 178 Your Twitter username Tu usuario de Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indica la cuenta de Twitter del sitio web o de la plataforma en la que el contenido fue publicado - 176 + 184 Instance whitelisted by Twitter Nodo en lista blanca de Twitter - 189 + 198 Services Servicios - 168 + 176 Transcoding Transcodificar - 200 + 210 Transcoding enabled Transcodificación activada - 204 + 215 If you disable transcoding, many videos from your users will not work! ¡Si desactivas la transcodificación, muchos vídeos de tus usuarios no funcionarán! - 205 + 216 Transcoding threads Hilos de transcodificaciones - 211 + 223 Resolution enabled Resolución activada - 227 + 239 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Algunos archivos (previsualizaciones, subtítulos) no están federados. Los obtenemos directamente del nodo de origen y las ponemos en caché. - 238 + 249 Previews cache size Tamaño de caché de las previsualizaciones - 243 + 254 Video captions cache size Tamaño de caché de los subtítulos - 254 + 265 Customizations Personalizaciones - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Escribir código Javascript directamente.<br />Ejemplo: <pre>console.log('mi nodo es maravilloso');</pre> - 270 + 281 Advanced configuration Configuración avanzada - 197 + 207 Update configuration Actualizar configuración - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Parece que la configuración no es válida. Por favor, busque errores potenciales en las diferentes pestañas. - 315 + 326 @@ -1507,14 +2105,14 @@ Cuando subas un vídeo a este canal, el campo de soporte del vídeo se rellenar Automatically plays video Reproducir vídeo automáticamente - 25 + 28 Save Guardar - 28 + 32 @@ -1613,7 +2211,7 @@ Cuando subas un vídeo a este canal, el campo de soporte del vídeo se rellenar Enhorabuena, el vídeo en sera importado! Ya puedes añadir información sobre este vídeo. - 40 + 46 @@ -1634,14 +2232,14 @@ Cuando subas un vídeo a este canal, el campo de soporte del vídeo se rellenar Publish will be available when upload is finished La publicación estará disponible cuando finalice la subida - 48 + 53 Publish Publicar - 55 + 60 @@ -1673,7 +2271,7 @@ Cuando subas un vídeo a este canal, el campo de soporte del vídeo se rellenar Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir información sobre este vídeo. - 48 + 53 @@ -2826,13 +3424,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - Description cannot be more than 250 characters long. - La descripción no puede ocupar más de 250 caracteres. - - 1 - - You must to agree with the instance terms in order to registering on it. Debes aceptar los términos de uso del nodo para poder registrarte en él. @@ -2875,13 +3466,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - Description cannot be more than 500 characters long. - La descripción no puede ocupar más de 500 caracteres. - - 1 - - Support text must be at least 3 characters long. El texto para el apoyo ha de ocupar como mínimo 3 caracteres. @@ -2889,13 +3473,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - Support text cannot be more than 500 characters long. - El texto para el apoyo no puede ocupar más de 500 caracteres. - - 1 - - Comment is required. Se requiere comentario. @@ -2987,13 +3564,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - Video support cannot be more than 500 characters long. - El apoyo para el vídeo no puede ocupar más de 500 caracteres. - - 1 - - A date is required to schedule video update. Se requiere una fecha para actualizar la programación del vídeo. @@ -3533,13 +4103,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac 1 - - Registration for complete. - Registro de completo. - - 1 - - Video to import updated. Video to import updated. diff --git a/client/src/locale/target/angular_eu_ES.xml b/client/src/locale/target/angular_eu_ES.xml index d47093717..d30351a35 100644 --- a/client/src/locale/target/angular_eu_ES.xml +++ b/client/src/locale/target/angular_eu_ES.xml @@ -38,6 +38,20 @@ 27 + + Select month + Hautatu hilabetea + + 7 + + + + Select year + Hautatu urtea + + 16 + + «« «« @@ -213,6 +227,20 @@ 11 + + Unlisted + Zerrendatu gabea + + 10 + + + + Private + Pribatua + + 11 + + - views - ikustaldi @@ -255,6 +283,107 @@ 19 + + + + Subscribe + + + + + + + + Harpidetu + + + + + + + 5 + + + + + Unsubscribe + + + Desharpidetu + + + 18 + + + + Using an ActivityPub account + ActivityPub kontu bat erabiliz + + 36 + + + + Subscribe with an account on + Harpidetu ostalariko kontu batekin + + 39 + + + + Subscribe with your local account + Harpidetu zure tokiko kontuarekin + + 40 + + + + Subscribe with a Mastodon account: + Harpidetu Mastodon kontu batekin: + + 43 + + + + Using a syndication feed + Sindikazio jario bat erabiliz + + 48 + + + + Subscribe via RSS + Harpidetu RSS bidez + + 49 + + + + + Remote subscribe + Remote interact + + + Urruneko harpidetza + Urruneko interakzioa + + + 10 + + + + You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there. + Kanal honetara harpidetu zaitezke ActivityPub onartzen duen fedibertsoko instantzia batetik, esaterako Mastodon edo Pleroma instantzietan, bilaketa kutxan URLa idatzi dezakezu eta handik harpidetu. + + 17 + + + + You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there. + Kontu honekin elkarrekintzak izan ditzakezu zaitezke ActivityPub onartzen duen edozein instantziatik. Esaterako Mastodon edo Pleroma instantzietan, bilaketa kutxan URLa idatzi dezakezu eta handik elkarrekintza hasi. + + 22 + + Video quota Bideo-kuota @@ -469,14 +598,7 @@ Example: jane_doe Adibidez: jone_inorrez - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Instantzia honetako <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Baldintzak</a> irakurri ditut eta ados nago - - 54 + 17 @@ -490,7 +612,7 @@ Features found on this instance Instantzia honetako ezaugarriak - 66 + 67 @@ -657,6 +779,13 @@ 25 + + Show keyboard shortcuts + Erakutsi teklatu-lasterbideak + + 91 + + Toggle dark interface Txandakatu interfaze iluna @@ -762,6 +891,13 @@ 94 + + Display unlisted and private videos + Bistaratu zerrendatu gabeko bideoak eta bideo pribatuak + + 11 + + No results. Emaitzarik ez. @@ -780,6 +916,17 @@ 6 + + + # + + + # + + + 14 + + @@ -1092,19 +1239,6 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube beta-n dago, eta ahalik eta babes onena ezartzeko gogoa dugu kaleratzen denerako. - Bitartean hainbat ideia saiatu nahi ditugu honetarako: - - - 85 - - Set a limit to the number of peers sent by the tracker Tracker-ak bidaltzen dituen berdin kopurua mugatzea @@ -1140,6 +1274,41 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 95 + + Banned + Debekatua + + 12 + + + + Muted + Mututua + + 13 + + + + Muted by your instance + Zure instantziak mututua + + 14 + + + + Instance muted + Mutututako instantzia + + 15 + + + + Instance muted by your instance + Zure instantziak mutututako instantzia + + 16 + + subscribers harpidedun @@ -1270,21 +1439,21 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Signup enabled Izena ematea gaituta - 92 + 93 Signup requires email verification Izena emateko e-mail helbidea baieztatu behar da - 97 + 100 Signup limit Izena emateko muga - 101 + 105 @@ -1294,46 +1463,53 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 42 + + Video import with HTTP URL (i.e. YouTube) enabled + HTTP URL bidezko bideoen inportazioa gaituta (adibidez YouTube) + + 120 + + Video import with a torrent file or a magnet URI enabled Bideoa torrent fitxategia edo magnet URL bidez inportatzea gaituta - 120 + 127 Administrator Administratzailea - 123 + 131 Admin email Administratzailearen e-maila - 126 + 134 Users Erabiltzaileak - 136 + 144 User default video quota Erabiltzailearen lehenetsitako bideo-kuota - 139 + 147 User default daily upload limit Erabiltzailearentzat lehenetsitako eguneko igoera muga - 153 + 161 @@ -1347,70 +1523,70 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Twitter Twitter - 170 + 178 Your Twitter username Zure Twitter erabiltzaile-izena - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Edukia argitaratuko den webgune edo plataformarentzat Twitter kontua adierazten du. - 176 + 184 Instance whitelisted by Twitter Twitter-ek onartutako instantzia - 189 + 198 Services Zerbitzuak - 168 + 176 Transcoding Transkodeketa - 200 + 210 Transcoding enabled Transkodeketa gaituta - 204 + 215 If you disable transcoding, many videos from your users will not work! Transkodeketa desgaitzen baduzu, erabiltzaileen bideo askok ez dute funtzionatuko! - 205 + 216 Transcoding threads Transkodetze hariak - 211 + 223 Resolution enabled bereizmena gaituta - 227 + 239 @@ -1425,49 +1601,49 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Fitxategi batzuk ez dira federatzen (aurrebistak, azpitituluak). Zuzenean jatorrizko instantziatik jasotzen ditugu eta cachean gorde. - 238 + 249 Previews cache size Aurrebisten cachearen tamaina - 243 + 254 Video captions cache size Bideoaren azpitituluen cachearen tamaina - 254 + 265 Customizations Pertsonalizazioak - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> IdatziJavaScript kodea zuzenean.<br />Adibidez: <pre>console.log('nire instantzia zoragarria da');</pre> - 270 + 281 @@ -1502,28 +1678,28 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. </pre> - 286 + 297 Advanced configuration Konfigurazio aurreratua - 197 + 207 Update configuration Eguneratu konfigurazioa - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Konfigurazioa baliogabea dela dirudi. Bilatu zer egon daitekeen gaizki fitxa desberdinetan begiratuz. - 315 + 326 @@ -1606,6 +1782,13 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 21 + + Filter... + Iragazkia... + + 27 + + ID ID-a @@ -1641,6 +1824,27 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 11 + + Accepted + Onartua + + 32 + + + + Pending + Zain + + 33 + + + + Redundancy allowed + Erredundantzia onartua + + 22 + + Manage follows Kudeatu jarraipenak @@ -1766,6 +1970,13 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 40 + + (banned) + (debekatua) + + 65 + + Go to the account page Joan kontuaren orrira @@ -1777,7 +1988,7 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. Ban reason: Debekatzeko arrazoia: - 82 + 92 @@ -1910,6 +2121,34 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 7 + + Muted accounts + Mutututako kontuak + + 2 + + + + Muted servers + Mutututako zerbitzariak + + 11 + + + + Account + Kontua + + 12 + + + + Unmute + Desmututu + + 23 + + My settings Nire ezarpenak @@ -1952,6 +2191,20 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 18 + + Misc + Denetarik + + 24 + + + + Muted instances + Mutututako instantziak + + 2 + + Ownership changes Jabetza aldaketak @@ -2095,6 +2348,13 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin 8 + + You don't have any subscriptions yet. + Ez duzu harpidetzarik oraindik. + + 1 + + Created by (e)k sortuta @@ -2177,6 +2437,13 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin 30 + + Current password + Oraingo pasahitza + + 7 + + New password Pasahitz berria @@ -2202,14 +2469,14 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin Automatically plays video Automatikoki abiatzen du bideoa - 25 + 28 Save Gorde - 28 + 32 @@ -2362,7 +2629,7 @@ Ezin izan dugu bilatzen duzun orria aurkitu. Zorionak, helbideko bideoa inportatuko da! Bideoaren informazioa gehitzen hasi zaitezke jada. - 40 + 46 @@ -2379,18 +2646,25 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 6 + + Scheduled + Programatuta + + 25 + + Publish will be available when upload is finished Argitaratzea behin igoera bukatzean egongo da erabilgarri - 48 + 53 Publish Argitaratu - 55 + 60 @@ -2400,6 +2674,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 6 + + Or + Edo + + 11 + + Paste magnet URI Itsatsi magnet URLa @@ -2422,7 +2703,7 @@ Ezin izan dugu bilatzen duzun orria aurkitu. Zorionak, bideoa BitTorrent bidez inportatuko da! Bideoaren informazioa gehitzen hasi zaitezke. - 48 + 53 @@ -2513,6 +2794,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 18 + + + Tag + +Etiketa + + 21 + + + + Enter a new tag + Sartu etiketa berria + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Lehenetsita bideoen deskripzioak mozten dira eta eskuz hedatu behar dira. @@ -2583,6 +2878,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 155 + + Already uploaded ✔ + Jadanik igota ✔ + + 159 + + Cancel create Ezeztatu sorkuntza @@ -3035,6 +3337,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 20 + + login to comment + hasi saioa iruzkinak egiteko + + 35 + + Highlighted comment Nabarmendutako iruzkina @@ -3084,6 +3393,48 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + 240p + 240p + + 1 + + + + 360p + 360p + + 1 + + + + 480p + 480p + + 1 + + + + 720p + 720p + + 1 + + + + 1080p + 1080p + + 1 + + + + Auto (via ffmpeg) + Automatikoa (ffmpeg bidez) + + 1 + + Success Arrakasta @@ -3105,6 +3456,69 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + 100MB + 100MB + + 1 + + + + 500MB + 500MB + + 1 + + + + 1GB + 1GB + + 1 + + + + 5GB + 5GB + + 1 + + + + 20GB + 20GB + + 1 + + + + 50GB + 50GB + + 1 + + + + 10MB + 10MB + + 1 + + + + 50MB + 50MB + + 1 + + + + 2GB + 2GB + + 1 + + is not valid baliogabea da @@ -3168,6 +3582,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + enabled + gaituta + + 1 + + + + disabled + desgaituta + + 1 + + Comment updated. Iruzkina eguneratua. @@ -3175,6 +3603,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Delete this report + Ezabatu salaketa hau + + 1 + + Update moderation comment Eguneratu moderazio iruzkina @@ -3196,9 +3631,9 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Do you really want to delete this abuse? - Ziur zaude gehiegikeria hau ezabatu nahi duzula? + + Do you really want to delete this abuse report? + Ziur gehiegikeria salaketa hau ezabatu nahi duzula? 1 @@ -3266,6 +3701,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + If you remove these users, you will not be able to create others with the same username! + Erabiltzaile hauek kentzen badituzu, ezin izango duzu izen bereko beste konturik sortu! + + 1 + + Ownership accepted Jabetza onartuta @@ -3336,6 +3778,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + This name already exists on this instance. + Izen hau hartuta dago instantzia honetan + + 1 + + Create Sortu @@ -3469,6 +3918,27 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Subscribe to the account + Harpidetu kontura + + 1 + + + + Focus the search bar + Eman fokua bilaketa barrari + + 1 + + + + Go to the videos overview page + Joan bideoen ikuspegi orokorraren orrira + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -3856,13 +4326,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Description cannot be more than 250 characters long. - Deskripzioa ezin da 250 karaktere baino luzeagoa izan. - - 1 - - You must to agree with the instance terms in order to registering on it. Instantziaren baldintzak onartu behar dituzu bertan izena emateko. @@ -3968,6 +4431,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + You can only transfer ownership to a local account + Jabetza tokiko kontu batera besterik ezin duzu pasatu + + 1 + + Name is required. Izena derrigorrezkoa da. @@ -3996,13 +4466,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Description cannot be more than 500 characters long. - Deskripzioa ezin da 500 karaktere baino luzeagoa izan. - - 1 - - Support text must be at least 3 characters long. Babes testua gutxienez 3 karaktere luze izan behar da @@ -4010,9 +4473,9 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Support text cannot be more than 500 characters long. - Babes testua ezin da 500 karaktere baino luzeagoa izan. + + Support text cannot be more than 1000 characters long. + Laguntza testua ezin da 1000 karaktere baino luzeagoa izan 1 @@ -4108,9 +4571,9 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Video support cannot be more than 500 characters long. - Bideo babesa ezin da 500 karaktere baino luzeagoa izan. + + Video support cannot be more than 1000 characters long. + Bideoaren laguntza ezin da 1000 karaktere baino luzeagoa izan 1 @@ -4668,6 +5131,69 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Account muted. + kontua mutututa. + + 1 + + + + Mute this account + Mututu kontu hau + + 1 + + + + Unmute this account + Desmututu kontu hau + + 1 + + + + Mute the instance + Mututu instantzia + + 1 + + + + Unmute the instance + Desmututu instantzia + + 1 + + + + Mute this account by your instance + Mututu kontu hau zure instantziaren bidez + + 1 + + + + Unmute this account by your instance + Desmututu kontu hau zure instantziaren bidez + + 1 + + + + Mute the instance by your instance + Mututu instantzia hau zure instantziaren bidez + + 1 + + + + Unmute the instance by your instance + Desmututu instantzia hau zure instantziaren bidez + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Eskaria luzeegia da zerbitzariarentzat. Jarri zure administratzailearekin kontaktuan muga handitu nahi baduzu. @@ -4724,6 +5250,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Moderator + Moderatzailea + + 1 + + Only I can see this video Bakarrik nik ikusi dezaket bideo hau @@ -4745,27 +5278,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 - - Welcome - Ongi etorri - - 1 - - - - Please check your email to verify your account and complete signup. - Egiaztatu mesedez zure e-maila zure kontua egiaztatzeko eta erregistroa burutzeko. - - 1 - - - - Registration for complete. - erabiltzailearen izen-ematea burututa. - - 1 - - Video to import updated. Inportatzeko bideoa eguneratuta. @@ -4864,6 +5376,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Like the video + Gehitu bideoa gogokoetara + + 1 + + + + Dislike the video + Kendu bideoa gogokoetatik + + 1 + + Do you really want to delete this video? Ziur bideo hau ezabatu nahi duzula? diff --git a/client/src/locale/target/angular_fa_IR.xml b/client/src/locale/target/angular_fa_IR.xml index 8a965cf62..fbef34713 100644 --- a/client/src/locale/target/angular_fa_IR.xml +++ b/client/src/locale/target/angular_fa_IR.xml @@ -386,7 +386,7 @@ Example: jane_doe نمونه: مهراد_روستا - 16 + 17 @@ -682,7 +682,7 @@ Signup enabled ثبت‌نام فعال است - 92 + 93 @@ -696,35 +696,35 @@ Administrator مدیر - 123 + 131 Users کاربران - 136 + 144 Twitter توییتر - 170 + 178 Your Twitter username نام‌کاربری توییتر شما - 173 + 181 JavaScript جاوااکسریپت - 267 + 278 @@ -1034,13 +1034,6 @@ 1 - - Welcome - خوش‌آمدید - - 1 - - Info راهنما diff --git a/client/src/locale/target/angular_fr_FR.xml b/client/src/locale/target/angular_fr_FR.xml index bf9b7c762..55f323009 100644 --- a/client/src/locale/target/angular_fr_FR.xml +++ b/client/src/locale/target/angular_fr_FR.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + Non répertoriée + + 10 + + + + Private + Privée + + 11 + + - views - vues @@ -583,14 +597,14 @@ Example: jane_doe Exemple: jane_doe - 16 + 17 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - J'ai lu et j'accepte les <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Conditions d'utilisation</a> de cette instance + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + J'ai au moins 16 ans et je suis d'accord avec les <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>conditions d'utilisations</a> de l'instance - 54 + 55 @@ -604,7 +618,7 @@ Features found on this instance Fonctionnalités présentes sur cette instance - 66 + 67 @@ -625,6 +639,19 @@ 6 + + + Filters + + + + Filtres + + + + 16 + + No results found @@ -883,6 +910,13 @@ 94 + + Display unlisted and private videos + Afficher les vidéos privées et non répertoriées + + 11 + + No results. Aucun résultat. @@ -1227,13 +1261,13 @@ 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: - PeerTube n'est qu'en version bêta, et veut livrer les meilleures contre-mesures possibles d'ici la sortie de la version stable. + PeerTube n'en est qu'à ses débuts, et veut fournir les meilleures contre-mesures possibles jusqu'à ce que la version finale sorte. En attendant, nous voulons tester différentes idées liées à cette question : @@ -1275,6 +1309,41 @@ 95 + + Banned + Bannis + + 12 + + + + Muted + Silencieux + + 13 + + + + Muted by your instance + Rendu silencieux par votre instance + + 14 + + + + Instance muted + Instance muette + + 15 + + + + Instance muted by your instance + Instance rendue muette par votre instance + + 16 + + subscribers abonnés @@ -1405,21 +1474,21 @@ Signup enabled Enregistrement activé - 92 + 93 Signup requires email verification L'inscription requiert la vérification par courriel - 97 + 100 Signup limit Limitation des enregistrements - 101 + 105 @@ -1429,46 +1498,53 @@ 42 + + Video import with HTTP URL (i.e. YouTube) enabled + Import de vidéo via une URL (YouTube par exemple) activé + + 120 + + Video import with a torrent file or a magnet URI enabled Import de vidéo avec un fichier torrent ou URL magnet activé - 120 + 127 Administrator Administrateur - 123 + 131 Admin email Email de l'administrateur - 126 + 134 Users Utilisateurs - 136 + 144 User default video quota Quota de vidéos par défaut par utilisateur - 139 + 147 User default daily upload limit La limite journalière de téléversement est atteinte - 153 + 161 @@ -1482,81 +1558,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Votre identifiant Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indique le compte Twitter pour le site ou la plateforme sur laquelle le contenu a été publié. - 176 + 184 Instance whitelisted by Twitter Instance sur la liste blanche de Twitter - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - Si votre instance est sur la liste blanche de Twitter, un lecteur vidéo sera intégré dans le fil d'actualité de Twitter lors d'un partage d'une vidéo PeerTube.<br /> -Si l'instance n'est pas sur liste blanche, nous utilisons un lien-image qui redirigera sur votre instance PeerTube.<br /><br /> -Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidéo de votre instance (https://example.com/videos/watch/blabla) sur <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> pour voir si votre instance est sur liste blanche. - - 190 + 198 Services Services - 168 + 176 Transcoding Encodage - 200 + 210 Transcoding enabled Encodage activé - 204 + 215 If you disable transcoding, many videos from your users will not work! Si vous désactivez le transcodage, de nombreuses vidéos d'utilisateurs ne fonctionneront pas ! - 205 + 216 Transcoding threads Nombre de threads pour l'encodage - 211 + 223 Resolution enabled Résolution activée - 227 + 239 @@ -1571,49 +1636,49 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Certain fichiers ne sont pas fédérés (miniature, sous-titre). Nous les récupérons directement depuis l'instance d'origine et nous les gardons en cache. - 238 + 249 Previews cache size Taille du cache des prévisualisations - 243 + 254 Video captions cache size Taille du cache des sous-titres - 254 + 265 Customizations Personnalisations - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Écrivez directement du code JavaScript.<br />Exemple : <pre>console.log('mon instance est super géniale');</pre> - 270 + 281 @@ -1648,28 +1713,28 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé </pre> - 286 + 297 Advanced configuration Configuration avancée - 197 + 207 Update configuration Mettre à jour la configuration - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Il semblerait que la configuration soit invalide. Merci de chercher des erreurs potentielles dans les différents onglets. - 315 + 326 @@ -1752,6 +1817,13 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 21 + + Filter... + Filtrage... + + 27 + + ID ID @@ -1926,6 +1998,13 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 2 + + Batch actions + Actions en lot + + 19 + + Username Identifiant @@ -1933,6 +2012,13 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 40 + + (banned) + (banni) + + 65 + + Go to the account page Accéder au profil public de l'utilisateur @@ -1944,7 +2030,7 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé Ban reason: Raison du bannissement : - 82 + 92 @@ -2077,6 +2163,41 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 7 + + Muted accounts + Comptes silencieux + + 2 + + + + Muted servers + Serveurs silencieux + + 11 + + + + Account + Comptes + + 12 + + + + Muted at + Rendu silencieux + + 13 + + + + Unmute + Réactiver + + 23 + + My settings Mes paramètres @@ -2119,6 +2240,20 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé 18 + + Misc + Divers + + 24 + + + + Muted instances + Instances muettes + + 2 + + Ownership changes Changements de propriétaires @@ -2380,18 +2515,25 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au 3 + + Use WebTorrent to exchange parts of the video with others + Utilise WebTorrent pour échanger des bouts de vidéo avec les autres. + + 21 + + Automatically plays video Lire automatiquement les vidéos - 25 + 28 Save Enregistrer - 28 + 32 @@ -2549,10 +2691,10 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute Congratulations, the video behind will be imported! You can already add information about this video. - Félicitation, la vidéo : va être importée. Vous pouvez déjà ajouter les informations relatives à celle ci. + Félicitations, la vidéo : va être importée. Vous pouvez déjà ajouter les informations relatives à celle-ci. - 40 + 46 @@ -2580,14 +2722,14 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute Publish will be available when upload is finished Vous pourrez publier cette vidéo lorsque l'envoi sera terminé - 48 + 53 Publish Publier - 55 + 60 @@ -2624,9 +2766,9 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute Congratulations, the video will be imported with BitTorrent! You can already add information about this video. - Félicitation, la vidéo va être importée avec BitTorrent ! Vous pouvez déjà ajouter les informations relatives à celle ci. + Félicitations, la vidéo va être importée avec BitTorrent ! Vous pouvez déjà ajouter les informations relatives à celle-ci. - 48 + 53 @@ -2712,7 +2854,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute Tags could be used to suggest relevant recommendations.</br>Press Enter to add a new tag. - Les étiquettes peuvent être utilisées pour suggérer des recommendations plus pertinentes.</br>Appuyez sur Entrée pour ajouter une nouvelle étiquette. + Les étiquettes peuvent être utilisées pour suggérer des recommandations plus pertinentes.</br>Appuyez sur Entrée pour ajouter une nouvelle étiquette. 18 @@ -3015,8 +3157,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute The video is being imported, it will be available when the import is finished. - La vidéo est en cours d'importation, elle sera disponible quand l'importation sera fini. - + La vidéo est en cours d'importation, elle sera disponible quand l'importation sera finie. 11 @@ -3595,6 +3736,20 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Account unmuted by your instance. + Compte réactivé par votre instance. + + 1 + + + + Instance unmuted by your instance. + Instance réactivé par votre instance. + + 1 + + Comment updated. Commentaire mis à jour. @@ -3602,6 +3757,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Delete this report + Supprimer ce rapport + + 1 + + Update moderation comment Éditer le commentaire de modération @@ -3623,9 +3785,9 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Do you really want to delete this abuse? - Voulez-vous vraiment supprimer ce rapport ? + + Do you really want to delete this abuse report? + Voulez-vous vraiment supprimer ce rapport d'abus ? 1 @@ -3686,6 +3848,20 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Do you really want to unban users? + Voulez-vous vraiment rétablir utilisateur·ices ? + + 1 + + + + users unbanned. + utilisateur·ices rétablis. + + 1 + + You cannot delete root. Vous ne pouvez pas supprimer root. @@ -3693,6 +3869,34 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + If you remove these users, you will not be able to create others with the same username! + Si vous supprimez ces utilisateur·ices, vous ne pourrez plus en créer de nouveau avec le même nom ! + + 1 + + + + users deleted. + utilisateur·ices supprimé·e·s. + + 1 + + + + Account unmuted. + Compte réactivé. + + 1 + + + + Instance unmuted. + Instance réactivée. + + 1 + + Ownership accepted Changement de propriété accepté @@ -3770,6 +3974,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + This name already exists on this instance. + Ce nom existe déjà sur cette instance. + + 1 + + Create Créer @@ -3814,7 +4025,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute videos deleted. - videos supprimées. + vidéos supprimées. 1 @@ -3903,6 +4114,97 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Subscribe to the account + S'abonner à ce compte. + + 1 + + + + Focus the search bar + Focus sur la barre de recherche. + + 1 + + + + Toggle the left menu + (Dés)activer le menu de gauche. + + 1 + + + + Go to the videos overview page + Aller sur la page de vue d'ensemble des vidéos. + + 1 + + + + Go to the trending videos page + Aller sur la page des Tendances. + + 1 + + + + Go to the recently added videos page + Aller sur la page des vidéos récemment ajoutées. + + 1 + + + + Go to the local videos page + Aller sur la page des vidéos locales. + + 1 + + + + Go to the videos upload page + Aller sur la page de téléversement de vidéo. + + 1 + + + + Toggle Dark theme + (Dés)activer le thème sombre + + 1 + + + + Go to my subscriptions + Aller voir mes abonnements. + + 1 + + + + Go to my videos + Aller voir mes vidéos. + + 1 + + + + Go to my imports + Aller voir mes importations de vidéos. + + 1 + + + + Go to my channels + Aller voir mes chaînes. + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -3956,7 +4258,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute An email with the reset password instructions will be sent to . - Un email avec les instructions de changement de mot de passe à été envoyé à . + Un email avec les instructions de changement de mot de passe a été envoyé à . 1 @@ -4173,7 +4475,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute Confirmation of the password is required. - La confirmation du mot de passe est requis. + La confirmation du mot de passe est requise. 1 @@ -4297,9 +4599,9 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Description cannot be more than 250 characters long. - La description ne peut pas faire plus de 250 caractères. + + Description cannot be more than 1000 characters long. + La description ne peut pas faire plus de 1000 caractères de long. 1 @@ -4409,6 +4711,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + You can only transfer ownership to a local account + Vous ne pouvez transférer la propriété que sur un compte local. + + 1 + + Name is required. Le nom est requis. @@ -4437,13 +4746,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Description cannot be more than 500 characters long. - La description ne peut pas dépasser 500 caractères. - - 1 - - Support text must be at least 3 characters long. Le texte de soutien doit être composé d'au moins 3 caractères. @@ -4451,9 +4753,9 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Support text cannot be more than 500 characters long. - Le texte de soutien ne peut pas dépasser 500 caractères. + + Support text cannot be more than 1000 characters long. + Ce texte de support ne peut pas faire plus de 1000 caractères de long. 1 @@ -4549,9 +4851,9 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Video support cannot be more than 500 characters long. - Le texte de soutien de la vidéo ne peut pas dépasser 500 caractères. + + Video support cannot be more than 1000 characters long. + Le texte de soutien de la vidéo ne peut pas dépasser 1000 caractères. 1 @@ -5081,6 +5383,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + users banned. + utilisateur·ices banni·e·s. + + 1 + + User banned. Utilisateur banni. @@ -5116,6 +5425,104 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Account muted. + Comptes muets. + + 1 + + + + Instance muted. + Instance muette. + + 1 + + + + Account muted by the instance. + Compte rendue muet par votre instance. + + 1 + + + + Account unmuted by the instance. + Compte réactivé par votre instance. + + 1 + + + + Instance muted by the instance. + Instance rendue muette par votre instance. + + 1 + + + + Instance unmuted by the instance. + Instance réactivée par votre instance. + + 1 + + + + Mute this account + Rend muet ce compte. + + 1 + + + + Unmute this account + Réactive ce compte. + + 1 + + + + Mute the instance + Rend muet cette instance + + 1 + + + + Unmute the instance + Réactive cette instance. + + 1 + + + + Mute this account by your instance + Rendre muet ce compte pour votre instance. + + 1 + + + + Unmute this account by your instance + Réactiver ce compte pour votre instance. + + 1 + + + + Mute the instance by your instance + Rendre muette cette instance pour votre instance. + + 1 + + + + Unmute the instance by your instance + Réactiver cette instance pour votre instance. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La requête est trop volumineuse pour le serveur. Merci de contacter un administrateur afin d'augmenter la taille limite acceptée par celui-ci. @@ -5200,27 +5607,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 - - Welcome - Bienvenue - - 1 - - - - Please check your email to verify your account and complete signup. - Merci de relever votre courriel afin de vérifier votre compte et compléter votre inscription. - - 1 - - - - Registration for complete. - Enregistrement pour complété. - - 1 - - Video to import updated. Les vidéos à importer ont été mises à jour @@ -5333,6 +5719,20 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute 1 + + Like the video + J'aime cette vidéo. + + 1 + + + + Dislike the video + Je n'aime pas cette vidéo. + + 1 + + Do you really want to delete this video? Êtes-vous bien sûr·e de vouloir supprimer cette vidéo ? diff --git a/client/src/locale/target/angular_gl_ES.xml b/client/src/locale/target/angular_gl_ES.xml index 8ed944577..e2695304b 100644 --- a/client/src/locale/target/angular_gl_ES.xml +++ b/client/src/locale/target/angular_gl_ES.xml @@ -198,13 +198,6 @@ 8 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Lin e acepto os <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Termos</a> de esta instancia - - 54 - - Signup Abrir conta @@ -663,19 +656,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube só está en fase beta, e quere proporcionar as mellores contramedidas posibles para cando a versión estable sexa publicada. - Por agora, queremos probar diferentes ideas en relación a este asunto: - - - 85 - - Set a limit to the number of peers sent by the tracker Establecer un límite ao número de pares enviados polo rastrexador @@ -834,14 +814,14 @@ Signup enabled Rexistro activado - 92 + 93 Signup limit Rexistro limitado - 101 + 105 @@ -855,35 +835,35 @@ Video import with a torrent file or a magnet URI enabled Importación de vídeo con un ficheiro torrent ou URI magnet activada - 120 + 127 Administrator Administración - 123 + 131 Admin email Correo-e da Admin - 126 + 134 Users Usuarias - 136 + 144 User default video quota Cota de vídeo por omisión para a usuaria - 139 + 147 @@ -897,133 +877,133 @@ Twitter Twitter - 170 + 178 Your Twitter username O seu alcume na Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indica a conta na Twitter para o sitio web ou plataforma para a cal o contido foi publicado. - 176 + 184 Instance whitelisted by Twitter Instancia na lista blanca por Twitter - 189 + 198 Services Servizos - 168 + 176 Transcoding Recodificando - 200 + 210 Transcoding enabled Recodificación activada - 204 + 215 If you disable transcoding, many videos from your users will not work! Si desactiva a recodificación moitos vídeos das súas usuarias non funcionarán! - 205 + 216 Transcoding threads Fíos de recodificación - 211 + 223 Resolution enabled Resolución activada - 227 + 239 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Algúns ficheiros non se federan (vista previa, comentarios). Recollémolos directamente desde a instancia de orixe e almacenámolos. - 238 + 249 Previews cache size Tamaño da caché de vista previa - 243 + 254 Video captions cache size Tamaño da caché de comentarios no vídeo - 254 + 265 Customizations Personalizacións - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Escribir código JavaScript directamente.<br />Exemplo: <pre>console.log('a miña instancia é tremenda');</pre> - 270 + 281 Advanced configuration Configuración avanzada - 197 + 207 Update configuration Actualizar configuración - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Semella que a configuración non é válida. Por favor busque os erros potenciais nas diferentes pestanas. - 315 + 326 diff --git a/client/src/locale/target/angular_it_IT.xml b/client/src/locale/target/angular_it_IT.xml index 38bfcf2eb..2f98b52dc 100644 --- a/client/src/locale/target/angular_it_IT.xml +++ b/client/src/locale/target/angular_it_IT.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + Non elencato + + 10 + + + + Private + Privato + + 11 + + - views - visualizzazioni @@ -386,6 +400,9 @@ A banned user will no longer be able to login. + + Un utente bannato non sara piu in grado di accedere. + 17 @@ -561,14 +578,7 @@ Example: jane_doe Esempio: jane_doe - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Ho letto e accetto i <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Termini</a> di questa istanza - - 54 + 17 @@ -582,7 +592,7 @@ Features found on this instance Funzionalità in questa istanza - 66 + 67 @@ -861,6 +871,13 @@ 94 + + Display unlisted and private videos + Mostra video privati e non elencati + + 11 + + No results. Nessun risultato. @@ -1073,6 +1090,10 @@ An HTTP request has to be sent on each tracker for each video to spy. If we want to spy all PeerTube's videos, we have to send as many requests as there are videos (so potentially a lot) + + È necessario inviare una richiesta HTTP ad ogni tracker per ogni video da spiare. + Per spiare ogni video su PeerTube si devono inviare tante richieste quanti video sono presenti sulla piattaforma (potenzialmente molti) + 33 @@ -1082,6 +1103,10 @@ For each request sent, the tracker returns random peers at a limited number. For instance, if there are 1000 peers in the swarm and the tracker sends only 20 peers for each request, there must be at least 50 requests sent to know every peers in the swarm + + Ad ogni richiesta inviata, il tracker risponde con un numero limitato di nodi casuali. + Per esempio, se 1000 nodi appartengono allo swarm (sciame) e il tracker restituisce solo 20 nodi a ogni richiesta, sono necessarie almeno 50 richieste per conoscere tutti i nodi dello swarm + 38 @@ -1198,19 +1223,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube è solamente in beta e vogliamo offrire le migliori contromisure possibili per il rilascio stabile. - Nel frattempo vogliamo testare varie idee in relazione a questo problema: - - - 85 - - Set a limit to the number of peers sent by the tracker Imporre un limite al numero di nodi inviati dal tracker @@ -1246,6 +1258,41 @@ 95 + + Banned + Bannato + + 12 + + + + Muted + Silenziato + + 13 + + + + Muted by your instance + Silenziato dalla tua istanza + + 14 + + + + Instance muted + Istanza silenziata + + 15 + + + + Instance muted by your instance + Istanza silenziata dalla tua istanza + + 16 + + subscribers iscritti @@ -1255,6 +1302,7 @@ Video channels + Canali video 31 @@ -1301,6 +1349,13 @@ 22 + + Default client route + Percorso predefinito del client + + 55 + + Videos Overview Panoramica dei video @@ -1357,25 +1412,32 @@ 12 + + Display + Mostra + + 13 + + Signup enabled Registrazione abilitata - 92 + 93 Signup requires email verification La registrazione richiede una verifica via email - 97 + 100 Signup limit Limite registrazioni - 101 + 105 @@ -1385,46 +1447,53 @@ 42 + + Video import with HTTP URL (i.e. YouTube) enabled + Importazione video con indirizzo HTTP (es. YouTube) abilitata + + 120 + + Video import with a torrent file or a magnet URI enabled Carica video con un file torrent o un URI magnete attivo - 120 + 127 Administrator Amministratore - 123 + 131 Admin email Email Amministratore - 126 + 134 Users Utenti - 136 + 144 User default video quota Quota standard per i video dell'utente - 139 + 147 User default daily upload limit Limite giornaliero per il caricamento - 153 + 161 @@ -1438,78 +1507,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Il tuo username Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indica l'account Twitter per il sito web o la piattaforma in cui il contenuto e' stato pubblicato. - 176 + 184 Instance whitelisted by Twitter Istanza inserita in white list da Twitter - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - - 190 + 198 Services Servizi - 168 + 176 Transcoding Trascrizione - 200 + 210 Transcoding enabled Trascrizione attivata - 204 + 215 If you disable transcoding, many videos from your users will not work! Se disatitvi la trascrizione, molti video dai tuoi utenti non funzioneranno. - 205 + 216 Transcoding threads Trascrizione thread - 211 + 223 Resolution enabled Risoluzione abilitata - 227 + 239 @@ -1524,48 +1585,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. + Alcuni file non sono federati (anteprime, sottotitoli). Li recuperiamo direttamente dall'istanza di origine e li mettiamo in cache. - 238 + 249 Previews cache size Dimensione del cache per la previsualizzazione - 243 + 254 Video captions cache size Dimensione - 254 + 265 Customizations Personalizzazioni - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Scrivi direttamente codice JavaScript .<br />Esempio: <pre>console.log('La mia istanza spacca!');</pre> - 270 + 281 @@ -1585,28 +1647,28 @@ </pre> - 286 + 297 Advanced configuration Configurazione avanzata - 197 + 207 Update configuration Aggiorna configurazione - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Sembra che la configurazione sia valida. Per favore cerca potenziali errori nelle altre tab - 315 + 326 @@ -1624,6 +1686,9 @@ Manage follows + + Gestisci le richieste di seguirti + 7 @@ -1672,10 +1737,20 @@ It seems that you are not on a HTTPS server. Your webserver needs to have TLS activated in order to follow servers. + + Sembra che tu non sia su un server HTTPS. Il tuo web server ha bisogno di avere TLS attivato per poter seguire altri servers. + 17 + + Filter... + Filtra... + + 27 + + ID ID @@ -1699,6 +1774,7 @@ State + Stato 10 @@ -1754,6 +1830,7 @@ Followers + Chi ti segue 9 @@ -1843,14 +1920,28 @@ 2 + + Batch actions + + 19 + + Username 40 + + (banned) + (bannato) + + 65 + + Go to the account page + Vai alla pagina dell'account 133 @@ -1859,7 +1950,7 @@ Ban reason: Motivo ban: - 82 + 92 @@ -1887,6 +1978,12 @@ 25 + + Reporter + + 8 + + Video Video @@ -1903,6 +2000,7 @@ Go to the account + Vai all'account 27 @@ -1944,6 +2042,7 @@ Sensitive + Sensibile 9 @@ -1957,6 +2056,7 @@ Blacklist reason: + motivo per essere in Blacklist: 41 @@ -1968,14 +2068,51 @@ 2 + + Video abuses + Abusi video + + 5 + + Blacklisted videos + Video in blacklist 7 + + Muted accounts + Account silenziati + + 2 + + + + Muted servers + Server silenziati + + 11 + + + + Account + Account + + 12 + + + + Unmute + Non silenziare più + + 23 + + My settings + Le mie impostazioni 3 @@ -2010,10 +2147,25 @@ My imports + Le mie importazioni 18 + + Misc + Altro + + 24 + + + + Muted instances + Istanze silenziate + + 2 + + Ownership changes Cambi di proprietario @@ -2044,12 +2196,14 @@ Danger zone + Zona pericolosa 18 Change ownership + Cambia proprietà 46 @@ -2088,6 +2242,7 @@ Blacklisted + In blacklist 22 @@ -2133,6 +2288,7 @@ Display name + Nome visualizzato 6 @@ -2144,6 +2300,20 @@ When you will upload a video in this channel, the video support field will be au 52 + + Target + Obiettivo + + 8 + + + + You don't have any subscriptions yet. + Non hai ancora nessun iscritto. + + 1 + + Created by Creato da @@ -2172,6 +2342,13 @@ When you will upload a video in this channel, the video support field will be au 9 + + Initiator + Iniziato da + + 13 + + Created @@ -2208,6 +2385,7 @@ When you will upload a video in this channel, the video support field will be au Refuse + Rifiuta 47 @@ -2219,6 +2397,13 @@ When you will upload a video in this channel, the video support field will be au 30 + + Current password + Password attuale + + 7 + + New password Nuova password @@ -2235,22 +2420,30 @@ When you will upload a video in this channel, the video support field will be au Default policy on videos containing sensitive content + Regole predefinite su video con contenuti sensibili 3 + + Use WebTorrent to exchange parts of the video with others + Usa WebTorrent per scambiare parti di video con gli altri + + 21 + + Automatically plays video Riproduci automaticamente video - 25 + 28 Save Salva - 28 + 32 @@ -2260,6 +2453,13 @@ When you will upload a video in this channel, the video support field will be au 27 + + subscribers + iscritti + + 10 + + Change the avatar Cambia avatar @@ -2274,6 +2474,13 @@ When you will upload a video in this channel, the video support field will be au 18 + + Once you delete your account, there is no going back. Please be certain. + Una volta eliminato il tuo account, non puoi più tornare indietro. Per favore sii certo di questo. + + 2 + + Delete your account Elimina il tuo account @@ -2314,12 +2521,16 @@ When you will upload a video in this channel, the video support field will be au Request email for account verification + + Richiedi email per verificare l'account + 2 Send verification email + Spedisci email di verifica 17 @@ -2377,8 +2588,18 @@ When you will upload a video in this channel, the video support field will be au Congratulations, the video behind will be imported! You can already add information about this video. + + Congratulazioni, il video presente all'indirizzo sarà importato! Puoi già aggiungere informazioni relative a questo video. + - 40 + 46 + + + + Update + Aggiorna + + 92 @@ -2388,17 +2609,25 @@ When you will upload a video in this channel, the video support field will be au 6 + + Scheduled + Programmato + + 25 + + Publish will be available when upload is finished + La pubblicazione sarà disponibile quando il caricamento sarà completato - 48 + 53 Publish Pubblica - 55 + 60 @@ -2408,8 +2637,16 @@ When you will upload a video in this channel, the video support field will be au 6 + + Or + O + + 11 + + Paste magnet URI + Incolla un magnet URI 14 @@ -2429,7 +2666,7 @@ When you will upload a video in this channel, the video support field will be au Congratulazioni, il video verrá importato con BitTorrent! Puoi già aggiungere informazioni relative a questo video. - 48 + 53 @@ -2519,6 +2756,20 @@ When you will upload a video in this channel, the video support field will be au 18 + + + Tag + + Etichetta + + 21 + + + + Enter a new tag + Inserisci una nuova etichetta + + 21 + + Video descriptions are truncated by default and require manual action to expand them. Le descrizioni dei video sono troncate di default e richiedono una azione manuale per espanderle. @@ -3204,13 +3455,6 @@ Altri video 1 - - Do you really want to delete this abuse? - Vuoi veramente eliminare questo/a abuso/molestia? - - 1 - - Abuse deleted. @@ -3871,13 +4115,6 @@ Altri video 1 - - Description cannot be more than 250 characters long. - La descrizione non deve superare 250 caratteri. - - 1 - - You must to agree with the instance terms in order to registering on it. Devi accettare le regole dell'istanza per registrarti. @@ -3983,13 +4220,6 @@ Altri video 1 - - Description cannot be more than 500 characters long. - La descrizione non deve superare 500 caratteri. - - 1 - - Comment is required. Un commento è necessario. @@ -4074,13 +4304,6 @@ Altri video 1 - - Video support cannot be more than 500 characters long. - Supporto video non può essere più lungo di 500 caratteri. - - 1 - - A date is required to schedule video update. La data è necessaria per programmare l'aggiornamento del video. @@ -4715,27 +4938,6 @@ Altri video 1 - - Welcome - Benvenuto - - 1 - - - - Please check your email to verify your account and complete signup. - Per favore controlla la tua email per verificare il tuo account e completare la registrazione. - - 1 - - - - Registration for complete. - Registrazione completata per . - - 1 - - Video to import updated. Video da importare aggiornato. @@ -4848,6 +5050,20 @@ Altri video 1 + + Like the video + Mi piace + + 1 + + + + Dislike the video + Non mi piace + + 1 + + Do you really want to delete this video? Sei sicuro di volere eliminare questo video ? @@ -4857,7 +5073,7 @@ Altri video likes / dislikes - amo / non amo + mi piace / non mi piace 1 diff --git a/client/src/locale/target/angular_ja_JP.xml b/client/src/locale/target/angular_ja_JP.xml index 6ea77a5d9..cb303ad3a 100644 --- a/client/src/locale/target/angular_ja_JP.xml +++ b/client/src/locale/target/angular_ja_JP.xml @@ -38,6 +38,20 @@ 27 + + Select month + 月を選択 + + 7 + + + + Select year + 年を選択 + + 16 + + «« «« @@ -96,7 +110,6 @@ % - % 6 @@ -208,7 +221,6 @@ (extensions: , max size: ) - (extensions: , 最大サイズ: </x id="INTERPOLATION_1" equiv-text="{{ maxFileSize | bytes }}"/>) 11 @@ -429,14 +441,7 @@ Example: jane_doe 例 jane_doe - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - このインスタンスの <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>利用規約</a> に同意する - - 54 + 17 @@ -791,21 +796,21 @@ Signup enabled サインアップが有効 - 92 + 93 Signup requires email verification サインアップには電子メールの確認が必要です - 97 + 100 Signup limit サインアップの制限 - 101 + 105 @@ -819,28 +824,28 @@ Video import with a torrent file or a magnet URI enabled Torrent ファイル または magnet リンクを使用して動画をインポートする - 120 + 127 Administrator 管理者 - 123 + 131 Admin email 管理者の電子メール - 126 + 134 Users ユーザー - 136 + 144 @@ -854,69 +859,69 @@ Twitter Twitter - 170 + 178 Your Twitter username あなたのTwitterユーザー名 - 173 + 181 Services サービス - 168 + 176 Transcoding トランスコード - 200 + 210 Transcoding enabled トランスコードが有効になっています - 204 + 215 Transcoding threads - 211 + 223 Customizations カスタマイズ - 264 + 275 JavaScript JavaScript - 267 + 278 Advanced configuration 高度な構成 - 197 + 207 Update configuration 設定を更新する - 314 + 325 @@ -1039,7 +1044,7 @@ Ban reason: 禁止理由: - 82 + 92 @@ -1253,7 +1258,7 @@ Save 貯める - 28 + 32 @@ -1309,7 +1314,7 @@ Publish 出す - 55 + 60 @@ -1883,13 +1888,6 @@ 1 - - Description cannot be more than 250 characters long. - 説明の長さは250文字を超えることはできません。 - - 1 - - Report reason is required. 報告理由が必要です。 @@ -1939,13 +1937,6 @@ 1 - - Description cannot be more than 500 characters long. - 説明の長さは500文字を超えることはできません。 - - 1 - - Comment is required. コメントは必須です。 @@ -2079,6 +2070,104 @@ 1 + + Sun + 日曜日 + + 1 + + + + Mon + 月曜日 + + 1 + + + + Tue + 火曜日 + + 1 + + + + Wed + 水曜日 + + 1 + + + + Thu + 木曜日 + + 1 + + + + Fri + 金曜日 + + 1 + + + + Sat + 土曜日 + + 1 + + + + Su + 日. + + 1 + + + + Mo + 月. + + 1 + + + + Tu + 火. + + 1 + + + + We + 水. + + 1 + + + + Th + 木. + + 1 + + + + Fr + 金. + + 1 + + + + Sa + 土. + + 1 + + January 1月 @@ -2352,16 +2441,30 @@ 1 - - Welcome - ようこそ + + Unsubscribed + 退会する + + 1 + + + + Only I can see this video + 私だけはこのビデオを見えます + + 1 + + + + Only people with the private link can see this video + プライベートリンクを持つユーザーのみがこのビデオを見えます 1 - - Please check your email to verify your account and complete signup. - あなたのメールアドレスを確認してあなたのアカウントを確認し、サインアップを完了してください。 + + Anyone can see this video + このビデオには、誰でも見えます 1 diff --git a/client/src/locale/target/angular_jbo.xml b/client/src/locale/target/angular_jbo.xml new file mode 100644 index 000000000..f05bc88c2 --- /dev/null +++ b/client/src/locale/target/angular_jbo.xml @@ -0,0 +1,1347 @@ + + + + + + + Close + mipri + + 2 + + + + Previous + lo prula'i + + 13 + + + + Next + lo bavla'i + + 17 + + + + Previous month + lo prula'ima'i + + 5 + + + + Next month + la bavla'ima'i + + 27 + + + + Select month + cuxna lo masti + + 7 + + + + Select year + cuxna lo nanca + + 16 + + + + «« + «« + + 7 + + + + First + lo pa moi + + 5 + + + + « + « + + 15 + + + + Previous + lo prula'i + + 13 + + + + » + » + + 29 + + + + Next + lo bavla'i + + 27 + + + + »» + »» + + 36 + + + + Last + lo ro moi + + 34 + + + + % + ce'i + + 6 + + + + Increment hours + zenba lo se cacra + + 9 + + + + Hours + lo se cacra + + 14 + + + + Decrement hours + jdika lo se cacra + + 19 + + + + Increment minutes + zenba lo se mentu + + 28 + + + + Minutes + lo se mentu + + 33 + + + + Decrement minutes + jdika lo se mentu + + 38 + + + + Increment seconds + zenba lo se snidu + + 47 + + + + Seconds + lo se snidu + + 52 + + + + Decrement seconds + jdika lo se snidu + + 57 + + + + Cancel + sisti + + 10 + + + + Unlisted + lo na'e se liste + + 10 + + + + Private + lo sivni + + 11 + + + + Delete + vimcu + + 15 + + + + Edit + galfi + + 1 + + + + Get help + sidju do + + 19 + + + + + Unsubscribe + + +sisti lo nu jersi pe'a + + 18 + + + + User + lo pilno + + 13 + + + + Email address + lo ve samymri + + 10 + + + + Send me an email to reset my password + samymri fi mi te zu'e lo nu galfi le mi japyvla + + 75 + + + + + Reset my password + + +galfi le mi japyvla + + 2 + + + + Reset my password + galfi le mi japyvla + + 29 + + + + + Create an account + + +zbasu lo pilno + + 3 + + + + Username + lo plicme + + 8 + + + + Example: jane_doe + .i zoi gy. jane_doe .gy. mupli + + 17 + + + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + .i li su'o pa xa jbetei mi .i ji'a mi tolpro fi <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>lo javni be fi le vi mupli</a> + + 55 + + + + results + lo te facki + + 5 + + + + + No results found + + +.i facki fi no da + + 28 + + + + subscribers + lo jersi pe'a + + 44 + + + + Change the language + galfi lo bangu + + 88 + + + + + My public profile + + +lo predatni be mi be'o poi gubni + + 18 + + + + + My account + + +lo mi pilno + + 22 + + + + + My videos + + +lo mi vidvi + + 26 + + + + Create an account + zbasu lo pilno + + 39 + + + + Videos + lo vidvi + + 24 + + + + Subscriptions + lo se jersi pe'a + + 47 + + + + Trending + lo cabna misno + + 57 + + + + Local + lo diklo + + 67 + + + + More + lo drata + + 72 + + + + About + lo datni + + 25 + + + + Search... + sisku + + 2 + + + + Upload + kibdu'a + + 9 + + + + Sort + porganzu + + 6 + + + + Published date + lo detri be lo nu co'a gubni + + 15 + + + + Duration + lo temci + + 24 + + + + Display sensitive content + viska lo ganvi poi te kajde + + 33 + + + + Category + lo klesi + + 164 + + + + Language + lo bangu + + 182 + + + + Filter + cuxselgre + + 94 + + + + No results. + .i facki fi no da + + 17 + + + + Instance + + 12 + + + + PeerTube + la .pirtub. + + 7 + + + + Description + lo ve skicu + + 27 + + + + + this instance provides unlimited space for the videos of its users. + + + .i le vi samtcise'u cu sabji lo na'e se jimte ke vidvi datni canlu lo pilno be sy. + + 31 + + + + + User registration is currently not allowed. + + + .i ca na'e curmi lo nu zbasu lo pilno + + 36 + + + + + About PeerTube + + lo datni be la .pirtub. + + 1 + + + + PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser. + .i la .pirtub. simxu jorne to la .aktIvitipyb. toi ke vidvi tivni ciste gi'e se zbaske lo su'u simxu benji to la .uebytorent. toi fo lo kibyca'o + + 6 + + + + P2P & Privacy + ni'o ni'o sau'e'u lo su'u simxu benji jo'u lo ka sivni + + 18 + + + + + PeerTube uses the BitTorrent protocol to share bandwidth between users. + This implies that your IP address is stored in the instance's BitTorrent tracker as long as you download or watch the video. + + + .i la .pirtub. pilno la .bitorent. noi ciste ku'o lo nu lo benji nilsutra cu fatri loi pilno + .i di'u nibli lo du'u le ciste pe la .bitorent. ge'u pe le samtcise'u cu vreji le do kibro judri ca lo nu do pu mo'u kibycpa lo vidvi gi'a catlu ri + + 20 + + + + What are the consequences? + ni'o ma jalge + + 25 + + + + + In theory, someone with enough technical skills could create a script that tracks which IP is downloading which video. + In practice, this is much more difficult because: + + + .i da'i lo banzu certu be lo zbaske cu ka'e sampla fi lo pu'u gau vreji lo kibro judri ku lo vidvi poi se kibycpa ri + .i da'i nai la'e di'e rinka lo nu la'e di'u mutce nandu .i tu'e + + 27 + + + + + An HTTP request has to be sent on each tracker for each video to spy. + If we want to spy all PeerTube's videos, we have to send as many requests as there are videos (so potentially a lot) + + + .i nitcu lo nu ro lo mipyzga cu benji ro lo ve cpedu be lo nu mipyzga pa lo vidvi + .i na ga mi djica lo nu mi mipyzga ro lo vidvi pe la .pirtub. gi vei ny. vidvi zo'u mi benji vei ny. lo cpedu to so'i la'a toi + + 33 + + + + + The IP address is a vague information : usually, it regularly changes and can represent many persons or entities + + + .i lo kibro judri cu smuvrici datni .i bo ri se galfi di'i gi'e ka'e judri so'i lo prenu ja zukyka'e + + 51 + + + + + The worst-case scenario of an average person spying on their friends is quite unlikely. + There are much more effective ways to get that kind of information. + + + .i la'a nai sai lo fadni prenu cu mipyzga lo pendo be ri + .i da noi mutce xagmau cu drata tadji lo'e nu cpacu le datni + + 62 + + + + How does PeerTube compare with YouTube? + ni'o karbi la .pirtub. la .iutub. fu ma + + 67 + + + + What can I do to limit the exposure of my IP address? + ni'o mi ka'e zukte ma lo nu jimte le mi kibro judri + + 75 + + + + What will be done to mitigate this problem? + ni'o ba zukte ma lo nu spuda le nabmi + + 83 + + + + Name + lo cmene + + 12 + + + + Short description + lo cmalu ve skicu + + 22 + + + + Local videos + lo diklo vidvi + + 61 + + + + Policy on videos containing sensitive content + loi javni be tu'a lo vidvi poi vasru lo ganvi poi te kajde + + 70 + + + + JavaScript + la .djavascript. + + 278 + + + + + Users + + +lo pilno + + 3 + + + + Sensitive + kajde fi lo ganvi + + 9 + + + + Account + lo pilno + + 12 + + + + My settings + lo mi se cuxna + + 3 + + + + My channels + lo mi te tivni + + 12 + + + + My videos + lo mi vidvi + + 14 + + + + My subscriptions + lo se jersi pe'a be mi + + 16 + + + + My imports + lo se nerbei be mi + + 18 + + + + Profile + lo predatni + + 8 + + + + Video settings + lo se cuxna pe lo vidvi + + 15 + + + + Create another video channel + zbasu lo drata ke vidvi te tivni + + 4 + + + + Go to the channel + klama le te tivni + + 10 + + + + Create a video channel + zbasu lo vidvi te tivni + + 6 + + + + Example: my_channel + .i zoi gy. my_channel .gy. mupli + + 15 + + + + Display name + lo cmene + + 6 + + + + You don't have any subscriptions yet. + .i do ca jersi pe'a no da + + 1 + + + + Change password + galfi lo japyvla + + 30 + + + + Current password + le ca japyvla + + 7 + + + + New password + le japyvla poi cnino + + 15 + + + + Confirm new password + ke'u le japyvla poi cnino + + 23 + + + + Default policy on videos containing sensitive content + loi zmiselcu'a javni be tu'a lo vidvi poi vasru lo ganvi poi te kajde + + 3 + + + + Use WebTorrent to exchange parts of the video with others + pilno la .uebytorent. lo nu lo pagbu be le vidvi cu fatri lo drata + + 21 + + + + Save + vreji + + 32 + + + + Update my profile + galfi le predatni be mi + + 27 + + + + Change the avatar + galfi le predatni pixra + + 15 + + + + Once you delete your account, there is no going back. Please be certain. + .i ba lo nu do vimcu le do pilno kei do na kakne lo nu xruti .i .e'o do birti ju'i + + 2 + + + + Delete your account + vimcu le do pilno + + 4 + + + + An error occurred. + .i pu srera + + 11 + + + + Support this channel + rupsra le vi te tivni + + 9 + + + + URL + lo urli + + 17 + + + + Channel + lo te tivni + + 39 + + + + Upload a file + kibdu'a lo datnyvei + + 10 + + + + Import with URL + nerbei fo lo se urli + + 17 + + + + Title + lo cmene + + 9 + + + + Tags + lo tcita + + 191 + + + + + Tag + jmina lo tcita + + 21 + + + + Enter a new tag + ciska lo tcita poi cnino + + 21 + + + + This video contains mature or explicit content + .i le vi vidvi cu vasru lo makcu ja cnixai ganvi + + 119 + + + + Enable video comments + lo nu pinka le vidvi cu cumki + + 125 + + + + Cancel create + co'u zbasu + + 169 + + + + Cancel deletion + co'u vimcu + + 177 + + + + Support + rupsra + + 69 + + + + Advanced settings + lo certu se cuxna + + 190 + + + + Download video + kibycpa le vidvi + + 3 + + + + Direct download + sirji kibycpa + + 27 + + + + Download + kibycpa + + 84 + + + + Share + fatri + + 74 + + + + Close + mipri + + 51 + + + + Like this video + zanru le vi vidvi + + 57 + + + + Dislike this video + to'e zanru le vi vidvi + + 64 + + + + Download the video + kibycpa le vidvi + + 83 + + + + Delete this video + vimcu le vi vidvi + + 103 + + + + Go the channel page + klama le papri pe le te tivni + + 123 + + + + Show more + viska lo zmadu + + 146 + + + + Show less + viska lo mleca + + 152 + + + + + Comments are disabled. + + + lo nu pinka na cumki + + + 63 + + + + Add comment... + jmina lo pinka + + 6 + + + + + Post comment + + + mrilu lo pinka + + + 20 + + + + + If you have an account on this instance, you can login: + + + .i do ponse lo pilno poi zvati le vi samtcise'u .i na ja do co'a ka'e cmisau + + + 32 + + + + login to comment + co'a cmisau te zu'e lo nu pinka + + 35 + + + + Reply + spuda + + 14 + + + + Error + .i srera + + 1 + + + + 100MB + pa no no lo megbivysamsle + + 1 + + + + 500MB + mu no no lo megbivysamsle + + 1 + + + + 1GB + pa lo gigbivysamsle + + 1 + + + + 5GB + mu lo gigbivysamsle + + 1 + + + + 20GB + re no lo gigbivysamsle + + 1 + + + + 50GB + mu no lo gigbivysamsle + + 1 + + + + 10MB + pa no lo megbivysamsle + + 1 + + + + 50MB + mu no lo megbivysamsle + + 1 + + + + 2GB + re lo gigbivysamsle + + 1 + + + + Follow new server(s) + jersi pe'a lo cnino samtcise'u + + 1 + + + + Follow request(s) sent! + .i mo'u mrilu lo jersi pe'a ve cpedu + + 1 + + + + Unfollow + co'u jersi pe'a + + 1 + + + + Password updated. + .i mo'u galfi lo japyvla + + 1 + + + + You current password is invalid. + le do ca japyvla cu to'e drani + + 1 + + + + Delete my account + vimcu le mi pilno + + 1 + + + + Your account is deleted. + .i mo'u le do pilno + + 1 + + + + Profile updated. + .i mo'u galfi le predatni + + 1 + + + + Avatar changed. + .i mo'u galfi le predatni pixra + + 1 + + + + Create + zbasu + + 1 + + + + Do you really want to delete ? It will delete all videos uploaded in this channel too. + .i .au ju'o pei do vimcu la'o ly. .ly. .i la'e di'u vimcu ro lo vidvi ji'a poi se kibdu'a fi le vi te tivni + + 1 + + + + Please type the name of the video channel to confirm + .i .e'o ko ciska le cmene be le vidvi te zu'e lo nu birti + + 1 + + + + Video channel deleted. + .i mo'u vimcu la'o ly. .ly. noi vidvi te tivni + + 1 + + + + Do you really want to delete videos? + .i .au ju'o pei do vimcu lo vidvi + + 1 + + + + videos deleted. + .i mo'u vimcu lo vidvi + + 1 + + + + Channels + lo te tivni + + 1 + + + + Video imports + lo vidvi poi se nerbei + + 1 + + + + Subscribe to the account + jersi pe'a le pilno + + 1 + + + + Toggle Dark theme + galfi lo ka lo jvina cu manku + + 1 + + + + Go to my subscriptions + klama lo se jersi pe'a be mi + + 1 + + + + Go to my videos + klama lo mi vidvi + + 1 + + + + Go to my imports + klama lo se nerbei be mi + + 1 + + + + Go to my channels + klama lo mi te tivni + + 1 + + + + Your password has been successfully reset! + .i snada lo nu mo'u galfi le do japyvla + + 1 + + + + \ No newline at end of file diff --git a/client/src/locale/target/angular_nl_NL.xml b/client/src/locale/target/angular_nl_NL.xml index 376ffd3ca..00cfcb954 100644 --- a/client/src/locale/target/angular_nl_NL.xml +++ b/client/src/locale/target/angular_nl_NL.xml @@ -622,42 +622,42 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge Signup enabled Registratie mogelijk - 92 + 93 Signup limit Registratielimiet - 101 + 105 Administrator Beheerder - 123 + 131 Admin email E-mail van beheerder - 126 + 134 Users Gebruikers - 136 + 144 User default video quota Standaard video-quotum voor gebruikers - 139 + 147 @@ -671,105 +671,105 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge Twitter Twitter - 170 + 178 Your Twitter username Je Twitter-gebruikersnaam - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Geeft het Twitter-account aan voor de website of het platform waarop de inhoud gepubliceerd werd. - 176 + 184 Instance whitelisted by Twitter Instantie ge-whitelist door Twitter - 189 + 198 Services Diensten - 168 + 176 Transcoding Transcoding - 200 + 210 Transcoding enabled Transcoding ingeschakeld - 204 + 215 If you disable transcoding, many videos from your users will not work! Als je transcoding niet inschakelt, zullen veel video's die je gebruikers uploaden niet overal werken! - 205 + 216 Transcoding threads Threads gebruikt voor transcoding - 211 + 223 Previews cache size Cachegrootte voor previews - 243 + 254 Customizations Aanpassingen - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Schrijf JavaScriptcode.<br />Voorbeeld: <pre>console.log('mijn instantie is fantastisch');</pre> - 270 + 281 Advanced configuration Geavanceerde configuratie - 197 + 207 Update configuration Updateconfiguratie - 314 + 325 @@ -1117,14 +1117,14 @@ Als je een video uploadt in dit kanaal, wordt deze tekst ingevuld in het "onders Automatically plays video - 25 + 28 Save Opslaan - 28 + 32 @@ -1189,14 +1189,14 @@ Als je een video uploadt in dit kanaal, wordt deze tekst ingevuld in het "onders Publish will be available when upload is finished Publiceren is mogelijk wanneer de upload voltooid is - 48 + 53 Publish Publiceren - 55 + 60 diff --git a/client/src/locale/target/angular_oc.xml b/client/src/locale/target/angular_oc.xml index 18f6527f9..c353ead7a 100644 --- a/client/src/locale/target/angular_oc.xml +++ b/client/src/locale/target/angular_oc.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + Pas listada + + 10 + + + + Private + Privada + + 11 + + - views - visualizacions @@ -582,14 +596,14 @@ Example: jane_doe Exemple : joan_do - 16 + 17 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Ai legit e soi d’acòrdi amb los <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Tèrmes</a> d’aquesta instància + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + Ai almens 16 ans e accepti las <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Conditions</a> d’aquesta instància - 54 + 55 @@ -603,7 +617,7 @@ Features found on this instance Foncionalitats trobadas dins aquesta instància - 66 + 67 @@ -624,6 +638,19 @@ 6 + + + Filters + + + + Filtres + + + + 16 + + No results found @@ -882,6 +909,13 @@ 94 + + Display unlisted and private videos + Mostrar las vidèos pas listadas e las privadas + + 11 + + No results. Cap de resultat @@ -1223,15 +1257,15 @@ 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: - PeerTube es pas qu’en beta e vòl donar las melhoras contra-mesuras possiblas d’aquí a la sortida de la version establa. - D’aquel temps, volèm ensajar diferentas idèas tocant aqueste problèma : - + PeerTube es a son començament e vòl fornir las melhoras responsas d’aquí la sortida de la version establa. + D’aquel temps, volèm ensajar diferentas idèas ligadas a aqueste problèma : + 85 @@ -1271,6 +1305,41 @@ 95 + + Banned + Fòrabandit + + 12 + + + + Muted + Muda + + 13 + + + + Muted by your instance + Muda per vòstra instància + + 14 + + + + Instance muted + Instància mudas + + 15 + + + + Instance muted by your instance + Instàncias mudas per vòstra instància + + 16 + + subscribers abonats @@ -1401,21 +1470,21 @@ Signup enabled Inscripcions activadas - 92 + 93 Signup requires email verification L’inscripcion demanda una verificacion d’adreça electronica - 97 + 100 Signup limit Limit d’inscripcions - 101 + 105 @@ -1425,46 +1494,53 @@ 42 + + Video import with HTTP URL (i.e. YouTube) enabled + Import vidèo amb URL HTTP (per exemple YouTube) activat + + 120 + + Video import with a torrent file or a magnet URI enabled Import de vidèos via un fichièr torretn o un magnet URI activat - 120 + 127 Administrator Administrator - 123 + 131 Admin email Adreça de l’admin - 126 + 134 Users Utilizaires - 136 + 144 User default video quota Quòta per defaut per utilizaire - 139 + 147 User default daily upload limit Quòta jornalièr de mandadís per defaut dels utilizaires - 153 + 161 @@ -1478,81 +1554,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Vòstre nom d’utilizaire Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indica lo compte Twitter del site o de la plataforma ont lo contengut foguèt publicat. - 176 + 184 Instance whitelisted by Twitter Instàncias en lista blanca per Twitter - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - Se vòstra instància es mesa en lista blanca per Twitter, un lector vidèo serà integrat pel fil Twitter sul partatge d’una vidèo PeerTube.<br /> - Se l’instància es pas en lista blanca, utilizam un imatge amb un ligam que mena a l’instància PeerTube.<br /><br /> - Clicatz aquesta bóstia, salvagardatz la configuracion e ensajatz amb l’URL d’una vidèo de vòstra instància (https://exemple.com/videos/watch/blabla) sus <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> per veire se vòstra instància es en lista blanca. - - 190 + 198 Services Servicis - 168 + 176 Transcoding Transcodatge - 200 + 210 Transcoding enabled Transcodatge activat - 204 + 215 If you disable transcoding, many videos from your users will not work! Se desactivatz lo transcodatge, un fum de vidèos de vòstres utilizaires foncionaràn pas ! - 205 + 216 Transcoding threads Transcodatge dels threads - 211 + 223 Resolution enabled Resolucion activada - 227 + 239 @@ -1567,49 +1632,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Qualques fichièrs son pas federats (apercebuts, legendas). Los recuperam de l’instància d’origina estant e los metèm en cache. - 238 + 249 Previews cache size Talha del cache d’apercebut - 243 + 254 Video captions cache size Talha del cache per las legendas de las vidèos - 254 + 265 Customizations Personalizacions - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Escrivètz dirèctament de JavaScript còdi.<br />Exemple : <pre>console.log('mon instància es tròp crana');</pre> - 270 + 281 @@ -1644,28 +1709,28 @@ </pre> - 286 + 297 Advanced configuration Configuracion avançada - 197 + 207 Update configuration Actualizar la configuracion - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Sembla que la configuracion es invalida. Mercés de cercar d’errors possiblas pels diferents onglets. - 315 + 326 @@ -1748,6 +1813,13 @@ 21 + + Filter... + Filtre.... + + 27 + + ID ID @@ -1922,6 +1994,13 @@ 2 + + Batch actions + Accions Batch + + 19 + + Username Nom d’utilizaire @@ -1929,6 +2008,13 @@ 40 + + (banned) + (fòrabandit) + + 65 + + Go to the account page Anar a la pagina del compte @@ -1940,7 +2026,7 @@ Ban reason: Rason del bandiment : - 82 + 92 @@ -2073,6 +2159,41 @@ 7 + + Muted accounts + Comptes muts + + 2 + + + + Muted servers + Servidors muts + + 11 + + + + Account + Compte + + 12 + + + + Muted at + Mut lo + + 13 + + + + Unmute + Restablir + + 23 + + My settings Mos paramètres @@ -2115,6 +2236,20 @@ 18 + + Misc + Divèrs + + 24 + + + + Muted instances + Instàncias mudas + + 2 + + Ownership changes Cambiaments de proprietats @@ -2375,18 +2510,25 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 3 + + Use WebTorrent to exchange parts of the video with others + Utilizar WebTorrent per escambiar de tròces de la vidèo amb d’autres + + 21 + + Automatically plays video Legir automaticament las vidèos - 25 + 28 Save Salvagardar - 28 + 32 @@ -2546,12 +2688,12 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Felicitacions, la vidèo darrièr serà importada ! Podètz ja ajustar las informacions tocant aquesta vidèo. - 40 + 46 Update - Actualizar + Mandadís 92 @@ -2574,14 +2716,14 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Publish will be available when upload is finished La publicacion serà possibla un còp lo mandadís acabat - 48 + 53 Publish Publicar - 55 + 60 @@ -2620,7 +2762,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Felicitacions, la vidèo serà importada via BitTorrent ! Podètz ja ajustar las informacions tocant aquesta vidèo. - 48 + 53 @@ -2632,7 +2774,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Upload - Actualizar + Mandadís 4 @@ -2762,7 +2904,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Wait transcoding before publishing the video - Esperatz lo transcodatge abans de publicar la vidèo + Esperar lo transcodatge abans de publicar la vidèo 130 @@ -2864,7 +3006,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Support - Sosténer + Sosten 69 @@ -2888,7 +3030,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Update - Actualizar + Modificar 2 @@ -3082,7 +3224,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Download the video - Telecargar la vidèo + Telecargar aquesta vidèo 83 @@ -3103,7 +3245,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Update this video - Enviar aquesta vidèo + Modificar aquesta vidèo 91 @@ -3589,6 +3731,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Account unmuted by your instance. + Lo compte es pas mai mut per vòstra instància. + + 1 + + + + Instance unmuted by your instance. + L’instància es pas mai muda per vòstra instància. + + 1 + + Comment updated. Comentari actualizat. @@ -3596,6 +3752,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Delete this report + Suprimir aqueste senhalament + + 1 + + Update moderation comment Actualizar lo comentari de moderacion @@ -3617,8 +3780,8 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - Do you really want to delete this abuse? + + Do you really want to delete this abuse report? Volètz vertadièrament suprimir aqueste senhalament ? 1 @@ -3680,6 +3843,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Do you really want to unban users? + Volètz vertadièrament reabilitar los utilizaires ? + + 1 + + + + users unbanned. + utilizaires reabilitats. + + 1 + + You cannot delete root. Podètz suprimir l’utilizaire root @@ -3687,6 +3864,34 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + If you remove these users, you will not be able to create others with the same username! + Se levatz aquestes utilizaires, poiretz pas ne crear d’autres amb lo meteis nom. + + 1 + + + + users deleted. + utilizaires suprimits. + + 1 + + + + Account unmuted. + Compte pas mai mut. + + 1 + + + + Instance unmuted. + L’instància es pas mai muda. + + 1 + + Ownership accepted Proprietat acceptada @@ -3764,6 +3969,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + This name already exists on this instance. + Aqueste nom existís ja sus aquesta instància. + + 1 + + Create Crear @@ -3897,6 +4109,97 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Subscribe to the account + S’abonar al compte + + 1 + + + + Focus the search bar + Centrar sus la barra de recèrca + + 1 + + + + Toggle the left menu + Plegar/Desplegar lo menú d’esquèrra + + 1 + + + + Go to the videos overview page + Anar a la pagina d’apercebut + + 1 + + + + Go to the trending videos page + Anar a la pagina de las vidèos tendéncia + + 1 + + + + Go to the recently added videos page + Anar als apondons recents + + 1 + + + + Go to the local videos page + Anar a la pagina de vidèos localas + + 1 + + + + Go to the videos upload page + Anar a la pagina per enviar de vidèos + + 1 + + + + Toggle Dark theme + Passar al tèma escur + + 1 + + + + Go to my subscriptions + Anar a mos abonaments + + 1 + + + + Go to my videos + Anar a mas vidèos + + 1 + + + + Go to my imports + Anar a mos imports + + 1 + + + + Go to my channels + Anar a ma cadena + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -3992,21 +4295,21 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto Short (< 4 min) - Cort (< 4 min) + Corta (< 4 min) 1 Long (> 10 min) - Long (> 10 min) + Longa (> 10 min) 1 Medium (4-10 min) - Mejan (4-10 min) + Mejana (4-10 min) 1 @@ -4291,9 +4594,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - Description cannot be more than 250 characters long. - La descripcion pòt pas conténer mai de 250 caractèrs. + + Description cannot be more than 1000 characters long. + La descripcion pòt pas conténer mai de 1000 caractèrs. 1 @@ -4403,6 +4706,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + You can only transfer ownership to a local account + Podètz pas que transferir la proprietat a un compte compte local + + 1 + + Name is required. Lo nom es requesit. @@ -4431,13 +4741,6 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - Description cannot be more than 500 characters long. - La descripcion pòt pas conténer mai de 500 caractèrs. - - 1 - - Support text must be at least 3 characters long. Lo tèxte de sosten deu almens conténer 3 caractèrs. @@ -4445,9 +4748,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - Support text cannot be more than 500 characters long. - Lo tèxte de sosten pòt pas conténer mai de 500 caractèrs. + + Support text cannot be more than 1000 characters long. + Lo tèxte de sosten pòt pas conténer mai de 1000 caractèrs. 1 @@ -4543,9 +4846,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - Video support cannot be more than 500 characters long. - Lo tèxte de sosten pòt pas conténer mai de 500 caractèrs. + + Video support cannot be more than 1000 characters long. + Lo tèxte de sosten pòt pas conténer mai de 1000 caractèrs. 1 @@ -5075,6 +5378,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + users banned. + utilizaires fòrabandits. + + 1 + + User banned. Utilizaire fòrabandit. @@ -5110,6 +5420,104 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Account muted. + Lo compte es mut. + + 1 + + + + Instance muted. + L’instància es muda. + + 1 + + + + Account muted by the instance. + Lo compte es ut per l’instància. + + 1 + + + + Account unmuted by the instance. + Compte pas mai mut per l’instància. + + 1 + + + + Instance muted by the instance. + L’instància es muda per l’instància. + + 1 + + + + Instance unmuted by the instance. + L’instància es pas mai muda per l’instància. + + 1 + + + + Mute this account + Silenciar aqueste compte + + 1 + + + + Unmute this account + Restablir aqueste compte + + 1 + + + + Mute the instance + Silenciar l’instància + + 1 + + + + Unmute the instance + Restablir l’instància + + 1 + + + + Mute this account by your instance + Silenciar aqueste compte per vòstra instància + + 1 + + + + Unmute this account by your instance + Restablir aqueste compte per vòstra instància + + 1 + + + + Mute the instance by your instance + Silenciar aquesta instància per la vòstra. + + 1 + + + + Unmute the instance by your instance + Restablir aquesta instància per la vòstra. + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. La requèsta es tròp granda pel servidor. Mercés de contactar l’administrator se volètz aumentar la talha limita. @@ -5194,27 +5602,6 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 - - Welcome - Benvengut - - 1 - - - - Please check your email to verify your account and complete signup. - Mercés de verificar vòstres messatges per verificar lo compte e completar l’inscripcion. - - 1 - - - - Registration for complete. - Inscripcions per acabadas. - - 1 - - Video to import updated. Vidèo d’importar actualizada @@ -5327,6 +5714,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Like the video + Aimar la vidèo + + 1 + + + + Dislike the video + Detestar la vidèo + + 1 + + Do you really want to delete this video? Volètz vertadièrament suprimir aquesta vidèo ? diff --git a/client/src/locale/target/angular_pl_PL.xml b/client/src/locale/target/angular_pl_PL.xml index 87c691c20..325dd86f9 100644 --- a/client/src/locale/target/angular_pl_PL.xml +++ b/client/src/locale/target/angular_pl_PL.xml @@ -441,14 +441,7 @@ Example: jane_doe Przykład: jane_doe - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Przeczytałem i zgadzam się z <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Regulaminem</a> tej instancji - - 54 + 17 @@ -1039,19 +1032,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube jest dopiero w fazie beta, zamierzamy dostarczyć najlepsze możliwe środki zaradcze wraz z wersją stabilną. - W międzyczasie, zamierzamy przetestować różne pomysły związane z tym problemem: - - - 85 - - Set a limit to the number of peers sent by the tracker Ustawienie maksymalnej liczby peerów wysłanych przez tracker @@ -1215,21 +1195,21 @@ Signup enabled Wymagana rejestracja - 92 + 93 Signup requires email verification Rejestracja wymaga weryfikacji emaila - 97 + 100 Signup limit Limit rejestracji - 101 + 105 @@ -1243,35 +1223,35 @@ Administrator Administrator - 123 + 131 Admin email E-mail administratora - 126 + 134 Users Użytkownicy - 136 + 144 User default video quota Domyślna powierzchnia na filmy dla użytkownika - 139 + 147 User default daily upload limit Domyślny limit dziennego wysyłania przez użytkownika - 153 + 161 @@ -1285,70 +1265,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Twoja nazwa użytkownika na Twitterze - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Oznacza konto Twittera dla strony lub platformy na której została opublikowana zawartość. - 176 + 184 Instance whitelisted by Twitter Instancja jest na białej liście Twittera - 189 + 198 Services Usługi - 168 + 176 Transcoding Transkodowanie - 200 + 210 Transcoding enabled Transkodowanie jest włączone - 204 + 215 If you disable transcoding, many videos from your users will not work! Jeżeli wyłączysz transkodowanie, wiele filmów od użytkowników może nie działać! - 205 + 216 Transcoding threads Wątki transkodowania - 211 + 223 Resolution enabled Włączono rozdzielczość - 227 + 239 @@ -1363,56 +1343,56 @@ - 233 + 244 Previews cache size Rozmiar pamięci podręcznej podglądu - 243 + 254 Customizations Dostosowywanie - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Wprowadź kod JavaScript.<br />Przykład: <pre>console.log('moja instancja jest świetna');</pre> - 270 + 281 Advanced configuration Zaawansowana konfiguracja - 197 + 207 Update configuration Aktualizuj konfigurację - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Wygląda na to, że konfiguracja jest nieprawidłowa. Poszukaj możliwych błędów w innych kartach. - 315 + 326 @@ -1922,14 +1902,14 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia Automatically plays video Automatycznie odtwarzaj filmy - 25 + 28 Save Zapisz - 28 + 32 @@ -2031,14 +2011,14 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia Publish will be available when upload is finished Opublikuj automatycznie po ukończeniu wysyłania - 48 + 53 Publish Opublikuj - 55 + 60 @@ -3276,13 +3256,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - Description cannot be more than 250 characters long. - Opis nie może zawierać więcej niż 250 znaków. - - 1 - - Report reason is required. Przyczyna zgłoszenia jest wymagana. @@ -3339,13 +3312,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - Description cannot be more than 500 characters long. - Opis nie może być dłuższy niż 500 znaków. - - 1 - - Support text must be at least 3 characters long. Tekst o wsparciu musi zawierać przynajmniej 3 znaki. @@ -3353,13 +3319,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - Support text cannot be more than 500 characters long. - Tekst o wsparciu nie może być dłuższy niż 500 znaków. - - 1 - - Comment is required. Komentarz jest wymagany. @@ -3450,12 +3409,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - Video support cannot be more than 500 characters long. - - 1 - - A date is required to schedule video update. Data jest wymagana, aby zaplanować aktualizację filmu. @@ -4037,20 +3990,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia 1 - - Welcome - Witamy - - 1 - - - - Registration for complete. - Pomyślnie zarejestrowano . - - 1 - - But associated data (tags, description...) will be lost, are you sure you want to leave this page? Powiązane dane (tagi, opis…) zostaną utracone, czy na pewno chcesz opuścić tą stronę? diff --git a/client/src/locale/target/angular_pt_BR.xml b/client/src/locale/target/angular_pt_BR.xml index 390fc0f9a..71aeac8d5 100644 --- a/client/src/locale/target/angular_pt_BR.xml +++ b/client/src/locale/target/angular_pt_BR.xml @@ -469,14 +469,7 @@ Example: jane_doe Exemplo: jane_doe - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Eu li e concordo com os <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Termos</a> desta instância - - 54 + 17 @@ -490,7 +483,7 @@ Features found on this instance Recursos disponíveis nesta instância - 66 + 67 @@ -1096,19 +1089,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube está apenas em versão beta, e deseja entregar as melhores contramedidas possíveis enquanto a versão estável é disponibilizada. - Enquanto isso, queremos testar diferentes ideias relacionadas a essa questão: - - - 85 - - Set a limit to the number of peers sent by the tracker Defina um limite para o número de pares enviados pelo rastreador @@ -1274,21 +1254,21 @@ Signup enabled Inscrição permitida - 92 + 93 Signup requires email verification Inscrição requer verificação de email - 97 + 100 Signup limit Limite de inscrições - 101 + 105 @@ -1302,42 +1282,42 @@ Video import with a torrent file or a magnet URI enabled Importação de vídeo com um arquivo torrent ou URI magnética habilitada - 120 + 127 Administrator Administrador - 123 + 131 Admin email Email de administrador - 126 + 134 Users Usuários - 136 + 144 User default video quota Cota padrão de vídeos do usuário - 139 + 147 User default daily upload limit Padrão de limite diário de upload - 153 + 161 @@ -1351,81 +1331,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Seu nome de usuário no Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Indica a conta Twitter do sítio web ou plataforma em que o conteúdo foi publicado. - 176 + 184 Instance whitelisted by Twitter Instância listada como permitida pelo Twitter - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - Se a sua instância estiver na lista branca do Twitter, um player de vídeo será adicionado ao feed do Twitter ao compartilhar um vídeo do PeerTube.<br /> - Se a instância não estiver na lista branca, nós utilizado um card com uma imagem de link que irá redirecionar para sua instância de PeerTube.<br /><br /> - Selecione este checkbox, salve a configuração e teste com uma URL de vídeo de sua instância (https://example.com/videos/watch/blabla) em <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> para ver se sua instância está na lista branca. - - 190 + 198 Services Serviços - 168 + 176 Transcoding Transcodificação - 200 + 210 Transcoding enabled Transcodificação ativada - 204 + 215 If you disable transcoding, many videos from your users will not work! Se você desativar a transcodificação, muitos vídeos dos seus usuários não funcionarão! - 205 + 216 Transcoding threads Threads de transcodificação - 211 + 223 Resolution enabled Resolução habilitada - 227 + 239 @@ -1440,49 +1409,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Alguns arquivos não são federados (pré-visualizações, legendas ocultas). Nós as obtivemos diretamente da instância de origem e a colocamos em cache. - 238 + 249 Previews cache size Tamanho do cache de pré-visualizações - 243 + 254 Video captions cache size Tamanho do cache de legendas ocultas de vídeos - 254 + 265 Customizations Personalizações - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Escreva diretamente código JavaScript.<br />Exemplo: <pre>console.log('minha instância é demais');</pre> - 270 + 281 @@ -1517,28 +1486,28 @@ </pre> - 286 + 297 Advanced configuration Configurações avançadas - 197 + 207 Update configuration Atualizar configuração - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Aparentemente a configuração está valida. Por favor procure potenciais erros nas diferentes abas. - 315 + 326 @@ -1792,7 +1761,7 @@ Ban reason: Motivo do banimento: - 82 + 92 @@ -2218,14 +2187,14 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen Automatically plays video Reproduzir vídeo automaticamente - 25 + 28 Save Salvar - 28 + 32 @@ -2378,7 +2347,7 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen Meus parabéns! O vídeo sob será importado! Você já pode adicionar informações sobre esse vídeo. - 40 + 46 @@ -2399,14 +2368,14 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen Publish will be available when upload is finished A publicação estará disponível quando o envio terminar - 48 + 53 Publish Publicar - 55 + 60 @@ -2438,7 +2407,7 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen Meus parabéns! O vídeo será importado com BitTorrent! Você já pode adicionar informações sobre esse vídeo. - 48 + 53 @@ -3212,13 +3181,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Do you really want to delete this abuse? - Você realmente deseja excluir este abuso? - - 1 - - Abuse deleted. Abuso deletado. @@ -3872,13 +3834,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Description cannot be more than 250 characters long. - Descrição não pode ter mais que 250 caracteres. - - 1 - - You must to agree with the instance terms in order to registering on it. Você deve concordar com os termos da instância para se registrar nela. @@ -4012,13 +3967,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Description cannot be more than 500 characters long. - Descrição não pode ter mais que 500 caracteres. - - 1 - - Support text must be at least 3 characters long. Texto de apoio deve ter pelo menos 3 caracteres. @@ -4026,13 +3974,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Support text cannot be more than 500 characters long. - Texto de apoio não pode ter mais que 500 caracteres. - - 1 - - Comment is required. Comentário é necessário. @@ -4124,13 +4065,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Video support cannot be more than 500 characters long. - Apoio ao vídeo não pode ter mais que 500 caracteres. - - 1 - - A date is required to schedule video update. Uma data é necessária para agendar uma atualização de vídeo. @@ -4761,27 +4695,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen 1 - - Welcome - Bem vindo - - 1 - - - - Please check your email to verify your account and complete signup. - Por favor cheque seu email para verificar sua conta e completar o registro. - - 1 - - - - Registration for complete. - Registro para concluído. - - 1 - - Video to import updated. Vídeo para importar atualizado. diff --git a/client/src/locale/target/angular_ru_RU.xml b/client/src/locale/target/angular_ru_RU.xml index cc525f605..db2a690d5 100644 --- a/client/src/locale/target/angular_ru_RU.xml +++ b/client/src/locale/target/angular_ru_RU.xml @@ -455,14 +455,7 @@ Example: jane_doe Пример: иванов_иван - 16 - - - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Я прочел и согласен с <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Условиями пользования</a> этого сервера - - 54 + 17 @@ -476,7 +469,7 @@ Features found on this instance функциональные возможности сервера - 66 + 67 @@ -1082,19 +1075,6 @@ 83 - - - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. - In the meantime, we want to test different ideas related to this issue: - - - PeerTube есть только в beta версии, и хочет предоставить лучшие возможные решения в момент выхода постоянной версии. - Пока мы тестируем множество идей, чтоб решить эту проблему: - - - 85 - - Set a limit to the number of peers sent by the tracker Установить лимит на количество партнеров отправленых трекером @@ -1260,21 +1240,21 @@ Signup enabled Регистрация активирована - 92 + 93 Signup requires email verification Для регистрации нужно подтвержение через электронную почту - 97 + 100 Signup limit Лимит регистрации - 101 + 105 @@ -1288,42 +1268,42 @@ Video import with a torrent file or a magnet URI enabled Импорт видео с помощью файла торент или magnet URI активирован - 120 + 127 Administrator Администратор - 123 + 131 Admin email Электронная почта администратора - 126 + 134 Users Пользователи - 136 + 144 User default video quota Квота видео по умолчанию на одного пользователя - 139 + 147 User default daily upload limit Ежедневный лимит загрузок по умолчанию на одгого пользователя - 153 + 161 @@ -1337,81 +1317,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Ваше имя пользователя в Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Показывает учетнаю запись в Twitter сайта или платформы с которых было опубликован контент - 176 + 184 Instance whitelisted by Twitter Сервер имеет аккредитацию Twitter - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - Если Ваш сервер имеет аккредитацию Twitter, проигрыватель видео будет вставлен в ленту Twitter во время загрузки видео на PeerTube .<br /> - Если сервер не аккредитирован, мы используем ссылку в виде картинки который вас перенаправит Вас на сервер PeerTube.<br /><br /> - Отметте галочкой это окошко, сохраните конфигурацию и попробуйте с URL видео на вашем сервере (https://example.com/videos/watch/blabla) на <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> чтоб узнать имеет ли аккредитацию Ваш сервер. - - 190 + 198 Services Сервис - 168 + 176 Transcoding Транскодирование - 200 + 210 Transcoding enabled Транскодирование активировано - 204 + 215 If you disable transcoding, many videos from your users will not work! Если вы дезактивируете транскодирование, многие видео пользователей перестанут работать - 205 + 216 Transcoding threads Количество threads для транскодирования - 211 + 223 Resolution enabled Разрешение активировано - 227 + 239 @@ -1426,49 +1395,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Некоторые миниатюры не федератные (миниатюры, названия). Они взяты непосредственно из их оригинального сервера и мы их не храним. - 238 + 249 Previews cache size Размер кеша предпросмотра - 243 + 254 Video captions cache size Размер кеша предпросмотра надписей - 254 + 265 Customizations Персонализация - 264 + 275 JavaScript Ява Скрипт - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Напишите непосредственно код Ява Скрипта .<br />Пример : <pre>console.log('мой сервер крут');</pre> - 270 + 281 @@ -1503,28 +1472,28 @@ </pre> - 286 + 297 Advanced configuration Продвинутая конфигурация - 197 + 207 Update configuration Обновить конфигурацию - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Конфигурация неудачная. Пожалуйста, найдите потенциальную ошибку в разных окнах. - 315 + 326 @@ -1771,7 +1740,7 @@ Ban reason: Причины бана: - 82 + 92 @@ -2197,14 +2166,14 @@ When you will upload a video in this channel, the video support field will be au Automatically plays video Воспроизводить автоматически видео - 25 + 28 Save Сохранить - 28 + 32 diff --git a/client/src/locale/target/angular_sv_SE.xml b/client/src/locale/target/angular_sv_SE.xml index 1f15e7290..7b4553359 100644 --- a/client/src/locale/target/angular_sv_SE.xml +++ b/client/src/locale/target/angular_sv_SE.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + Olistad + + 10 + + + + Private + Privat + + 11 + + - views - visningar @@ -584,14 +598,14 @@ Example: jane_doe Exempel: anna_johansson - 16 + 17 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - Jag har läst och godkänner den här <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>instansens villkor</a> + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + Jag är 16 år eller äldre och godkänner den här instansens <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>villkor</a> - 54 + 55 @@ -605,7 +619,7 @@ Features found on this instance Funktioner på den här instansen - 66 + 67 @@ -626,6 +640,19 @@ 6 + + + Filters + + + + Filter + + + + 16 + + No results found @@ -884,6 +911,13 @@ 94 + + Display unlisted and private videos + Visa olistade och privata videor + + 11 + + No results. Inga resultat. @@ -1229,14 +1263,14 @@ 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: - PeerTube är just nu bara i betaversionen och vill leverera den bästa lösningen när den stabila versionen lanseras. - Tills dess vill vi testa några olika idéer i den här frågan: + PeerTube står i ännu startgroparna och siktar på att kunna leverera de bästa lösningarna när den stabila versionen släpps. + Under tiden vill vi testa några olika idéer som har med det här att göra: 85 @@ -1277,6 +1311,37 @@ 95 + + Banned + Blockerad + + 12 + + + + Muted + + 13 + + + + Muted by your instance + + 14 + + + + Instance muted + + 15 + + + + Instance muted by your instance + + 16 + + subscribers prenumeranter @@ -1407,21 +1472,21 @@ Signup enabled Registrering aktiverad - 92 + 93 Signup requires email verification Registrering kräver e-postverifikation - 97 + 100 Signup limit Registreringsgräns - 101 + 105 @@ -1431,46 +1496,53 @@ 42 + + Video import with HTTP URL (i.e. YouTube) enabled + Videoimport med HTTP-URL tillåten (t.ex. YouTube) + + 120 + + Video import with a torrent file or a magnet URI enabled Videoimport med torrentfil eller magnet-URI är tillåten - 120 + 127 Administrator Administratör - 123 + 131 Admin email Administratörens e-postadress - 126 + 134 Users Användare - 136 + 144 User default video quota Standardkvot för användares videor - 139 + 147 User default daily upload limit Standarduppladdningsgräns för användare - 153 + 161 @@ -1484,81 +1556,70 @@ Twitter Twitter - 170 + 178 Your Twitter username Ditt användarnamn på Twitter - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. Webbplatsens eller plattformens Twitterkonto, på vilken innehållet publicerades. - 176 + 184 Instance whitelisted by Twitter Instans vitlistad av Twitter - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - Om din instans är vitlistad av Twitter kommer en videospelare bäddas in i Twitterflödet när en PeerTube-video delas.<br /> - Om instansen inte är vitlistad använder vi en länkad bild som omdirigerar till din PeerTube-instans.<br /><br /> - Kryssa i den här rutan, spara inställningarna and testa med en videolänk från din instans (https://example.com/videos/watch/blabla) på <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> för att se om din instans är vitlistad. - - 190 + 198 Services Tjänster - 168 + 176 Transcoding Omkodning - 200 + 210 Transcoding enabled Omkodning aktiverad - 204 + 215 If you disable transcoding, many videos from your users will not work! Om du avaktiverar omkodning, kommer många av dina användares videor inte fungera! - 205 + 216 Transcoding threads Omkodningstrådar - 211 + 223 Resolution enabled Upplösningen tillåten - 227 + 239 @@ -1573,49 +1634,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. Vissa filer är inte federerade (till exempel förhandsvisningar och undertexter). Vi kan hämta dem direkt från ursprungsinstansen och cachelagra dem. - 238 + 249 Previews cache size Förhandsvisningens cachestorlek - 243 + 254 Video captions cache size Undertexternas cachestorlek - 254 + 265 Customizations Anpassningar - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> Skriv direkt med JavaScript-kod.<br />Exempel: <pre>console.log('min instans är fantastisk');</pre> - 270 + 281 @@ -1650,28 +1711,28 @@ </pre> - 286 + 297 Advanced configuration Avancerade inställningar - 197 + 207 Update configuration Uppdatera inställningar - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. Det verkar som att konfigurationen inte stämmer. Sök efter eventuella fel i de olika flikarna. - 315 + 326 @@ -1749,6 +1810,13 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 21 + + Filter... + Filtrera … + + 27 + + ID ID @@ -1923,6 +1991,13 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 2 + + Batch actions + Massåtgärder + + 19 + + Username Användarnamn @@ -1930,6 +2005,13 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 40 + + (banned) + (blockerad) + + 65 + + Go to the account page Gå till kontots sida @@ -1941,7 +2023,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a Ban reason: Blockeringsanledning: - 82 + 92 @@ -2074,6 +2156,37 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 7 + + Muted accounts + + 2 + + + + Muted servers + + 11 + + + + Account + Konto + + 12 + + + + Muted at + + 13 + + + + Unmute + + 23 + + My settings Mina inställningar @@ -2116,6 +2229,19 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a 18 + + Misc + Diverse + + 24 + + + + Muted instances + + 2 + + Ownership changes Ändringar av ägarskap @@ -2377,18 +2503,25 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 3 + + Use WebTorrent to exchange parts of the video with others + Använd WebTorrent för att utbyta delar av videon med andra + + 21 + + Automatically plays video Spela videor automatiskt - 25 + 28 Save Spara - 28 + 32 @@ -2548,7 +2681,7 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Grattis, video bakom kommer importeras! Du kan redan nu lägga till information om videon. - 40 + 46 @@ -2576,14 +2709,14 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Publish will be available when upload is finished Du kan publicera när uppladdningen är klar - 48 + 53 Publish Publisera - 55 + 60 @@ -2622,7 +2755,7 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Grattis, videon kommer importeras med BitTorrent! Du kan redan nu lägga till information om videon. - 48 + 53 @@ -3591,6 +3724,18 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Account unmuted by your instance. + + 1 + + + + Instance unmuted by your instance. + + 1 + + Comment updated. Kommentaren har uppdaterats. @@ -3598,6 +3743,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Delete this report + Radera den här anmälan + + 1 + + Update moderation comment Uppdatera moderationskommentar @@ -3619,9 +3771,9 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Do you really want to delete this abuse? - Vill du verkligen ta bort den här missbruksanmälan? + + Do you really want to delete this abuse report? + Vill du verkligen radera den här missbruksanmälan? 1 @@ -3682,6 +3834,20 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Do you really want to unban users? + Vill du verkligen avbryta blockeringen av användare? + + 1 + + + + users unbanned. + användare avblockerade. + + 1 + + You cannot delete root. Du kan inte radera root. @@ -3689,6 +3855,32 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + If you remove these users, you will not be able to create others with the same username! + Om du tar bort de här användarna kommer du inte kunna skapa nya med samma användarnamn! + + 1 + + + + users deleted. + användare borttagna. + + 1 + + + + Account unmuted. + + 1 + + + + Instance unmuted. + + 1 + + Ownership accepted Ägarskap accepterat @@ -3766,6 +3958,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + This name already exists on this instance. + Namnet finns redan på den här instansen. + + 1 + + Create Skapa @@ -3899,6 +4098,97 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Subscribe to the account + Prenumerera på kontot + + 1 + + + + Focus the search bar + Markera sökrutan + + 1 + + + + Toggle the left menu + Växla vänstermenyn + + 1 + + + + Go to the videos overview page + Gå till översiktssidan över videor + + 1 + + + + Go to the trending videos page + Gå till sidan med populära videor + + 1 + + + + Go to the recently added videos page + Gå till sidan med nyligen uppladdade videor + + 1 + + + + Go to the local videos page + Gå till sidan med lokala videor + + 1 + + + + Go to the videos upload page + Gå till sidan för videouppladdningar + + 1 + + + + Toggle Dark theme + Växla mörkt tema + + 1 + + + + Go to my subscriptions + Gå till mina prenumerationer + + 1 + + + + Go to my videos + Gå till mina videor + + 1 + + + + Go to my imports + Gå till mina importeringar + + 1 + + + + Go to my channels + Gå till mina kanaler + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -4293,9 +4583,9 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Description cannot be more than 250 characters long. - Beskrivningen får inte vara mer än 250 tecken lång. + + Description cannot be more than 1000 characters long. + Beskrivningen får inte vara mer än 1000 tecken lång. 1 @@ -4405,6 +4695,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + You can only transfer ownership to a local account + Du kan bara överföra ägarskapet till ett lokalt konto + + 1 + + Name is required. Namn måste uppges. @@ -4433,13 +4730,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Description cannot be more than 500 characters long. - Beskrivningen får inte vara mer än 500 tecken lång. - - 1 - - Support text must be at least 3 characters long. Supporttexten måste innehålla minst tre tecken. @@ -4447,9 +4737,9 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Support text cannot be more than 500 characters long. - Suporttexten får inte vara mer än 500 tecken lång. + + Support text cannot be more than 1000 characters long. + Supporttexten får inte vara mer än 1000 tecken lång. 1 @@ -4463,14 +4753,14 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt Comment must be at least 2 characters long. - Kommentarer måste innehålla minst två tecken. + Kommentaren måste innehålla minst två tecken. 1 Comment cannot be more than 3000 characters long. - Kommentar får inte vara mer än 3000 tecken lång. + Kommentaren får inte vara mer än 3000 tecken lång. 1 @@ -4545,9 +4835,9 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Video support cannot be more than 500 characters long. - Videons supporttext får inte vara mer än 500 tecken lång. + + Video support cannot be more than 1000 characters long. + Videons supporttext får inte vara mer än 1000 tecken lång. 1 @@ -5077,6 +5367,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + users banned. + användare blockerade. + + 1 + + User banned. Användaren har blockerats. @@ -5112,6 +5409,90 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Account muted. + + 1 + + + + Instance muted. + + 1 + + + + Account muted by the instance. + + 1 + + + + Account unmuted by the instance. + + 1 + + + + Instance muted by the instance. + + 1 + + + + Instance unmuted by the instance. + + 1 + + + + Mute this account + + 1 + + + + Unmute this account + + 1 + + + + Mute the instance + + 1 + + + + Unmute the instance + + 1 + + + + Mute this account by your instance + + 1 + + + + Unmute this account by your instance + + 1 + + + + Mute the instance by your instance + + 1 + + + + Unmute the instance by your instance + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. Förfrågan är för stor för servern. Kontakta gärna din administratör om du vill öka storleksbegränsningen. @@ -5196,27 +5577,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 - - Welcome - Välkommen - - 1 - - - - Please check your email to verify your account and complete signup. - Kontrollera din e-post för att verifiera ditt konto och slutföra kontoregistreringen. - - 1 - - - - Registration for complete. - Registrering av slutförd. - - 1 - - Video to import updated. Videon att importera har uppdaterats. @@ -5329,6 +5689,20 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Like the video + Gilla videon + + 1 + + + + Dislike the video + Ogilla videon + + 1 + + Do you really want to delete this video? Vill du verkligen radera den här videon? diff --git a/client/src/locale/target/angular_ta.xml b/client/src/locale/target/angular_ta.xml new file mode 100644 index 000000000..35385cfdb --- /dev/null +++ b/client/src/locale/target/angular_ta.xml @@ -0,0 +1,514 @@ + + + + + + + Close + மூடு + + 2 + + + + Previous + முந்தைய + + 13 + + + + Next + அடுத்து + + 17 + + + + Previous month + முந்தைய மாதம் + + 5 + + + + Next month + அடுத்த மாதம் + + 27 + + + + Select month + மாதத்தை தேர்வு செய் + + 7 + + + + Select year + வருடத்தை தேர்வு செய் + + 16 + + + + «« + «« + + 7 + + + + First + முதல் + + 5 + + + + « + « + + 15 + + + + Previous + முந்தைய + + 13 + + + + » + » + + 29 + + + + Next + அடுத்து + + 27 + + + + »» + »» + + 36 + + + + Last + இறுதி + + 34 + + + + Minutes + நிமிடங்கள் + + 33 + + + + Seconds + நொடிகள் + + 52 + + + + Cancel + ரத்து செய் + + 10 + + + + Delete + அழித்திடு + + 15 + + + + Edit + தொகு + + 1 + + + + Get help + உதவி + + 19 + + + + + Unsubscribe + + + 18 + + + + Ban + ரத்து + + 3 + + + + Reason... + காரணம்... + + 11 + + + + Ban this user + இந்த பயணரை ரத்து செய் + + 25 + + + + + Login + + + உள்நுழை + + + 2 + + + + User + பயணர் + + 13 + + + + Password + கடவுச்சொல் + + 12 + + + + Login + உள்நுழை + + 38 + + + + Forgot your password + கடவுச்சொல் மறந்துவிட்டது + + 57 + + + + Email + மின்னஞ்சல் + + 8 + + + + Email address + மின்னஞ்சல் + + 10 + + + + Confirm password + கடவுச்சொல் உறுதிசெய் + + 19 + + + + Confirmed password + கடவுச்சொல் உறுதிசெய்யப்பட்டது + + 21 + + + + Example: jane_doe + உதாரணம்: மாரி_முத்து + + 17 + + + + Change the language + மொழியை மாற்று + + 88 + + + + + Log out + + + வெளியேறு + + + 30 + + + + Create an account + கணக்கை உருவாக்கு + + 39 + + + + Recently added + சமீபத்தியவை + + 62 + + + + More + மேலும் + + 72 + + + + About + எங்களைப் பற்றி + + 25 + + + + Search... + தேடு... + + 2 + + + + Upload + பதிவேற்று + + 9 + + + + Yes + ஆம் + + 37 + + + + No + இல்லை + + 42 + + + + Category + பிரிவு + + 164 + + + + Licence + உரிமம் + + 173 + + + + Language + மொழி + + 182 + + + + No results. + முடிவுகள் இல்லை. + + 17 + + + + PeerTube + PeerTube + + 7 + + + + What are the consequences? + பின்விளைவுகள் என்ன? + + 25 + + + + How does PeerTube compare with YouTube? + PeerTube-ஐ Youtube-உடன் எப்படு ஒப்பிடுவது? + + 67 + + + + Name + பெயர் + + 12 + + + + Display + காண்பி + + 13 + + + + Users + பயணர்கள் + + 144 + + + + Twitter + Twitter + + 178 + + + + Your Twitter username + உங்கள் Twitter பயணர்பெயர் + + 181 + + + + Services + சேவைகள் + + 176 + + + + JavaScript + JavaScript + + 278 + + + + + Users + + + பயணர்கள் + + + 3 + + + + + Jobs + + + வேலைகள் + + + 15 + + + + ID + ID + + 18 + + + + Score + மதிப்பெண் + + 17 + + + + Accepted + ஏற்றுக்கொள்ளப்பட்டது + + 32 + + + + Following + பின்பற்றுபவை + + 5 + + + + Follow + பின்பற்று + + 7 + + + + Followers + பின்பற்றுபவர்கள் + + 9 + + + + john + john + + 10 + + + + mail@example.com + mail@example.com + + 21 + + + + Users list + பயணர்கள் பட்டியல் + + 2 + + + + \ No newline at end of file diff --git a/client/src/locale/target/angular_zh_Hans_CN.xml b/client/src/locale/target/angular_zh_Hans_CN.xml index e47d99288..c8ed702f8 100644 --- a/client/src/locale/target/angular_zh_Hans_CN.xml +++ b/client/src/locale/target/angular_zh_Hans_CN.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + 不公开 + + 10 + + + + Private + 私享 + + 11 + + - views - 次观看 @@ -582,14 +596,14 @@ Example: jane_doe 示例:jane_doe - 16 + 17 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - 我已阅读并同意本实例的<a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>条款</a> + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + 我确认我已年满 16 岁并同意本实例的<a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>使用条款</a> - 54 + 55 @@ -603,7 +617,7 @@ Features found on this instance 本实例提供的功能 - 66 + 67 @@ -624,6 +638,19 @@ 6 + + + Filters + + + + 过滤器 + + + + 16 + + No results found @@ -882,6 +909,13 @@ 94 + + Display unlisted and private videos + 显示不公开和私享视频 + + 11 + + No results. 没有结果。 @@ -1225,13 +1259,13 @@ 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: - PeerTube 目前尚处于测试阶段,我们会努力在稳定版发布之前找到最好的反制策略。 + PeerTube 目前尚处于早期开发阶段,我们会努力在稳定版发布之前找到最好的反制策略。 目前,我们正在尝试如下方案: @@ -1273,6 +1307,41 @@ 95 + + Banned + 已封禁 + + 12 + + + + Muted + 已屏蔽 + + 13 + + + + Muted by your instance + 已被您的实例屏蔽 + + 14 + + + + Instance muted + 已屏蔽实例 + + 15 + + + + Instance muted by your instance + 已被您的实例屏蔽的实例 + + 16 + + subscribers 位订阅者 @@ -1403,21 +1472,21 @@ Signup enabled 开放注册 - 92 + 93 Signup requires email verification 注册需要验证电子邮件地址 - 97 + 100 Signup limit 注册限制 - 101 + 105 @@ -1427,46 +1496,53 @@ 42 + + Video import with HTTP URL (i.e. YouTube) enabled + 允许通过 HTTP URL(例如 YouTube)导入视频 + + 120 + + Video import with a torrent file or a magnet URI enabled 允许通过种子文件或磁力链导入视频 - 120 + 127 Administrator 管理员 - 123 + 131 Admin email 管理员电子邮件地址 - 126 + 134 Users 用户 - 136 + 144 User default video quota 用户默认视频存储空间大小 - 139 + 147 User default daily upload limit 用户默认单日上传限额 - 153 + 161 @@ -1480,81 +1556,70 @@ Twitter Twitter - 170 + 178 Your Twitter username 您的 Twitter 用户名 - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. 显示此内容所在的发布平台对应的 Twitter 帐户。 - 176 + 184 Instance whitelisted by Twitter 实例已进入 Twitter 白名单 - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - 如果您的实例进入了 Twitter 的白名单,则分享 PeerTube 视频时会在 Twitter 时间线上展示嵌入播放器。<br /> - 如果实例没有进入白名单,则会展示一个带图片的卡片链接,点击即可跳转至 PeerTube 实例播放。<br /><br /> - 您可以勾选此选项框,保存配置并在 <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> 使用您实例上的一个视频 URL(https://example.com/videos/watch/blabla)进行测试,以确定实例是否已进入白名单。 - - 190 + 198 Services 服务 - 168 + 176 Transcoding 转码 - 200 + 210 Transcoding enabled 启用转码 - 204 + 215 If you disable transcoding, many videos from your users will not work! 如果禁用转码,用户上传的视频很有可能无法正常播放! - 205 + 216 Transcoding threads 转码线程数 - 211 + 223 Resolution enabled 启用 分辨率 - 227 + 239 @@ -1569,49 +1634,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. 部分文件不会自动同步(如预览图、字幕)。我们会直接从源实例拉取并进行缓存。 - 238 + 249 Previews cache size 预览图缓存大小 - 243 + 254 Video captions cache size 视频字幕缓存大小 - 254 + 265 Customizations 自定义 - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> 在此处直接输入 JavaScript 代码。<br />示例:<pre>console.log('我的实例太棒了');</pre> - 270 + 281 @@ -1646,28 +1711,28 @@ </pre> - 286 + 297 Advanced configuration 高级设置 - 197 + 207 Update configuration 更新设置 - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. 设置信息不合法。请检查各选项卡中的设置是否存在错误。 - 315 + 326 @@ -1750,6 +1815,13 @@ 21 + + Filter... + 过滤器… + + 27 + + ID ID @@ -1924,6 +1996,13 @@ 2 + + Batch actions + 批量操作 + + 19 + + Username 用户名 @@ -1931,6 +2010,13 @@ 40 + + (banned) + (已封禁) + + 65 + + Go to the account page 转到帐户页面 @@ -1942,7 +2028,7 @@ Ban reason: 封禁理由: - 82 + 92 @@ -2075,6 +2161,41 @@ 7 + + Muted accounts + 已屏蔽的帐户 + + 2 + + + + Muted servers + 已屏蔽的实例 + + 11 + + + + Account + 帐户 + + 12 + + + + Muted at + 屏蔽时间 + + 13 + + + + Unmute + 取消屏蔽 + + 23 + + My settings 我的设置 @@ -2117,6 +2238,20 @@ 18 + + Misc + 杂项 + + 24 + + + + Muted instances + 已屏蔽的实例 + + 2 + + Ownership changes 视频转移 @@ -2378,18 +2513,25 @@ When you will upload a video in this channel, the video support field will be au 3 + + Use WebTorrent to exchange parts of the video with others + 使用 WebTorrent 与其他用户交换视频分段 + + 21 + + Automatically plays video 自动播放视频 - 25 + 28 Save 保存 - 28 + 32 @@ -2549,7 +2691,7 @@ When you will upload a video in this channel, the video support field will be au 成功!将会导入 中的视频。现在您可以填写关于此视频的信息了。 - 40 + 46 @@ -2577,14 +2719,14 @@ When you will upload a video in this channel, the video support field will be au Publish will be available when upload is finished 上传完毕后即可发布 - 48 + 53 Publish 发布 - 55 + 60 @@ -2623,7 +2765,7 @@ When you will upload a video in this channel, the video support field will be au 成功!此视频将会通过种子导入。现在您可以填写关于此视频的信息了。 - 48 + 53 @@ -3592,6 +3734,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Account unmuted by your instance. + 已解除在此实例上对帐户 的屏蔽。 + + 1 + + + + Instance unmuted by your instance. + 已解除在此实例上对实例 的屏蔽。 + + 1 + + Comment updated. 运营备注信息已更新。 @@ -3599,6 +3755,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Delete this report + 删除这条举报 + + 1 + + Update moderation comment 更新运营备注信息 @@ -3620,9 +3783,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Do you really want to delete this abuse? - 您确定要删除这条举报记录吗? + + Do you really want to delete this abuse report? + 您确定要删除这条举报滥用记录吗? 1 @@ -3683,6 +3846,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Do you really want to unban users? + 您确定要解除对 个用户的封禁吗? + + 1 + + + + users unbanned. + 已解除对 个用户的封禁。 + + 1 + + You cannot delete root. 您无法删除 root 用户。 @@ -3690,6 +3867,34 @@ When you will upload a video in this channel, the video support field will be au 1 + + If you remove these users, you will not be able to create others with the same username! + 一旦删除这些用户,你将无法再使用这些用户名创建新用户! + + 1 + + + + users deleted. + 已删除 个用户。 + + 1 + + + + Account unmuted. + 已解除对帐户 的屏蔽。 + + 1 + + + + Instance unmuted. + 已解除对实例 的屏蔽。 + + 1 + + Ownership accepted 转移已接受 @@ -3767,6 +3972,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + This name already exists on this instance. + 此用户名在本实例上已经被使用过。 + + 1 + + Create 创建 @@ -3900,6 +4112,97 @@ When you will upload a video in this channel, the video support field will be au 1 + + Subscribe to the account + 订阅此帐户 + + 1 + + + + Focus the search bar + 选择搜索框 + + 1 + + + + Toggle the left menu + 开关左侧菜单栏 + + 1 + + + + Go to the videos overview page + 转到视频总览 + + 1 + + + + Go to the trending videos page + 转到时下流行 + + 1 + + + + Go to the recently added videos page + 转到最近添加 + + 1 + + + + Go to the local videos page + 转到本地视频 + + 1 + + + + Go to the videos upload page + 转到上传视频 + + 1 + + + + Toggle Dark theme + 切换夜间主题 + + 1 + + + + Go to my subscriptions + 转到我的订阅 + + 1 + + + + Go to my videos + 转到我的视频 + + 1 + + + + Go to my imports + 转到我的导入 + + 1 + + + + Go to my channels + 转到我的频道 + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -4294,9 +4597,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 250 characters long. - 说明不能超过 250 个字符。 + + Description cannot be more than 1000 characters long. + 说明不能超过 1000 个字符。 1 @@ -4406,6 +4709,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + You can only transfer ownership to a local account + 您只能将视频转移到另一个本地帐户中 + + 1 + + Name is required. 请输入频道用户名。 @@ -4434,13 +4744,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 500 characters long. - 说明不能超过 500 个字符。 - - 1 - - Support text must be at least 3 characters long. 支持信息应至少 3 个字符。 @@ -4448,9 +4751,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Support text cannot be more than 500 characters long. - 支持信息不能超过 500 个字符。 + + Support text cannot be more than 1000 characters long. + 支持信息不能超过 1000 个字符。 1 @@ -4546,9 +4849,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Video support cannot be more than 500 characters long. - 视频的支持信息不能超过 500 个字符。 + + Video support cannot be more than 1000 characters long. + 视频的支持信息不能超过 1000 个字符。 1 @@ -5078,6 +5381,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + users banned. + 已封禁 个用户。 + + 1 + + User banned. 用户 已封禁。 @@ -5113,6 +5423,104 @@ When you will upload a video in this channel, the video support field will be au 1 + + Account muted. + 已屏蔽帐户 + + 1 + + + + Instance muted. + 已屏蔽实例 muted。 + + 1 + + + + Account muted by the instance. + 帐户 已被本实例屏蔽。 + + 1 + + + + Account unmuted by the instance. + 帐户 已被本实例解除屏蔽。 + + 1 + + + + Instance muted by the instance. + 实例 已被本实例屏蔽。 + + 1 + + + + Instance unmuted by the instance. + 实例 已被本实例解除屏蔽。 + + 1 + + + + Mute this account + 屏蔽此帐户 + + 1 + + + + Unmute this account + 解除对此帐户的屏蔽 + + 1 + + + + Mute the instance + 屏蔽此实例 + + 1 + + + + Unmute the instance + 解除对此实例的屏蔽 + + 1 + + + + Mute this account by your instance + 在全实例范围内屏蔽此帐户 + + 1 + + + + Unmute this account by your instance + 在全实例范围内解除对此帐户的屏蔽 + + 1 + + + + Mute the instance by your instance + 在全实例范围内屏蔽此实例 + + 1 + + + + Unmute the instance by your instance + 在全实例范围内解除对此实例的屏蔽 + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. 请求已超过限制。请联系管理员以提升限制。 @@ -5197,27 +5605,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Welcome - 欢迎 - - 1 - - - - Please check your email to verify your account and complete signup. - 要验证您的帐户并完成注册,请检查您的电子邮件。 - - 1 - - - - Registration for complete. - 的注册已完成。 - - 1 - - Video to import updated. 已更新待导入的视频。 @@ -5330,6 +5717,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Like the video + 顶一下 + + 1 + + + + Dislike the video + 踩一下 + + 1 + + Do you really want to delete this video? 您确定要删除这个视频吗? diff --git a/client/src/locale/target/angular_zh_Hant_TW.xml b/client/src/locale/target/angular_zh_Hant_TW.xml index 65ffe97e6..4779d9cc8 100644 --- a/client/src/locale/target/angular_zh_Hant_TW.xml +++ b/client/src/locale/target/angular_zh_Hant_TW.xml @@ -227,6 +227,20 @@ 11 + + Unlisted + 未列出 + + 10 + + + + Private + 私密 + + 11 + + - views - 次檢視 @@ -578,14 +592,14 @@ Example: jane_doe 範例:jane_doe - 16 + 17 - - I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance - 我已經讀過且同意這個實體的<a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>條款</a> + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + 我至少 16 歲且同意此實體的<a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>條款</a> - 54 + 55 @@ -599,7 +613,7 @@ Features found on this instance 在此實體上找到的功能 - 66 + 67 @@ -620,6 +634,19 @@ 6 + + + Filters + + + + 過濾器 + + + + 16 + + No results found @@ -876,6 +903,13 @@ 94 + + Display unlisted and private videos + 顯示未列出與私密影片 + + 11 + + No results. 沒有結果 @@ -1183,13 +1217,15 @@ 83 - + - PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue: - PeerTube 還在測試階段,希望能在穩定版釋出時提供最佳對策。 -與此同時,我們想測試關於此問題的不同想法: + + PeerTube 仍處在很早期的階段,並希望在穩定版發佈時能提供最佳對策。 + 與此同時,我們想測試與此問題相關的不同想法: + 85 @@ -1229,6 +1265,41 @@ 95 + + Banned + 已阻擋 + + 12 + + + + Muted + 已靜音 + + 13 + + + + Muted by your instance + 被您的實體靜音 + + 14 + + + + Instance muted + 實體已靜音 + + 15 + + + + Instance muted by your instance + 被您的實體靜音的實體 + + 16 + + subscribers 個訂閱者 @@ -1359,21 +1430,21 @@ Signup enabled 已啟用註冊 - 92 + 93 Signup requires email verification 註冊需要電子郵件驗證 - 97 + 100 Signup limit 限制註冊 - 101 + 105 @@ -1383,46 +1454,53 @@ 42 + + Video import with HTTP URL (i.e. YouTube) enabled + 以 HTTP URL 匯入影片(如 YouTube)已啟用 + + 120 + + Video import with a torrent file or a magnet URI enabled 已啟用種子檔案或磁力連結匯入影片 - 120 + 127 Administrator 管理員 - 123 + 131 Admin email 管理電子郵件 - 126 + 134 Users 使用者 - 136 + 144 User default video quota 使用者預設影片配額 - 139 + 147 User default daily upload limit 預設使用者每日上傳限制 - 153 + 161 @@ -1436,81 +1514,70 @@ Twitter Twitter - 170 + 178 Your Twitter username 您的 Twitter 使用者名稱 - 173 + 181 Indicates the Twitter account for the website or platform on which the content was published. 指示發佈影片的網頁或平臺的 Twitter 帳號 - 176 + 184 Instance whitelisted by Twitter 由 Twitter 列入白名單的實體 - 189 - - - - If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> - If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> - Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. - 如果您的實體在 Twitter 上是白名單的話,在 Twitter 上分享 PeerTube 的影片就會出現嵌入式的影片。<br /> - 若實體不在白名單內,我們使用圖片連結卡,這將會重新導向到您的 PeerTube 實體。<br /><br /> - 勾選此方框,儲存設定並以您的實體的影片 URL 測試 (https://example.com/videos/watch/blabla) 在 <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> 以檢視您的實體是否在白名單內。 - - 190 + 198 Services 服務 - 168 + 176 Transcoding 轉換編碼 - 200 + 210 Transcoding enabled 轉換編碼已啟用 - 204 + 215 If you disable transcoding, many videos from your users will not work! 若您停用轉換編碼,從您的使用者們而來的許多影片將會無法運作! - 205 + 216 Transcoding threads 轉換編碼執行緒 - 211 + 223 Resolution enabled 解析度 已啟用 - 227 + 239 @@ -1525,49 +1592,49 @@ - 233 + 244 Some files are not federated (previews, captions). We fetch them directly from the origin instance and cache them. 有一些檔案並未聯盟化(預覽、字幕)。我們會直接從原始實體擷取它們並快取。 - 238 + 249 Previews cache size 預覽快取大小 - 243 + 254 Video captions cache size 影片字幕快取大小 - 254 + 265 Customizations 自訂 - 264 + 275 JavaScript JavaScript - 267 + 278 Write directly JavaScript code.<br />Example: <pre>console.log('my instance is amazing');</pre> 直接編寫 JavaScript 程式碼。<br />範例:<pre>console.log('my instance is amazing');</pre> - 270 + 281 @@ -1602,28 +1669,28 @@ </pre> - 286 + 297 Advanced configuration 進階設定 - 197 + 207 Update configuration 更新設定 - 314 + 325 It seems the configuration is invalid. Please search potential errors in the different tabs. 設定似乎無效。請在不同的分頁中搜尋潛在的錯誤。 - 315 + 326 @@ -1696,6 +1763,13 @@ 21 + + Filter... + 過濾器…… + + 27 + + ID ID @@ -1870,6 +1944,13 @@ 2 + + Batch actions + 批次動作 + + 19 + + Username 使用者名稱 @@ -1877,6 +1958,13 @@ 40 + + (banned) + (已阻擋) + + 65 + + Go to the account page 到帳號頁面 @@ -1888,7 +1976,7 @@ Ban reason: 阻擋理由: - 82 + 92 @@ -2021,6 +2109,41 @@ 7 + + Muted accounts + 已靜音的帳號 + + 2 + + + + Muted servers + 已靜音伺服器 + + 11 + + + + Account + 帳號 + + 12 + + + + Muted at + 靜音於 + + 13 + + + + Unmute + 解除靜音 + + 23 + + My settings 我的設定 @@ -2063,6 +2186,20 @@ 18 + + Misc + 雜項 + + 24 + + + + Muted instances + 已靜音的實體 + + 2 + + Ownership changes 所有權變更 @@ -2323,18 +2460,25 @@ When you will upload a video in this channel, the video support field will be au 3 + + Use WebTorrent to exchange parts of the video with others + 使用 WebTorrent 以與其他人交換影片的一部份 + + 21 + + Automatically plays video 自動播放影片 - 25 + 28 Save 儲存 - 28 + 32 @@ -2490,7 +2634,7 @@ When you will upload a video in this channel, the video support field will be au 恭喜,在 後的影片將會匯入!您已經可以加入關於此影片的資訊了。 - 40 + 46 @@ -2518,14 +2662,14 @@ When you will upload a video in this channel, the video support field will be au Publish will be available when upload is finished 上傳完成時將可發佈 - 48 + 53 Publish 發佈 - 55 + 60 @@ -2562,7 +2706,7 @@ When you will upload a video in this channel, the video support field will be au 恭喜,影片將會使用 BitTorrent 匯入!您已經可以加入關於此影片的資訊了。 - 48 + 53 @@ -3529,6 +3673,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Account unmuted by your instance. + 帳號 已被您的實體解除靜音。 + + 1 + + + + Instance unmuted by your instance. + 實體 已被您的實體解除靜音。 + + 1 + + Comment updated. 評論已更新。 @@ -3536,6 +3694,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Delete this report + 刪除此回報 + + 1 + + Update moderation comment 更新管理評論 @@ -3557,9 +3722,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Do you really want to delete this abuse? - 您真的想要刪除此濫用嗎? + + Do you really want to delete this abuse report? + 您真的想要刪除這份濫用回報嗎? 1 @@ -3620,6 +3785,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Do you really want to unban users? + 您真的想要解除阻擋 使用者嗎? + + 1 + + + + users unbanned. + 使用者已解除阻擋。 + + 1 + + You cannot delete root. 您無法刪除 root。 @@ -3627,6 +3806,34 @@ When you will upload a video in this channel, the video support field will be au 1 + + If you remove these users, you will not be able to create others with the same username! + 若您移除了這些使用者,您將無法建立相同使用者名稱的其他使用者! + + 1 + + + + users deleted. + 個使用者已刪除。 + + 1 + + + + Account unmuted. + 帳號 已解除靜音。 + + 1 + + + + Instance unmuted. + 實體 已解除靜音。 + + 1 + + Ownership accepted 所有權已接受 @@ -3704,6 +3911,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + This name already exists on this instance. + 此名稱已存在於此實體上。 + + 1 + + Create 建立 @@ -3837,6 +4051,97 @@ When you will upload a video in this channel, the video support field will be au 1 + + Subscribe to the account + 訂閱帳號 + + 1 + + + + Focus the search bar + 將焦點置於搜尋列 + + 1 + + + + Toggle the left menu + 切換左選單 + + 1 + + + + Go to the videos overview page + 到影片概覽頁面 + + 1 + + + + Go to the trending videos page + 到熱門影片頁面 + + 1 + + + + Go to the recently added videos page + 到最近新增影片頁面 + + 1 + + + + Go to the local videos page + 到本地影片頁面 + + 1 + + + + Go to the videos upload page + 到影片上傳頁面 + + 1 + + + + Toggle Dark theme + 切換暗色主題 + + 1 + + + + Go to my subscriptions + 到我的訂閱 + + 1 + + + + Go to my videos + 到我的影片 + + 1 + + + + Go to my imports + 到我們的匯入 + + 1 + + + + Go to my channels + 到我的頻道 + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -4231,9 +4536,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 250 characters long. - 描述不能多於 250 個字元。 + + Description cannot be more than 1000 characters long. + 描述不能多於 1000 個字元。 1 @@ -4343,6 +4648,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + You can only transfer ownership to a local account + 您可以僅轉移所有權到本地帳號 + + 1 + + Name is required. 名稱必填。 @@ -4371,13 +4683,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Description cannot be more than 500 characters long. - 描述不能多於 500 個字元。 - - 1 - - Support text must be at least 3 characters long. 支援文字必須至少 3 個字元長。 @@ -4385,9 +4690,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Support text cannot be more than 500 characters long. - 支援文字不能多於 500 個字元。 + + Support text cannot be more than 1000 characters long. + 支援文字不能超過 1000 的字元長。 1 @@ -4483,9 +4788,9 @@ When you will upload a video in this channel, the video support field will be au 1 - - Video support cannot be more than 500 characters long. - 影片支援不能多於 500 個字元長。 + + Video support cannot be more than 1000 characters long. + 影片支援不能超過 1000 的字元長。 1 @@ -5015,6 +5320,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + users banned. + 個使用者已解除阻擋。 + + 1 + + User banned. 使用者 已阻擋。 @@ -5050,6 +5362,104 @@ When you will upload a video in this channel, the video support field will be au 1 + + Account muted. + 帳號 已解除靜音。 + + 1 + + + + Instance muted. + 實體 已解除靜音。 + + 1 + + + + Account muted by the instance. + 帳號 已被實體靜音。 + + 1 + + + + Account unmuted by the instance. + 帳號 已被實體解除靜音。 + + 1 + + + + Instance muted by the instance. + 實體 已被實體靜音。 + + 1 + + + + Instance unmuted by the instance. + 實體 已被實體解除靜音。 + + 1 + + + + Mute this account + 靜音此帳號 + + 1 + + + + Unmute this account + 解除靜音此帳號 + + 1 + + + + Mute the instance + 靜音實體 + + 1 + + + + Unmute the instance + 解除靜音實體 + + 1 + + + + Mute this account by your instance + 您的實體靜音此帳號 + + 1 + + + + Unmute this account by your instance + 您的實體解除靜音此帳號 + + 1 + + + + Mute the instance by your instance + 您的實體靜音此實體 + + 1 + + + + Unmute the instance by your instance + 您的實體解除靜音此實體 + + 1 + + Request is too large for the server. Please contact you administrator if you want to increase the limit size. 請求對伺服器來說太大。若您想要增加限制大小,請聯絡您的管理員。 @@ -5134,27 +5544,6 @@ When you will upload a video in this channel, the video support field will be au 1 - - Welcome - 歡迎 - - 1 - - - - Please check your email to verify your account and complete signup. - 請檢查您的電子郵件以驗證您的帳號與完成註冊程序。 - - 1 - - - - Registration for complete. - 註冊 完成。 - - 1 - - Video to import updated. 要匯入的影片已更新。 @@ -5267,6 +5656,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Like the video + 喜歡影片 + + 1 + + + + Dislike the video + 不喜歡影片 + + 1 + + Do you really want to delete this video? 您真的想要刪除此影片嗎? diff --git a/client/src/locale/target/player_ar_001.xml b/client/src/locale/target/player_ar_001.xml index e2c20884b..f81c084d4 100644 --- a/client/src/locale/target/player_ar_001.xml +++ b/client/src/locale/target/player_ar_001.xml @@ -85,7 +85,7 @@ subtitles off - ألغ الترجمة + تعطيل الترجمة النصية Captions @@ -93,7 +93,7 @@ captions off - ألغ التعليقات + تعطيل التعليقات Chapters @@ -169,7 +169,7 @@ , opens subtitles settings dialog - ، إفتح نافذة إعدادات الترجمة + ، إفتح نافذة إعدادات الترجمات النصية , opens descriptions settings dialog @@ -249,7 +249,11 @@ None - لا شيئ + لا شيء + + + Font Family + صنف الخط Reset @@ -257,7 +261,7 @@ restore all settings to the default values - أعد كل الإعدادات الى القيم الافتراضية + أعادة كافة الإعدادات إلى القيم الإفتراضية Done @@ -265,7 +269,7 @@ Caption Settings Dialog - اعدادات التعليقات + إعدادات التعليقات End of dialog window. @@ -287,6 +291,10 @@ Speed السرعة + + Subtitles/CC + الترجمات النصية + peers الأقران @@ -299,6 +307,10 @@ Settings الإعدادات + + Uses P2P, others may know you are watching this video. + يستخدم P2P، يمكن للآخرين معرفة إن كنت تشاهد هذا الفيديو. + Copy the video URL نسخ رابط الفيديو @@ -309,7 +321,7 @@ Copy embed code - نسخ الكود المضمن + نسخ الرمز المدمج \ No newline at end of file diff --git a/client/src/locale/target/player_oc.json b/client/src/locale/target/player_oc.json index 972041dc1..e64b68b00 100644 --- a/client/src/locale/target/player_oc.json +++ b/client/src/locale/target/player_oc.json @@ -1 +1 @@ -{"Audio Player":"Lector àudio","Video Player":"Lector vidèo","Play":"Lectura","Pause":"Pausa","Replay":"Tornar legir","Current Time":"Durada passada","Duration":"Durada","Remaining Time":"Temps restant","Stream Type":"Tipe de difusion","LIVE":"DIRÈCTE","Loaded":"Cargat","Progress":"Progression","Progress Bar":"Barra de progession","progress bar timing: currentTime={1} duration={2}":"{1} sus {2}","Fullscreen":"Ecran complèt","Non-Fullscreen":"Pas en ecran complèt","Mute":"Copar lo son","Unmute":"Restablir lo son","Playback Rate":"Velocitat de lectura","Subtitles":"Sostítols","subtitles off":"Sostítols desactivats","Captions":"Legendas","captions off":"Legendas desactivadas","Chapters":"Capítols","Descriptions":"Descripcions","descriptions off":"descripcions desactivadas","Audio Track":"Pista àudio","Volume Level":"Nivèl del volum","You aborted the media playback":"Avètz copat la lectura del mèdia","A network error caused the media download to fail part-way.":"Una error de ret a provocat un fracàs del telecargament.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Lo mèdia a pas pogut èsser cargat, siá perque lo servidor o lo ret a fracassat siá perque lo format es pas suportat.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"La lectura del mèdia es copada a causa d’un problèma de corrupcion o perque lo mèdia utiliza de foncionalitats pas suportadas pel navigador.","No compatible source was found for this media.":"Cap de font compatiblas pas trobada per aqueste mèdia.","The media is encrypted and we do not have the keys to decrypt it.":"Lo mèdia es chifrat e avèm pas las claus per lo deschifrar.","Play Video":"Legir la vidèo","Close":"Tampar","Close Modal Dialog":"Tampar la fenèstra","Modal Window":"Fenèstra","This is a modal window":"Aquò es una fenèstra","This modal can be closed by pressing the Escape key or activating the close button.":"Aquesta fenèstra pòt èsser tampada en quichar Escapar sul clavièr o en activar lo boton de tampadura.",", opens captions settings dialog":", dobrís la fenèstra de paramètres de legenda",", opens subtitles settings dialog":", dorbís la fenèstra de paramètres de sostítols",", opens descriptions settings dialog":", dorbís la fenèstra de paramètres de descripcions",", selected":", seleccionat","captions settings":"paramètres de legenda","subtitles settings":"paramètres de sostítols","descriptions settings":"paramètres de descripcions","Text":"Tèxte","White":"Blanc","Black":"Nègre","Red":"Roge","Green":"Verd","Blue":"Blau","Yellow":"Jaune","Magenta":"Magenta","Cyan":"Cian","Background":"Rèireplan","Window":"Fenèstra","Transparent":"Transparent","Semi-Transparent":"Semitransparent","Opaque":"Opac","Font Size":"Talha de la polissa","Text Edge Style":"Tèxte coma Edge","None":"Cap","Raised":"Montat","Depressed":"Enfonsat","Uniform":"Unifòrme","Dropshadow":"Ombrat","Font Family":"Familha de polissa","Proportional Sans-Serif":"Sans-Serif proporcional","Monospace Sans-Serif":"Monospace Sans-Serif","Proportional Serif":"Serif proporcional","Monospace Serif":"Monospace Serif","Casual":"Abituala","Script":"Script","Small Caps":"Pichonas majusculas","Reset":"Reïnicializar","restore all settings to the default values":"o restablir tot a las valors per defaut","Done":"Acabat","Caption Settings Dialog":"Fenèstra de paramètres de legenda","Beginning of dialog window. Escape will cancel and close the window.":"Debuta de la fenèstra. Escapar anullarà e tamparà la fenèstra.","End of dialog window.":"Fin de la fenèstra","{1} is loading.":"{1} es a cargar.","Quality":"Qualitat","Auto":"Auto","Speed":"Velocitat","Subtitles/CC":"Sostítols/CC","peers":"pars","Go to the video page":"Anar a la pagina de la vidèo","Settings":"Paramètres","Uses P2P, others may know you are watching this video.":"Utiliza lo P2P, se pòt que d’autres sián a agachar aquesta vidèo.","Copy the video URL":"Copiar l’URL de la vidèo","Copy the video URL at the current time":"Copiar l’URL de la vidèo a aquesta posicion","Copy embed code":"Copiar lo còdi d’integracion"} \ No newline at end of file +{"Audio Player":"Lector àudio","Video Player":"Lector vidèo","Play":"Lectura","Pause":"Pausa","Replay":"Tornar legir","Current Time":"Durada passada","Duration":"Durada","Remaining Time":"Temps restant","Stream Type":"Tipe de difusion","LIVE":"DIRÈCTE","Loaded":"Cargat","Progress":"Progression","Progress Bar":"Barra de progession","progress bar timing: currentTime={1} duration={2}":"{1} sus {2}","Fullscreen":"Ecran complèt","Non-Fullscreen":"Pas en ecran complèt","Mute":"Copar lo son","Unmute":"Restablir lo son","Playback Rate":"Velocitat de lectura","Subtitles":"Sostítols","subtitles off":"Sostítols desactivats","Captions":"Legendas","captions off":"Legendas desactivadas","Chapters":"Capítols","Descriptions":"Descripcions","descriptions off":"descripcions desactivadas","Audio Track":"Pista àudio","Volume Level":"Nivèl del volum","You aborted the media playback":"Avètz copat la lectura del mèdia","A network error caused the media download to fail part-way.":"Una error de ret a provocat un fracàs del telecargament.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Lo mèdia a pas pogut èsser cargat, siá perque lo servidor o lo ret a fracassat siá perque lo format es pas compatible.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"La lectura del mèdia es copada a causa d’un problèma de corrupcion o perque lo mèdia utiliza de foncionalitats pas suportadas pel navigador.","No compatible source was found for this media.":"Cap de font compatiblas pas trobada per aqueste mèdia.","The media is encrypted and we do not have the keys to decrypt it.":"Lo mèdia es chifrat e avèm pas las claus per lo deschifrar.","Play Video":"Legir la vidèo","Close":"Tampar","Close Modal Dialog":"Tampar la fenèstra","Modal Window":"Fenèstra","This is a modal window":"Aquò es una fenèstra","This modal can be closed by pressing the Escape key or activating the close button.":"Aquesta fenèstra pòt èsser tampada en quichar Escapar sul clavièr o en activar lo boton de tampadura.",", opens captions settings dialog":", dobrís la fenèstra de paramètres de legenda",", opens subtitles settings dialog":", dobrís la fenèstra de paramètres de sostítol",", opens descriptions settings dialog":", dobrís la fenèstra de paramètres de descripcion",", selected":", seleccionat","captions settings":"paramètres de legenda","subtitles settings":"paramètres de sostítol","descriptions settings":"paramètres de descripcion","Text":"Tèxte","White":"Blanc","Black":"Negre","Red":"Roge","Green":"Verd","Blue":"Blau","Yellow":"Jaune","Magenta":"Magenta","Cyan":"Cian","Background":"Rèireplan","Window":"Fenèstra","Transparent":"Transparent","Semi-Transparent":"Semitransparent","Opaque":"Opac","Font Size":"Talha de la polissa","Text Edge Style":"Estil dels contorn del tèxte","None":"Cap","Raised":"Naut","Depressed":"Enfonsat","Uniform":"Unifòrme","Dropshadow":"Ombrat","Font Family":"Familha de polissa","Proportional Sans-Serif":"Sans-Serif proporcional","Monospace Sans-Serif":"Monospace Sans-Serif","Proportional Serif":"Serif proporcional","Monospace Serif":"Monospace Serif","Casual":"Manuscrita","Script":"Script","Small Caps":"Pichonas majusculas","Reset":"Reïnicializar","restore all settings to the default values":"o restablir tot a las valors per defaut","Done":"Acabat","Caption Settings Dialog":"Fenèstra de paramètres de legenda","Beginning of dialog window. Escape will cancel and close the window.":"Debuta de la fenèstra. Escapar anullarà e tamparà la fenèstra.","End of dialog window.":"Fin de la fenèstra.","{1} is loading.":"{1} es a cargar.","Quality":"Qualitat","Auto":"Auto","Speed":"Velocitat","Subtitles/CC":"Sostítols/CC","peers":"pars","Go to the video page":"Anar a la pagina de la vidèo","Settings":"Paramètres","Uses P2P, others may know you are watching this video.":"Utiliza lo P2P, se pòt que d’autres sián a agachar aquesta vidèo.","Copy the video URL":"Copiar l’URL de la vidèo","Copy the video URL at the current time":"Copiar l’URL de la vidèo a aquesta posicion","Copy embed code":"Copiar lo còdi d’integracion"} \ No newline at end of file diff --git a/client/src/locale/target/server_ar_001.xml b/client/src/locale/target/server_ar_001.xml index ad8a23a32..af71187aa 100644 --- a/client/src/locale/target/server_ar_001.xml +++ b/client/src/locale/target/server_ar_001.xml @@ -43,6 +43,10 @@ Entertainment ترفيه + + News & Politics + أخبار وسياسة + How To كيف @@ -95,6 +99,10 @@ Attribution - Non Commercial - No Derivatives نسب المصنف - غير تجاري - منع الشتقاق + + Public Domain Dedication + رخصة عمومية + Public عام @@ -107,13 +115,21 @@ Private خاص + + Published + تم نشرها + To import للاستيراد + + Pending + معلّقة + Success - نجح + تم بنجاح Failed @@ -125,7 +141,7 @@ Unknown - مجهول + مجهولة \ No newline at end of file diff --git a/client/src/locale/target/server_cs_CZ.json b/client/src/locale/target/server_cs_CZ.json index f78bf2815..060658c80 100644 --- a/client/src/locale/target/server_cs_CZ.json +++ b/client/src/locale/target/server_cs_CZ.json @@ -1 +1 @@ -{"Music":"Hudba","Films":"Filmy","Vehicles":"Auta","Art":"Umění","Sports":"Sport","Travels":"Cestování","Gaming":"Hry","People":"Lidé","Comedy":"Komedie","Entertainment":"Zábava","How To":"Jak na to","Education":"Výukové","Activism":"Aktivismus","Science & Technology":"Věda a technologie","Animals":"Zvířata","Kids":"Děti","Food":"Jídlo a vaření","Attribution":"Uveďte autora","Attribution - Share Alike":"Uveďte autora - Zachovejte licenci","Attribution - No Derivatives":"Uveďte autora - Nezpracovávejte","Attribution - Non Commercial":"Uveďte autora - Nešiřte dílo komerčně","Attribution - Non Commercial - Share Alike":"Uveďte autora - Nešiřte dílo komerčně - Zachovejte licenci","Attribution - Non Commercial - No Derivatives":"Uveďte autora - Nešiřte dílo komerčně - Nezpracovávejte","Public Domain Dedication":"Volné dílo","Public":"Veřejné","Unlisted":"Nezobrazeno","Private":"Soukromé","Misc":"Různé","Unknown":"Neznámé","Afar":"Afarština","Abkhazian":"Abcházština","Afrikaans":"Afrikánština","Akan":"Akanština","Amharic":"Amharština","Arabic":"Arabština","Aragonese":"Aragonština","American Sign Language":"Americká znaková řeč","Assamese":"Ásámština","Avaric":"Avarština","Kotava":"Kotava","Aymara":"Ajmarština","Azerbaijani":"Ázerbájdžánština","Bashkir":"Baškirština","Bambara":"Bambarština","Belarusian":"Běloruština","Bengali":"Bengálština","British Sign Language":"Britská znaková řeč","Bislama":"Bislamština","Tibetan":"Tibetština","Bosnian":"Bosenština","Breton":"Bretonština","Bulgarian":"Bulharština","Brazilian Sign Language":"Brazilská znaková řeč","Catalan":"Katalánština","Czech":"Čeština","Chamorro":"Chamorro","Chechen":"Čečenština","Chuvash":"Čuvaština","Cornish":"Kornština","Corsican":"Korsičtina","Cree":"Kríjština","Czech Sign Language":"Česká znaková řeč","Chinese Sign Language":"Čínská znaková řeč","Welsh":"Velština","Danish":"Dánština","German":"Němčina","Dhivehi":"Maledivština","Danish Sign Language":"Dánská znaková řeč","Dzongkha":"Dzongkä","Modern Greek (1453-)":"Moderní řečtina","English":"Angličtina","Esperanto":"Esperanto","Estonian":"Estonština","Basque":"Baskičtina","Ewe":"Eveština","Faroese":"Faerština","Persian":"Perština","Fijian":"Fidžijština","Finnish":"Finština","French":"Francouzština","Western Frisian":"Západofríština","French Sign Language":"Francouzská znaková řeč","Fulah":"Fulbština","Scottish Gaelic":"Skotská gaelština","Irish":"Irština","Galician":"Galicijština","Manx":"Manština","Guarani":"Guaranština","German Sign Language":"Německá znaková řeč","Gujarati":"Gudžarátština","Haitian":"Haitská kreolština","Hausa":"Hauština","Serbo-Croatian":"Srcbochorvatšinta","Hebrew":"Hebrejština","Herero":"Herero","Hindi":"Hindština","Hiri Motu":"Hiri Motu","Croatian":"Chorvatština","Hungarian":"Maďarština","Armenian":"Arménština","Igbo":"Igboština","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutština","Indonesian":"Indonéština","Inupiaq":"Inupiaq","Icelandic":"Islandština","Italian":"Italština","Javanese":"Javánština","Lojban":"Lojban","Japanese":"Japonština","Japanese Sign Language":"Japonská znaková řeč","Kalaallisut":"Grónština","Kannada":"Kannadština","Kashmiri":"Kašmírština","Georgian":"Gruzínština","Kanuri":"Kanurijština","Kazakh":"Kazaština","Khmer":"Khmerština","Kikuyu":"Kikujština","Kinyarwanda":"Rwandština","Kirghiz":"Kyrgyzština","Komi":"Komi","Kongo":"Konžština","Korean":"Korejština","Kuanyama":"Kuanyama","Kurdish":"Kurdština","Lao":"Laoština","Latvian":"Lotyština","Limburgan":"Limburština","Lingala":"Ngalština","Lithuanian":"Litevština","Luxembourgish":"Lucemburština","Luba-Katanga":"Luba-Katanga","Ganda":"Gandština","Marshallese":"Maršálština","Malayalam":"Malajálamština","Marathi":"Maráthština","Macedonian":"Makedonština","Malagasy":"Malgaština","Maltese":"Maltština","Mongolian":"Mongolština","Maori":"Maorština","Malay (macrolanguage)":"Malajština","Burmese":"Barmština","Nauru":"Naurština","Navajo":"Navažština","South Ndebele":"Jižní ndebelština","North Ndebele":"Severní ndebelština","Ndonga":"Ndondština","Nepali (macrolanguage)":"Nepálština","Dutch":"Dánština","Norwegian Nynorsk":"Norština Nynorsk","Norwegian Bokmål":"Norština Bokmål","Norwegian":"Norština ","Nyanja":"Čičevština","Occitan":"Okcitánština","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Urijština","Oromo":"Oromština","Ossetian":"Osetština","Panjabi":"Paňdžábština","Pakistan Sign Language":"Pakistánská znaková řeč","Polish":"Polština","Portuguese":"Portugalština","Pushto":"Paštština","Quechua":"Kečuánština","Romansh":"Rétorománština","Romanian":"Rumunština","Russian Sign Language":"Ruská znaková řeč","Rundi":"Kirundi","Russian":"Ruština","Sango":"Sango","Saudi Arabian Sign Language":"Saudská arabská znaková řeč","South African Sign Language":"Jihoafrická znaková řeč","Sinhala":"Sinhálština","Slovak":"Slovenština","Slovenian":"Slovinština","Northern Sami":"Severní sámština","Samoan":"Samojština","Shona":"Shona","Sindhi":"Sindhština","Somali":"Somálština","Southern Sotho":"Jižní sotština","Spanish":"Španělština","Albanian":"Albánština","Sardinian":"Sardínština","Serbian":"Srbština","Swati":"Swati","Sundanese":"Sundština","Swahili (macrolanguage)":"Svahilština","Swedish":"Švédština","Swedish Sign Language":"Švédská znaková řeč","Tahitian":"Tahitština","Tamil":"Tamilština","Tatar":"Tatarština","Telugu":"Telugština","Tajik":"Tádžičtina","Tagalog":"Tagalog","Thai":"Thajština","Tigrinya":"Tigrinya","Klingon":"Klingonština","Tonga (Tonga Islands)":"Tongánština","Tswana":"Setswanština","Tsonga":"Tsongština","Turkmen":"Turkmenština","Turkish":"Turečtina","Twi":"Twi","Uighur":"Ujgurština","Ukrainian":"Ukrajinština","Urdu":"Urdština","Uzbek":"Uzbečtina","Venda":"Vendština","Vietnamese":"Vietnamština","Walloon":"Valonština","Wolof":"Wolof ","Xhosa":"Xhoština","Yiddish":"Jidiš","Yoruba":"Jorubština","Zhuang":"Čuangština","Chinese":"Čínština","Zulu":"Zuluština"} \ No newline at end of file +{"Music":"Hudba","Films":"Filmy","Vehicles":"Auta","Art":"Umění","Sports":"Sport","Travels":"Cestování","Gaming":"Hry","People":"Lidé","Comedy":"Komedie","Entertainment":"Zábava","News & Politics":"Zprávy a politika","How To":"Jak na to","Education":"Výukové","Activism":"Aktivismus","Science & Technology":"Věda a technologie","Animals":"Zvířata","Kids":"Děti","Food":"Jídlo a vaření","Attribution":"Uveďte autora","Attribution - Share Alike":"Uveďte autora - Zachovejte licenci","Attribution - No Derivatives":"Uveďte autora - Nezpracovávejte","Attribution - Non Commercial":"Uveďte autora - Nešiřte dílo komerčně","Attribution - Non Commercial - Share Alike":"Uveďte autora - Nešiřte dílo komerčně - Zachovejte licenci","Attribution - Non Commercial - No Derivatives":"Uveďte autora - Nešiřte dílo komerčně - Nezpracovávejte","Public Domain Dedication":"Volné dílo","Public":"Veřejné","Unlisted":"Nezobrazeno","Private":"Soukromé","Published":"Publikované","Pending":"Čekající","Success":"Úspěch","Failed":"Neúspěch","Misc":"Různé","Unknown":"Neznámé","Afar":"Afarština","Abkhazian":"Abcházština","Afrikaans":"Afrikánština","Akan":"Akanština","Amharic":"Amharština","Arabic":"Arabština","Aragonese":"Aragonština","American Sign Language":"Americká znaková řeč","Assamese":"Ásámština","Avaric":"Avarština","Kotava":"Kotava","Aymara":"Ajmarština","Azerbaijani":"Ázerbájdžánština","Bashkir":"Baškirština","Bambara":"Bambarština","Belarusian":"Běloruština","Bengali":"Bengálština","British Sign Language":"Britská znaková řeč","Bislama":"Bislamština","Tibetan":"Tibetština","Bosnian":"Bosenština","Breton":"Bretonština","Bulgarian":"Bulharština","Brazilian Sign Language":"Brazilská znaková řeč","Catalan":"Katalánština","Czech":"Čeština","Chamorro":"Chamorro","Chechen":"Čečenština","Chuvash":"Čuvaština","Cornish":"Kornština","Corsican":"Korsičtina","Cree":"Kríjština","Czech Sign Language":"Česká znaková řeč","Chinese Sign Language":"Čínská znaková řeč","Welsh":"Velština","Danish":"Dánština","German":"Němčina","Dhivehi":"Maledivština","Danish Sign Language":"Dánská znaková řeč","Dzongkha":"Dzongkä","Modern Greek (1453-)":"Moderní řečtina","English":"Angličtina","Esperanto":"Esperanto","Estonian":"Estonština","Basque":"Baskičtina","Ewe":"Eveština","Faroese":"Faerština","Persian":"Perština","Fijian":"Fidžijština","Finnish":"Finština","French":"Francouzština","Western Frisian":"Západofríština","French Sign Language":"Francouzská znaková řeč","Fulah":"Fulbština","Scottish Gaelic":"Skotská gaelština","Irish":"Irština","Galician":"Galicijština","Manx":"Manština","Guarani":"Guaranština","German Sign Language":"Německá znaková řeč","Gujarati":"Gudžarátština","Haitian":"Haitská kreolština","Hausa":"Hauština","Serbo-Croatian":"Srcbochorvatšinta","Hebrew":"Hebrejština","Herero":"Herero","Hindi":"Hindština","Hiri Motu":"Hiri Motu","Croatian":"Chorvatština","Hungarian":"Maďarština","Armenian":"Arménština","Igbo":"Igboština","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutština","Indonesian":"Indonéština","Inupiaq":"Inupiaq","Icelandic":"Islandština","Italian":"Italština","Javanese":"Javánština","Lojban":"Lojban","Japanese":"Japonština","Japanese Sign Language":"Japonská znaková řeč","Kalaallisut":"Grónština","Kannada":"Kannadština","Kashmiri":"Kašmírština","Georgian":"Gruzínština","Kanuri":"Kanurijština","Kazakh":"Kazaština","Khmer":"Khmerština","Kikuyu":"Kikujština","Kinyarwanda":"Rwandština","Kirghiz":"Kyrgyzština","Komi":"Komi","Kongo":"Konžština","Korean":"Korejština","Kuanyama":"Kuanyama","Kurdish":"Kurdština","Lao":"Laoština","Latvian":"Lotyština","Limburgan":"Limburština","Lingala":"Ngalština","Lithuanian":"Litevština","Luxembourgish":"Lucemburština","Luba-Katanga":"Luba-Katanga","Ganda":"Gandština","Marshallese":"Maršálština","Malayalam":"Malajálamština","Marathi":"Maráthština","Macedonian":"Makedonština","Malagasy":"Malgaština","Maltese":"Maltština","Mongolian":"Mongolština","Maori":"Maorština","Malay (macrolanguage)":"Malajština","Burmese":"Barmština","Nauru":"Naurština","Navajo":"Navažština","South Ndebele":"Jižní ndebelština","North Ndebele":"Severní ndebelština","Ndonga":"Ndondština","Nepali (macrolanguage)":"Nepálština","Dutch":"Dánština","Norwegian Nynorsk":"Norština Nynorsk","Norwegian Bokmål":"Norština Bokmål","Norwegian":"Norština ","Nyanja":"Čičevština","Occitan":"Okcitánština","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Urijština","Oromo":"Oromština","Ossetian":"Osetština","Panjabi":"Paňdžábština","Pakistan Sign Language":"Pakistánská znaková řeč","Polish":"Polština","Portuguese":"Portugalština","Pushto":"Paštština","Quechua":"Kečuánština","Romansh":"Rétorománština","Romanian":"Rumunština","Russian Sign Language":"Ruská znaková řeč","Rundi":"Kirundi","Russian":"Ruština","Sango":"Sango","Saudi Arabian Sign Language":"Saudská arabská znaková řeč","South African Sign Language":"Jihoafrická znaková řeč","Sinhala":"Sinhálština","Slovak":"Slovenština","Slovenian":"Slovinština","Northern Sami":"Severní sámština","Samoan":"Samojština","Shona":"Shona","Sindhi":"Sindhština","Somali":"Somálština","Southern Sotho":"Jižní sotština","Spanish":"Španělština","Albanian":"Albánština","Sardinian":"Sardínština","Serbian":"Srbština","Swati":"Swati","Sundanese":"Sundština","Swahili (macrolanguage)":"Svahilština","Swedish":"Švédština","Swedish Sign Language":"Švédská znaková řeč","Tahitian":"Tahitština","Tamil":"Tamilština","Tatar":"Tatarština","Telugu":"Telugština","Tajik":"Tádžičtina","Tagalog":"Tagalog","Thai":"Thajština","Tigrinya":"Tigrinya","Klingon":"Klingonština","Tonga (Tonga Islands)":"Tongánština","Tswana":"Setswanština","Tsonga":"Tsongština","Turkmen":"Turkmenština","Turkish":"Turečtina","Twi":"Twi","Uighur":"Ujgurština","Ukrainian":"Ukrajinština","Urdu":"Urdština","Uzbek":"Uzbečtina","Venda":"Vendština","Vietnamese":"Vietnamština","Walloon":"Valonština","Wolof":"Wolof ","Xhosa":"Xhoština","Yiddish":"Jidiš","Yoruba":"Jorubština","Zhuang":"Čuangština","Chinese":"Čínština","Zulu":"Zuluština"} \ No newline at end of file diff --git a/client/src/locale/target/server_de_DE.json b/client/src/locale/target/server_de_DE.json index 0f98ae65e..b3801c4ca 100644 --- a/client/src/locale/target/server_de_DE.json +++ b/client/src/locale/target/server_de_DE.json @@ -1 +1 @@ -{"Music":"Musik","Films":"Filme","Vehicles":"Fahrzeuge","Art":"Kunst","Sports":"Sport","Travels":"Reisen","Gaming":"Spiele","People":"Menschen","Comedy":"Komödie","Entertainment":"Unterhaltung","How To":"Anleitung","Education":"Bildung","Activism":"Aktivismus","Science & Technology":"Wissenschaft und Technologie","Animals":"Tiere","Kids":"Kinder","Food":"Essen","Attribution":"Namensnennung","Attribution - Share Alike":"Namensnennung - Weitergabe unter gleichen Bedingungen","Attribution - No Derivatives":"Namensnennung - Keine Bearbeitung","Attribution - Non Commercial":"Namensnennung - Nicht kommerziell","Attribution - Non Commercial - Share Alike":"Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen","Attribution - Non Commercial - No Derivatives":"Namensnennung - Nicht-kommerziell - Keine Bearbeitung","Public Domain Dedication":"In Gemeinfreiheit entlassen","Public":"Öffentlich","Unlisted":"Nicht gelistet","Private":"Privat","Published":"Veröffentlicht","To transcode":"Zu transkodieren","To import":"Zu importieren","Pending":"Ausstehend","Success":"Erfolg","Failed":"Fehlgeschlagen","Misc":"Verschiedenes","Unknown":"Unbekannt","Afar":"Afar","Abkhazian":"Abchasisch","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharisch","Arabic":"Arabisch","Aragonese":"Aragonesisch","American Sign Language":"Amerikanische Gebärdensprache","Assamese":"Assamesisch","Avaric":"Awarisch","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Aserbeidschanisch","Bashkir":"Baschkirisch","Bambara":"Bambara","Belarusian":"Weißrussisch","Bengali":"Bengali","British Sign Language":"Britische Gebärdensprache","Bislama":"Beach-la-mar","Tibetan":"Tibetisch","Bosnian":"Bosnisch","Breton":"Bretonisch","Bulgarian":"Bulgarisch","Brazilian Sign Language":"Brasilianische Gebärdensprache","Catalan":"Katalanisch","Czech":"Tschechisch","Chamorro":"Chamorro","Chechen":"Tschetschenisch","Chuvash":"Tschuwaschisch","Cornish":"Kornisch","Corsican":"Korsisch","Cree":"Cree","Czech Sign Language":"Tschechische Gebärdensprache","Chinese Sign Language":"Chinesiche Gebärdensprache","Welsh":"Kymrisch","Danish":"Dänisch","German":"Deutsch","Dhivehi":"Maledivisch","Danish Sign Language":"Dänische Gebärdensprache","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Neugriechisch","English":"Englisch","Esperanto":"Esperanto","Estonian":"Estnisch","Basque":"Baskisch","Ewe":"Ewe","Faroese":"Färöisch","Persian":"Persisch","Fijian":"Fidschi","Finnish":"Finnisch","French":"Französisch","Western Frisian":"Friesisch","French Sign Language":"Französiche Gebärdensprache","Fulah":"Ful","Scottish Gaelic":"Gälisch-Schottisch","Irish":"Irisch","Galician":"Galicisch","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Deutsche Gebärdensprache","Gujarati":"Gujarati","Haitian":"Haïtien (Haiti-Kreolisch)","Hausa":"Hausa","Serbo-Croatian":"Serbokroatisch","Hebrew":"Hebräisch","Herero":"Otjiherero","Hindi":"Hindi","Hiri Motu":"Hiri-Motu","Croatian":"Kroatisch","Hungarian":"Ungarisch","Armenian":"Armenisch","Igbo":"Igbo","Sichuan Yi":"Yi","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupik","Icelandic":"Isländisch","Italian":"Italienisch","Javanese":"Javanisch","Lojban":"Lojban","Japanese":"Japanisch","Japanese Sign Language":"Japanische Gebärdensprache","Kalaallisut":"Grönländisch","Kannada":"Kannada","Kashmiri":"Kaschmiri","Georgian":"Georgisch","Kanuri":"Kanuri","Kazakh":"Kasachisch","Khmer":"Kambodschanisch","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirgisisch","Komi":"Komi","Kongo":"Kikongo","Korean":"Koreanisch","Kuanyama":"Kuanyama","Kurdish":"Kurdisch","Lao":"Laotisch","Latvian":"Lettisch","Limburgan":"Limburgisch","Lingala":"Lingala","Lithuanian":"Litauisch","Luxembourgish":"Luxemburgisch","Luba-Katanga":"Kiluba","Ganda":"Luganda","Marshallese":"Marschallesisch","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Makedonisch","Malagasy":"Malagassi","Maltese":"Maltesisch","Mongolian":"Mongolisch","Maori":"Māori","Malay (macrolanguage)":"Malaiisch","Burmese":"Birmanisch","Nauru":"Nauruanisch","Navajo":"Navajo","South Ndebele":"Süd-Ndebele","North Ndebele":"Nord-Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali","Dutch":"Niederländisch","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Norwegisch","Nyanja":"Chichewa","Occitan":"Okzitanisch","Ojibwa":"Ojibwe","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Ossetisch","Panjabi":"Panjabi","Pakistan Sign Language":"Pakistanische Gebärdensprache","Polish":"Polnisch","Portuguese":"Portugiesisch","Pushto":"Paschtu","Quechua":"Quechua","Romansh":"Rätoromanisch","Romanian":"Rumänisch","Russian Sign Language":"Russische Gebärdensprache","Rundi":"Kirundi","Russian":"Russisch","Sango":"Sango","Saudi Arabian Sign Language":"Saudi-arabische Gebärdensprache","South African Sign Language":"Südafrikanische Gebärdensprache","Sinhala":"Singhalesisch","Slovak":"Slowakisch","Slovenian":"Slowenisch","Northern Sami":"Nordsaamisch","Samoan":"Samoanisch","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sesotho","Spanish":"Spanisch","Albanian":"Albanisch","Sardinian":"Sardisch","Serbian":"Serbisch","Swati":"siSwati","Sundanese":"Sundanesisch","Swahili (macrolanguage)":"Swahili","Swedish":"Schwedisch","Swedish Sign Language":"Schwedische Gebärdensprache","Tahitian":"Tahitisch","Tamil":"Tamil","Tatar":"Tatarisch","Telugu":"Telugu","Tajik":"Tadschikisch","Tagalog":"Tagalog","Thai":"Thailändisch","Tigrinya":"Tigrinisch","Klingon":"Klingonisch","Tonga (Tonga Islands)":"Tongaisch","Tswana":"Setswana","Tsonga":"Xitsonga","Turkmen":"Turkmenisch","Turkish":"Türkisch","Twi":"Twi","Uighur":"Uigurisch","Ukrainian":"Ukrainisch","Urdu":"Urdu","Uzbek":"Usbekisch","Venda":"Tshivenda","Vietnamese":"Vietnamesisch","Walloon":"Wallonisch","Wolof":"Wolof","Xhosa":"isiXhosa","Yiddish":"Jiddisch","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinesisch","Zulu":"isiZulu"} \ No newline at end of file +{"Music":"Musik","Films":"Filme","Vehicles":"Fahrzeuge","Art":"Kunst","Sports":"Sport","Travels":"Reisen","Gaming":"Spiele","People":"Menschen","Comedy":"Komödie","Entertainment":"Unterhaltung","News & Politics":"Nachrichten & Politik","How To":"Anleitung","Education":"Bildung","Activism":"Aktivismus","Science & Technology":"Wissenschaft und Technologie","Animals":"Tiere","Kids":"Kinder","Food":"Essen","Attribution":"Namensnennung","Attribution - Share Alike":"Namensnennung - Weitergabe unter gleichen Bedingungen","Attribution - No Derivatives":"Namensnennung - Keine Bearbeitung","Attribution - Non Commercial":"Namensnennung - Nicht kommerziell","Attribution - Non Commercial - Share Alike":"Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen","Attribution - Non Commercial - No Derivatives":"Namensnennung - Nicht-kommerziell - Keine Bearbeitung","Public Domain Dedication":"In Gemeinfreiheit entlassen","Public":"Öffentlich","Unlisted":"Nicht gelistet","Private":"Privat","Published":"Veröffentlicht","To transcode":"Zu transkodieren","To import":"Zu importieren","Pending":"Ausstehend","Success":"Erfolg","Failed":"Fehlgeschlagen","Misc":"Verschiedenes","Unknown":"Unbekannt","Afar":"Afar","Abkhazian":"Abchasisch","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharisch","Arabic":"Arabisch","Aragonese":"Aragonesisch","American Sign Language":"Amerikanische Gebärdensprache","Assamese":"Assamesisch","Avaric":"Awarisch","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Aserbeidschanisch","Bashkir":"Baschkirisch","Bambara":"Bambara","Belarusian":"Weißrussisch","Bengali":"Bengali","British Sign Language":"Britische Gebärdensprache","Bislama":"Beach-la-mar","Tibetan":"Tibetisch","Bosnian":"Bosnisch","Breton":"Bretonisch","Bulgarian":"Bulgarisch","Brazilian Sign Language":"Brasilianische Gebärdensprache","Catalan":"Katalanisch","Czech":"Tschechisch","Chamorro":"Chamorro","Chechen":"Tschetschenisch","Chuvash":"Tschuwaschisch","Cornish":"Kornisch","Corsican":"Korsisch","Cree":"Cree","Czech Sign Language":"Tschechische Gebärdensprache","Chinese Sign Language":"Chinesiche Gebärdensprache","Welsh":"Kymrisch","Danish":"Dänisch","German":"Deutsch","Dhivehi":"Maledivisch","Danish Sign Language":"Dänische Gebärdensprache","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Neugriechisch","English":"Englisch","Esperanto":"Esperanto","Estonian":"Estnisch","Basque":"Baskisch","Ewe":"Ewe","Faroese":"Färöisch","Persian":"Persisch","Fijian":"Fidschi","Finnish":"Finnisch","French":"Französisch","Western Frisian":"Friesisch","French Sign Language":"Französiche Gebärdensprache","Fulah":"Ful","Scottish Gaelic":"Gälisch-Schottisch","Irish":"Irisch","Galician":"Galicisch","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Deutsche Gebärdensprache","Gujarati":"Gujarati","Haitian":"Haïtien (Haiti-Kreolisch)","Hausa":"Hausa","Serbo-Croatian":"Serbokroatisch","Hebrew":"Hebräisch","Herero":"Otjiherero","Hindi":"Hindi","Hiri Motu":"Hiri-Motu","Croatian":"Kroatisch","Hungarian":"Ungarisch","Armenian":"Armenisch","Igbo":"Igbo","Sichuan Yi":"Yi","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupik","Icelandic":"Isländisch","Italian":"Italienisch","Javanese":"Javanisch","Lojban":"Lojban","Japanese":"Japanisch","Japanese Sign Language":"Japanische Gebärdensprache","Kalaallisut":"Grönländisch","Kannada":"Kannada","Kashmiri":"Kaschmiri","Georgian":"Georgisch","Kanuri":"Kanuri","Kazakh":"Kasachisch","Khmer":"Kambodschanisch","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirgisisch","Komi":"Komi","Kongo":"Kikongo","Korean":"Koreanisch","Kuanyama":"Kuanyama","Kurdish":"Kurdisch","Lao":"Laotisch","Latvian":"Lettisch","Limburgan":"Limburgisch","Lingala":"Lingala","Lithuanian":"Litauisch","Luxembourgish":"Luxemburgisch","Luba-Katanga":"Kiluba","Ganda":"Luganda","Marshallese":"Marschallesisch","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Makedonisch","Malagasy":"Malagassi","Maltese":"Maltesisch","Mongolian":"Mongolisch","Maori":"Māori","Malay (macrolanguage)":"Malaiisch","Burmese":"Birmanisch","Nauru":"Nauruanisch","Navajo":"Navajo","South Ndebele":"Süd-Ndebele","North Ndebele":"Nord-Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali","Dutch":"Niederländisch","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Norwegisch","Nyanja":"Chichewa","Occitan":"Okzitanisch","Ojibwa":"Ojibwe","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Ossetisch","Panjabi":"Panjabi","Pakistan Sign Language":"Pakistanische Gebärdensprache","Polish":"Polnisch","Portuguese":"Portugiesisch","Pushto":"Paschtu","Quechua":"Quechua","Romansh":"Rätoromanisch","Romanian":"Rumänisch","Russian Sign Language":"Russische Gebärdensprache","Rundi":"Kirundi","Russian":"Russisch","Sango":"Sango","Saudi Arabian Sign Language":"Saudi-arabische Gebärdensprache","South African Sign Language":"Südafrikanische Gebärdensprache","Sinhala":"Singhalesisch","Slovak":"Slowakisch","Slovenian":"Slowenisch","Northern Sami":"Nordsaamisch","Samoan":"Samoanisch","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sesotho","Spanish":"Spanisch","Albanian":"Albanisch","Sardinian":"Sardisch","Serbian":"Serbisch","Swati":"siSwati","Sundanese":"Sundanesisch","Swahili (macrolanguage)":"Swahili","Swedish":"Schwedisch","Swedish Sign Language":"Schwedische Gebärdensprache","Tahitian":"Tahitisch","Tamil":"Tamil","Tatar":"Tatarisch","Telugu":"Telugu","Tajik":"Tadschikisch","Tagalog":"Tagalog","Thai":"Thailändisch","Tigrinya":"Tigrinisch","Klingon":"Klingonisch","Tonga (Tonga Islands)":"Tongaisch","Tswana":"Setswana","Tsonga":"Xitsonga","Turkmen":"Turkmenisch","Turkish":"Türkisch","Twi":"Twi","Uighur":"Uigurisch","Ukrainian":"Ukrainisch","Urdu":"Urdu","Uzbek":"Usbekisch","Venda":"Tshivenda","Vietnamese":"Vietnamesisch","Walloon":"Wallonisch","Wolof":"Wolof","Xhosa":"isiXhosa","Yiddish":"Jiddisch","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinesisch","Zulu":"isiZulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_eo.json b/client/src/locale/target/server_eo.json index 7931161ad..c1ee83e7f 100644 --- a/client/src/locale/target/server_eo.json +++ b/client/src/locale/target/server_eo.json @@ -1 +1 @@ -{"Music":"Muziko","Films":"Filmoj","Vehicles":"Veturiloj","Art":"Arto","Sports":"Sporto","Travels":"Vojaĝado","Gaming":"Ludoj","People":"Homoj","Comedy":"Komedio","Entertainment":"Amuzo","How To":"Instrukcioj","Education":"Instruado","Activism":"Aktivismo","Science & Technology":"Scienco ϗ teĥnikaro","Animals":"Bestoj","Kids":"Infanoj","Food":"Manĝo","Attribution":"Atribuite","Attribution - Share Alike":"Atribuite – Samkondiĉe","Attribution - No Derivatives":"Atribuite – Nemodifite","Attribution - Non Commercial":"Atribuite – Nekomerce","Attribution - Non Commercial - Share Alike":"Atribuite – Nekomerce – Samkondiĉe","Attribution - Non Commercial - No Derivatives":"Atribuite – Nekomerce – Nemodifite","Public Domain Dedication":"Dediĉo al publika posedo","Public":"Publika","Unlisted":"Nelistigata","Private":"Privata","Success":"Sukcesis","Failed":"Malsukcesis","Misc":"Diversaĵoj","Unknown":"Nekonata","Afar":"Afara","Abkhazian":"Abĥaza","Afrikaans":"Afrikansa","Akan":"Akana","Amharic":"Amhara","Arabic":"Araba","Aragonese":"Aragona","American Sign Language":"Usona gestlingvo","Assamese":"Asama","Avaric":"Avara","Kotava":"Kotavo","Aymara":"Ajmara","Azerbaijani":"Azerbajĝana","Bashkir":"Baŝkira","Bambara":"Bambara","Belarusian":"Belorusa","Bengali":"Bengala","British Sign Language":"Brita gestlingvo","Bislama":"Bislama","Tibetan":"Tibeta","Bosnian":"Bosna","Breton":"Bretona","Bulgarian":"Bulgara","Brazilian Sign Language":"Brazila gestlingvo","Catalan":"Kataluna","Czech":"Ĉeĥa","Chamorro":"Ĉamora","Chechen":"Ĉeĉena","Chuvash":"Ĉuvaŝa","Cornish":"Kornvala","Corsican":"Korsika","Czech Sign Language":"Ĉeĥa gestlingvo","Chinese Sign Language":"Ĉina gestlingvo","Welsh":"Kimra","Danish":"Dana","German":"Germana","Dhivehi":"Maldiva","Danish Sign Language":"Dana gestlingvo","Dzongkha":"Butana","Modern Greek (1453-)":"Novgreka","English":"Angla","Esperanto":"Esperanto","Estonian":"Estona","Basque":"Eŭska","Ewe":"Evea","Faroese":"Feroa","Persian":"Persa","Fijian":"Fiĝia","Finnish":"Finna","French":"Franca","Western Frisian":"Okcidentfrisa","French Sign Language":"Franca gestlingvo","Fulah":"Fula","Scottish Gaelic":"Skotgaela","Irish":"Irlanda","Galician":"Galega","Manx":"Manksa","Guarani":"Gvarania","German Sign Language":"Germana gestlingvo","Gujarati":"Guĝarata","Haitian":"Haitia","Hausa":"Haŭsa","Serbo-Croatian":"Kroatserba","Hebrew":"Hebrea","Herero":"Herera","Hindi":"Hinda","Hiri Motu":"Hirimotua","Croatian":"Kroata","Hungarian":"Hungara","Armenian":"Armena","Igbo":"Igba","Sichuan Yi":"Jia","Inuktitut":"Inuktituta","Indonesian":"Indonezia","Inupiaq":"Inupiko","Icelandic":"Islanda","Italian":"Itala","Javanese":"Java","Lojban":"Loĵbano","Japanese":"Japana","Japanese Sign Language":"Japana gestlingvo","Kalaallisut":"Gronlanda","Kannada":"Kanara","Kashmiri":"Kaŝmira","Georgian":"Kartvela","Kanuri":"Kanuria","Kazakh":"Kazaĥa","Khmer":"Kmera","Kirghiz":"Kirgiza","Komi":"Komia","Kongo":"Konga","Korean":"Korea","Kuanyama":"Kvanjama","Kurdish":"Kurda","Lao":"Laosa","Latvian":"Latva","Limburgan":"Limburga","Lingala":"Lingala","Lithuanian":"Litova","Luxembourgish":"Luksemburga","Marshallese":"Marŝalinsula","Malayalam":"Malajalama","Marathi":"Marata","Macedonian":"Makedona","Malagasy":"Malgaŝa","Maltese":"Malta","Mongolian":"Mongola","Maori":"Maoria","Malay (macrolanguage)":"Malaja","Burmese":"Birma","Nauru":"Naura","Navajo":"Navajo","South Ndebele":"Sudndebela","North Ndebele":"Nordndebela","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepala","Dutch":"Nederlanda","Norwegian Nynorsk":"Novnorvega","Norwegian Bokmål":"Bukmolo","Norwegian":"Norvega","Nyanja":"Ĉiĉeva","Ojibwa":"Oĝibua","Oriya (macrolanguage)":"Orisa","Oromo":"Oroma","Ossetian":"Oseta","Panjabi":"Panĝaba","Pakistan Sign Language":"Pakistana gestlingvo","Polish":"Pola","Portuguese":"Portugala","Pushto":"Paŝtua","Quechua":"Keĉua","Romansh":"Romanĉa","Romanian":"Rumana","Russian Sign Language":"Rusa gestlingvo","Russian":"Rusa","Saudi Arabian Sign Language":"Saudarabuja gestlingvo","South African Sign Language":"Sudafrika gestlingvo","Sinhala":"Sinhala","Slovak":"Slovaka","Slovenian":"Slovena","Northern Sami":"Nordlapona","Samoan":"Samoa","Shona":"Ŝona","Sindhi":"Sinda","Somali":"Somala","Southern Sotho":"Sudsota","Spanish":"Hispana","Albanian":"Albana","Sardinian":"Sarda","Serbian":"Serba","Swati":"Svazia","Sundanese":"Sunda","Swahili (macrolanguage)":"Svahila","Swedish":"Sveda","Swedish Sign Language":"Sveda gestlingvo","Tahitian":"Tahitia","Tamil":"Tamula","Tatar":"Tatara","Telugu":"Telugua","Tajik":"Taĝika","Tagalog":"Tagaloga","Thai":"Taja","Klingon":"Klingona","Tonga (Tonga Islands)":"Tonga","Tswana":"Cvana","Tsonga":"Conga","Turkmen":"Turkmena","Turkish":"Turka","Uighur":"Ujgura","Ukrainian":"Ukrajna","Urdu":"Urdua","Uzbek":"Uzbeka","Venda":"Vendaa","Vietnamese":"Vjetnama","Walloon":"Valona","Wolof":"Volofa","Xhosa":"Kosa","Yiddish":"Jido","Yoruba":"Joruba","Zhuang":"Ĉuanga","Chinese":"Ĉina","Zulu":"Zulua"} \ No newline at end of file +{"Music":"Muziko","Films":"Filmoj","Vehicles":"Veturiloj","Art":"Arto","Sports":"Sporto","Travels":"Vojaĝado","Gaming":"Ludoj","People":"Homoj","Comedy":"Komedio","Entertainment":"Amuzo","News & Politics":"Novaĵoj kaj politiko","How To":"Instrukcioj","Education":"Instruado","Activism":"Aktivismo","Science & Technology":"Scienco ϗ teĥnikaro","Animals":"Bestoj","Kids":"Infanoj","Food":"Manĝo","Attribution":"Atribuite","Attribution - Share Alike":"Atribuite – Samkondiĉe","Attribution - No Derivatives":"Atribuite – Nemodifite","Attribution - Non Commercial":"Atribuite – Nekomerce","Attribution - Non Commercial - Share Alike":"Atribuite – Nekomerce – Samkondiĉe","Attribution - Non Commercial - No Derivatives":"Atribuite – Nekomerce – Nemodifite","Public Domain Dedication":"Dediĉo al publika posedo","Public":"Publika","Unlisted":"Nelistigata","Private":"Privata","Success":"Sukcesis","Failed":"Malsukcesis","Misc":"Diversaĵoj","Unknown":"Nekonata","Afar":"Afara","Abkhazian":"Abĥaza","Afrikaans":"Afrikansa","Akan":"Akana","Amharic":"Amhara","Arabic":"Araba","Aragonese":"Aragona","American Sign Language":"Usona gestlingvo","Assamese":"Asama","Avaric":"Avara","Kotava":"Kotavo","Aymara":"Ajmara","Azerbaijani":"Azerbajĝana","Bashkir":"Baŝkira","Bambara":"Bambara","Belarusian":"Belorusa","Bengali":"Bengala","British Sign Language":"Brita gestlingvo","Bislama":"Bislama","Tibetan":"Tibeta","Bosnian":"Bosna","Breton":"Bretona","Bulgarian":"Bulgara","Brazilian Sign Language":"Brazila gestlingvo","Catalan":"Kataluna","Czech":"Ĉeĥa","Chamorro":"Ĉamora","Chechen":"Ĉeĉena","Chuvash":"Ĉuvaŝa","Cornish":"Kornvala","Corsican":"Korsika","Czech Sign Language":"Ĉeĥa gestlingvo","Chinese Sign Language":"Ĉina gestlingvo","Welsh":"Kimra","Danish":"Dana","German":"Germana","Dhivehi":"Maldiva","Danish Sign Language":"Dana gestlingvo","Dzongkha":"Butana","Modern Greek (1453-)":"Novgreka","English":"Angla","Esperanto":"Esperanto","Estonian":"Estona","Basque":"Eŭska","Ewe":"Evea","Faroese":"Feroa","Persian":"Persa","Fijian":"Fiĝia","Finnish":"Finna","French":"Franca","Western Frisian":"Okcidentfrisa","French Sign Language":"Franca gestlingvo","Fulah":"Fula","Scottish Gaelic":"Skotgaela","Irish":"Irlanda","Galician":"Galega","Manx":"Manksa","Guarani":"Gvarania","German Sign Language":"Germana gestlingvo","Gujarati":"Guĝarata","Haitian":"Haitia","Hausa":"Haŭsa","Serbo-Croatian":"Kroatserba","Hebrew":"Hebrea","Herero":"Herera","Hindi":"Hinda","Hiri Motu":"Hirimotua","Croatian":"Kroata","Hungarian":"Hungara","Armenian":"Armena","Igbo":"Igba","Sichuan Yi":"Jia","Inuktitut":"Inuktituta","Indonesian":"Indonezia","Inupiaq":"Inupiko","Icelandic":"Islanda","Italian":"Itala","Javanese":"Java","Lojban":"Loĵbano","Japanese":"Japana","Japanese Sign Language":"Japana gestlingvo","Kalaallisut":"Gronlanda","Kannada":"Kanara","Kashmiri":"Kaŝmira","Georgian":"Kartvela","Kanuri":"Kanuria","Kazakh":"Kazaĥa","Khmer":"Kmera","Kirghiz":"Kirgiza","Komi":"Komia","Kongo":"Konga","Korean":"Korea","Kuanyama":"Kvanjama","Kurdish":"Kurda","Lao":"Laosa","Latvian":"Latva","Limburgan":"Limburga","Lingala":"Lingala","Lithuanian":"Litova","Luxembourgish":"Luksemburga","Marshallese":"Marŝalinsula","Malayalam":"Malajalama","Marathi":"Marata","Macedonian":"Makedona","Malagasy":"Malgaŝa","Maltese":"Malta","Mongolian":"Mongola","Maori":"Maoria","Malay (macrolanguage)":"Malaja","Burmese":"Birma","Nauru":"Naura","Navajo":"Navajo","South Ndebele":"Sudndebela","North Ndebele":"Nordndebela","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepala","Dutch":"Nederlanda","Norwegian Nynorsk":"Novnorvega","Norwegian Bokmål":"Bukmolo","Norwegian":"Norvega","Nyanja":"Ĉiĉeva","Ojibwa":"Oĝibua","Oriya (macrolanguage)":"Orisa","Oromo":"Oroma","Ossetian":"Oseta","Panjabi":"Panĝaba","Pakistan Sign Language":"Pakistana gestlingvo","Polish":"Pola","Portuguese":"Portugala","Pushto":"Paŝtua","Quechua":"Keĉua","Romansh":"Romanĉa","Romanian":"Rumana","Russian Sign Language":"Rusa gestlingvo","Russian":"Rusa","Saudi Arabian Sign Language":"Saudarabuja gestlingvo","South African Sign Language":"Sudafrika gestlingvo","Sinhala":"Sinhala","Slovak":"Slovaka","Slovenian":"Slovena","Northern Sami":"Nordlapona","Samoan":"Samoa","Shona":"Ŝona","Sindhi":"Sinda","Somali":"Somala","Southern Sotho":"Sudsota","Spanish":"Hispana","Albanian":"Albana","Sardinian":"Sarda","Serbian":"Serba","Swati":"Svazia","Sundanese":"Sunda","Swahili (macrolanguage)":"Svahila","Swedish":"Sveda","Swedish Sign Language":"Sveda gestlingvo","Tahitian":"Tahitia","Tamil":"Tamula","Tatar":"Tatara","Telugu":"Telugua","Tajik":"Taĝika","Tagalog":"Tagaloga","Thai":"Taja","Klingon":"Klingona","Tonga (Tonga Islands)":"Tonga","Tswana":"Cvana","Tsonga":"Conga","Turkmen":"Turkmena","Turkish":"Turka","Uighur":"Ujgura","Ukrainian":"Ukrajna","Urdu":"Urdua","Uzbek":"Uzbeka","Venda":"Vendaa","Vietnamese":"Vjetnama","Walloon":"Valona","Wolof":"Volofa","Xhosa":"Kosa","Yiddish":"Jido","Yoruba":"Joruba","Zhuang":"Ĉuanga","Chinese":"Ĉina","Zulu":"Zulua"} \ No newline at end of file diff --git a/client/src/locale/target/server_es_ES.json b/client/src/locale/target/server_es_ES.json index 77beb9036..c8e6f5788 100644 --- a/client/src/locale/target/server_es_ES.json +++ b/client/src/locale/target/server_es_ES.json @@ -1 +1 @@ -{"Music":"Música","Films":"Películas","Vehicles":"Transporte","Art":"Arte","Sports":"Deportes","Travels":"Viajes","Gaming":"Juegos","People":"Personalidades","Comedy":"Comedia","Entertainment":"Entretenimiento","How To":"Tutorial","Education":"Educación","Activism":"Activismo","Science & Technology":"Cienca & Tecnología","Animals":"Animales","Kids":"Niños","Food":"Cocina","Attribution":"Atribución","Attribution - Share Alike":"Atribución - Compartir Igual","Attribution - No Derivatives":"Atribución - No Derivadas","Attribution - Non Commercial":"Atribución - No Comercial","Attribution - Non Commercial - Share Alike":"Atribución - No Comercial - Compartir Igual","Attribution - Non Commercial - No Derivatives":"Atribución - No Comercial - No Derivadas","Public Domain Dedication":"Dominio Público","Public":"Público","Unlisted":"Sin listar","Private":"Privado","Published":"Pulicados","To transcode":"Para codificar","To import":"Para importar","Pending":"Pendientes","Misc":"Miscelánea","Unknown":"Desconocido","Afar":"Afar","Abkhazian":"Abjasio","Afrikaans":"Afrikáans","Akan":"Acano","Amharic":"Amhárico","Arabic":"Árabe","Aragonese":"Aragonés","American Sign Language":"Lengua de signos americana","Assamese":"Asamés","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerí","Bashkir":"Baskir","Bambara":"Bambara","Belarusian":"Bielorruso","Bengali":"Bengalí","British Sign Language":"Lenga de signos británica","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosnio","Breton":"Bretón","Bulgarian":"Búlgaro","Brazilian Sign Language":"Lengua de signos brasileña","Catalan":"Catalán","Czech":"Checo","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Chuvasio","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lengua de signos checa","Chinese Sign Language":"Lengua de signos china","Welsh":"Gaélico","Danish":"Danés","German":"Alemán","Dhivehi":"Maldivo","Danish Sign Language":"Lengua de signos danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Griego moderno","English":"Inglés","Esperanto":"Esperanto","Estonian":"Estonio","Basque":"Euskera","Ewe":"Ewé","Faroese":"Feroés","Persian":"Persa","Fijian":"Fiyiano","Finnish":"Finés","French":"Francés","Western Frisian":"Frisón occidental","French Sign Language":"Lengua de signos francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico escocés","Irish":"Irlandés","Galician":"Gallego","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lengua de signos alemana","Gujarati":"Gujaratí","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroata","Hebrew":"Hebreo","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armenio","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuit","Indonesian":"Indonesio","Inupiaq":"Iñupiaq","Icelandic":"Islandés","Italian":"Italiano","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lengua de signos japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cachemir","Georgian":"Georgiano","Kanuri":"Kanurí","Kazakh":"Kazajo","Khmer":"Camboyano","Kikuyu":"Kikuyú","Kinyarwanda":"Kiñaruanda","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Kurdo","Lao":"Lao","Latvian":"Letón","Limburgan":"Limburgués","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburgués","Luba-Katanga":"Luba oriental","Ganda":"Luganda","Marshallese":"Mashalés","Malayalam":"Malabar","Marathi":"Maratí","Macedonian":"Macedonio","Malagasy":"Malgache","Maltese":"Maltés","Mongolian":"Mongol","Maori":"Maorí","Malay (macrolanguage)":"Malayo","Burmese":"Birmano","Nauru":"Nauruano","Navajo":"Navajo","South Ndebele":"Ndebele del sur","North Ndebele":"Ndebele del norte","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalí","Dutch":"Neerlandés","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Noruego","Nyanja":"Chichewa","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Osetio","Panjabi":"Panyabí","Pakistan Sign Language":"Lengua de signos pakistaní","Polish":"Polaco","Portuguese":"Portugués","Pushto":"Pastún","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Rumano","Russian Sign Language":"Lengua de signos rusa","Rundi":"Kirundí","Russian":"Ruso","Sango":"Sango","Saudi Arabian Sign Language":"Lengua de signos saudí","South African Sign Language":"Lengua de signos sudafricana","Sinhala":"Cingalés","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami septentrional","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindi","Somali":"Somalí","Southern Sotho":"Soto meridional","Spanish":"Español","Albanian":"Albano","Sardinian":"Sardo","Serbian":"Serbio","Swati":"Suazi","Sundanese":"Sudanés","Swahili (macrolanguage)":"Suajili","Swedish":"Sueco","Swedish Sign Language":"Lengua de signos sueca","Tahitian":"Tahitiano","Tamil":"Támil","Tatar":"Tártaro","Telugu":"Télugu","Tajik":"Tayiko","Tagalog":"Tagalo","Thai":"Tailandés","Tigrinya":"Tigriña","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongano","Tswana":"Setsuana","Tsonga":"Tsonga","Turkmen":"Turcomano","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeko","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valón","Wolof":"Wólof","Xhosa":"Xhosa","Yiddish":"Yidis","Yoruba":"Yoruba","Zhuang":"Chuang","Chinese":"Chino","Zulu":"Zulú"} \ No newline at end of file +{"Music":"Música","Films":"Películas","Vehicles":"Transporte","Art":"Arte","Sports":"Deportes","Travels":"Viajes","Gaming":"Juegos","People":"Personalidades","Comedy":"Comedia","Entertainment":"Entretenimiento","News & Politics":"Noticias y política","How To":"Tutorial","Education":"Educación","Activism":"Activismo","Science & Technology":"Ciencia & Tecnología","Animals":"Animales","Kids":"Niños","Food":"Cocina","Attribution":"Atribución","Attribution - Share Alike":"Atribución - Compartir Igual","Attribution - No Derivatives":"Atribución - No Derivadas","Attribution - Non Commercial":"Atribución - No Comercial","Attribution - Non Commercial - Share Alike":"Atribución - No Comercial - Compartir Igual","Attribution - Non Commercial - No Derivatives":"Atribución - No Comercial - No Derivadas","Public Domain Dedication":"Dominio Público","Public":"Público","Unlisted":"Sin listar","Private":"Privado","Published":"Publicados","To transcode":"Para codificar","To import":"Para importar","Pending":"Pendientes","Success":"Subidos con éxito","Failed":"Fallidos","Misc":"Miscelánea","Unknown":"Desconocido","Afar":"Afar","Abkhazian":"Abjasio","Afrikaans":"Afrikáans","Akan":"Acano","Amharic":"Amhárico","Arabic":"Árabe","Aragonese":"Aragonés","American Sign Language":"Lenguaje de signos americano","Assamese":"Asamés","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerí","Bashkir":"Baskir","Bambara":"Bambara","Belarusian":"Bielorruso","Bengali":"Bengalí","British Sign Language":"Lenguaje de signos británico","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosnio","Breton":"Bretón","Bulgarian":"Búlgaro","Brazilian Sign Language":"Lenguaje de signos brasileño","Catalan":"Catalán","Czech":"Checo","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Chuvasio","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lenguaje de signos checo","Chinese Sign Language":"Lenguaje de signos chino","Welsh":"Gaélico","Danish":"Danés","German":"Alemán","Dhivehi":"Maldivo","Danish Sign Language":"Lenguaje de signos danés","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Griego moderno","English":"Inglés","Esperanto":"Esperanto","Estonian":"Estonio","Basque":"Euskera","Ewe":"Ewé","Faroese":"Feroés","Persian":"Persa","Fijian":"Fiyiano","Finnish":"Finés","French":"Francés","Western Frisian":"Frisón occidental","French Sign Language":"Lenguaje de signos francés","Fulah":"Fula","Scottish Gaelic":"Gaélico escocés","Irish":"Irlandés","Galician":"Gallego","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenguaje de signos alemán","Gujarati":"Gujaratí","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroata","Hebrew":"Hebreo","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armenio","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuit","Indonesian":"Indonesio","Inupiaq":"Iñupiaq","Icelandic":"Islandés","Italian":"Italiano","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenguaje de signos japonés","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cachemir","Georgian":"Georgiano","Kanuri":"Kanurí","Kazakh":"Kazajo","Khmer":"Camboyano","Kikuyu":"Kikuyú","Kinyarwanda":"Kiñaruanda","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Kurdo","Lao":"Lao","Latvian":"Letón","Limburgan":"Limburgués","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburgués","Luba-Katanga":"Luba oriental","Ganda":"Luganda","Marshallese":"Mashalés","Malayalam":"Malabar","Marathi":"Maratí","Macedonian":"Macedonio","Malagasy":"Malgache","Maltese":"Maltés","Mongolian":"Mongol","Maori":"Maorí","Malay (macrolanguage)":"Malayo","Burmese":"Birmano","Nauru":"Nauruano","Navajo":"Navajo","South Ndebele":"Ndebele del sur","North Ndebele":"Ndebele del norte","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalí","Dutch":"Neerlandés","Norwegian Nynorsk":"Nynorsk","Norwegian Bokmål":"Bokmål","Norwegian":"Noruego","Nyanja":"Chichewa","Occitan":"Occitano","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Osetio","Panjabi":"Panyabí","Pakistan Sign Language":"Lenguaje de signos pakistaní","Polish":"Polaco","Portuguese":"Portugués","Pushto":"Pastún","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Rumano","Russian Sign Language":"Lenguaje de signos ruso","Rundi":"Kirundí","Russian":"Ruso","Sango":"Sango","Saudi Arabian Sign Language":"Lenguaje de signos saudí","South African Sign Language":"Lenguaje de signos sudafricana","Sinhala":"Cingalés","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami septentrional","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindi","Somali":"Somalí","Southern Sotho":"Soto meridional","Spanish":"Español","Albanian":"Albano","Sardinian":"Sardo","Serbian":"Serbio","Swati":"Suazi","Sundanese":"Sudanés","Swahili (macrolanguage)":"Suajili","Swedish":"Sueco","Swedish Sign Language":"Lenguaje de signos sueca","Tahitian":"Tahitiano","Tamil":"Támil","Tatar":"Tártaro","Telugu":"Télugu","Tajik":"Tayiko","Tagalog":"Tagalo","Thai":"Tailandés","Tigrinya":"Tigriña","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongano","Tswana":"Setsuana","Tsonga":"Tsonga","Turkmen":"Turcomano","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeko","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valón","Wolof":"Wólof","Xhosa":"Xhosa","Yiddish":"Yidis","Yoruba":"Yoruba","Zhuang":"Chuang","Chinese":"Chino","Zulu":"Zulú"} \ No newline at end of file diff --git a/client/src/locale/target/server_eu_ES.json b/client/src/locale/target/server_eu_ES.json index 28c76f31b..1a867a7c4 100644 --- a/client/src/locale/target/server_eu_ES.json +++ b/client/src/locale/target/server_eu_ES.json @@ -1 +1 @@ -{"Music":"Musika","Films":"Filmak","Vehicles":"Ibilgailuak","Art":"Artea","Sports":"Kirolak","Travels":"Bidaiak","Gaming":"Jolasak","People":"Jendea","Comedy":"Komedia","Entertainment":"Aisia","How To":"Argibideak","Education":"Hezkuntza","Activism":"Aktibismoa","Science & Technology":"Zientzia eta teknologia","Animals":"Animaliak","Kids":"Haurrak","Food":"Janaria","Attribution":"Atribuzioa","Attribution - Share Alike":"Atribuzioa - Partekatu berdin","Attribution - No Derivatives":"Atribuzioa - Eratorririk ez","Attribution - Non Commercial":"Atribuzioa - Ez komertziala","Attribution - Non Commercial - Share Alike":"Atribuzioa - Ez komertziala - Partekatu berdin","Attribution - Non Commercial - No Derivatives":"Atribuzioa - Ez komertziala - Eratorririk ez","Public Domain Dedication":"Domeinu publikoa","Public":"Publikoa","Unlisted":"Zerrendatu gabea","Private":"Pribatua","Published":"Argitaratua","To transcode":"Transkodetzeko","To import":"Inportatzeko","Pending":"Egiteke","Success":"Arrakasta","Failed":"Hutsa","Misc":"Denetarik","Unknown":"Ezezaguna","Afar":"Afar","Abkhazian":"Abkhaziera","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharera","Arabic":"Arabiera","Aragonese":"Aragoiera","American Sign Language":"Amerikako zeinu-hizkuntza ","Assamese":"Assamera","Avaric":"Avarera","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerbaijanera","Bashkir":"Baxkirera","Bambara":"Banbara","Belarusian":"Bielorrusiera","Bengali":"Bengalera","British Sign Language":"Britainiako zeinu-hizkuntza","Bislama":"Bislama","Tibetan":"Tibetera","Bosnian":"Bosniera","Breton":"Bretoiera","Bulgarian":"Bulgariera","Brazilian Sign Language":"Brasilgo zeinu-hizkuntza","Catalan":"Katalana","Czech":"Txekiera","Chamorro":"Chamorro","Chechen":"Txetxenera","Chuvash":"Txuvaxera","Cornish":"Kornubiera","Corsican":"Korsikera","Cree":"Cree","Czech Sign Language":"Txekiako zeinu-hizkuntza","Chinese Sign Language":"Txinako zeinu-hizkuntza","Welsh":"Galesa","Danish":"Daniera","German":"Alemana","Dhivehi":"Dhivehi (maldivera) ","Danish Sign Language":"Danimarkako zeinu-hizkuntza","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greziera moernoa (1453-)","English":"Ingelesa","Esperanto":"Esperantoa","Estonian":"Estoniera","Basque":"Euskara","Ewe":"Eweera","Faroese":"Faroera","Persian":"Persiera","Fijian":"Fijiera","Finnish":"Suomiera","French":"Frantsesa","Western Frisian":"Mendebaldeko frisiera","French Sign Language":"Frantziako zeinu-hizkuntza","Fulah":"Fula","Scottish Gaelic":"Eskoziako gaelikoa","Irish":"Irlandera","Galician":"Galiziera","Manx":"Manera","Guarani":"Guaraniera","German Sign Language":"Alemaniako zeinu-hizkuntza","Gujarati":"Gujaratera","Haitian":"Haitiko kreolera","Hausa":"Hausa","Serbo-Croatian":"Serbokroaziera ","Hebrew":"Hebreera","Herero":"Hereroera","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Kroaziera","Hungarian":"Hungariera","Armenian":"Armeniera","Igbo":"Igboera","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutera","Indonesian":"Indonesiera","Inupiaq":"Inupiaq","Icelandic":"Islandiera","Italian":"Italiera","Javanese":"Javera","Lojban":"Lojban","Japanese":"Japoniera","Japanese Sign Language":"Japoniako zeinu-hizkuntza","Kalaallisut":"Groenlandiera","Kannada":"Kannada","Kashmiri":"Kaxmirera","Georgian":"Georgiera / Kartveliera ","Kanuri":"Kanuri","Kazakh":"Kazakhera","Khmer":"Khmerera","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyaruanda","Kirghiz":"Kirgizera","Komi":"Komiera","Kongo":"Kikongo","Korean":"Koreera","Kuanyama":"Kuanyama","Kurdish":"Kurduera","Lao":"Laosera","Latvian":"Letoniera","Limburgan":"Limburgera","Lingala":"Lingala","Lithuanian":"Lituaniera","Luxembourgish":"Luxenburgera","Luba-Katanga":"Luba-Katanga","Ganda":"Luganda","Marshallese":"Marshallera","Malayalam":"Malabarera","Marathi":"Marathera","Macedonian":"Mazedoniera","Malagasy":"Malgaxe","Maltese":"Maltera","Mongolian":"Mongoliera","Maori":"Maoriera","Malay (macrolanguage)":"Malaysiera (makro-hizkuntza)","Burmese":"Birmaniera","Nauru":"Nauruera","Navajo":"Navajoa","South Ndebele":"Hego Ndebele","North Ndebele":"Ipar Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalera (makro-hizkuntza)","Dutch":"Nederlandera","Norwegian Nynorsk":"Norvegiako Nynorsk","Norwegian Bokmål":"Norvegiako Bokmål","Norwegian":"Norvegiera","Nyanja":"Txewera","Occitan":"Okzitaniera","Ojibwa":"Ojibwera","Oriya (macrolanguage)":"Oriya (makro-hizkuntza)","Oromo":"Oromoera","Ossetian":"Osetiera","Panjabi":"Punjabera","Pakistan Sign Language":"Pakistango zeinu-hizkuntza","Polish":"Poloniera","Portuguese":"Portugesa","Pushto":"Paxtuera","Quechua":"Kitxua","Romansh":"Erromantxea","Romanian":"Errumaniera","Russian Sign Language":"Errusiako zeinu-hizkuntza","Rundi":"Kirundi","Russian":"Errusiera","Sango":"Sango","Saudi Arabian Sign Language":"Saudi Arabiako zeinu-hizkuntza","South African Sign Language":"Hego Afrikako zeinu-hizkuntza","Sinhala":"Sinhala","Slovak":"Eslovakiera","Slovenian":"Esloveniera","Northern Sami":"Ipar Samiera","Samoan":"Samoera","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somaliera","Southern Sotho":"Sothoera","Spanish":"Espainiera","Albanian":"Albaniera","Sardinian":"Sardiniera","Serbian":"Serbiera","Swati":"Swaziera","Sundanese":"Sundera","Swahili (macrolanguage)":"Swahili (makro-hizkuntza)","Swedish":"Suediera","Swedish Sign Language":"Suediako zeinu-hizkuntza","Tahitian":"Maoriera","Tamil":"Tamilera","Tatar":"Tatarera","Telugu":"Telugu","Tajik":"Tajikera","Tagalog":"Tagaloa","Thai":"Thailandiera","Tigrinya":"Tigrinyera","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Tonga irlak)","Tswana":"Tswanera","Tsonga":"Tsongera","Turkmen":"Turkmenera","Turkish":"Turkiera","Twi":"Twi","Uighur":"Uigurrera","Ukrainian":"Ukrainera","Urdu":"Urduera","Uzbek":"Uzbekera","Venda":"Vendera","Vietnamese":"Vietnamera","Walloon":"Valoniera","Wolof":"Wolofera","Xhosa":"Xhosera","Yiddish":"Yiddish","Yoruba":"Jorubera","Zhuang":"Zhuang","Chinese":"Txinera","Zulu":"Zuluera"} \ No newline at end of file +{"Music":"Musika","Films":"Filmak","Vehicles":"Ibilgailuak","Art":"Artea","Sports":"Kirolak","Travels":"Bidaiak","Gaming":"Jolasak","People":"Jendea","Comedy":"Komedia","Entertainment":"Aisia","News & Politics":"Berriak eta politika","How To":"Argibideak","Education":"Hezkuntza","Activism":"Aktibismoa","Science & Technology":"Zientzia eta teknologia","Animals":"Animaliak","Kids":"Haurrak","Food":"Janaria","Attribution":"Atribuzioa","Attribution - Share Alike":"Atribuzioa - Partekatu berdin","Attribution - No Derivatives":"Atribuzioa - Eratorririk ez","Attribution - Non Commercial":"Atribuzioa - Ez komertziala","Attribution - Non Commercial - Share Alike":"Atribuzioa - Ez komertziala - Partekatu berdin","Attribution - Non Commercial - No Derivatives":"Atribuzioa - Ez komertziala - Eratorririk ez","Public Domain Dedication":"Domeinu publikoa","Public":"Publikoa","Unlisted":"Zerrendatu gabea","Private":"Pribatua","Published":"Argitaratua","To transcode":"Transkodetzeko","To import":"Inportatzeko","Pending":"Egiteke","Success":"Arrakasta","Failed":"Hutsa","Misc":"Denetarik","Unknown":"Ezezaguna","Afar":"Afar","Abkhazian":"Abkhaziera","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharera","Arabic":"Arabiera","Aragonese":"Aragoiera","American Sign Language":"Amerikako zeinu-hizkuntza ","Assamese":"Assamera","Avaric":"Avarera","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerbaijanera","Bashkir":"Baxkirera","Bambara":"Banbara","Belarusian":"Bielorrusiera","Bengali":"Bengalera","British Sign Language":"Britainiako zeinu-hizkuntza","Bislama":"Bislama","Tibetan":"Tibetera","Bosnian":"Bosniera","Breton":"Bretoiera","Bulgarian":"Bulgariera","Brazilian Sign Language":"Brasilgo zeinu-hizkuntza","Catalan":"Katalana","Czech":"Txekiera","Chamorro":"Chamorro","Chechen":"Txetxenera","Chuvash":"Txuvaxera","Cornish":"Kornubiera","Corsican":"Korsikera","Cree":"Cree","Czech Sign Language":"Txekiako zeinu-hizkuntza","Chinese Sign Language":"Txinako zeinu-hizkuntza","Welsh":"Galesa","Danish":"Daniera","German":"Alemana","Dhivehi":"Dhivehi (maldivera) ","Danish Sign Language":"Danimarkako zeinu-hizkuntza","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greziera moernoa (1453-)","English":"Ingelesa","Esperanto":"Esperantoa","Estonian":"Estoniera","Basque":"Euskara","Ewe":"Eweera","Faroese":"Faroera","Persian":"Persiera","Fijian":"Fijiera","Finnish":"Suomiera","French":"Frantsesa","Western Frisian":"Mendebaldeko frisiera","French Sign Language":"Frantziako zeinu-hizkuntza","Fulah":"Fula","Scottish Gaelic":"Eskoziako gaelikoa","Irish":"Irlandera","Galician":"Galiziera","Manx":"Manera","Guarani":"Guaraniera","German Sign Language":"Alemaniako zeinu-hizkuntza","Gujarati":"Gujaratera","Haitian":"Haitiko kreolera","Hausa":"Hausa","Serbo-Croatian":"Serbokroaziera ","Hebrew":"Hebreera","Herero":"Hereroera","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Kroaziera","Hungarian":"Hungariera","Armenian":"Armeniera","Igbo":"Igboera","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutera","Indonesian":"Indonesiera","Inupiaq":"Inupiaq","Icelandic":"Islandiera","Italian":"Italiera","Javanese":"Javera","Lojban":"Lojban","Japanese":"Japoniera","Japanese Sign Language":"Japoniako zeinu-hizkuntza","Kalaallisut":"Groenlandiera","Kannada":"Kannada","Kashmiri":"Kaxmirera","Georgian":"Georgiera / Kartveliera ","Kanuri":"Kanuri","Kazakh":"Kazakhera","Khmer":"Khmerera","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyaruanda","Kirghiz":"Kirgizera","Komi":"Komiera","Kongo":"Kikongo","Korean":"Koreera","Kuanyama":"Kuanyama","Kurdish":"Kurduera","Lao":"Laosera","Latvian":"Letoniera","Limburgan":"Limburgera","Lingala":"Lingala","Lithuanian":"Lituaniera","Luxembourgish":"Luxenburgera","Luba-Katanga":"Luba-Katanga","Ganda":"Luganda","Marshallese":"Marshallera","Malayalam":"Malabarera","Marathi":"Marathera","Macedonian":"Mazedoniera","Malagasy":"Malgaxe","Maltese":"Maltera","Mongolian":"Mongoliera","Maori":"Maoriera","Malay (macrolanguage)":"Malaysiera (makro-hizkuntza)","Burmese":"Birmaniera","Nauru":"Nauruera","Navajo":"Navajoa","South Ndebele":"Hego Ndebele","North Ndebele":"Ipar Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalera (makro-hizkuntza)","Dutch":"Nederlandera","Norwegian Nynorsk":"Norvegiako Nynorsk","Norwegian Bokmål":"Norvegiako Bokmål","Norwegian":"Norvegiera","Nyanja":"Txewera","Occitan":"Okzitaniera","Ojibwa":"Ojibwera","Oriya (macrolanguage)":"Oriya (makro-hizkuntza)","Oromo":"Oromoera","Ossetian":"Osetiera","Panjabi":"Punjabera","Pakistan Sign Language":"Pakistango zeinu-hizkuntza","Polish":"Poloniera","Portuguese":"Portugesa","Pushto":"Paxtuera","Quechua":"Kitxua","Romansh":"Erromantxea","Romanian":"Errumaniera","Russian Sign Language":"Errusiako zeinu-hizkuntza","Rundi":"Kirundi","Russian":"Errusiera","Sango":"Sango","Saudi Arabian Sign Language":"Saudi Arabiako zeinu-hizkuntza","South African Sign Language":"Hego Afrikako zeinu-hizkuntza","Sinhala":"Sinhala","Slovak":"Eslovakiera","Slovenian":"Esloveniera","Northern Sami":"Ipar Samiera","Samoan":"Samoera","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somaliera","Southern Sotho":"Sothoera","Spanish":"Espainiera","Albanian":"Albaniera","Sardinian":"Sardiniera","Serbian":"Serbiera","Swati":"Swaziera","Sundanese":"Sundera","Swahili (macrolanguage)":"Swahili (makro-hizkuntza)","Swedish":"Suediera","Swedish Sign Language":"Suediako zeinu-hizkuntza","Tahitian":"Maoriera","Tamil":"Tamilera","Tatar":"Tatarera","Telugu":"Telugu","Tajik":"Tajikera","Tagalog":"Tagaloa","Thai":"Thailandiera","Tigrinya":"Tigrinyera","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Tonga irlak)","Tswana":"Tswanera","Tsonga":"Tsongera","Turkmen":"Turkmenera","Turkish":"Turkiera","Twi":"Twi","Uighur":"Uigurrera","Ukrainian":"Ukrainera","Urdu":"Urduera","Uzbek":"Uzbekera","Venda":"Vendera","Vietnamese":"Vietnamera","Walloon":"Valoniera","Wolof":"Wolofera","Xhosa":"Xhosera","Yiddish":"Yiddish","Yoruba":"Jorubera","Zhuang":"Zhuang","Chinese":"Txinera","Zulu":"Zuluera"} \ No newline at end of file diff --git a/client/src/locale/target/server_fr_FR.json b/client/src/locale/target/server_fr_FR.json index 505ddcf6a..eebc2f96e 100644 --- a/client/src/locale/target/server_fr_FR.json +++ b/client/src/locale/target/server_fr_FR.json @@ -1 +1 @@ -{"Music":"Musiques","Films":"Films","Vehicles":"Transport","Art":"Art","Sports":"Sports","Travels":"Voyages","Gaming":"Jeux vidéos","People":"Personnalités","Comedy":"Humour","Entertainment":"Divertissement","How To":"Tutoriels","Education":"Éducation","Activism":"Militantisme","Science & Technology":"Science & Technologie","Animals":"Animaux","Kids":"Enfants","Food":"Cuisine","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Partage dans les mêmes conditions","Attribution - No Derivatives":"Attribution - Pas d’œuvre dérivée","Attribution - Non Commercial":"Attribution - Utilisation non commerciale","Attribution - Non Commercial - Share Alike":"Attribution - Utilisation non commerciale - Partage dans les mêmes conditions","Attribution - Non Commercial - No Derivatives":"Attribution - Utilisation non commerciale - Pas d’œuvre dérivée","Public Domain Dedication":"Domaine public","Public":"Publique","Unlisted":"Non listée","Private":"Privée","Published":"Publiée","To transcode":"À transcoder","To import":"À importer","Pending":"En cours","Success":"Succès","Failed":"Échoué","Misc":"Divers","Unknown":"Inconnu","Afar":"Afar","Abkhazian":"Abkhaze","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharique","Arabic":"Arabe","Aragonese":"Aragonais","American Sign Language":"Langue des signes américaine","Assamese":"Assamais","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azéri","Bashkir":"Bachkir","Bambara":"Bambara","Belarusian":"Biélorusse","Bengali":"Bengali","British Sign Language":"Langue des signes britannique","Bislama":"Bichlamar","Tibetan":"Tibétain","Bosnian":"Bosniaque","Breton":"Breton","Bulgarian":"Bulgare","Brazilian Sign Language":"Langue des signes brésilienne","Catalan":"Catalan","Czech":"Tchèque","Chamorro":"Chamorro","Chechen":"Tchétchène","Chuvash":"Tchouvache","Cornish":"Cornique","Corsican":"Corse","Cree":"Cree","Czech Sign Language":"Langue des signes tchèque","Chinese Sign Language":"Langue des signes chinoise","Welsh":"Gallois","Danish":"Danois","German":"Allemand","Dhivehi":"Maldivien","Danish Sign Language":"Langue des signes danoise","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grec moderne (après 1453)","English":"Anglais","Esperanto":"Espéranto","Estonian":"Estonien","Basque":"Basque","Ewe":"Éwé","Faroese":"Féroïen","Persian":"Persan","Fijian":"Fidjien","Finnish":"Finnois","French":"Français","Western Frisian":"Frison occidental","French Sign Language":"Langue des signes française","Fulah":"Peul","Scottish Gaelic":"Gaélique","Irish":"Irlandais","Galician":"Galicien","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Langue des signes allemande","Gujarati":"Goudjrati","Haitian":"Haïtien","Hausa":"Haoussa","Serbo-Croatian":"Serbo-croate","Hebrew":"Hébreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croate","Hungarian":"Hongrois","Armenian":"Arménien","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonésien","Inupiaq":"Inupiaq","Icelandic":"Islandais","Italian":"Italien","Javanese":"Javanais","Lojban":"Lojban","Japanese":"Japonais","Japanese Sign Language":"Langue des signes japonaise","Kalaallisut":"Groenlandais","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Géorgien","Kanuri":"Kanouri","Kazakh":"Kazakh","Khmer":"Khmer central","Kikuyu":"Kikuyu","Kinyarwanda":"Rwanda","Kirghiz":"Kirghiz","Komi":"Kom","Kongo":"Kongo","Korean":"Coréen","Kuanyama":"Kuanyama","Kurdish":"Kurde","Lao":"Lao","Latvian":"Letton","Limburgan":"Limbourgeois","Lingala":"Lingala","Lithuanian":"Lituanien","Luxembourgish":"Luxembourgeois","Luba-Katanga":"Luba-katanga","Ganda":"Ganda","Marshallese":"Marshall","Malayalam":"Malayalam","Marathi":"Marathe","Macedonian":"Macédonien","Malagasy":"Malgache","Maltese":"Maltais","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malais","Burmese":"Birman","Nauru":"Nauruan","Navajo":"Navaho","South Ndebele":"Ndébélé du Sud","North Ndebele":"Ndébélé du Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Népalais","Dutch":"Néerlandais","Norwegian Nynorsk":"Norvégien nynorsk","Norwegian Bokmål":"Norvégien bokmål","Norwegian":"Norvégien","Nyanja":"Chichewa","Occitan":"Occitane","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Galla","Ossetian":"Ossète","Panjabi":"Pendjabi","Pakistan Sign Language":"Langue des signes pakistanaise","Polish":"Polonais","Portuguese":"Portugais","Pushto":"Pachto","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Roumain","Russian Sign Language":"Langue des signes russe","Rundi":"Rundi","Russian":"Russe","Sango":"Sango","Saudi Arabian Sign Language":"Langue des signes saoudienne","South African Sign Language":"Langue des signes sud-africaine","Sinhala":"Singhalais","Slovak":"Slovaque","Slovenian":"Slovène","Northern Sami":"Sami du Nord","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho du Sud","Spanish":"Espagnol","Albanian":"Albanais","Sardinian":"Sarde","Serbian":"Serbe","Swati":"Swati","Sundanese":"Soundanais","Swahili (macrolanguage)":"Swahili","Swedish":"Suédois","Swedish Sign Language":"Langue des signes suédoise","Tahitian":"Tahitien","Tamil":"Tamoul","Tatar":"Tatar","Telugu":"Télougou","Tajik":"Tadjik","Tagalog":"Tagalog","Thai":"Thaï","Tigrinya":"Tigrigna","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongan (Îles Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turkmène","Turkish":"Turc","Twi":"Twi","Uighur":"Ouïgour","Ukrainian":"Ukrainien","Urdu":"Ourdou","Uzbek":"Ouszbek","Venda":"Venda","Vietnamese":"Vietnamien","Walloon":"Wallon","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinois","Zulu":"Zoulou"} \ No newline at end of file +{"Music":"Musiques","Films":"Films","Vehicles":"Transport","Art":"Art","Sports":"Sports","Travels":"Voyages","Gaming":"Jeux vidéos","People":"Personnalités","Comedy":"Humour","Entertainment":"Divertissement","News & Politics":"Actualité & Politique","How To":"Tutoriels","Education":"Éducation","Activism":"Militantisme","Science & Technology":"Science & Technologie","Animals":"Animaux","Kids":"Enfants","Food":"Cuisine","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Partage dans les mêmes conditions","Attribution - No Derivatives":"Attribution - Pas d’œuvre dérivée","Attribution - Non Commercial":"Attribution - Utilisation non commerciale","Attribution - Non Commercial - Share Alike":"Attribution - Utilisation non commerciale - Partage dans les mêmes conditions","Attribution - Non Commercial - No Derivatives":"Attribution - Utilisation non commerciale - Pas d’œuvre dérivée","Public Domain Dedication":"Domaine public","Public":"Publique","Unlisted":"Non listée","Private":"Privée","Published":"Publiée","To transcode":"À transcoder","To import":"À importer","Pending":"En cours","Success":"Succès","Failed":"Échoué","Misc":"Divers","Unknown":"Inconnu","Afar":"Afar","Abkhazian":"Abkhaze","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharique","Arabic":"Arabe","Aragonese":"Aragonais","American Sign Language":"Langue des signes américaine","Assamese":"Assamais","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azéri","Bashkir":"Bachkir","Bambara":"Bambara","Belarusian":"Biélorusse","Bengali":"Bengali","British Sign Language":"Langue des signes britannique","Bislama":"Bichlamar","Tibetan":"Tibétain","Bosnian":"Bosniaque","Breton":"Breton","Bulgarian":"Bulgare","Brazilian Sign Language":"Langue des signes brésilienne","Catalan":"Catalan","Czech":"Tchèque","Chamorro":"Chamorro","Chechen":"Tchétchène","Chuvash":"Tchouvache","Cornish":"Cornique","Corsican":"Corse","Cree":"Cree","Czech Sign Language":"Langue des signes tchèque","Chinese Sign Language":"Langue des signes chinoise","Welsh":"Gallois","Danish":"Danois","German":"Allemand","Dhivehi":"Maldivien","Danish Sign Language":"Langue des signes danoise","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grec moderne (après 1453)","English":"Anglais","Esperanto":"Espéranto","Estonian":"Estonien","Basque":"Basque","Ewe":"Éwé","Faroese":"Féroïen","Persian":"Persan","Fijian":"Fidjien","Finnish":"Finnois","French":"Français","Western Frisian":"Frison occidental","French Sign Language":"Langue des signes française","Fulah":"Peul","Scottish Gaelic":"Gaélique","Irish":"Irlandais","Galician":"Galicien","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Langue des signes allemande","Gujarati":"Goudjrati","Haitian":"Haïtien","Hausa":"Haoussa","Serbo-Croatian":"Serbo-croate","Hebrew":"Hébreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croate","Hungarian":"Hongrois","Armenian":"Arménien","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonésien","Inupiaq":"Inupiaq","Icelandic":"Islandais","Italian":"Italien","Javanese":"Javanais","Lojban":"Lojban","Japanese":"Japonais","Japanese Sign Language":"Langue des signes japonaise","Kalaallisut":"Groenlandais","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Géorgien","Kanuri":"Kanouri","Kazakh":"Kazakh","Khmer":"Khmer central","Kikuyu":"Kikuyu","Kinyarwanda":"Rwanda","Kirghiz":"Kirghiz","Komi":"Kom","Kongo":"Kongo","Korean":"Coréen","Kuanyama":"Kuanyama","Kurdish":"Kurde","Lao":"Lao","Latvian":"Letton","Limburgan":"Limbourgeois","Lingala":"Lingala","Lithuanian":"Lituanien","Luxembourgish":"Luxembourgeois","Luba-Katanga":"Luba-katanga","Ganda":"Ganda","Marshallese":"Marshall","Malayalam":"Malayalam","Marathi":"Marathe","Macedonian":"Macédonien","Malagasy":"Malgache","Maltese":"Maltais","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malais","Burmese":"Birman","Nauru":"Nauruan","Navajo":"Navaho","South Ndebele":"Ndébélé du Sud","North Ndebele":"Ndébélé du Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Népalais","Dutch":"Néerlandais","Norwegian Nynorsk":"Norvégien nynorsk","Norwegian Bokmål":"Norvégien bokmål","Norwegian":"Norvégien","Nyanja":"Chichewa","Occitan":"Occitane","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Galla","Ossetian":"Ossète","Panjabi":"Pendjabi","Pakistan Sign Language":"Langue des signes pakistanaise","Polish":"Polonais","Portuguese":"Portugais","Pushto":"Pachto","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Roumain","Russian Sign Language":"Langue des signes russe","Rundi":"Rundi","Russian":"Russe","Sango":"Sango","Saudi Arabian Sign Language":"Langue des signes saoudienne","South African Sign Language":"Langue des signes sud-africaine","Sinhala":"Singhalais","Slovak":"Slovaque","Slovenian":"Slovène","Northern Sami":"Sami du Nord","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho du Sud","Spanish":"Espagnol","Albanian":"Albanais","Sardinian":"Sarde","Serbian":"Serbe","Swati":"Swati","Sundanese":"Soundanais","Swahili (macrolanguage)":"Swahili","Swedish":"Suédois","Swedish Sign Language":"Langue des signes suédoise","Tahitian":"Tahitien","Tamil":"Tamoul","Tatar":"Tatar","Telugu":"Télougou","Tajik":"Tadjik","Tagalog":"Tagalog","Thai":"Thaï","Tigrinya":"Tigrigna","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongan (Îles Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turkmène","Turkish":"Turc","Twi":"Twi","Uighur":"Ouïgour","Ukrainian":"Ukrainien","Urdu":"Ourdou","Uzbek":"Ouszbek","Venda":"Venda","Vietnamese":"Vietnamien","Walloon":"Wallon","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinois","Zulu":"Zoulou"} \ No newline at end of file diff --git a/client/src/locale/target/server_oc.json b/client/src/locale/target/server_oc.json index ba6be7139..2a12278d0 100644 --- a/client/src/locale/target/server_oc.json +++ b/client/src/locale/target/server_oc.json @@ -1 +1 @@ -{"Music":"Musica","Films":"Films","Vehicles":"Veituras","Art":"Art","Sports":"Espòrts","Travels":"Viatges","Gaming":"Vidèo jòc","People":"Gent","Comedy":"Comèdia","Entertainment":"Léser ","How To":"Demonstracions","Education":"Educacion","Activism":"Activisme","Science & Technology":"Sciéncia & Tecnologia","Animals":"Animals","Kids":"Mainatges","Food":"Manjar","Attribution":"Atribucion","Attribution - Share Alike":"Atribucion - Partejar a l’identic","Attribution - No Derivatives":"Atribucion - Cap de derivacion","Attribution - Non Commercial":"Atribucion - Pas comercial","Attribution - Non Commercial - Share Alike":"Atribucion - Pas comercial - Partejar a l’identic","Attribution - Non Commercial - No Derivatives":"Atribucion - Pas comercial - Cap de derivacion","Public Domain Dedication":"Domeni public","Public":"Public","Unlisted":"Pas listat","Private":"Privat","Published":"Publicada","To transcode":"De transcodar","To import":"D’importar","Pending":"En espèra","Success":"Reüssida","Failed":"Fracàs","Misc":"Divèrs","Unknown":"Desconegut","Afar":"Afar","Abkhazian":"Abcaz","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharic","Arabic":"Arabi","Aragonese":"Aragonés","American Sign Language":"Lenga de signes americana","Assamese":"Assamés","Avaric":"Avaric","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azèri","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalin","British Sign Language":"Lenga de signes britanica","Bislama":"Bislama","Tibetan":"Tibetan","Bosnian":"Bosnian","Breton":"Breton","Bulgarian":"Bulgar","Brazilian Sign Language":"Lenga de signes brasiliana","Catalan":"Catalan","Czech":"Chèc","Chamorro":"Chamorro","Chechen":"Chenchèn","Chuvash":"Chuvash","Cornish":"Cornic","Corsican":"Còrs","Cree":"Cree","Czech Sign Language":"Lenga de signes chèca","Chinese Sign Language":"Lenga de signes chinesa","Welsh":"Galés","Danish":"Danés","German":"Alemand","Dhivehi":"Maldivian","Danish Sign Language":"Lenga de signes danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grèc","English":"Anglés","Esperanto":"Esperanto","Estonian":"Estonian","Basque":"Basc","Ewe":"Ewe","Faroese":"Faroés","Persian":"Persan","Fijian":"Fijian","Finnish":"Finés","French":"Francés","Western Frisian":"Frison occitendal","French Sign Language":"Lenga de signes francesa","Fulah":"Fulah","Scottish Gaelic":"Gaelic escossés","Irish":"Irlandés","Galician":"Galician","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenga de signes alemanda","Gujarati":"Gujarati","Haitian":"Haitian","Hausa":"Hausa","Serbo-Croatian":"Sèrbocroat","Hebrew":"Ebrieu","Herero":"Herero","Hindi":"Indi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Ongrés","Armenian":"Armèni","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupiaq","Icelandic":"Islandés","Italian":"Italian","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenga de signes japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cashmiri","Georgian":"Georgian","Kanuri":"Kanuri","Kazakh":"Cazac","Khmer":"Cmèr","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Kongo","Korean":"Corean","Kuanyama":"Kuanyama","Kurdish":"Curd","Lao":"Laosian","Latvian":"Leton","Limburgan":"Limborgués","Lingala":"Lingala","Lithuanian":"Lituanian","Luxembourgish":"Luxemborgés","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallés","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedonian","Malagasy":"Malgash","Maltese":"Maltés","Mongolian":"Mongòl","Maori":"Maòri","Malay (macrolanguage)":"Malai (macrolengatge)","Burmese":"Birman","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nòrd","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali (macrolengatge)","Dutch":"Neerlandés","Norwegian Nynorsk":"Norvegian Nynorsk","Norwegian Bokmål":"Norvegian","Norwegian":"Norwegian","Nyanja":"Nyanja","Occitan":"Occitan","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolengatge)","Oromo":"Oromo","Ossetian":"Ossèt","Panjabi":"Panjabi","Pakistan Sign Language":"Lenga de signes de Paquistan","Polish":"Polonés","Portuguese":"Portugués","Pushto":"Pushto","Quechua":"Quíchoa","Romansh":"Romanch","Romanian":"Romanés","Russian Sign Language":"Lenga de signes russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Lenga de signes d'Arabia Saudita","South African Sign Language":"Lenga de signes d’Africa del Sud","Sinhala":"Singalés","Slovak":"Eslovac","Slovenian":"Eslovèn","Northern Sami":"Sami septentrional","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho meridional","Spanish":"Espanhòl","Albanian":"Albanés","Sardinian":"Sard","Serbian":"Sèrbe","Swati":"Swati","Sundanese":"Sodanés","Swahili (macrolanguage)":"Swahili (macrolengatge)","Swedish":"Suedés","Swedish Sign Language":"Lenga de signes suedesa","Tahitian":"Tahician","Tamil":"Tamil","Tatar":"Tatar","Telugu":"Telugu","Tajik":"Tajik","Tagalog":"Tagalòg","Thai":"Tailandés","Tigrinya":"Tigrinya","Klingon":"Klingon","Tonga (Tonga Islands)":"Tònga (islas Tònga)","Tswana":"Tswana","Tsonga":"Tsònga","Turkmen":"Turcmèn","Turkish":"Turc","Twi":"Toï","Uighur":"Oigors","Ukrainian":"Ucraïnian","Urdu":"Ordo","Uzbek":"Uzbec","Venda":"Venda","Vietnamese":"Vietnamian","Walloon":"Valon","Wolof":"Wolòf","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinés","Zulu":"Zulu"} \ No newline at end of file +{"Music":"Musica","Films":"Films","Vehicles":"Veituras","Art":"Art","Sports":"Espòrts","Travels":"Viatges","Gaming":"Vidèo jòc","People":"Gent","Comedy":"Comèdia","Entertainment":"Léser ","News & Politics":"Actualitat e Politica","How To":"Demonstracions","Education":"Educacion","Activism":"Activisme","Science & Technology":"Sciéncia & Tecnologia","Animals":"Animals","Kids":"Mainatges","Food":"Manjar","Attribution":"Atribucion","Attribution - Share Alike":"Atribucion - Partejar a l’identic","Attribution - No Derivatives":"Atribucion - Cap de derivacion","Attribution - Non Commercial":"Atribucion - Pas comercial","Attribution - Non Commercial - Share Alike":"Atribucion - Pas comercial - Partejar a l’identic","Attribution - Non Commercial - No Derivatives":"Atribucion - Pas comercial - Cap de derivacion","Public Domain Dedication":"Domeni public","Public":"Public","Unlisted":"Pas listat","Private":"Privat","Published":"Publicada","To transcode":"De transcodar","To import":"D’importar","Pending":"En espèra","Success":"Reüssida","Failed":"Fracàs","Misc":"Divèrs","Unknown":"Desconegut","Afar":"Afar","Abkhazian":"Abcaz","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharic","Arabic":"Arabi","Aragonese":"Aragonés","American Sign Language":"Lenga de signes americana","Assamese":"Assamés","Avaric":"Avaric","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azèri","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalin","British Sign Language":"Lenga de signes britanica","Bislama":"Bislama","Tibetan":"Tibetan","Bosnian":"Bosnian","Breton":"Breton","Bulgarian":"Bulgar","Brazilian Sign Language":"Lenga de signes brasiliana","Catalan":"Catalan","Czech":"Chèc","Chamorro":"Chamorro","Chechen":"Chenchèn","Chuvash":"Chuvash","Cornish":"Cornic","Corsican":"Còrs","Cree":"Cree","Czech Sign Language":"Lenga de signes chèca","Chinese Sign Language":"Lenga de signes chinesa","Welsh":"Galés","Danish":"Danés","German":"Alemand","Dhivehi":"Maldivian","Danish Sign Language":"Lenga de signes danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grèc","English":"Anglés","Esperanto":"Esperanto","Estonian":"Estonian","Basque":"Basc","Ewe":"Ewe","Faroese":"Faroés","Persian":"Persan","Fijian":"Fijian","Finnish":"Finés","French":"Francés","Western Frisian":"Frison occitendal","French Sign Language":"Lenga de signes francesa","Fulah":"Fulah","Scottish Gaelic":"Gaelic escossés","Irish":"Irlandés","Galician":"Galician","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenga de signes alemanda","Gujarati":"Gujarati","Haitian":"Haitian","Hausa":"Hausa","Serbo-Croatian":"Sèrbocroat","Hebrew":"Ebrieu","Herero":"Herero","Hindi":"Indi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Ongrés","Armenian":"Armèni","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupiaq","Icelandic":"Islandés","Italian":"Italian","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenga de signes japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cashmiri","Georgian":"Georgian","Kanuri":"Kanuri","Kazakh":"Cazac","Khmer":"Cmèr","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Kongo","Korean":"Corean","Kuanyama":"Kuanyama","Kurdish":"Curd","Lao":"Laosian","Latvian":"Leton","Limburgan":"Limborgués","Lingala":"Lingala","Lithuanian":"Lituanian","Luxembourgish":"Luxemborgés","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallés","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedonian","Malagasy":"Malgash","Maltese":"Maltés","Mongolian":"Mongòl","Maori":"Maòri","Malay (macrolanguage)":"Malai (macrolengatge)","Burmese":"Birman","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nòrd","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali (macrolengatge)","Dutch":"Neerlandés","Norwegian Nynorsk":"Norvegian Nynorsk","Norwegian Bokmål":"Norvegian","Norwegian":"Norwegian","Nyanja":"Nyanja","Occitan":"Occitan","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolengatge)","Oromo":"Oromo","Ossetian":"Ossèt","Panjabi":"Panjabi","Pakistan Sign Language":"Lenga de signes de Paquistan","Polish":"Polonés","Portuguese":"Portugués","Pushto":"Pushto","Quechua":"Quíchoa","Romansh":"Romanch","Romanian":"Romanés","Russian Sign Language":"Lenga de signes russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Lenga de signes d'Arabia Saudita","South African Sign Language":"Lenga de signes d’Africa del Sud","Sinhala":"Singalés","Slovak":"Eslovac","Slovenian":"Eslovèn","Northern Sami":"Sami septentrional","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho meridional","Spanish":"Espanhòl","Albanian":"Albanés","Sardinian":"Sard","Serbian":"Sèrbe","Swati":"Swati","Sundanese":"Sodanés","Swahili (macrolanguage)":"Swahili (macrolengatge)","Swedish":"Suedés","Swedish Sign Language":"Lenga de signes suedesa","Tahitian":"Tahician","Tamil":"Tamil","Tatar":"Tatar","Telugu":"Telugu","Tajik":"Tajik","Tagalog":"Tagalòg","Thai":"Tailandés","Tigrinya":"Tigrinya","Klingon":"Klingon","Tonga (Tonga Islands)":"Tònga (islas Tònga)","Tswana":"Tswana","Tsonga":"Tsònga","Turkmen":"Turcmèn","Turkish":"Turc","Twi":"Toï","Uighur":"Oigors","Ukrainian":"Ucraïnian","Urdu":"Ordo","Uzbek":"Uzbec","Venda":"Venda","Vietnamese":"Vietnamian","Walloon":"Valon","Wolof":"Wolòf","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinés","Zulu":"Zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_sv_SE.json b/client/src/locale/target/server_sv_SE.json index f0e85f139..ed5e8c8ef 100644 --- a/client/src/locale/target/server_sv_SE.json +++ b/client/src/locale/target/server_sv_SE.json @@ -1 +1 @@ -{"Music":"Musik","Films":"Filmer","Vehicles":"Fordon","Art":"Konst","Sports":"Sport","Travels":"Resor","Gaming":"Spel","People":"Människor","Comedy":"Komedi","Entertainment":"Underhållning","How To":"Instruktioner","Education":"Utbildning","Activism":"Aktivism","Science & Technology":"Vetenskap och teknik","Animals":"Djur","Kids":"Barn","Food":"Mat","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Share Alike","Attribution - No Derivatives":"Attribution - No Derivatives","Attribution - Non Commercial":"Attribution - Non Commercial","Attribution - Non Commercial - Share Alike":"Attribution - Non Commercial - Share Alike","Attribution - Non Commercial - No Derivatives":"Attribution - Non Commercial - No Derivatives","Public Domain Dedication":"Public Domain Dedication","Public":"Offentlig","Unlisted":"Olistad","Private":"Privat","Published":"Publicerad","To transcode":"Att omkoda","To import":"Att importera","Pending":"I kö","Success":"Lyckades","Failed":"Misslyckades","Misc":"Diverse","Unknown":"Okänd","Afar":"afar","Abkhazian":"abchaziska","Afrikaans":"afrikaans","Akan":"akan","Amharic":"amhariska","Arabic":"arabiska","Aragonese":"aragonska","American Sign Language":"amerikanskt teckenspråk","Assamese":"assamesiska","Avaric":"avariska","Kotava":"kotava","Aymara":"aymara","Azerbaijani":"azerbajdzjanska","Bashkir":"basjkiriska","Bambara":"bambara","Belarusian":"vitryska","Bengali":"bengali","British Sign Language":"brittiskt teckenspråk","Bislama":"bislama","Tibetan":"tibetanska","Bosnian":"bosniska","Breton":"bretonska","Bulgarian":"bulgariska","Brazilian Sign Language":"brasilianskt teckenspråk","Catalan":"katalanska","Czech":"tjeckiska","Chamorro":"chamorro","Chechen":"tjetjenska","Chuvash":"tjuvasjiska","Cornish":"korniska","Corsican":"korsikanska","Cree":"cree","Czech Sign Language":"tjeckiskt teckenspråk","Chinese Sign Language":"kinesiskt teckenspråk","Welsh":"kymriska","Danish":"danska","German":"tyska","Dhivehi":"divehi","Danish Sign Language":"danskt teckenspråk","Dzongkha":"dzongkha","Modern Greek (1453-)":"modern grekiska (1453–)","English":"engelska","Esperanto":"esperanto","Estonian":"estniska","Basque":"baskiska","Ewe":"ewe","Faroese":"färöiska","Persian":"persiska","Fijian":"fijianska","Finnish":"finska","French":"franska","Western Frisian":"västfrisiska","French Sign Language":"franskt teckenspråk","Fulah":"fula","Scottish Gaelic":"skotsk gäliska","Irish":"iriska","Galician":"galiciska","Manx":"manx","Guarani":"guaraní","German Sign Language":"tyskt teckenspråk","Gujarati":"gujarati","Haitian":"haitisk kreol","Hausa":"hausa","Serbo-Croatian":"serbokroatiska","Hebrew":"hebreiska","Herero":"herero","Hindi":"hindi","Hiri Motu":"hiri motu","Croatian":"kroatiska","Hungarian":"ungerska","Armenian":"armeniska","Igbo":"igbo","Sichuan Yi":"sichuan yi","Inuktitut":"inuktitut","Indonesian":"indonesiska","Inupiaq":"iñupiaq","Icelandic":"isländska","Italian":"italienska","Javanese":"javanesiska","Lojban":"lojban","Japanese":"japanska","Japanese Sign Language":"japanskt teckenspråk","Kalaallisut":"kalaallisut","Kannada":"kannada","Kashmiri":"kashmiri","Georgian":"georgiska","Kanuri":"kanuri","Kazakh":"kazakiska","Khmer":"khmer","Kikuyu":"kikuyu","Kinyarwanda":"rwanda","Kirghiz":"kirgiziska","Komi":"komi","Kongo":"kikongo","Korean":"koreanska","Kuanyama":"kwanyama","Kurdish":"kurdiska","Lao":"lao","Latvian":"lettiska","Limburgan":"limburgiska","Lingala":"lingala","Lithuanian":"litauiska","Luxembourgish":"luxemburgiska","Luba-Katanga":"luba-katanga","Ganda":"luganda","Marshallese":"marshallesiska","Malayalam":"malayalam","Marathi":"marathi","Macedonian":"makedonska","Malagasy":"malagassiska","Maltese":"maltesiska","Mongolian":"mongoliska","Maori":"maori","Malay (macrolanguage)":"malajiska","Burmese":"burmesiska","Nauru":"nauruanska","Navajo":"navajo","South Ndebele":"sydndebele","North Ndebele":"nordndebele","Ndonga":"ndonga","Nepali (macrolanguage)":"nepali","Dutch":"nederländska","Norwegian Nynorsk":"nynorska","Norwegian Bokmål":"bokmål","Norwegian":"norska","Nyanja":"chichewa","Occitan":"occitanska","Ojibwa":"ojibwa","Oriya (macrolanguage)":"oriya","Oromo":"oromo","Ossetian":"ossetiska","Panjabi":"punjabi","Pakistan Sign Language":"pakistanskt teckenspråk","Polish":"polska","Portuguese":"portugisiska","Pushto":"pashto","Quechua":"quechua","Romansh":"rätoromanska","Romanian":"rumänska","Russian Sign Language":"ryskt teckenspråk","Rundi":"kirundi","Russian":"ryska","Sango":"sango","Saudi Arabian Sign Language":"saudiarabiskt teckenspråk","South African Sign Language":"sydafrikanskt teckenspråk","Sinhala":"singalesiska","Slovak":"slovakiska","Slovenian":"slovenska","Northern Sami":"nordsamiska","Samoan":"samoanska","Shona":"shona","Sindhi":"sindhi","Somali":"somaliska","Southern Sotho":"sesotho","Spanish":"spanska","Albanian":"albanska","Sardinian":"sardiska","Serbian":"serbiska","Swati":"siSwati","Sundanese":"sundanesiska","Swahili (macrolanguage)":"swahili","Swedish":"svenska","Swedish Sign Language":"svenskt teckenspråk","Tahitian":"tahitiska","Tamil":"tamil","Tatar":"tatariska","Telugu":"telugu","Tajik":"tadzjikiska","Tagalog":"tagalog","Thai":"thai","Tigrinya":"tigrinska","Klingon":"klingon","Tonga (Tonga Islands)":"tonganska","Tswana":"setswana","Tsonga":"tsonga","Turkmen":"turkmeniska","Turkish":"turkiska","Twi":"twi","Uighur":"uiguriska","Ukrainian":"ukrainska","Urdu":"urdu","Uzbek":"uzbekiska","Venda":"venda","Vietnamese":"vietnamesiska","Walloon":"vallonska","Wolof":"wolof","Xhosa":"xhosa","Yiddish":"jiddisch","Yoruba":"yoruba","Zhuang":"zhuang","Chinese":"kinesiska","Zulu":"zulu"} \ No newline at end of file +{"Music":"Musik","Films":"Filmer","Vehicles":"Fordon","Art":"Konst","Sports":"Sport","Travels":"Resor","Gaming":"Spel","People":"Människor","Comedy":"Komedi","Entertainment":"Underhållning","News & Politics":"Nyheter och politik","How To":"Instruktioner","Education":"Utbildning","Activism":"Aktivism","Science & Technology":"Vetenskap och teknik","Animals":"Djur","Kids":"Barn","Food":"Mat","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Share Alike","Attribution - No Derivatives":"Attribution - No Derivatives","Attribution - Non Commercial":"Attribution - Non Commercial","Attribution - Non Commercial - Share Alike":"Attribution - Non Commercial - Share Alike","Attribution - Non Commercial - No Derivatives":"Attribution - Non Commercial - No Derivatives","Public Domain Dedication":"Public Domain Dedication","Public":"Offentlig","Unlisted":"Olistad","Private":"Privat","Published":"Publicerad","To transcode":"Att omkoda","To import":"Att importera","Pending":"I kö","Success":"Lyckades","Failed":"Misslyckades","Misc":"Diverse","Unknown":"Okänd","Afar":"afar","Abkhazian":"abchaziska","Afrikaans":"afrikaans","Akan":"akan","Amharic":"amhariska","Arabic":"arabiska","Aragonese":"aragonska","American Sign Language":"amerikanskt teckenspråk","Assamese":"assamesiska","Avaric":"avariska","Kotava":"kotava","Aymara":"aymara","Azerbaijani":"azerbajdzjanska","Bashkir":"basjkiriska","Bambara":"bambara","Belarusian":"vitryska","Bengali":"bengali","British Sign Language":"brittiskt teckenspråk","Bislama":"bislama","Tibetan":"tibetanska","Bosnian":"bosniska","Breton":"bretonska","Bulgarian":"bulgariska","Brazilian Sign Language":"brasilianskt teckenspråk","Catalan":"katalanska","Czech":"tjeckiska","Chamorro":"chamorro","Chechen":"tjetjenska","Chuvash":"tjuvasjiska","Cornish":"korniska","Corsican":"korsikanska","Cree":"cree","Czech Sign Language":"tjeckiskt teckenspråk","Chinese Sign Language":"kinesiskt teckenspråk","Welsh":"kymriska","Danish":"danska","German":"tyska","Dhivehi":"divehi","Danish Sign Language":"danskt teckenspråk","Dzongkha":"dzongkha","Modern Greek (1453-)":"modern grekiska (1453–)","English":"engelska","Esperanto":"esperanto","Estonian":"estniska","Basque":"baskiska","Ewe":"ewe","Faroese":"färöiska","Persian":"persiska","Fijian":"fijianska","Finnish":"finska","French":"franska","Western Frisian":"västfrisiska","French Sign Language":"franskt teckenspråk","Fulah":"fula","Scottish Gaelic":"skotsk gäliska","Irish":"iriska","Galician":"galiciska","Manx":"manx","Guarani":"guaraní","German Sign Language":"tyskt teckenspråk","Gujarati":"gujarati","Haitian":"haitisk kreol","Hausa":"hausa","Serbo-Croatian":"serbokroatiska","Hebrew":"hebreiska","Herero":"herero","Hindi":"hindi","Hiri Motu":"hiri motu","Croatian":"kroatiska","Hungarian":"ungerska","Armenian":"armeniska","Igbo":"igbo","Sichuan Yi":"sichuan yi","Inuktitut":"inuktitut","Indonesian":"indonesiska","Inupiaq":"iñupiaq","Icelandic":"isländska","Italian":"italienska","Javanese":"javanesiska","Lojban":"lojban","Japanese":"japanska","Japanese Sign Language":"japanskt teckenspråk","Kalaallisut":"kalaallisut","Kannada":"kannada","Kashmiri":"kashmiri","Georgian":"georgiska","Kanuri":"kanuri","Kazakh":"kazakiska","Khmer":"khmer","Kikuyu":"kikuyu","Kinyarwanda":"rwanda","Kirghiz":"kirgiziska","Komi":"komi","Kongo":"kikongo","Korean":"koreanska","Kuanyama":"kwanyama","Kurdish":"kurdiska","Lao":"lao","Latvian":"lettiska","Limburgan":"limburgiska","Lingala":"lingala","Lithuanian":"litauiska","Luxembourgish":"luxemburgiska","Luba-Katanga":"luba-katanga","Ganda":"luganda","Marshallese":"marshallesiska","Malayalam":"malayalam","Marathi":"marathi","Macedonian":"makedonska","Malagasy":"malagassiska","Maltese":"maltesiska","Mongolian":"mongoliska","Maori":"maori","Malay (macrolanguage)":"malajiska","Burmese":"burmesiska","Nauru":"nauruanska","Navajo":"navajo","South Ndebele":"sydndebele","North Ndebele":"nordndebele","Ndonga":"ndonga","Nepali (macrolanguage)":"nepali","Dutch":"nederländska","Norwegian Nynorsk":"nynorska","Norwegian Bokmål":"bokmål","Norwegian":"norska","Nyanja":"chichewa","Occitan":"occitanska","Ojibwa":"ojibwa","Oriya (macrolanguage)":"oriya","Oromo":"oromo","Ossetian":"ossetiska","Panjabi":"punjabi","Pakistan Sign Language":"pakistanskt teckenspråk","Polish":"polska","Portuguese":"portugisiska","Pushto":"pashto","Quechua":"quechua","Romansh":"rätoromanska","Romanian":"rumänska","Russian Sign Language":"ryskt teckenspråk","Rundi":"kirundi","Russian":"ryska","Sango":"sango","Saudi Arabian Sign Language":"saudiarabiskt teckenspråk","South African Sign Language":"sydafrikanskt teckenspråk","Sinhala":"singalesiska","Slovak":"slovakiska","Slovenian":"slovenska","Northern Sami":"nordsamiska","Samoan":"samoanska","Shona":"shona","Sindhi":"sindhi","Somali":"somaliska","Southern Sotho":"sesotho","Spanish":"spanska","Albanian":"albanska","Sardinian":"sardiska","Serbian":"serbiska","Swati":"siSwati","Sundanese":"sundanesiska","Swahili (macrolanguage)":"swahili","Swedish":"svenska","Swedish Sign Language":"svenskt teckenspråk","Tahitian":"tahitiska","Tamil":"tamil","Tatar":"tatariska","Telugu":"telugu","Tajik":"tadzjikiska","Tagalog":"tagalog","Thai":"thai","Tigrinya":"tigrinska","Klingon":"klingon","Tonga (Tonga Islands)":"tonganska","Tswana":"setswana","Tsonga":"tsonga","Turkmen":"turkmeniska","Turkish":"turkiska","Twi":"twi","Uighur":"uiguriska","Ukrainian":"ukrainska","Urdu":"urdu","Uzbek":"uzbekiska","Venda":"venda","Vietnamese":"vietnamesiska","Walloon":"vallonska","Wolof":"wolof","Xhosa":"xhosa","Yiddish":"jiddisch","Yoruba":"yoruba","Zhuang":"zhuang","Chinese":"kinesiska","Zulu":"zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_zh_Hans_CN.json b/client/src/locale/target/server_zh_Hans_CN.json index 4d54f364e..28e66105f 100644 --- a/client/src/locale/target/server_zh_Hans_CN.json +++ b/client/src/locale/target/server_zh_Hans_CN.json @@ -1 +1 @@ -{"Music":"音乐","Films":"电影","Vehicles":"汽车","Art":"艺术","Sports":"体育","Travels":"旅游","Gaming":"游戏","People":"人物","Comedy":"喜剧","Entertainment":"娱乐","How To":"教程","Education":"教育","Activism":"社会活动","Science & Technology":"科学和技术","Animals":"动物","Kids":"儿童","Food":"美食","Attribution":"署名","Attribution - Share Alike":"署名 - 相同方式共享","Attribution - No Derivatives":"署名 - 禁止演绎","Attribution - Non Commercial":"署名 - 非商业性使用","Attribution - Non Commercial - Share Alike":"署名 - 非商业性使用 - 相同方式共享","Attribution - Non Commercial - No Derivatives":"署名 - 非商业性使用 - 禁止演绎","Public Domain Dedication":"公共领域贡献","Public":"公开","Unlisted":"不公开","Private":"私享","Published":"已发布","To transcode":"转码中","To import":"导入中","Pending":"等待中","Success":"成功","Failed":"失败","Misc":"杂项","Unknown":"未知","Afar":"阿法尔语","Abkhazian":"阿布哈兹语","Afrikaans":"阿非利堪斯语","Akan":"阿坎语","Amharic":"阿姆哈拉语","Arabic":"阿拉伯语","Aragonese":"阿拉贡语","American Sign Language":"美国手语","Assamese":"阿萨姆语","Avaric":"阿瓦尔语","Kotava":"科塔瓦语","Aymara":"艾马拉语","Azerbaijani":"阿塞拜疆语","Bashkir":"巴什基尔语","Bambara":"班巴拉语","Belarusian":"白俄罗斯语","Bengali":"孟加拉语","British Sign Language":"英国手语","Bislama":"比斯拉玛语","Tibetan":"藏语","Bosnian":"波斯尼亚语","Breton":"布列塔尼语","Bulgarian":"保加利亚语","Brazilian Sign Language":"巴西手语","Catalan":"加泰隆语","Czech":"捷克语","Chamorro":"查莫罗语","Chechen":"车臣语","Chuvash":"楚瓦什语","Cornish":"康沃尔语","Corsican":"科西嘉语","Cree":"克里语","Czech Sign Language":"捷克手语","Chinese Sign Language":"中国手语","Welsh":"威尔士语","Danish":"丹麦语","German":"德语","Dhivehi":"迪维希语","Danish Sign Language":"丹麦手语","Dzongkha":"不丹语","Modern Greek (1453-)":"现代希腊语","English":"英语","Esperanto":"世界语","Estonian":"爱沙尼亚语","Basque":"巴斯克语","Ewe":"埃维语","Faroese":"法罗斯语","Persian":"波斯语","Fijian":"斐济语","Finnish":"芬兰语","French":"法语","Western Frisian":"弗里西亚语","French Sign Language":"法国手语","Fulah":"富拉语","Scottish Gaelic":"苏格兰盖尔语","Irish":"爱尔兰语","Galician":"加利西亚语","Manx":"马恩岛语","Guarani":"瓜拉尼语","German Sign Language":"德国手语","Gujarati":"古吉拉特语","Haitian":"海地语","Hausa":"豪萨语","Serbo-Croatian":"塞尔维亚-克罗地亚语","Hebrew":"希伯来语","Herero":"赫雷罗语","Hindi":"印地语","Hiri Motu":"希里莫图语","Croatian":"克罗地亚语","Hungarian":"匈牙利语","Armenian":"亚美尼亚语","Igbo":"伊博语","Sichuan Yi":"四川彝语","Inuktitut":"伊努伊特语","Indonesian":"印尼语","Inupiaq":"依努庇克语","Icelandic":"冰岛语","Italian":"意大利语","Javanese":"爪哇语","Lojban":"逻辑语","Japanese":"日语","Japanese Sign Language":"日本手语","Kalaallisut":"格陵兰语","Kannada":"坎纳达语","Kashmiri":"克什米尔语","Georgian":"格鲁吉亚语","Kanuri":"卡努里语","Kazakh":"哈萨克语","Khmer":"高棉语","Kikuyu":"基库尤语","Kinyarwanda":"基尼阿万达语","Kirghiz":"吉尔吉斯语","Komi":"科米语","Kongo":"刚果语","Korean":"朝鲜语","Kuanyama":"宽亚玛语","Kurdish":"库尔德语","Lao":"老挝语","Latvian":"拉脱维亚语","Limburgan":"林堡语","Lingala":"林加拉语","Lithuanian":"立陶宛语","Luxembourgish":"卢森堡语","Luba-Katanga":"卢巴-加丹加语","Ganda":"干达语","Marshallese":"马绍尔语","Malayalam":"马拉亚拉姆语","Marathi":"马拉提语","Macedonian":"马其顿语","Malagasy":"马达加斯加语","Maltese":"马耳他语","Mongolian":"蒙古语","Maori":"毛利语","Malay (macrolanguage)":"马来语(广义)","Burmese":"缅甸语","Nauru":"瑙鲁语","Navajo":"纳瓦霍语","South Ndebele":"南恩德贝勒语","North Ndebele":"北恩德贝勒语","Ndonga":"恩敦加语","Nepali (macrolanguage)":"尼泊尔语(广义)","Dutch":"荷兰语","Norwegian Nynorsk":"新挪威语","Norwegian Bokmål":"挪威布克莫尔语","Norwegian":"挪威语","Nyanja":"尼扬贾语","Occitan":"奥克西唐语","Ojibwa":"奥吉布瓦语","Oriya (macrolanguage)":"奥利亚语(广义)","Oromo":"阿芳·奥洛莫语","Ossetian":"奥塞梯语","Panjabi":"旁遮普语","Pakistan Sign Language":"巴基斯坦手语","Polish":"波兰语","Portuguese":"葡萄牙语","Pushto":"普什图语","Quechua":"凯楚亚语","Romansh":"罗曼什语","Romanian":"罗马尼亚语","Russian Sign Language":"俄罗斯手语","Rundi":"基隆迪语","Russian":"俄语","Sango":"桑戈语","Saudi Arabian Sign Language":"沙特阿拉伯手语","South African Sign Language":"南非手语","Sinhala":"僧加罗语","Slovak":"斯洛伐克语","Slovenian":"斯洛文尼亚语","Northern Sami":"北萨米语","Samoan":"萨摩亚语","Shona":"绍纳语","Sindhi":"信德语","Somali":"索马里语","Southern Sotho":"塞索托语","Spanish":"西班牙语","Albanian":"阿尔巴尼亚语","Sardinian":"撒丁语","Serbian":"塞尔维亚语","Swati":"塞斯瓦替语","Sundanese":"巽他语","Swahili (macrolanguage)":"斯瓦希里语(广义)","Swedish":"瑞典语","Swedish Sign Language":"瑞典手语","Tahitian":"塔希提语","Tamil":"泰米尔语","Tatar":"塔塔尔语","Telugu":"泰卢固语","Tajik":"塔吉克语","Tagalog":"他加禄语","Thai":"泰语","Tigrinya":"提格里尼亚语","Klingon":"克林贡语","Tonga (Tonga Islands)":"汤加语","Tswana":"塞茨瓦纳语","Tsonga":"宗加语","Turkmen":"土库曼语","Turkish":"土耳其语","Twi":"特威语","Uighur":"维吾尔语","Ukrainian":"乌克兰语","Urdu":"乌尔都语","Uzbek":"乌兹别克语","Venda":"文达语","Vietnamese":"越南语","Walloon":"沃伦语","Wolof":"沃洛夫语","Xhosa":"科萨语","Yiddish":"依地语","Yoruba":"约鲁巴语","Zhuang":"壮语","Chinese":"汉语","Zulu":"祖鲁语"} \ No newline at end of file +{"Music":"音乐","Films":"电影","Vehicles":"汽车","Art":"艺术","Sports":"体育","Travels":"旅游","Gaming":"游戏","People":"人物","Comedy":"喜剧","Entertainment":"娱乐","News & Politics":"新闻和时政","How To":"教程","Education":"教育","Activism":"社会活动","Science & Technology":"科学和技术","Animals":"动物","Kids":"儿童","Food":"美食","Attribution":"署名","Attribution - Share Alike":"署名 - 相同方式共享","Attribution - No Derivatives":"署名 - 禁止演绎","Attribution - Non Commercial":"署名 - 非商业性使用","Attribution - Non Commercial - Share Alike":"署名 - 非商业性使用 - 相同方式共享","Attribution - Non Commercial - No Derivatives":"署名 - 非商业性使用 - 禁止演绎","Public Domain Dedication":"公共领域贡献","Public":"公开","Unlisted":"不公开","Private":"私享","Published":"已发布","To transcode":"转码中","To import":"导入中","Pending":"等待中","Success":"成功","Failed":"失败","Misc":"杂项","Unknown":"未知","Afar":"阿法尔语","Abkhazian":"阿布哈兹语","Afrikaans":"阿非利堪斯语","Akan":"阿坎语","Amharic":"阿姆哈拉语","Arabic":"阿拉伯语","Aragonese":"阿拉贡语","American Sign Language":"美国手语","Assamese":"阿萨姆语","Avaric":"阿瓦尔语","Kotava":"科塔瓦语","Aymara":"艾马拉语","Azerbaijani":"阿塞拜疆语","Bashkir":"巴什基尔语","Bambara":"班巴拉语","Belarusian":"白俄罗斯语","Bengali":"孟加拉语","British Sign Language":"英国手语","Bislama":"比斯拉玛语","Tibetan":"藏语","Bosnian":"波斯尼亚语","Breton":"布列塔尼语","Bulgarian":"保加利亚语","Brazilian Sign Language":"巴西手语","Catalan":"加泰隆语","Czech":"捷克语","Chamorro":"查莫罗语","Chechen":"车臣语","Chuvash":"楚瓦什语","Cornish":"康沃尔语","Corsican":"科西嘉语","Cree":"克里语","Czech Sign Language":"捷克手语","Chinese Sign Language":"中国手语","Welsh":"威尔士语","Danish":"丹麦语","German":"德语","Dhivehi":"迪维希语","Danish Sign Language":"丹麦手语","Dzongkha":"不丹语","Modern Greek (1453-)":"现代希腊语","English":"英语","Esperanto":"世界语","Estonian":"爱沙尼亚语","Basque":"巴斯克语","Ewe":"埃维语","Faroese":"法罗斯语","Persian":"波斯语","Fijian":"斐济语","Finnish":"芬兰语","French":"法语","Western Frisian":"弗里西亚语","French Sign Language":"法国手语","Fulah":"富拉语","Scottish Gaelic":"苏格兰盖尔语","Irish":"爱尔兰语","Galician":"加利西亚语","Manx":"马恩岛语","Guarani":"瓜拉尼语","German Sign Language":"德国手语","Gujarati":"古吉拉特语","Haitian":"海地语","Hausa":"豪萨语","Serbo-Croatian":"塞尔维亚-克罗地亚语","Hebrew":"希伯来语","Herero":"赫雷罗语","Hindi":"印地语","Hiri Motu":"希里莫图语","Croatian":"克罗地亚语","Hungarian":"匈牙利语","Armenian":"亚美尼亚语","Igbo":"伊博语","Sichuan Yi":"四川彝语","Inuktitut":"伊努伊特语","Indonesian":"印尼语","Inupiaq":"依努庇克语","Icelandic":"冰岛语","Italian":"意大利语","Javanese":"爪哇语","Lojban":"逻辑语","Japanese":"日语","Japanese Sign Language":"日本手语","Kalaallisut":"格陵兰语","Kannada":"坎纳达语","Kashmiri":"克什米尔语","Georgian":"格鲁吉亚语","Kanuri":"卡努里语","Kazakh":"哈萨克语","Khmer":"高棉语","Kikuyu":"基库尤语","Kinyarwanda":"基尼阿万达语","Kirghiz":"吉尔吉斯语","Komi":"科米语","Kongo":"刚果语","Korean":"朝鲜语","Kuanyama":"宽亚玛语","Kurdish":"库尔德语","Lao":"老挝语","Latvian":"拉脱维亚语","Limburgan":"林堡语","Lingala":"林加拉语","Lithuanian":"立陶宛语","Luxembourgish":"卢森堡语","Luba-Katanga":"卢巴-加丹加语","Ganda":"干达语","Marshallese":"马绍尔语","Malayalam":"马拉亚拉姆语","Marathi":"马拉提语","Macedonian":"马其顿语","Malagasy":"马达加斯加语","Maltese":"马耳他语","Mongolian":"蒙古语","Maori":"毛利语","Malay (macrolanguage)":"马来语(广义)","Burmese":"缅甸语","Nauru":"瑙鲁语","Navajo":"纳瓦霍语","South Ndebele":"南恩德贝勒语","North Ndebele":"北恩德贝勒语","Ndonga":"恩敦加语","Nepali (macrolanguage)":"尼泊尔语(广义)","Dutch":"荷兰语","Norwegian Nynorsk":"新挪威语","Norwegian Bokmål":"挪威布克莫尔语","Norwegian":"挪威语","Nyanja":"尼扬贾语","Occitan":"奥克西唐语","Ojibwa":"奥吉布瓦语","Oriya (macrolanguage)":"奥利亚语(广义)","Oromo":"阿芳·奥洛莫语","Ossetian":"奥塞梯语","Panjabi":"旁遮普语","Pakistan Sign Language":"巴基斯坦手语","Polish":"波兰语","Portuguese":"葡萄牙语","Pushto":"普什图语","Quechua":"凯楚亚语","Romansh":"罗曼什语","Romanian":"罗马尼亚语","Russian Sign Language":"俄罗斯手语","Rundi":"基隆迪语","Russian":"俄语","Sango":"桑戈语","Saudi Arabian Sign Language":"沙特阿拉伯手语","South African Sign Language":"南非手语","Sinhala":"僧加罗语","Slovak":"斯洛伐克语","Slovenian":"斯洛文尼亚语","Northern Sami":"北萨米语","Samoan":"萨摩亚语","Shona":"绍纳语","Sindhi":"信德语","Somali":"索马里语","Southern Sotho":"塞索托语","Spanish":"西班牙语","Albanian":"阿尔巴尼亚语","Sardinian":"撒丁语","Serbian":"塞尔维亚语","Swati":"塞斯瓦替语","Sundanese":"巽他语","Swahili (macrolanguage)":"斯瓦希里语(广义)","Swedish":"瑞典语","Swedish Sign Language":"瑞典手语","Tahitian":"塔希提语","Tamil":"泰米尔语","Tatar":"塔塔尔语","Telugu":"泰卢固语","Tajik":"塔吉克语","Tagalog":"他加禄语","Thai":"泰语","Tigrinya":"提格里尼亚语","Klingon":"克林贡语","Tonga (Tonga Islands)":"汤加语","Tswana":"塞茨瓦纳语","Tsonga":"宗加语","Turkmen":"土库曼语","Turkish":"土耳其语","Twi":"特威语","Uighur":"维吾尔语","Ukrainian":"乌克兰语","Urdu":"乌尔都语","Uzbek":"乌兹别克语","Venda":"文达语","Vietnamese":"越南语","Walloon":"沃伦语","Wolof":"沃洛夫语","Xhosa":"科萨语","Yiddish":"依地语","Yoruba":"约鲁巴语","Zhuang":"壮语","Chinese":"汉语","Zulu":"祖鲁语"} \ No newline at end of file diff --git a/client/src/locale/target/server_zh_Hant_TW.json b/client/src/locale/target/server_zh_Hant_TW.json index 11bcde412..24f638df0 100644 --- a/client/src/locale/target/server_zh_Hant_TW.json +++ b/client/src/locale/target/server_zh_Hant_TW.json @@ -1 +1 @@ -{"Music":"音樂","Films":"電影","Vehicles":"汽車","Art":"藝術","Sports":"運動","Travels":"旅遊","Gaming":"遊戲","People":"大眾","Comedy":"喜劇","Entertainment":"娛樂","How To":"How To","Education":"教育","Activism":"行動","Science & Technology":"科學與科技","Animals":"動物","Kids":"兒童","Food":"食物","Attribution":"姓名標示","Attribution - Share Alike":"姓名標示 - 相同方式分享","Attribution - No Derivatives":"姓名標示 - 禁止改作","Attribution - Non Commercial":"姓名標示 - 非商業性","Attribution - Non Commercial - Share Alike":"姓名標示 - 非商業性 - 相同方式分享","Attribution - Non Commercial - No Derivatives":"姓名標示 - 非商業性 - 禁止改作","Public Domain Dedication":"公有領域","Public":"公開","Unlisted":"不列出","Private":"私人","Published":"已發佈","To transcode":"待轉換編碼","To import":"待匯入","Pending":"擱置中","Success":"成功","Failed":"失敗","Misc":"雜項","Unknown":"未知","Afar":"阿法爾語","Abkhazian":"阿布哈茲語","Afrikaans":"南非語","Akan":"阿寒語","Amharic":"阿姆哈拉語","Arabic":"阿拉伯語","Aragonese":"亞拉岡語","American Sign Language":"美國手語","Assamese":"阿薩姆語","Avaric":"阿瓦爾語","Kotava":"Kotava 語","Aymara":"艾馬拉語","Azerbaijani":"亞塞拜然語","Bashkir":"巴什基爾語","Bambara":"班巴拉語","Belarusian":"白俄羅斯語","Bengali":"孟加拉語","British Sign Language":"英國手語","Bislama":"比斯拉馬語","Tibetan":"藏語","Bosnian":"波士尼亞語","Breton":"布列塔尼語","Bulgarian":"保加利亞語","Brazilian Sign Language":"巴西手語","Catalan":"加泰隆尼亞語","Czech":"捷克語","Chamorro":"查莫羅語","Chechen":"車臣語","Chuvash":"楚瓦什語","Cornish":"康瓦爾語","Corsican":"科西嘉語","Cree":"克里語","Czech Sign Language":"捷克手語","Chinese Sign Language":"中國手語","Welsh":"威爾斯語","Danish":"丹麥語","German":"德語","Dhivehi":"迪維西語","Danish Sign Language":"丹麥手語","Dzongkha":"不丹語","Modern Greek (1453-)":"現代希臘語(1453年後)","English":"英語","Esperanto":"世界語","Estonian":"愛沙尼亞語","Basque":"巴斯克語","Ewe":"埃維語","Faroese":"法羅語","Persian":"波斯語","Fijian":"斐濟語","Finnish":"芬蘭語","French":"法語","Western Frisian":"西菲士蘭語","French Sign Language":"法國手語","Fulah":"富拉語","Scottish Gaelic":"蘇格蘭蓋爾語","Irish":"愛爾蘭語","Galician":"加利西亞語","Manx":"曼島語","Guarani":"瓜拉尼語","German Sign Language":"德國手語","Gujarati":"古吉拉特語","Haitian":"海地語","Hausa":"豪薩語","Serbo-Croatian":"塞爾維亞-克羅埃西亞語","Hebrew":"希伯來語","Herero":"赫雷羅語","Hindi":"印地語","Hiri Motu":"希里摩圖語","Croatian":"克羅埃西亞語","Hungarian":"匈牙利語","Armenian":"亞美尼亞語","Igbo":"伊博語","Sichuan Yi":"彝語北部方言","Inuktitut":"因紐特語","Indonesian":"印尼語","Inupiaq":"因紐皮雅特語","Icelandic":"冰島語","Italian":"義大利語","Javanese":"爪哇語","Lojban":"邏輯語","Japanese":"日語","Japanese Sign Language":"日本手語","Kalaallisut":"格陵蘭語","Kannada":"康納達語","Kashmiri":"喀什米爾語","Georgian":"喬治亞語","Kanuri":"卡努里語","Kazakh":"哈薩克語","Khmer":"高棉語","Kikuyu":"基庫尤語","Kinyarwanda":"盧安達語","Kirghiz":"吉爾吉斯語","Komi":"科米語","Kongo":"剛果語","Korean":"韓語","Kuanyama":"Kuanyama 語","Kurdish":"庫德語","Lao":"寮語","Latvian":"拉脫維亞語","Limburgan":"林堡語","Lingala":"林格拉語","Lithuanian":"立陶宛語","Luxembourgish":"盧森堡語","Luba-Katanga":"盧巴卡丹加語","Ganda":"盧干達語","Marshallese":"馬紹爾語","Malayalam":"馬拉雅拉姆語","Marathi":"馬拉提語","Macedonian":"馬其頓語","Malagasy":"馬拉加斯語","Maltese":"馬爾他語","Mongolian":"蒙古語","Maori":"毛利語","Malay (macrolanguage)":"馬來語","Burmese":"緬甸語","Nauru":"諾魯語","Navajo":"納瓦荷語","South Ndebele":"南恩德貝勒語","North Ndebele":"北恩德貝勒語","Ndonga":"恩敦加語","Nepali (macrolanguage)":"尼泊爾語","Dutch":"荷蘭語","Norwegian Nynorsk":"新挪威語","Norwegian Bokmål":"書面挪威語","Norwegian":"挪威語","Nyanja":"尼揚賈語","Occitan":"奧克西當語","Ojibwa":"歐及布威語","Oriya (macrolanguage)":"歐利亞語","Oromo":"奧羅莫語","Ossetian":"奧塞提亞語","Panjabi":"旁遮普語","Pakistan Sign Language":"巴基斯坦手語","Polish":"波蘭語","Portuguese":"葡萄牙語","Pushto":"普什圖語","Quechua":"奇楚瓦語","Romansh":"羅曼什語","Romanian":"羅馬尼亞語","Russian Sign Language":"俄羅斯手語","Rundi":"克倫地語","Russian":"俄語","Sango":"桑戈語","Saudi Arabian Sign Language":"沙烏地阿拉伯手語","South African Sign Language":"南非手語","Sinhala":"僧伽羅語","Slovak":"斯洛伐克語","Slovenian":"斯洛維尼亞語","Northern Sami":"北方薩米語","Samoan":"薩摩亞語","Shona":"修納語","Sindhi":"信德語","Somali":"索馬利亞語","Southern Sotho":"塞索托語","Spanish":"西班牙語","Albanian":"阿爾巴尼亞語","Sardinian":"薩丁尼亞語","Serbian":"塞爾維亞語","Swati":"史瓦濟語","Sundanese":"巽他語","Swahili (macrolanguage)":"斯瓦希里語","Swedish":"瑞典語","Swedish Sign Language":"瑞典手語","Tahitian":"大溪地語","Tamil":"坦米爾語","Tatar":"韃靼語","Telugu":"泰盧固語","Tajik":"塔吉克語","Tagalog":"他加祿語","Thai":"泰語","Tigrinya":"提格利尼亞語","Klingon":"克林貢語","Tonga (Tonga Islands)":"東加語","Tswana":"札那語","Tsonga":"宋加語","Turkmen":"土庫曼語","Turkish":"土耳其語","Twi":"契維語","Uighur":"維吾爾語","Ukrainian":"烏克蘭語","Urdu":"烏爾都語","Uzbek":"烏茲別克語","Venda":"文達語","Vietnamese":"越南語","Walloon":"瓦隆語","Wolof":"沃洛夫語","Xhosa":"科薩語","Yiddish":"意第緒語","Yoruba":"約魯巴語","Zhuang":"壯語","Chinese":"漢語","Zulu":"祖魯語"} \ No newline at end of file +{"Music":"音樂","Films":"電影","Vehicles":"汽車","Art":"藝術","Sports":"運動","Travels":"旅遊","Gaming":"遊戲","People":"大眾","Comedy":"喜劇","Entertainment":"娛樂","News & Politics":"新聞與政策","How To":"How To","Education":"教育","Activism":"行動","Science & Technology":"科學與科技","Animals":"動物","Kids":"兒童","Food":"食物","Attribution":"姓名標示","Attribution - Share Alike":"姓名標示 - 相同方式分享","Attribution - No Derivatives":"姓名標示 - 禁止改作","Attribution - Non Commercial":"姓名標示 - 非商業性","Attribution - Non Commercial - Share Alike":"姓名標示 - 非商業性 - 相同方式分享","Attribution - Non Commercial - No Derivatives":"姓名標示 - 非商業性 - 禁止改作","Public Domain Dedication":"公有領域","Public":"公開","Unlisted":"不列出","Private":"私人","Published":"已發佈","To transcode":"待轉換編碼","To import":"待匯入","Pending":"擱置中","Success":"成功","Failed":"失敗","Misc":"雜項","Unknown":"未知","Afar":"阿法爾語","Abkhazian":"阿布哈茲語","Afrikaans":"南非語","Akan":"阿寒語","Amharic":"阿姆哈拉語","Arabic":"阿拉伯語","Aragonese":"亞拉岡語","American Sign Language":"美國手語","Assamese":"阿薩姆語","Avaric":"阿瓦爾語","Kotava":"Kotava 語","Aymara":"艾馬拉語","Azerbaijani":"亞塞拜然語","Bashkir":"巴什基爾語","Bambara":"班巴拉語","Belarusian":"白俄羅斯語","Bengali":"孟加拉語","British Sign Language":"英國手語","Bislama":"比斯拉馬語","Tibetan":"藏語","Bosnian":"波士尼亞語","Breton":"布列塔尼語","Bulgarian":"保加利亞語","Brazilian Sign Language":"巴西手語","Catalan":"加泰隆尼亞語","Czech":"捷克語","Chamorro":"查莫羅語","Chechen":"車臣語","Chuvash":"楚瓦什語","Cornish":"康瓦爾語","Corsican":"科西嘉語","Cree":"克里語","Czech Sign Language":"捷克手語","Chinese Sign Language":"中國手語","Welsh":"威爾斯語","Danish":"丹麥語","German":"德語","Dhivehi":"迪維西語","Danish Sign Language":"丹麥手語","Dzongkha":"不丹語","Modern Greek (1453-)":"現代希臘語(1453年後)","English":"英語","Esperanto":"世界語","Estonian":"愛沙尼亞語","Basque":"巴斯克語","Ewe":"埃維語","Faroese":"法羅語","Persian":"波斯語","Fijian":"斐濟語","Finnish":"芬蘭語","French":"法語","Western Frisian":"西菲士蘭語","French Sign Language":"法國手語","Fulah":"富拉語","Scottish Gaelic":"蘇格蘭蓋爾語","Irish":"愛爾蘭語","Galician":"加利西亞語","Manx":"曼島語","Guarani":"瓜拉尼語","German Sign Language":"德國手語","Gujarati":"古吉拉特語","Haitian":"海地語","Hausa":"豪薩語","Serbo-Croatian":"塞爾維亞-克羅埃西亞語","Hebrew":"希伯來語","Herero":"赫雷羅語","Hindi":"印地語","Hiri Motu":"希里摩圖語","Croatian":"克羅埃西亞語","Hungarian":"匈牙利語","Armenian":"亞美尼亞語","Igbo":"伊博語","Sichuan Yi":"彝語北部方言","Inuktitut":"因紐特語","Indonesian":"印尼語","Inupiaq":"因紐皮雅特語","Icelandic":"冰島語","Italian":"義大利語","Javanese":"爪哇語","Lojban":"邏輯語","Japanese":"日語","Japanese Sign Language":"日本手語","Kalaallisut":"格陵蘭語","Kannada":"康納達語","Kashmiri":"喀什米爾語","Georgian":"喬治亞語","Kanuri":"卡努里語","Kazakh":"哈薩克語","Khmer":"高棉語","Kikuyu":"基庫尤語","Kinyarwanda":"盧安達語","Kirghiz":"吉爾吉斯語","Komi":"科米語","Kongo":"剛果語","Korean":"韓語","Kuanyama":"Kuanyama 語","Kurdish":"庫德語","Lao":"寮語","Latvian":"拉脫維亞語","Limburgan":"林堡語","Lingala":"林格拉語","Lithuanian":"立陶宛語","Luxembourgish":"盧森堡語","Luba-Katanga":"盧巴卡丹加語","Ganda":"盧干達語","Marshallese":"馬紹爾語","Malayalam":"馬拉雅拉姆語","Marathi":"馬拉提語","Macedonian":"馬其頓語","Malagasy":"馬拉加斯語","Maltese":"馬爾他語","Mongolian":"蒙古語","Maori":"毛利語","Malay (macrolanguage)":"馬來語","Burmese":"緬甸語","Nauru":"諾魯語","Navajo":"納瓦荷語","South Ndebele":"南恩德貝勒語","North Ndebele":"北恩德貝勒語","Ndonga":"恩敦加語","Nepali (macrolanguage)":"尼泊爾語","Dutch":"荷蘭語","Norwegian Nynorsk":"新挪威語","Norwegian Bokmål":"書面挪威語","Norwegian":"挪威語","Nyanja":"尼揚賈語","Occitan":"奧克西當語","Ojibwa":"歐及布威語","Oriya (macrolanguage)":"歐利亞語","Oromo":"奧羅莫語","Ossetian":"奧塞提亞語","Panjabi":"旁遮普語","Pakistan Sign Language":"巴基斯坦手語","Polish":"波蘭語","Portuguese":"葡萄牙語","Pushto":"普什圖語","Quechua":"奇楚瓦語","Romansh":"羅曼什語","Romanian":"羅馬尼亞語","Russian Sign Language":"俄羅斯手語","Rundi":"克倫地語","Russian":"俄語","Sango":"桑戈語","Saudi Arabian Sign Language":"沙烏地阿拉伯手語","South African Sign Language":"南非手語","Sinhala":"僧伽羅語","Slovak":"斯洛伐克語","Slovenian":"斯洛維尼亞語","Northern Sami":"北方薩米語","Samoan":"薩摩亞語","Shona":"修納語","Sindhi":"信德語","Somali":"索馬利亞語","Southern Sotho":"塞索托語","Spanish":"西班牙語","Albanian":"阿爾巴尼亞語","Sardinian":"薩丁尼亞語","Serbian":"塞爾維亞語","Swati":"史瓦濟語","Sundanese":"巽他語","Swahili (macrolanguage)":"斯瓦希里語","Swedish":"瑞典語","Swedish Sign Language":"瑞典手語","Tahitian":"大溪地語","Tamil":"坦米爾語","Tatar":"韃靼語","Telugu":"泰盧固語","Tajik":"塔吉克語","Tagalog":"他加祿語","Thai":"泰語","Tigrinya":"提格利尼亞語","Klingon":"克林貢語","Tonga (Tonga Islands)":"東加語","Tswana":"札那語","Tsonga":"宋加語","Turkmen":"土庫曼語","Turkish":"土耳其語","Twi":"契維語","Uighur":"維吾爾語","Ukrainian":"烏克蘭語","Urdu":"烏爾都語","Uzbek":"烏茲別克語","Venda":"文達語","Vietnamese":"越南語","Walloon":"瓦隆語","Wolof":"沃洛夫語","Xhosa":"科薩語","Yiddish":"意第緒語","Yoruba":"約魯巴語","Zhuang":"壯語","Chinese":"漢語","Zulu":"祖魯語"} \ No newline at end of file -- cgit v1.2.3 From f96408eefce0f6f19e6aa0fbfd32bc0f7e8fd6c2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 11:34:51 +0100 Subject: Fix changelog bullet points --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff336daf3..25ab0e2b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,9 @@ ### Docker * Improve docker compose template ([@Nutomic](https://github.com/nutomic)) - * Add postfix image - * Redirect HTTP -> HTTPS - * Disable Træfik web UI + * Add postfix image + * Redirect HTTP -> HTTPS + * Disable Træfik web UI * Add ability to set an array in `PEERTUBE_TRUST_PROXY` ([LecygneNoir](https://github.com/LecygneNoir)) ### Features -- cgit v1.2.3 From 14b6157638ef282f48c460487bd3a88df89d8b04 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Thu, 22 Nov 2018 11:38:06 +0100 Subject: add federation doc to Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25ab0e2b0..fe552f95d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Maintenance * Improve REST API documentation: https://docs.joinpeertube.org/api.html ([@rigelk](https://github.com/rigelk)) + * Add basic ActivityPub documentation: https://docs.joinpeertube.org/lang/en/devdocs/federation.html ([@rigelk](https://github.com/rigelk)) * Add CLI option to run PeerTube without client ([@rigelk](https://github.com/rigelk)) * Add manpage to peertube CLI ([@rigelk](https://github.com/rigelk)) * Make backups of files in optimize-old-videos script ([@Nutomic](https://github.com/nutomic)) -- cgit v1.2.3 From 57b972698208ba5e393aac718995a60388360450 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 14:06:11 +0100 Subject: Fix some zanata translations --- client/src/locale/target/angular_ar_001.xml | 3 +- client/src/locale/target/angular_de_DE.xml | 42 +++++---------- client/src/locale/target/angular_fa_IR.xml | 12 ++--- client/src/locale/target/angular_it_IT.xml | 69 ++++++++---------------- client/src/locale/target/angular_ja_JP.xml | 24 +++------ client/src/locale/target/angular_jbo.xml | 3 +- client/src/locale/target/angular_nl_NL.xml | 3 +- client/src/locale/target/angular_pl_PL.xml | 18 +++---- client/src/locale/target/angular_sv_SE.xml | 81 ++++++++++------------------- scripts/i18n/pull-hook.sh | 1 + 10 files changed, 86 insertions(+), 170 deletions(-) diff --git a/client/src/locale/target/angular_ar_001.xml b/client/src/locale/target/angular_ar_001.xml index 386d190ff..05e55793d 100644 --- a/client/src/locale/target/angular_ar_001.xml +++ b/client/src/locale/target/angular_ar_001.xml @@ -883,8 +883,7 @@ - PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser. - + PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser.PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser. 6 diff --git a/client/src/locale/target/angular_de_DE.xml b/client/src/locale/target/angular_de_DE.xml index c49c6d701..46e622908 100644 --- a/client/src/locale/target/angular_de_DE.xml +++ b/client/src/locale/target/angular_de_DE.xml @@ -1278,32 +1278,27 @@ Konto erstellen - Banned - + BannedBanned 12 - Muted - + MutedMuted 13 - Muted by your instance - + Muted by your instanceMuted by your instance 14 - Instance muted - + Instance mutedInstance muted 15 - Instance muted by your instance - + Instance muted by your instanceInstance muted by your instance 16 @@ -1968,8 +1963,7 @@ Konto erstellen - (banned) - + (banned)(banned) 65 @@ -2118,14 +2112,12 @@ Konto erstellen - Muted accounts - + Muted accountsMuted accounts 2 - Muted servers - + Muted serversMuted servers 11 @@ -2137,14 +2129,12 @@ Konto erstellen - Muted at - + Muted at Muted at 13 - Unmute - + UnmuteUnmute 23 @@ -2191,8 +2181,7 @@ Konto erstellen - Muted instances - + Muted instancesMuted instances 2 @@ -3679,8 +3668,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa - Account unmuted by your instance. - + Account unmuted by your instance.Account unmuted by your instance. 1 @@ -3776,8 +3764,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa - If you remove these users, you will not be able to create others with the same username! - + If you remove these users, you will not be able to create others with the same username!If you remove these users, you will not be able to create others with the same username! 1 @@ -3992,8 +3979,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa - Subscribe to the account - + Subscribe to the accountSubscribe to the account 1 diff --git a/client/src/locale/target/angular_fa_IR.xml b/client/src/locale/target/angular_fa_IR.xml index fbef34713..fe2d0b0cf 100644 --- a/client/src/locale/target/angular_fa_IR.xml +++ b/client/src/locale/target/angular_fa_IR.xml @@ -377,8 +377,7 @@ - Username - + UsernameUsername 8 @@ -529,8 +528,7 @@ - Toggle dark interface - + Toggle dark interfaceToggle dark interface 94 @@ -764,14 +762,12 @@ - State - + StateState 10 - Follow - + FollowFollow 7 diff --git a/client/src/locale/target/angular_it_IT.xml b/client/src/locale/target/angular_it_IT.xml index 2f98b52dc..dea48b4a7 100644 --- a/client/src/locale/target/angular_it_IT.xml +++ b/client/src/locale/target/angular_it_IT.xml @@ -1857,8 +1857,7 @@ - Finished on - + Finished onFinished on 23 @@ -1921,14 +1920,12 @@ - Batch actions - + Batch actionsBatch actions 19 - Username - + Username Username 40 @@ -1979,8 +1976,7 @@ - Reporter - + ReporterReporter 8 @@ -2712,8 +2708,7 @@ When you will upload a video in this channel, the video support field will be au - Select the caption file - + Select the caption fileSelect the caption file 24 @@ -2806,14 +2801,12 @@ When you will upload a video in this channel, the video support field will be au - Wait transcoding before publishing the video - + Wait transcoding before publishing the videoWait transcoding before publishing the video 130 - If you decide not to wait for transcoding before publishing the video, it could be unplayable until transcoding ends. - + If you decide not to wait for transcoding before publishing the video, it could be unplayable until transcoding ends.If you decide not to wait for transcoding before publishing the video, it could be unplayable until transcoding ends. 131 @@ -2853,8 +2846,7 @@ When you will upload a video in this channel, the video support field will be au - Captions - + CaptionsCaptions 139 @@ -2866,8 +2858,7 @@ When you will upload a video in this channel, the video support field will be au - Upload preview - + Upload previewUpload preview 202 @@ -2879,8 +2870,7 @@ When you will upload a video in this channel, the video support field will be au - Short text to tell people how they can support you (membership platform...). - + Short text to tell people how they can support you (membership platform...).Short text to tell people how they can support you (membership platform...). 209 @@ -2967,14 +2957,12 @@ When you will upload a video in this channel, the video support field will be au - QR-Code - + QR-CodeQR-Code 29 - Embed - + EmbedEmbed 34 @@ -3310,8 +3298,7 @@ Altri video - Success - + SuccessSuccess 1 @@ -3456,8 +3443,7 @@ Altri video - Abuse deleted. - + Abuse deleted.Abuse deleted. 1 @@ -3504,8 +3490,7 @@ Altri video - You cannot ban root. - + You cannot ban root.You cannot ban root. 1 @@ -3517,8 +3502,7 @@ Altri video - Ownership accepted - + Ownership acceptedOwnership accepted 1 @@ -3677,14 +3661,12 @@ Altri video - To transcode - + To transcodeTo transcode 1 - To import - + To importTo import 1 @@ -4097,14 +4079,12 @@ Altri video - Display name must be at least 3 characters long. - + Display name must be at least 3 characters long.Display name must be at least 3 characters long. 1 - Display name cannot be more than 120 characters long. - + Display name cannot be more than 120 characters long.Display name cannot be more than 120 characters long. 1 @@ -4697,14 +4677,12 @@ Altri video - of HD videos - + of HD videos of HD videos 1 - of average quality videos - + of average quality videos of average quality videos 1 @@ -4828,8 +4806,7 @@ Altri video - Do you really want to unban ? - + Do you really want to unban ?Do you really want to unban ? 1 diff --git a/client/src/locale/target/angular_ja_JP.xml b/client/src/locale/target/angular_ja_JP.xml index cb303ad3a..d0b592098 100644 --- a/client/src/locale/target/angular_ja_JP.xml +++ b/client/src/locale/target/angular_ja_JP.xml @@ -109,8 +109,7 @@ - % - + %% 6 @@ -220,8 +219,7 @@ - (extensions: , max size: ) - + (extensions: , max size: )(extensions: , max size: ) 11 @@ -362,8 +360,7 @@ - Forgot your password - + Forgot your passwordForgot your password 57 @@ -400,8 +397,7 @@ - Confirm password - + Confirm passwordConfirm password 19 @@ -459,8 +455,7 @@ - Change the language - + Change the languageChange the language 88 @@ -520,8 +515,7 @@ - Trending - + TrendingTrending 57 @@ -891,8 +885,7 @@ - Transcoding threads - + Transcoding threadsTranscoding threads 223 @@ -1658,8 +1651,7 @@ - You cannot ban root. - + You cannot ban root.You cannot ban root. 1 diff --git a/client/src/locale/target/angular_jbo.xml b/client/src/locale/target/angular_jbo.xml index f05bc88c2..83e61a714 100644 --- a/client/src/locale/target/angular_jbo.xml +++ b/client/src/locale/target/angular_jbo.xml @@ -480,8 +480,7 @@ lo mi vidvi - Instance - + InstanceInstance 12 diff --git a/client/src/locale/target/angular_nl_NL.xml b/client/src/locale/target/angular_nl_NL.xml index 00cfcb954..3db9f0504 100644 --- a/client/src/locale/target/angular_nl_NL.xml +++ b/client/src/locale/target/angular_nl_NL.xml @@ -1115,8 +1115,7 @@ Als je een video uploadt in dit kanaal, wordt deze tekst ingevuld in het "onders - Automatically plays video - + Automatically plays videoAutomatically plays video 28 diff --git a/client/src/locale/target/angular_pl_PL.xml b/client/src/locale/target/angular_pl_PL.xml index 325dd86f9..fd6e03469 100644 --- a/client/src/locale/target/angular_pl_PL.xml +++ b/client/src/locale/target/angular_pl_PL.xml @@ -1061,8 +1061,7 @@ - An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program - + An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized programAn automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program 95 @@ -1123,8 +1122,7 @@ - Default client route - + Default client routeDefault client route 55 @@ -1496,8 +1494,7 @@ - State - + StateState 10 @@ -2326,8 +2323,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia - Dislike this video - + Dislike this videoDislike this video 64 @@ -3404,8 +3400,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia - Video support must be at least 3 characters long. - + Video support must be at least 3 characters long.Video support must be at least 3 characters long. 1 @@ -4068,8 +4063,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia - likes / dislikes - + likes / dislikes likes / dislikes 1 diff --git a/client/src/locale/target/angular_sv_SE.xml b/client/src/locale/target/angular_sv_SE.xml index 7b4553359..e30575d80 100644 --- a/client/src/locale/target/angular_sv_SE.xml +++ b/client/src/locale/target/angular_sv_SE.xml @@ -1319,26 +1319,22 @@ - Muted - + MutedMuted 13 - Muted by your instance - + Muted by your instanceMuted by your instance 14 - Instance muted - + Instance mutedInstance muted 15 - Instance muted by your instance - + Instance muted by your instanceInstance muted by your instance 16 @@ -2157,14 +2153,12 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a - Muted accounts - + Muted accountsMuted accounts 2 - Muted servers - + Muted serversMuted servers 11 @@ -2176,14 +2170,12 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a - Muted at - + Muted at Muted at 13 - Unmute - + UnmuteUnmute 23 @@ -2237,8 +2229,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a - Muted instances - + Muted instancesMuted instances 2 @@ -3725,14 +3716,12 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt - Account unmuted by your instance. - + Account unmuted by your instance.Account unmuted by your instance. 1 - Instance unmuted by your instance. - + Instance unmuted by your instance.Instance unmuted by your instance. 1 @@ -3870,14 +3859,12 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt - Account unmuted. - + Account unmuted.Account unmuted. 1 - Instance unmuted. - + Instance unmuted.Instance unmuted. 1 @@ -5410,86 +5397,72 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt - Account muted. - + Account muted.Account muted. 1 - Instance muted. - + Instance muted.Instance muted. 1 - Account muted by the instance. - + Account muted by the instance.Account muted by the instance. 1 - Account unmuted by the instance. - + Account unmuted by the instance.Account unmuted by the instance. 1 - Instance muted by the instance. - + Instance muted by the instance.Instance muted by the instance. 1 - Instance unmuted by the instance. - + Instance unmuted by the instance.Instance unmuted by the instance. 1 - Mute this account - + Mute this accountMute this account 1 - Unmute this account - + Unmute this accountUnmute this account 1 - Mute the instance - + Mute the instanceMute the instance 1 - Unmute the instance - + Unmute the instanceUnmute the instance 1 - Mute this account by your instance - + Mute this account by your instanceMute this account by your instance 1 - Unmute this account by your instance - + Unmute this account by your instanceUnmute this account by your instance 1 - Mute the instance by your instance - + Mute the instance by your instanceMute the instance by your instance 1 - Unmute the instance by your instance - + Unmute the instance by your instanceUnmute the instance by your instance 1 diff --git a/scripts/i18n/pull-hook.sh b/scripts/i18n/pull-hook.sh index 3a8394110..b0668436d 100755 --- a/scripts/i18n/pull-hook.sh +++ b/scripts/i18n/pull-hook.sh @@ -7,6 +7,7 @@ set -eu for i in 1 2 3; do perl -pi -e 's|<x id=(.+?)/>([^"])|\2|g' client/src/locale/target/*.xml + perl -0pi -e 's|(.+?)\s*\1\1 Date: Thu, 22 Nov 2018 14:27:46 +0100 Subject: Bumped to version v1.1.0-rc.1 --- client/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index a14978998..5184ac7bc 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "peertube-client", - "version": "1.1.0-alpha.2", + "version": "1.1.0-rc.1", "private": true, "licence": "GPLv3", "author": { diff --git a/package.json b/package.json index 391e1ff90..7342cddb5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube", "description": "Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.", - "version": "1.1.0-alpha.2", + "version": "1.1.0-rc.1", "private": true, "licence": "AGPLv3", "engines": { -- cgit v1.2.3 From 6cc98dfff3d021c0c75e618e251fc99706459bf2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 15:04:14 +0100 Subject: Add open api bump version in release script --- package.json | 2 +- scripts/openapi-peertube-version.sh | 4 +++- scripts/release.sh | 4 +++- support/doc/api/openapi.yaml | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 7342cddb5..8d3922231 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ }, "husky": { "hooks": { - "pre-commit": "./scripts/openapi-peertube-version.sh && lint-staged" + "pre-commit": "lint-staged" } }, "lint-staged": { diff --git a/scripts/openapi-peertube-version.sh b/scripts/openapi-peertube-version.sh index c638291f6..4eb481e64 100755 --- a/scripts/openapi-peertube-version.sh +++ b/scripts/openapi-peertube-version.sh @@ -1,4 +1,6 @@ +#!/usr/bin/env bash + # Version key/value should be on his own line PACKAGE_VERSION=$(node -p "require('./package.json').version") -sed -i "s/\(^\s*\)version: .*/\1version: $PACKAGE_VERSION/" support/doc/api/openapi.yaml +sed -i "s/\(^\s*\)version: .*/\1version: $PACKAGE_VERSION/" ./support/doc/api/openapi.yaml diff --git a/scripts/release.sh b/scripts/release.sh index ccb93bc44..134f2d288 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -60,7 +60,9 @@ fi npm version -f --no-git-tag-version --no-commit-hooks "$1" -git commit package.json client/package.json -m "Bumped to version $version" +./scripts/openapi-peertube-version.sh + +git commit package.json client/package.json ./support/doc/api/openapi.yaml -m "Bumped to version $version" git tag -s -a "$version" -m "$version" npm run build diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index f0c0b46b1..3a3e71f93 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: PeerTube - version: 1.1.0-alpha.2 + version: 1.1.0-rc.1 contact: name: PeerTube Community url: 'https://joinpeertube.org' -- cgit v1.2.3 From a8f378e02c1b0dbb6d6ac202a369d0df18eb9317 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 22 Nov 2018 15:30:41 +0100 Subject: Don't import test tools in core --- server/lib/activitypub/process/process-create.ts | 3 +-- server/lib/activitypub/process/process-like.ts | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/server/lib/activitypub/process/process-create.ts b/server/lib/activitypub/process/process-create.ts index 214e14546..f7fb09fba 100644 --- a/server/lib/activitypub/process/process-create.ts +++ b/server/lib/activitypub/process/process-create.ts @@ -12,7 +12,6 @@ import { getOrCreateVideoAndAccountAndChannel } from '../videos' import { forwardVideoRelatedActivity } from '../send/utils' import { Redis } from '../../redis' import { createOrUpdateCacheFile } from '../cache-file' -import { immutableAssign } from '../../../tests/utils' import { getVideoDislikeActivityPubUrl } from '../url' import { VideoModel } from '../../../models/video/video' @@ -71,7 +70,7 @@ async function processCreateDislike (byActor: ActorModel, activity: ActivityCrea const [ , created ] = await AccountVideoRateModel.findOrCreate({ where: rate, - defaults: immutableAssign(rate, { url: getVideoDislikeActivityPubUrl(byActor, video) }), + defaults: Object.assign({}, rate, { url: getVideoDislikeActivityPubUrl(byActor, video) }), transaction: t }) if (created === true) await video.increment('dislikes', { transaction: t }) diff --git a/server/lib/activitypub/process/process-like.ts b/server/lib/activitypub/process/process-like.ts index 0dca17551..e8e97eece 100644 --- a/server/lib/activitypub/process/process-like.ts +++ b/server/lib/activitypub/process/process-like.ts @@ -5,8 +5,7 @@ import { AccountVideoRateModel } from '../../../models/account/account-video-rat import { ActorModel } from '../../../models/activitypub/actor' import { forwardVideoRelatedActivity } from '../send/utils' import { getOrCreateVideoAndAccountAndChannel } from '../videos' -import { immutableAssign } from '../../../tests/utils' -import { getVideoDislikeActivityPubUrl, getVideoLikeActivityPubUrl } from '../url' +import { getVideoLikeActivityPubUrl } from '../url' async function processLikeActivity (activity: ActivityLike, byActor: ActorModel) { return retryTransactionWrapper(processLikeVideo, byActor, activity) @@ -36,7 +35,7 @@ async function processLikeVideo (byActor: ActorModel, activity: ActivityLike) { } const [ , created ] = await AccountVideoRateModel.findOrCreate({ where: rate, - defaults: immutableAssign(rate, { url: getVideoLikeActivityPubUrl(byActor, video) }), + defaults: Object.assign({}, rate, { url: getVideoLikeActivityPubUrl(byActor, video) }), transaction: t }) if (created === true) await video.increment('likes', { transaction: t }) -- cgit v1.2.3 From 9644c2a88eb227e7441b0f0a75abb75b41cc60ca Mon Sep 17 00:00:00 2001 From: Thomas Kuntz Date: Wed, 31 Oct 2018 13:23:18 +0100 Subject: Add Introduction to README Provide small explanation of what is PeerTube and point to resources to learn more (combined with 'Want to see in action?' links) --- README.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3303d8a32..6a799a526 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,23 @@ directly in the web browser with

    +Introduction +---------------------------------------------------------------- + +PeerTube is a free, decentralized and federated video platform developed as an alternative to other platforms that centralize our data and attention, such as YouTube, Dailymotion or Vimeo. :clapper: + +PeerTube is a software that enables the creation of a network of multiple small interconnected video hosting providers, called instances. :movie_camera: :globe_with_meridians: + +To learn more, see: + +* This [two-minute video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) explaining what PeerTube is and how it works (hosted on PeerTube, of course :wink:) +* PeerTube's Website, [joinpeertube.org](https://joinpeertube.org) +* Demonstration instances: + * [peertube.cpy.re](https://peertube.cpy.re) + * [peertube2.cpy.re](https://peertube2.cpy.re) + * [peertube3.cpy.re](https://peertube3.cpy.re) +* This [video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) demonstrating the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) (decentralized Twitter alternative) + :sparkles: Features ---------------------------------------------------------------- @@ -97,17 +114,6 @@ In addition to visitors using WebTorrent to share the load among them, instances Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and incentivize alter creativity (more about that in our FAQ).

    ---- - -Want to see it in action? - - * Demonstration servers: - * [peertube.cpy.re](https://peertube.cpy.re) - * [peertube2.cpy.re](https://peertube2.cpy.re) - * [peertube3.cpy.re](https://peertube3.cpy.re) - * [Video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) explaining what PeerTube is - * [Video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) showing the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) - :question: Motivation ---------------------------------------------------------------- -- cgit v1.2.3 From f95cb03a29716a455ad89877dfd5192d825e3931 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Thu, 22 Nov 2018 16:27:27 +0100 Subject: (doc) less technical headline, more compact introduction * FAQ: moving motivation from README. * README: headline is more appealing to a non-technical public. Introduction now presents WebTorrent and ActivityPub. --- FAQ.md | 23 +++++++++++++++++++++++ README.md | 27 +++++---------------------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/FAQ.md b/FAQ.md index ac75d1321..34e365874 100644 --- a/FAQ.md +++ b/FAQ.md @@ -5,6 +5,7 @@ +- [Why did you create PeerTube?](#why-did-you-create-peertube) - [I don't like the name "PeerTube"](#i-dont-like-the-name-peertube) - [If nobody watches a video, is it seeded?](#if-nobody-watches-a-video-is-it-seeded) - [What is WebSeed?](#what-is-webseed) @@ -22,6 +23,28 @@ +## Why did you create PeerTube? + +We can't build a FOSS video streaming alternative to YouTube, Dailymotion, +Vimeo... with centralized software. One organization alone may not have +enough money to pay for bandwidth and video storage of its servers. + +Our stance is that only a decentralized network of servers can provide an +acceptable answer to technical issues (bandwidth, transcoding expenses, etc.) +and social answers (need for a particular moderation policy, preserving +content, etc.). + +While a paragraph is not enough to answer all these problems, PeerTube has +very early prouded itself for using a contributory design, both for creating +communities as federated nodes (as [Mastodon](https://joinmastodon.org/) for +example), and for seeding videos (instances can seed each other's videos). But it's not +enough because one video could become popular and overload the server. That is +why we need to use a P2P protocol to limit the server load. Thanks to +[WebTorrent](https://github.com/feross/webtorrent), we can use BitTorrent +inside most modern web browsers, and users become seeds as the video gets +more viewers. + + ## I don't like the name "PeerTube" PeerTube is just the name of the software. You can install it on your diff --git a/README.md b/README.md index 6a799a526..fb8eb0d0e 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,7 @@

    -Federated (ActivityPub) video streaming platform using P2P (BitTorrent) -directly in the web browser with WebTorrent. +Be part of a network of multiple small interconnected, federated, interoperable video hosting providers. Follow video creators and create videos. No vendor lock-in. All on a platform that is community-owned and ad-free.

    @@ -63,19 +62,16 @@ directly in the web browser with Introduction ---------------------------------------------------------------- -PeerTube is a free, decentralized and federated video platform developed as an alternative to other platforms that centralize our data and attention, such as YouTube, Dailymotion or Vimeo. :clapper: - -PeerTube is a software that enables the creation of a network of multiple small interconnected video hosting providers, called instances. :movie_camera: :globe_with_meridians: +PeerTube is a free, decentralized and federated video platform developed as an alternative to other platforms that centralize our data and attention, such as YouTube, Dailymotion or Vimeo. :clapper: But one organization hosting PeerTube alone may not have enough money to pay for bandwidth and video storage of its servers, all servers of PeerTube are interoperable as a federated network, and non-PeerTube servers can be part of the larger Vidiverse (federated video network) by talking our implementation of ActivityPub. Video load is reduced thanks to P2P (BitTorrent) in the web browser via WebTorrent. To learn more, see: - -* This [two-minute video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) explaining what PeerTube is and how it works (hosted on PeerTube, of course :wink:) -* PeerTube's Website, [joinpeertube.org](https://joinpeertube.org) +* This [two-minute video](https://framatube.org/videos/watch/217eefeb-883d-45be-b7fc-a788ad8507d3) (hosted on PeerTube) explaining what PeerTube is and how it works +* PeerTube's project homepage, [joinpeertube.org](https://joinpeertube.org) * Demonstration instances: * [peertube.cpy.re](https://peertube.cpy.re) * [peertube2.cpy.re](https://peertube2.cpy.re) * [peertube3.cpy.re](https://peertube3.cpy.re) -* This [video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) demonstrating the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) (decentralized Twitter alternative) +* This [video](https://peertube.cpy.re/videos/watch/da2b08d4-a242-4170-b32a-4ec8cbdca701) demonstrating the communication between PeerTube and [Mastodon](https://github.com/tootsuite/mastodon) (a decentralized Twitter alternative) :sparkles: Features ---------------------------------------------------------------- @@ -114,19 +110,6 @@ In addition to visitors using WebTorrent to share the load among them, instances Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and incentivize alter creativity (more about that in our FAQ).

    -:question: Motivation ----------------------------------------------------------------- - -We can't build a FOSS video streaming alternative to YouTube, Dailymotion, -Vimeo... with centralized software. One organization alone may not have -enough money to pay for bandwidth and video storage of its servers. - -So we need to have a decentralized network of servers seeding videos (as -[Diaspora](https://github.com/diaspora/diaspora) for example). But it's not -enough because one video could become popular and overload the server. That is -why we need to use a P2P protocol to limit the server load. Thanks to -[WebTorrent](https://github.com/feross/webtorrent), we can make BitTorrent inside the web browser, as of today. - :raised_hands: Contributing ---------------------------------------------------------------- -- cgit v1.2.3 From 1b5e2d72900c8ceaf76940b72839d3c424ac96e8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 23 Nov 2018 11:06:10 +0100 Subject: Optimize config endpoint --- server/controllers/api/config.ts | 8 ++++---- server/helpers/utils.ts | 6 +++--- server/tools/peertube-repl.ts | 7 ++----- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/server/controllers/api/config.ts b/server/controllers/api/config.ts index 03c1cec7b..5233e9f68 100644 --- a/server/controllers/api/config.ts +++ b/server/controllers/api/config.ts @@ -10,7 +10,7 @@ import { customConfigUpdateValidator } from '../../middlewares/validators/config import { ClientHtml } from '../../lib/client-html' import { auditLoggerFactory, CustomConfigAuditView, getAuditIdFromRes } from '../../helpers/audit-logger' import { remove, writeJSON } from 'fs-extra' -import { getVersion } from '../../helpers/utils' +import { getServerCommit } from '../../helpers/utils' const packageJSON = require('../../../../package.json') const configRouter = express.Router() @@ -40,11 +40,11 @@ configRouter.delete('/custom', ) let serverCommit: string -async function getConfig (req: express.Request, res: express.Response, next: express.NextFunction) { +async function getConfig (req: express.Request, res: express.Response) { const allowed = await isSignupAllowed() const allowedForCurrentIP = isSignupAllowedForCurrentIP(req.ip) - serverCommit = (serverCommit) ? serverCommit : await getVersion() - if (serverCommit === packageJSON.version) serverCommit = '' + + if (serverCommit === undefined) serverCommit = await getServerCommit() const enabledResolutions = Object.keys(CONFIG.TRANSCODING.RESOLUTIONS) .filter(key => CONFIG.TRANSCODING.ENABLED === CONFIG.TRANSCODING.RESOLUTIONS[key] === true) diff --git a/server/helpers/utils.ts b/server/helpers/utils.ts index 049c3f8bc..5c9d6fe2f 100644 --- a/server/helpers/utils.ts +++ b/server/helpers/utils.ts @@ -57,7 +57,7 @@ function getSecureTorrentName (originalName: string) { return sha256(originalName) + '.torrent' } -async function getVersion () { +async function getServerCommit () { try { const tag = await execPromise2( '[ ! -d .git ] || git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || true', @@ -77,7 +77,7 @@ async function getVersion () { logger.debug('Cannot get version from git HEAD.', { err }) } - return require('../../../package.json').version + return '' } /** @@ -102,7 +102,7 @@ export { getFormattedObjects, getSecureTorrentName, getServerActor, - getVersion, + getServerCommit, generateVideoTmpPath, getUUIDFromFilename } diff --git a/server/tools/peertube-repl.ts b/server/tools/peertube-repl.ts index 6800ff8ab..04d8b95a3 100644 --- a/server/tools/peertube-repl.ts +++ b/server/tools/peertube-repl.ts @@ -20,14 +20,10 @@ import * as signupUtils from '../helpers/signup' import * as utils from '../helpers/utils' import * as YoutubeDLUtils from '../helpers/youtube-dl' -let versionCommitHash - const start = async () => { await initDatabaseModels(true) - await utils.getVersion().then((data) => { - versionCommitHash = data - }) + const versionCommitHash = await utils.getServerCommit() const initContext = (replServer) => { return (context) => { @@ -59,6 +55,7 @@ const start = async () => { initContext(replServer)(replServer.context) replServer.on('reset', initContext(replServer)) + replServer.on('exit', () => process.exit()) const resetCommand = { help: 'Reset REPL', -- cgit v1.2.3 From 3f82804c6cc26a3a67e28d5404d5e5605a6fa4a6 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Fri, 23 Nov 2018 18:02:08 +0100 Subject: add donate link, move redundancy doc and images to docs.joinpeertube.org --- CHANGELOG.md | 2 +- FAQ.md | 2 +- README.md | 37 ++++++-------------------- support/doc/redundancy.md | 52 ------------------------------------- support/doc/user/decentralized.png | Bin 22099 -> 0 bytes support/doc/user/decentralized.xml | 1 - support/doc/user/redundancy.png | Bin 29641 -> 0 bytes support/doc/user/redundancy.xml | 1 - support/doc/user/watch-p2p.png | Bin 16838 -> 0 bytes support/doc/user/watch-p2p.xml | 1 - support/doc/user/watch-video.png | Bin 21543 -> 0 bytes support/doc/user/watch-video.xml | 1 - 12 files changed, 10 insertions(+), 87 deletions(-) delete mode 100644 support/doc/redundancy.md delete mode 100644 support/doc/user/decentralized.png delete mode 100644 support/doc/user/decentralized.xml delete mode 100644 support/doc/user/redundancy.png delete mode 100644 support/doc/user/redundancy.xml delete mode 100644 support/doc/user/watch-p2p.png delete mode 100644 support/doc/user/watch-p2p.xml delete mode 100644 support/doc/user/watch-video.png delete mode 100644 support/doc/user/watch-video.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index fe552f95d..ae66805e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -219,7 +219,7 @@ This release could contain bugs. Don't expect a stable v1.1.0 until December :) ### Features - * Video redundancy system (experimental, see [the doc](/support/doc/redundancy.md)) + * Video redundancy system (experimental, see [the doc](https://docs.joinpeertube.org/lang/en/devdocs/architecture.html#redundancy-between-instances)) * Add peertube script (see [the doc](/support/doc/tools.md#cli-wrapper)) ([@rigelk](https://github.com/rigelk)) * Improve download modal ([@rigelk](https://github.com/rigelk)) * Add redirect after login ([@BO41](https://github.com/BO41)) diff --git a/FAQ.md b/FAQ.md index 34e365874..1e586161c 100644 --- a/FAQ.md +++ b/FAQ.md @@ -56,7 +56,7 @@ is named "Framatube". Yes, the origin server always seeds videos uploaded on it thanks to [Webseed](http://www.bittorrent.org/beps/bep_0019.html). -It can also be helped by other servers using [redundancy](/support/doc/redundancy.md). +It can also be helped by other servers using [redundancy](https://docs.joinpeertube.org/lang/en/devdocs/architecture.html#redundancy-between-instances). ## What is WebSeed? diff --git a/README.md b/README.md index fb8eb0d0e..a3669353b 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,11 @@ | Join an instance | Create an instance | Chat with us + | Donate

    -Be part of a network of multiple small interconnected, federated, interoperable video hosting providers. Follow video creators and create videos. No vendor lock-in. All on a platform that is community-owned and ad-free. +Be part of a network of multiple small federated, interoperable video hosting providers. Follow video creators and create videos. No vendor lock-in. All on a platform that is community-owned and ad-free.

    @@ -104,7 +105,7 @@ Be it as a user or an instance administrator, you can decide what your experienc

    Communities that help each other

    -In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our redundancy guide). +In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our redundancy guide).

    Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and incentivize alter creativity (more about that in our FAQ). @@ -167,35 +168,13 @@ See the more general [admin documentation](https://docs.joinpeertube.org/lang/en ### Technical documentation -See [ARCHITECTURE.md](/ARCHITECTURE.md) for a more detailed explanation of the architectural choices. +See the [architecture blueprint](https://docs.joinpeertube.org/lang/en/devdocs/architecture.html) for a more detailed explanation of the architectural choices. -#### Backend - - * REST API: - * OpenAPI 3.0.0 schema: [/support/doc/api/openapi.yaml](/support/doc/api/openapi.yaml) - * HTML explorer: [docs.joinpeertube.org/api.html](http://docs.joinpeertube.org/api.html) - * Servers communicate with each other with [Activity - Pub](https://www.w3.org/TR/activitypub/). - * Each server has its own users who query it (search videos, query where the - torrent URI of this specific video is...). - * When a user uploads a video, the server sends its followers metadata about the video (name, short description, torrent URI...). - * A server is a tracker responsible for all the videos uploaded on it. - * Even if nobody watches a video, it is seeded by the server (through - [WebSeed protocol](http://www.bittorrent.org/beps/bep_0019.html)) where the - video was uploaded. - -Here are some simple schemes: - -

    - -Decentralized - -Watch a video - -Watch a P2P video - -

    +See our REST API documentation: + * OpenAPI 3.0.0 schema: [/support/doc/api/openapi.yaml](/support/doc/api/openapi.yaml) + * Spec explorer: [docs.joinpeertube.org/api.html](http://docs.joinpeertube.org/api.html) +See our [ActivityPub documentation](https://docs.joinpeertube.org/lang/en/devdocs/federation.html). :heart: Supports of our crowdfunding ---------------------------------------------------------------- diff --git a/support/doc/redundancy.md b/support/doc/redundancy.md deleted file mode 100644 index 00442fd85..000000000 --- a/support/doc/redundancy.md +++ /dev/null @@ -1,52 +0,0 @@ -# Redundancy - -A PeerTube instance can cache other PeerTube videos to improve bandwidth of popular videos or small instances. - -## How it works - -The instance administrator can choose between multiple redundancy strategies (cache trending videos or recently uploaded videos etc), set their maximum size and the minimum duplication lifetime. -Then, they choose the instances they want to cache in `Manage follows -> Following` admin table. - -

    - -Redundancy - -

    - -Videos are kept in the cache for at least `min_lifetime`, and then evicted when the cache is full. - -When PeerTube chooses a video to duplicate, it imports all the resolution files (to avoid consistency issues) using their magnet URI and put them in the `storage.videos` directory. -Then it sends a `Create -> CacheFile` ActivityPub message to other federated instances. This new instance is injected as [WebSeed](https://github.com/Chocobozzz/PeerTube/blob/develop/FAQ.md#what-is-webseed) in the magnet URI by instances that received this ActivityPub message. - -## Stats - -See the `/api/v1/server/stats` endpoint. For example: - -``` -{ - ... - "videosRedundancy": [ - { - "totalUsed": 0, - "totalVideos": 0, - "totalVideoFiles": 0, - "strategy": "most-views", - "totalSize": 104857600 - }, - { - "totalUsed": 0, - "totalVideos": 0, - "totalVideoFiles": 0, - "strategy": "trending", - "totalSize": 104857600 - }, - { - "totalUsed": 0, - "totalVideos": 0, - "totalVideoFiles": 0, - "strategy": "recently-added", - "totalSize": 104857600 - } - ] -} -``` diff --git a/support/doc/user/decentralized.png b/support/doc/user/decentralized.png deleted file mode 100644 index 8c23e2832..000000000 Binary files a/support/doc/user/decentralized.png and /dev/null differ diff --git a/support/doc/user/decentralized.xml b/support/doc/user/decentralized.xml deleted file mode 100644 index 952b9f4e7..000000000 --- a/support/doc/user/decentralized.xml +++ /dev/null @@ -1 +0,0 @@ -7Vptb9owEP41kdYPQ4lNAv24vm37sGkaq7p9NMlBooaYOaZAf/3sxM6rw2gVKFuL1Co+n8/O85zvzgYLXy42HxlZhl9oALGF7GBj4SsLoRGyxX8p2OaC4VAJ5iwKcpFTCibRIyihVltFAaQ1RU5pzKNlXejTJAGf12SEMbquq81oXJ91SebQEkx8Ereld1HAw1w6du1S/gmieahndmzVMyX+/ZzRVaLmsxCeZZ+8e0G0LaWfhiSg64oIX1v4klHK86fF5hJiCa2GLR9309FbrJtBwvcZMM4HPJB4BXrF2br4VmORvQ1IfdvCF+sw4jBZEl/2rgX5QhbyRSxajnhMOaP3cEljyrLR2M4+RY9GU+rOojiuaM5m4Pm+lNOEmyyQOJonQuaLdwPRedF+WfX+D8A4bCoi9fIfgS6As61Q0b2eGqIdVRO5Lml3NVlhlXJPCYlytXlhu4RbPCjEzeiPTgf9gMB49tLoj/cEH6MewMct8CfAxNqFbBcNzuFoSGgCR2bAdeoMOAb/d0wU9OH+w24G8KthANkvyIDXYuA2lfj3iv0YTbHn7RWEXBgHwyMTgJspwDsiAbrg2ZUCIAk+yJqm9M+UE8a1zI9Jmkb+8zYA2gG2gJRtf6rMkzV+ycbAlc1NxH/WWr+KmcXabqJYr0SsXrXsXXyldMV8qMUFYWgOSkuhAkGtbmtzWs0cBsq0jEFMePRQr/ZMPKoZvtFIrLczb3m44Qr526hR1fKrYQg1wq87bhjKMWgZEtyTbUVtKRXS7gWjxoKxUysLxUNusfTZAtP93FjvulN2Y+cpbvwMt8Vvbtuz27qjw7ot6i5ANL//fwHSzH+mKvxw+a9dA+4KHEfIdXkk0GHC6QwSO8PCiWz4od1R2jx1wzcN4eF+G/45e7Jdk1rIiwUwF0H0IB7nPEM+F021AA+0SEwwLdXsiXCfVNqLAqBynmRG2UKgSpO0MsRguyJ695UswEJi8fYPyjK6kX37/fNgMDiz5N4w2+nvLF9kzBMLHkPPqzmGc94OHucHih3G65OGW6But1CBPuWUgXQQkgSyCZC5Cw+h4jTv7mA6ET1nr4JTXOcU43E7IbjDA5FqupFskOp0kZofXu3VMqYkY5GIvwTWJZP/P3toVGfPdKPpOAfakth0nH0L3v+IqxwzeGPTiTEnQkJQw977vaK6432afVn0QZbo3nJTdmriLoh/DzKUF6zm9l4PrZ7e3Tp+6xxdoXVkulXvg9b2rXo/tN4wofXG698i+8F4NZ3TnsYrcky8XoGEiAm8HiHIsjVfU3ZfpAjWDOyvkPgiCOsTepv3Iib3HqddA/F/vdk7idN5x/Xi7gvqgKRhcckjG98IF0QmmUReC2lGG0d8A8UvdupHzsCtR4pnn/tbpvo7+Ytm+TuHXL38LQm+/gM= \ No newline at end of file diff --git a/support/doc/user/redundancy.png b/support/doc/user/redundancy.png deleted file mode 100644 index 0184fb78e..000000000 Binary files a/support/doc/user/redundancy.png and /dev/null differ diff --git a/support/doc/user/redundancy.xml b/support/doc/user/redundancy.xml deleted file mode 100644 index c501b63d5..000000000 --- a/support/doc/user/redundancy.xml +++ /dev/null @@ -1 +0,0 @@ -7Vpbc5s4FP41zLQP8YAE2HmM3aa7D7vTadpp+yiDMJpg5AU5tvfXrwQSFyG8xMWJJ25m2jFHQpfzHX3nIiy4WO8/ZWgT/0VDnFjADvcW/GABMJva/H8hOJQC15WCVUbCUuTUggfyL5ZC1W1LQpy3OjJKE0Y2bWFA0xQHrCVDWUZ37W4RTdqzbtAKdwQPAUq60u8kZLHclmfX8j8wWcVqZseWLUsUPK4yuk3lfBaAUfFXNq+RGkv2z2MU0l1DBD9acJFRyspf6/0CJ0K1Sm3le/c9rdW6M5yyIS/MyheeULLFasXFuthB6aLYDRb9bQvOdzFh+GGDAtG64+BzWczWCX9y+M+cZfQRL2hCs+JtaBd/VYvSpugbkSRp9Iwi7AeBkNOUmUZACVmlXBbwvWHeOO9uVu7/CWcM7xsiuflPmK4xyw68i2r15SvKUBWQuxp2T4EVNyH3pRBJU1tVY9fq5j+kxs3an16O9kOEZ9Fra382UPkQjKB82FH+A8742rnsGAzO+WBIaYpfGAHPaSPgGOzfMUEwhvm7/QjAq0EA2K+IgN9B4Fsu9D+q7mdgCX1/EAl5eBa6LwwA1F2A/4IAqIDnmAvAaXgnYpraPnOGMqZkQYLynASnHQBwRNlcpdnhh/Q8xcNP8TDxxOOesB+tp59yZr7aeyL2W7zWi09Ot1mAWzzAN7XCspfUAg5bcVoXw6anMECkZBlOECNP7ejOhJuc4TMlfL29fsqHGvTlbuRbzXBLGwhodOvNtIFKHXQG4lijQ6PbRnTI+xcMtAVDpxUG8h/liLWNVjodZrbqlF2y2TrPMdtibdJwTzRj+NuMRzZjb3peMwb9AYjC9+0HILr/M0Xh5/N/3RjwGJG8gK+bAK/JG06LNUCTNgYTg3/pxOA6fssEXB3aocSgDwTdYcRwytntxq4W8BOumHlInvjPFSvwKUVLJYATJeITLOtudnXyc25vuRiYhJiKCdOIZmuuXprmjXcNkzRE7/5Ga2wBvgv7K80K6wD2ty9/TiaT98IUxMARTRK6I+mqmFTMXo2/zPSx9RnHKxNUzvnSeMmdcS/dYiaVFjaZyYXnYSZjcUYzJjDAmHBhTCzGDZN69x0vH3jL+2vA0YUaJ8DZy/kXY4FTQ9HpQ7HMhe3tJqGoQBHxfyne1Ui+ffTArW1m9AZ6tybPdPvr4EFTllEiJVTQ0r3/z5aqhpu8uFC4E2Gcv9nXjQrbOQoeOcs3YC/Hux5y9R0NVt/vwDo1wKpnDCfB2q28jgPrfcZ7/ca1FckZqolnw9UUyz8PV+CYcP2CQw4USoPD0fjo2rDWqRl0oa586Nh+FXonRd9un6u9N8TCwiKuNvgFbWyNtwImvzvKzdiAe8lude98Gfm0k5GHKI+rUox4+IwY131aSETxxlxs/BqT1Dq51tfM36ULu5T8XbOW0/N3qBXcvGH5+7MLexp1qe9Dxirswf6wv0EkCxSItGxgSi9ztoGcxM85ax+KDHM/h5ZFB2FnUke8tze3vA8mIhF8QQKU3MmGNQlD8f48QUuczKtvTTSi6lpwdaJ1Aqo+oZELs5qfoZiIyZ44vj9tgXfjjGLE0NfS/Zsq/1eD0CjK8a8WjuDtZbFbt974Kuz21qgMaFTW+WBnrKs297xUpoY/I5U9u9p4YeSmDvQFk9sN1IcFZ6A296Rr2ZGpreeW9zgtDaC8QXEZeJtk5qo6ZlWF08xnvHsV938yO1sd5DpPT3DEuln7De8b0l0qiqeWrJgWpXBaKDvZWGV5fDgLnbqKlDISCdTLKjzNyIp7SpVoCmuISRCLQUNVrF+XuuUMUhKrLSmz9wboClJSCNoOVd3dNlPS6W3/YXpGSsof62+gSyOuvzOHH/8D \ No newline at end of file diff --git a/support/doc/user/watch-p2p.png b/support/doc/user/watch-p2p.png deleted file mode 100644 index 873309434..000000000 Binary files a/support/doc/user/watch-p2p.png and /dev/null differ diff --git a/support/doc/user/watch-p2p.xml b/support/doc/user/watch-p2p.xml deleted file mode 100644 index 7f2cdb627..000000000 --- a/support/doc/user/watch-p2p.xml +++ /dev/null @@ -1 +0,0 @@ -7VpLc5swEP41nmkO7YAEmB5jN2kvncnU6aQ5yrA2TDByhfzqr68EEpiHiRNjx23sQ5BWK2l3v88rsXEPD2frr4zMg+/Uh6iHDH/dw196CJkWssRDSjaZpG+bmWDKQl8pFYJR+AeU0FDSRehDUlLklEY8nJeFHo1j8HhJRhijq7LahEblXedkCjXByCNRXfoQ+jzIpK5tFPJvEE4DvbNpqJEx8Z6mjC5itV8P4Un6yYZnRK+l9JOA+HS1JcI3PTxklPKsNVsPIZKx1WHL5t3uGM3tZhDzfSYonJYkWoC2OLWLb3QsUm9A6hs9PFgFIYfRnHhydCXQF7KAzyLRM0Uz4Yw+wZBGlKWzsZF+8hEdTak7CaNoS3MyAcfzpJzGvGkFEoXTWMg84RuIwYGyHRiH9U7/zTyqgq1AZ8DZRqjoCY6aoohqaSBXBey2BivYgjxHkCiqTfO1i3CLhop4c/Tt84m+T8CdvHX0Rfj3i77pdBB9txb9n4nwDBm4BQXzFSi4aIwdZy8UbHB968Qo2KjyHbDrKJhNKHQBgmnWUBgBW6Y4mB3jsOe3IaYxnBgCXP0iOKeEoCkNORFXMSgh4PxeUD3wMUnP7WuJlDNfF4OiNZXPgTgMQZyEajFhR7ZeNtplqlOQnR2ujr7QbDTOTg3XfgOsuAtYnSPBesuE1gXX564Nx8IV1TOmOrfabg//4blVTZonPbf0Va2OQten1pmjkDv8JijscYMWmepavhJKvyOSJKGXxpIwXhe/4vaAWuItQsg2v2Ti+yQsVf1HtQGsQ56N2ar3qFJk5gL4tXfUCibCTbpgHpQZKTybQv5i2ozd9v26ARotYxARHi7LZjThpXa4o2F6sOTX+3KWdKrpLzNfzdp+S60shCrp1nYrC2U+1xYSAJPNltpcKiS7DUaVjIJdo9Uu/LlVXzQyCwou5xjsR++mI/ws6X18dusy0IXdpeT4QkL1/xVC9Y/OKPdCqAPTpe2+LF1a9pHTZb2ic6bs3pPcZqfpMovGhd17stuqlMVsq53dqOJgRf9wdn++sLuF3e5bkttCFezNsyd3K1mfTfVdk1sngwu5m+4ll8x90L3k+cx9ZHLXK3YvrsTipkrsA+FeAIkMjSzHGgmAL3s8ANkjM/lYhj5Q8fzwAOORUOghYbAhOj/uh1l7EPJ7yiQpr7RdY1aUc99tlRdbFb42lbaayrxdlLYwPhJpRiWSVNlx9Y7xzkv2+v1EL3GKUiY+/N81yNyZJKRxBdo7EO5iN+lRLP7cobv3zKRKYdB065kjZ82BTBLd4vdC2elU/CgL3/wF \ No newline at end of file diff --git a/support/doc/user/watch-video.png b/support/doc/user/watch-video.png deleted file mode 100644 index 8744c793c..000000000 Binary files a/support/doc/user/watch-video.png and /dev/null differ diff --git a/support/doc/user/watch-video.xml b/support/doc/user/watch-video.xml deleted file mode 100644 index e2b46aa8b..000000000 --- a/support/doc/user/watch-video.xml +++ /dev/null @@ -1 +0,0 @@ -7Vpbc5s6EP41PNYDEmD8mKRN25l2pnPcTk4fZVgDE4xcgWP7/PojgYSRgNTxJUnr+CERq+t+37IX2Ra+WWw+MrJMvtIIMgvZ0cbC7y2EHBe5/J+QbGvJ2HNqQczSSA7aCabpfyCFtpSu0ggKbWBJaVamS10Y0jyHsNRkhDG61ofNaabvuiQxdATTkGRd6V0alUktDTx7J/8EaZyonR1b9sxIeB8zusrlfhbC8+pTdy+IWkuOLxIS0XVLhD9Y+IZRWtatxeYGMoGtgq2edzvQ25ybQV7uMwHVEx5ItgJ14upc5VZhUWkDYrxt4et1kpYwXZJQ9K45+1yWlIuMPzm8WZSM3sMNzSirZmO7+jQ9Ck0xdp5mWWvkfA5+GAo5zcu+FUiWxjmXhVw34J3X8uzAStgM6u80qHJrBbqAkm35EDXBl1OkobqKyPWOdk+RlbQp96WQSFOLm7V3cPOGRLwfffx60I8IBPOXRj/YE3yMTgC+2wF/Coyrw2WP0eCcj4ac5vDMDHiOzoDTY/9OHwWnMH9vmAF8MQwg+wUZ8DsM/CgE/ifFPkAz7Pt7OSEPgsh9ZgKwGQL8ZyRg/PsIAHl0JVIaoXZGiiINKygJK7viA14B9AjcHEG2/VfGnurhp3gYeeJxk5ZV12isHn/KrWsVIDJyrIKuWAjaq8+1iEHCOdmbuHZ46OFFyRhkpEwf9EP0kSV3+EZTvvFgcPKxwXetj5zVzrGMhZDhY73AWKhGobMQp5dsW8OWYkAxfGA0sbV9sKPlfrxRr7gzzAbTvWw1+DNs1XnMVtEBtuq+2erJbdVz9X1ObauT4dRCMfz3pxZmZOvLr88W2VQp/we6i8N8gvfmE/SFDnht1U5PNpqzJT4yYigDcYajib2f5fivP5pgI5FwTX+wr+Xgia97efd8ltMt5y3kZxyY6xlvxKLhjJSIr9ZI+aSr4t4St4QiPBCxSBoBtZo7upPcxkj///qChGOQ3VN/BueKEd36UzEkINCw93+tqOp4V1Q3xlcimvvLza5TcXpNwnvuJ1p01+spxv9+Wn2DVlGBm7SO+67WTkFrX1V7ClpvGR/1xuvvXtez8XpoBXi+6DzWorN90L1EB3w9YE+6Adt/2bxOt4Aj8jp9oXPmdd16rBOd0VB0/p6AwJ+yiiZk//jns1i6qAK0TxbiPa7mjUajRnAxDsE1zKHJsZ4hfqsM6dU6hHa67rS8gUzdB0rNSnybZuqIXIXW02FepCftdy/aizz1xsg3vidxx55hqsfdGKG+0tNwUXjART0xt3H7cpvOZrV76+x2R8owgaJVpZQJd2txwlt3MJsCDKdHtThKH44/5nHKwmIGkXDEHP+84HoIQ8j5n0/fv37x2rqRuAGGmWcY0I+LKxUvJyl0A73OdgPciQFOnzM5SRDofo37VCNBTp+RVJYuK/JiCWE65965MY2LrQDMr3lQN943vB7JNX/c/RSp9qm733vhD/8D \ No newline at end of file -- cgit v1.2.3 From fd5af7a2692ee63f6c5f7802a181911a64ae60aa Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sat, 24 Nov 2018 18:18:56 +0100 Subject: add parameters to GET /videos route spec --- support/doc/api/openapi.yaml | 169 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 158 insertions(+), 11 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 3a3e71f93..b83362a37 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -433,7 +433,7 @@ paths: parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/usersSort' responses: '200': description: successful operation @@ -622,15 +622,16 @@ paths: tags: - Video parameters: - - name: category - in: query - required: false - description: category id of the video - schema: - type: number + - $ref: '#/components/parameters/categoryOneOf' + - $ref: '#/components/parameters/tagsOneOf' + - $ref: '#/components/parameters/tagsAllOf' + - $ref: '#/components/parameters/licenceOneOf' + - $ref: '#/components/parameters/languageOneOf' + - $ref: '#/components/parameters/nsfw' + - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/videosSort' responses: '200': description: successful operation @@ -1002,7 +1003,7 @@ paths: parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/abusesSort' responses: '200': description: successful operation @@ -1063,7 +1064,7 @@ paths: parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/blacklistsSort' responses: '200': description: successful operation @@ -1271,7 +1272,7 @@ paths: parameters: - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/count' - - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/videosSearchSort' - name: search in: query required: true @@ -1317,6 +1318,74 @@ components: description: Sort column (-createdAt for example) schema: type: string + videosSort: + name: sort + in: query + required: false + description: Sort videos by criteria + schema: + type: string + enum: + - -name + - -duration + - -createdAt + - -publishedAt + - -views + - -likes + - -trending + videosSearchSort: + name: sort + in: query + required: false + description: Sort videos by criteria + schema: + type: string + enum: + - -name + - -duration + - -createdAt + - -publishedAt + - -views + - -likes + - -match + blacklistsSort: + name: sort + in: query + required: false + description: Sort blacklists by criteria + schema: + type: string + enum: + - -id + - -name + - -duration + - -views + - -likes + - -dislikes + - -uuid + - -createdAt + usersSort: + name: sort + in: query + required: false + description: Sort users by criteria + schema: + type: string + enum: + - -id + - -username + - -createdAt + abusesSort: + name: sort + in: query + required: false + description: Sort abuses by criteria + schema: + type: string + enum: + - -id + - -createdAt + - -state name: name: name in: path @@ -1354,6 +1423,84 @@ components: description: The comment id schema: type: number + categoryOneOf: + name: categoryOneOf + in: query + required: false + description: category id of the video + schema: + oneOf: + - type: number + - type: array + items: + type: number + tagsOneOf: + name: tagsOneOf + in: query + required: false + description: tag(s) of the video + schema: + oneOf: + - type: string + - type: array + items: + type: string + tagsAllOf: + name: tagsAllOf + in: query + required: false + description: tag(s) of the video, where all should be present in the video + schema: + oneOf: + - type: string + - type: array + items: + type: string + languageOneOf: + name: languageOneOf + in: query + required: false + description: language id of the video + schema: + oneOf: + - type: number + - type: array + items: + type: number + licenceOneOf: + name: licenceOneOf + in: query + required: false + description: licence id of the video + schema: + oneOf: + - type: number + - type: array + items: + type: number + nsfw: + name: nsfw + in: query + required: false + description: whether to include nsfw videos, if any + schema: + type: string + enum: + - 'true' + - 'false' + filter: + name: filter + in: query + required: false + description: > + Special filters (local for instance) which might require special rights: + * `local` - only videos local to the instance + * `all-local` - only videos local to the instance, but showing private and unlisted videos (requires Admin privileges) + schema: + type: string + enum: + - local + - all-local requestBodies: VideoChannelInput: content: -- cgit v1.2.3 From 81658ae047959bbf457898713719efc9b0168532 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 26 Nov 2018 18:31:03 +0100 Subject: quickfix back to safe nodemon --- package.json | 2 +- yarn.lock | 388 +++++++++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 313 insertions(+), 77 deletions(-) diff --git a/package.json b/package.json index 8d3922231..9158fffd1 100644 --- a/package.json +++ b/package.json @@ -203,7 +203,7 @@ "lint-staged": "^8.0.4", "maildev": "^1.0.0-rc3", "mocha": "^5.0.0", - "nodemon": "^1.11.0", + "nodemon": "1.13.3", "sass-lint": "^1.12.1", "source-map-support": "^0.5.0", "supertest": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index b8a904d0e..bf1f85494 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@remy/pstree@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@remy/pstree/-/pstree-1.1.0.tgz#414045d4fec60946604f3718023052aaf49bd8d3" + integrity sha512-3rxECj41p0Qkdgoc50VnZpSDTXS+UZGRzTTO+qb3TiZDhuZMmf4z/wApcIeJ878okVq7D9phadgXQD9Kvbq3tQ== + dependencies: + ps-tree "^1.1.0" + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -540,13 +547,13 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + micromatch "^2.1.5" + normalize-path "^2.0.0" append-field@^1.0.0: version "1.0.0" @@ -596,12 +603,19 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.1.0: +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -628,6 +642,11 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -1046,7 +1065,16 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.0, braces@^2.3.1: +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1369,25 +1397,21 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== +chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= dependencies: - anymatch "^2.0.0" + anymatch "^1.3.0" async-each "^1.0.0" - braces "^2.3.0" - glob-parent "^3.1.0" + glob-parent "^2.0.0" inherits "^2.0.1" is-binary-path "^1.0.0" - is-glob "^4.0.0" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" + is-glob "^2.0.0" path-is-absolute "^1.0.0" readdirp "^2.0.0" - upath "^1.0.5" optionalDependencies: - fsevents "^1.2.2" + fsevents "^1.0.0" chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" @@ -1960,7 +1984,7 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: +debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2429,6 +2453,11 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" +es6-promise@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" @@ -2650,6 +2679,13 @@ exit-hook@^1.0.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2663,6 +2699,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + expand-template@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" @@ -2784,6 +2827,13 @@ extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -2864,6 +2914,11 @@ file-entry-cache@^1.1.1: flat-cache "^1.2.1" object-assign "^4.0.1" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + filestream@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/filestream/-/filestream-4.1.3.tgz#948fcaade8221f715f5ecaddc54862faaacc9325" @@ -2874,6 +2929,17 @@ filestream@^4.0.0: typedarray-to-buffer "^3.0.0" xtend "^4.0.1" +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -2979,11 +3045,18 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -3134,7 +3207,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.2: +fsevents@^1.0.0: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== @@ -3267,13 +3340,20 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" glob@7.1.2: version "7.1.2" @@ -3943,6 +4023,18 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3955,7 +4047,12 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -3982,12 +4079,12 @@ is-generator@^1.0.2: resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= dependencies: - is-extglob "^2.1.0" + is-extglob "^1.0.0" is-glob@^4.0.0: version "4.0.0" @@ -4032,6 +4129,13 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -4039,6 +4143,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4077,6 +4186,16 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -4627,6 +4746,19 @@ lockfile@^1.0.4: dependencies: signal-exit "^3.0.2" +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -4635,16 +4767,49 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~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" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._createassigner@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" + integrity sha1-g4pbri/aymOsIt7o4Z+k5taXCxE= + dependencies: + lodash._bindcallback "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.restparam "^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" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= +lodash.assign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" + integrity sha1-POnwI0tLIiPilrj6CsH+6OvKZPo= + dependencies: + lodash._baseassign "^3.0.0" + lodash._createassigner "^3.0.0" + lodash.keys "^3.0.0" + lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -4670,10 +4835,13 @@ lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.defaults@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" + integrity sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw= + dependencies: + lodash.assign "^3.0.0" + lodash.restparam "^3.0.0" lodash.defaults@^4.2.0: version "4.2.0" @@ -4700,6 +4868,16 @@ lodash.get@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" @@ -4715,6 +4893,15 @@ lodash.kebabcase@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" @@ -4735,6 +4922,11 @@ lodash.pick@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + lodash.sample@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.sample/-/lodash.sample-4.2.1.tgz#5e4291b0c753fa1abeb0aab8fb29df1b66f07f6d" @@ -4963,6 +5155,11 @@ matcher@^1.0.0: dependencies: escape-string-regexp "^1.0.4" +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= + md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" @@ -5041,7 +5238,26 @@ methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5522,20 +5738,20 @@ nodemailer@^4.4.2: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.8.tgz#f82fb407828bf2e76d92acc34b823d83e774f89c" integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== -nodemon@^1.11.0: - version "1.18.6" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.6.tgz#89b1136634d6c0afc7de24cc932a760e999e2c76" - integrity sha512-4pHQNYEZun+IkIC2jCaXEhkZnfA7rQe73i8RkdRyDJls/K+WxR7IpI5uNUsAvQ0zWvYcCDNGD+XVtw2ZG86/uQ== +nodemon@1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.13.3.tgz#92d23e6b91dca351215a4b8a50d2bd838cd0f9e3" + integrity sha512-JTDI4il69J3rQ5aXQdNcDZDfk8JXC2c5Uh9zjTtFGrlP72UDoOEPB7reDMjo27tbLhtxtPAfGwhs28RVMz5rHQ== dependencies: - chokidar "^2.0.4" - debug "^3.1.0" + "@remy/pstree" "^1.1.0" + chokidar "^1.7.0" + debug "^2.6.8" + es6-promise "^3.3.1" ignore-by-default "^1.0.1" + lodash.defaults "^3.1.2" minimatch "^3.0.4" - pstree.remy "^1.1.0" - semver "^5.5.0" - supports-color "^5.2.0" touch "^3.1.0" - undefsafe "^2.0.2" + undefsafe "0.0.3" update-notifier "^2.3.0" noop-logger@^0.1.1: @@ -5575,7 +5791,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -5915,6 +6131,14 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -6157,6 +6381,16 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -6221,11 +6455,6 @@ password-generator@^2.0.2: dependencies: yargs-parser "^8.0.0" -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -6468,6 +6697,11 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" @@ -6577,13 +6811,6 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== -pstree.remy@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.0.tgz#f2af27265bd3e5b32bbfcc10e80bac55ba78688b" - integrity sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q== - dependencies: - ps-tree "^1.1.0" - pump@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" @@ -6675,6 +6902,15 @@ random-iterate@^1.0.1: resolved "https://registry.yarnpkg.com/random-iterate/-/random-iterate-1.0.1.tgz#f7d97d92dee6665ec5f6da08c7f963cad4b2ac99" integrity sha1-99l9kt7mZl7F9toIx/ljytSyrJk= +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + randombytes@^2.0.3, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" @@ -6900,6 +7136,13 @@ reflect-metadata@^0.1.10: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" integrity sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A== +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -6944,7 +7187,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -8034,7 +8277,7 @@ supports-color@^4.5.0: dependencies: has-flag "^2.0.0" -supports-color@^5.2.0, supports-color@^5.3.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -8495,12 +8738,10 @@ umask@^1.1.0, umask@~1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -undefsafe@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" - integrity sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY= - dependencies: - debug "^2.2.0" +undefsafe@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" + integrity sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8= underscore-keypath@~0.0.22: version "0.0.22" @@ -8578,11 +8819,6 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== - update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" -- cgit v1.2.3 From 0218a46c1a8c203fcc7b67dd9460765299233780 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 26 Nov 2018 18:43:47 +0100 Subject: quickfix back to older nodemon --- package.json | 2 +- yarn.lock | 189 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 157 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 9158fffd1..d0daaa557 100644 --- a/package.json +++ b/package.json @@ -203,7 +203,7 @@ "lint-staged": "^8.0.4", "maildev": "^1.0.0-rc3", "mocha": "^5.0.0", - "nodemon": "1.13.3", + "nodemon": "1.11.0", "sass-lint": "^1.12.1", "source-map-support": "^0.5.0", "supertest": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index bf1f85494..348c72b18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,6 @@ # yarn lockfile v1 -"@remy/pstree@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@remy/pstree/-/pstree-1.1.0.tgz#414045d4fec60946604f3718023052aaf49bd8d3" - integrity sha512-3rxECj41p0Qkdgoc50VnZpSDTXS+UZGRzTTO+qb3TiZDhuZMmf4z/wApcIeJ878okVq7D9phadgXQD9Kvbq3tQ== - dependencies: - ps-tree "^1.1.0" - "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -1397,7 +1390,7 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@^1.7.0: +chokidar@^1.4.3: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= @@ -1754,6 +1747,20 @@ config@^2.0.1: dependencies: json5 "^1.0.1" +configstore@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-1.4.0.tgz#c35781d0501d268c25c54b8b17f6240e8a4fb021" + integrity sha1-w1eB0FAdJowlxUuLF/YkDopPsCE= + dependencies: + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" @@ -1984,7 +1991,7 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2453,7 +2460,7 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" -es6-promise@^3.3.1: +es6-promise@^3.0.2: version "3.3.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= @@ -3418,6 +3425,22 @@ gonzales-pe-sl@^4.2.3: dependencies: minimist "1.1.x" +got@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz#e5d0ed4af55fc3eef4d56007769d98192bcb2eca" + integrity sha1-5dDtSvVfw+701WAHdp2YGSvLLso= + dependencies: + duplexify "^3.2.0" + infinity-agent "^2.0.0" + is-redirect "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + nested-error-stacks "^1.0.0" + object-assign "^3.0.0" + prepend-http "^1.0.0" + read-all-stream "^3.0.0" + timed-out "^2.0.0" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -3715,7 +3738,7 @@ iferr@^1.0.2: resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== -ignore-by-default@^1.0.1: +ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= @@ -3765,6 +3788,11 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infinity-agent@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz#45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216" + integrity sha1-ReDi/3qesDCyfWK3SzdEt6esQhY= + inflection@1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" @@ -4062,6 +4090,13 @@ is-file@^1.0.0: resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596" integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY= +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -4540,6 +4575,13 @@ last-one-wins@^1.0.4: resolved "https://registry.yarnpkg.com/last-one-wins/-/last-one-wins-1.0.4.tgz#c1bfd0cbcb46790ec9156b8d1aee8fcb86cda22a" integrity sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio= +latest-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz#72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb" + integrity sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs= + dependencies: + package-json "^1.0.0" + latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -5331,7 +5373,7 @@ minimalistic-assert@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5595,6 +5637,13 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +nested-error-stacks@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz#19f619591519f096769a5ba9a86e6eeec823c3cf" + integrity sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88= + dependencies: + inherits "~2.0.1" + netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" @@ -5738,21 +5787,21 @@ nodemailer@^4.4.2: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.8.tgz#f82fb407828bf2e76d92acc34b823d83e774f89c" integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== -nodemon@1.13.3: - version "1.13.3" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.13.3.tgz#92d23e6b91dca351215a4b8a50d2bd838cd0f9e3" - integrity sha512-JTDI4il69J3rQ5aXQdNcDZDfk8JXC2c5Uh9zjTtFGrlP72UDoOEPB7reDMjo27tbLhtxtPAfGwhs28RVMz5rHQ== +nodemon@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.11.0.tgz#226c562bd2a7b13d3d7518b49ad4828a3623d06c" + integrity sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw= dependencies: - "@remy/pstree" "^1.1.0" - chokidar "^1.7.0" - debug "^2.6.8" - es6-promise "^3.3.1" - ignore-by-default "^1.0.1" + chokidar "^1.4.3" + debug "^2.2.0" + es6-promise "^3.0.2" + ignore-by-default "^1.0.0" lodash.defaults "^3.1.2" - minimatch "^3.0.4" - touch "^3.1.0" + minimatch "^3.0.0" + ps-tree "^1.0.1" + touch "1.0.0" undefsafe "0.0.3" - update-notifier "^2.3.0" + update-notifier "0.5.0" noop-logger@^0.1.1: version "0.1.1" @@ -6100,6 +6149,11 @@ object-assign@4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= + object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -6253,7 +6307,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4, osenv@^0.1.5: +osenv@0, osenv@^0.1.0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -6326,6 +6380,14 @@ package-json-versionify@^1.0.2: dependencies: browserify-package-json "^1.0.0" +package-json@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz#c8ecac094227cdf76a316874ed05e27cc939a0e0" + integrity sha1-yOysCUInzfdqMWh07QXifMk5oOA= + dependencies: + got "^3.2.0" + registry-url "^3.0.0" + package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -6692,7 +6754,7 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: +prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= @@ -6794,7 +6856,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -ps-tree@^1.1.0: +ps-tree@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= @@ -6965,6 +7027,14 @@ rdf-canonize@^0.2.1: node-forge "^0.7.1" semver "^5.4.1" +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + integrity sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po= + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -7159,7 +7229,7 @@ registry-auth-token@^3.0.1: rc "^1.1.6" safe-buffer "^5.0.1" -registry-url@^3.0.3: +registry-url@^3.0.0, registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= @@ -7192,6 +7262,13 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +repeating@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac" + integrity sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw= + dependencies: + is-finite "^1.0.0" + request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -7733,7 +7810,7 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: +slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= @@ -8145,6 +8222,13 @@ string-argv@^0.0.2: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= +string-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" + integrity sha1-VpcPscOFWOnnC3KL894mmsRa36w= + dependencies: + strip-ansi "^3.0.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -8451,6 +8535,11 @@ thunky@^1.0.1: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== +timed-out@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz#f38b0ae81d3747d628001f41dafc652ace671c0a" + integrity sha1-84sK6B03R9YoAB9B2vxlKs5nHAo= + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -8547,10 +8636,10 @@ torrent-piece@^2.0.0: resolved "https://registry.yarnpkg.com/torrent-piece/-/torrent-piece-2.0.0.tgz#6598ae67d93699e887f178db267ba16d89d7ec9b" integrity sha512-H/Z/yCuvZJj1vl1IQHI8dvF2QrUuXRJoptT5DW5967/dsLpXlCg+uyhFR5lfNj5mNaYePUbKtnL+qKWZGXv4Nw== -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== +touch@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-1.0.0.tgz#449cbe2dbae5a8c8038e30d71fa0ff464947c4de" + integrity sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4= dependencies: nopt "~1.0.10" @@ -8819,6 +8908,19 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= +update-notifier@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.5.0.tgz#07b5dc2066b3627ab3b4f530130f7eddda07a4cc" + integrity sha1-B7XcIGazYnqztPUwEw9+3doHpMw= + dependencies: + chalk "^1.0.0" + configstore "^1.0.0" + is-npm "^1.0.0" + latest-version "^1.0.0" + repeating "^1.1.2" + semver-diff "^2.0.0" + string-length "^1.0.0" + update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" @@ -8948,6 +9050,11 @@ uue@^3.1.0: escape-string-regexp "~1.0.5" extend "~3.0.0" +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= + uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -9178,6 +9285,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@^1.1.2: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" @@ -9219,6 +9335,13 @@ x-xss-protection@1.1.0: resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.1.0.tgz#4f1898c332deb1e7f2be1280efb3e2c53d69c1a7" integrity sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg== +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + integrity sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I= + dependencies: + os-homedir "^1.0.0" + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" -- cgit v1.2.3 From d7ea359d366f0caaf1efff2b727dd736c1301ddf Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 26 Nov 2018 21:23:10 +0100 Subject: quickfix back to recent nodemon that fixes event-stream vulnerability --- package.json | 2 +- yarn.lock | 593 +++++++++-------------------------------------------------- 2 files changed, 89 insertions(+), 506 deletions(-) diff --git a/package.json b/package.json index d0daaa557..2138c28c5 100644 --- a/package.json +++ b/package.json @@ -203,7 +203,7 @@ "lint-staged": "^8.0.4", "maildev": "^1.0.0-rc3", "mocha": "^5.0.0", - "nodemon": "1.11.0", + "nodemon": "^1.18.6", "sass-lint": "^1.12.1", "source-map-support": "^0.5.0", "supertest": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 348c72b18..b961fb5cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -540,13 +540,13 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" + micromatch "^3.1.4" + normalize-path "^2.1.1" append-field@^1.0.0: version "1.0.0" @@ -596,19 +596,12 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -635,11 +628,6 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -1058,16 +1046,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.1: +braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1390,21 +1369,25 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -chokidar@^1.4.3: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= +chokidar@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: - anymatch "^1.3.0" + anymatch "^2.0.0" async-each "^1.0.0" - glob-parent "^2.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" inherits "^2.0.1" is-binary-path "^1.0.0" - is-glob "^2.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" path-is-absolute "^1.0.0" readdirp "^2.0.0" + upath "^1.0.5" optionalDependencies: - fsevents "^1.0.0" + fsevents "^1.2.2" chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" @@ -1747,20 +1730,6 @@ config@^2.0.1: dependencies: json5 "^1.0.1" -configstore@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-1.4.0.tgz#c35781d0501d268c25c54b8b17f6240e8a4fb021" - integrity sha1-w1eB0FAdJowlxUuLF/YkDopPsCE= - dependencies: - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" @@ -2283,11 +2252,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1, duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: version "3.6.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" @@ -2460,11 +2424,6 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" -es6-promise@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= - es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" @@ -2628,20 +2587,6 @@ event-emitter@^0.3.5, event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" -event-stream@~3.3.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz#cac1230890e07e73ec9cacd038f60a5b66173eef" - integrity sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g== - dependencies: - duplexer "^0.1.1" - flatmap-stream "^0.1.0" - from "^0.1.7" - map-stream "0.0.7" - pause-stream "^0.0.11" - split "^1.0.1" - stream-combiner "^0.2.2" - through "^2.3.8" - execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" @@ -2686,13 +2631,6 @@ exit-hook@^1.0.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2706,13 +2644,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-template@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" @@ -2834,13 +2765,6 @@ extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -2921,11 +2845,6 @@ file-entry-cache@^1.1.1: flat-cache "^1.2.1" object-assign "^4.0.1" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - filestream@^4.0.0: version "4.1.3" resolved "https://registry.yarnpkg.com/filestream/-/filestream-4.1.3.tgz#948fcaade8221f715f5ecaddc54862faaacc9325" @@ -2936,17 +2855,6 @@ filestream@^4.0.0: typedarray-to-buffer "^3.0.0" xtend "^4.0.1" -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3021,11 +2929,6 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" -flatmap-stream@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.1.tgz#d34f39ef3b9aa5a2fc225016bd3adf28ac5ae6ea" - integrity sha512-lAq4tLbm3sidmdCN8G3ExaxH7cUCtP5mgDvrYowsx84dcYkJJ4I28N7gkxA6+YlSXzaGLJYIDEi9WGfXzMiXdw== - flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -3052,18 +2955,11 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -3131,11 +3027,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -from@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - front-matter@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-2.1.2.tgz#f75983b9f2f413be658c93dfd7bd8ce4078f5cdb" @@ -3214,7 +3105,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0: +fsevents@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== @@ -3347,20 +3238,13 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: - is-glob "^2.0.0" + is-glob "^3.1.0" + path-dirname "^1.0.0" glob@7.1.2: version "7.1.2" @@ -3425,22 +3309,6 @@ gonzales-pe-sl@^4.2.3: dependencies: minimist "1.1.x" -got@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz#e5d0ed4af55fc3eef4d56007769d98192bcb2eca" - integrity sha1-5dDtSvVfw+701WAHdp2YGSvLLso= - dependencies: - duplexify "^3.2.0" - infinity-agent "^2.0.0" - is-redirect "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - nested-error-stacks "^1.0.0" - object-assign "^3.0.0" - prepend-http "^1.0.0" - read-all-stream "^3.0.0" - timed-out "^2.0.0" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -3738,7 +3606,7 @@ iferr@^1.0.2: resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== -ignore-by-default@^1.0.0: +ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= @@ -3788,11 +3656,6 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infinity-agent@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz#45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216" - integrity sha1-ReDi/3qesDCyfWK3SzdEt6esQhY= - inflection@1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" @@ -4051,18 +3914,6 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -4075,12 +3926,7 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - -is-extglob@^2.1.1: +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -4090,13 +3936,6 @@ is-file@^1.0.0: resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596" integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -4114,12 +3953,12 @@ is-generator@^1.0.2: resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: - is-extglob "^1.0.0" + is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" @@ -4164,13 +4003,6 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -4178,11 +4010,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4221,16 +4048,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -4575,13 +4392,6 @@ last-one-wins@^1.0.4: resolved "https://registry.yarnpkg.com/last-one-wins/-/last-one-wins-1.0.4.tgz#c1bfd0cbcb46790ec9156b8d1aee8fcb86cda22a" integrity sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio= -latest-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz#72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb" - integrity sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs= - dependencies: - package-json "^1.0.0" - latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -4788,19 +4598,6 @@ lockfile@^1.0.4: dependencies: signal-exit "^3.0.2" -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= - lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -4809,49 +4606,16 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~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" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= - -lodash._createassigner@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - integrity sha1-g4pbri/aymOsIt7o4Z+k5taXCxE= - dependencies: - lodash._bindcallback "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.restparam "^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" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= - lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= -lodash.assign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - integrity sha1-POnwI0tLIiPilrj6CsH+6OvKZPo= - dependencies: - lodash._baseassign "^3.0.0" - lodash._createassigner "^3.0.0" - lodash.keys "^3.0.0" - lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -4877,13 +4641,10 @@ lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash.defaults@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" - integrity sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw= - dependencies: - lodash.assign "^3.0.0" - lodash.restparam "^3.0.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.defaults@^4.2.0: version "4.2.0" @@ -4910,16 +4671,6 @@ lodash.get@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= - lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" @@ -4935,15 +4686,6 @@ lodash.kebabcase@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" @@ -4964,11 +4706,6 @@ lodash.pick@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - lodash.sample@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.sample/-/lodash.sample-4.2.1.tgz#5e4291b0c753fa1abeb0aab8fb29df1b66f07f6d" @@ -5166,11 +4903,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" - integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -5197,11 +4929,6 @@ matcher@^1.0.0: dependencies: escape-string-regexp "^1.0.4" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= - md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" @@ -5280,26 +5007,7 @@ methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.8: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5373,7 +5081,7 @@ minimalistic-assert@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5637,13 +5345,6 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= -nested-error-stacks@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz#19f619591519f096769a5ba9a86e6eeec823c3cf" - integrity sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88= - dependencies: - inherits "~2.0.1" - netmask@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" @@ -5787,21 +5488,21 @@ nodemailer@^4.4.2: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.8.tgz#f82fb407828bf2e76d92acc34b823d83e774f89c" integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== -nodemon@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.11.0.tgz#226c562bd2a7b13d3d7518b49ad4828a3623d06c" - integrity sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw= +nodemon@^1.18.6: + version "1.18.6" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.6.tgz#89b1136634d6c0afc7de24cc932a760e999e2c76" + integrity sha512-4pHQNYEZun+IkIC2jCaXEhkZnfA7rQe73i8RkdRyDJls/K+WxR7IpI5uNUsAvQ0zWvYcCDNGD+XVtw2ZG86/uQ== dependencies: - chokidar "^1.4.3" - debug "^2.2.0" - es6-promise "^3.0.2" - ignore-by-default "^1.0.0" - lodash.defaults "^3.1.2" - minimatch "^3.0.0" - ps-tree "^1.0.1" - touch "1.0.0" - undefsafe "0.0.3" - update-notifier "0.5.0" + chokidar "^2.0.4" + debug "^3.1.0" + ignore-by-default "^1.0.1" + minimatch "^3.0.4" + pstree.remy "^1.1.0" + semver "^5.5.0" + supports-color "^5.2.0" + touch "^3.1.0" + undefsafe "^2.0.2" + update-notifier "^2.3.0" noop-logger@^0.1.1: version "0.1.1" @@ -5840,7 +5541,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -6149,11 +5850,6 @@ object-assign@4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= - object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -6185,14 +5881,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -6307,7 +5995,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.0, osenv@^0.1.4, osenv@^0.1.5: +osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -6380,14 +6068,6 @@ package-json-versionify@^1.0.2: dependencies: browserify-package-json "^1.0.0" -package-json@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz#c8ecac094227cdf76a316874ed05e27cc939a0e0" - integrity sha1-yOysCUInzfdqMWh07QXifMk5oOA= - dependencies: - got "^3.2.0" - registry-url "^3.0.0" - package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -6443,16 +6123,6 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -6517,6 +6187,11 @@ password-generator@^2.0.2: dependencies: yargs-parser "^8.0.0" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -6552,13 +6227,6 @@ pathval@^1.1.0: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= -pause-stream@^0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - peek-stream@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" @@ -6754,16 +6422,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0, prepend-http@^1.0.1: +prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" @@ -6856,13 +6519,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -ps-tree@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= - dependencies: - event-stream "~3.3.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -6873,6 +6529,11 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== +pstree.remy@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.2.tgz#4448bbeb4b2af1fed242afc8dc7416a6f504951a" + integrity sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA== + pump@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" @@ -6964,15 +6625,6 @@ random-iterate@^1.0.1: resolved "https://registry.yarnpkg.com/random-iterate/-/random-iterate-1.0.1.tgz#f7d97d92dee6665ec5f6da08c7f963cad4b2ac99" integrity sha1-99l9kt7mZl7F9toIx/ljytSyrJk= -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.3, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" @@ -7027,14 +6679,6 @@ rdf-canonize@^0.2.1: node-forge "^0.7.1" semver "^5.4.1" -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - integrity sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po= - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -7206,13 +6850,6 @@ reflect-metadata@^0.1.10: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" integrity sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A== -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -7229,7 +6866,7 @@ registry-auth-token@^3.0.1: rc "^1.1.6" safe-buffer "^5.0.1" -registry-url@^3.0.0, registry-url@^3.0.3: +registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= @@ -7257,18 +6894,11 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac" - integrity sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw= - dependencies: - is-finite "^1.0.0" - request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -7810,7 +7440,7 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: +slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= @@ -8047,7 +7677,7 @@ split2@^0.2.1: dependencies: through2 "~0.6.1" -split@^1.0.0, split@^1.0.1: +split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== @@ -8138,14 +7768,6 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -stream-combiner@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" - integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -8222,13 +7844,6 @@ string-argv@^0.0.2: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= -string-length@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" - integrity sha1-VpcPscOFWOnnC3KL894mmsRa36w= - dependencies: - strip-ansi "^3.0.0" - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -8361,7 +7976,7 @@ supports-color@^4.5.0: dependencies: has-flag "^2.0.0" -supports-color@^5.3.0: +supports-color@^5.2.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -8525,7 +8140,7 @@ through2@^2.0.0, through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: +through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -8535,11 +8150,6 @@ thunky@^1.0.1: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== -timed-out@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz#f38b0ae81d3747d628001f41dafc652ace671c0a" - integrity sha1-84sK6B03R9YoAB9B2vxlKs5nHAo= - timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -8636,10 +8246,10 @@ torrent-piece@^2.0.0: resolved "https://registry.yarnpkg.com/torrent-piece/-/torrent-piece-2.0.0.tgz#6598ae67d93699e887f178db267ba16d89d7ec9b" integrity sha512-H/Z/yCuvZJj1vl1IQHI8dvF2QrUuXRJoptT5DW5967/dsLpXlCg+uyhFR5lfNj5mNaYePUbKtnL+qKWZGXv4Nw== -touch@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-1.0.0.tgz#449cbe2dbae5a8c8038e30d71fa0ff464947c4de" - integrity sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4= +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: nopt "~1.0.10" @@ -8827,10 +8437,12 @@ umask@^1.1.0, umask@~1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -undefsafe@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" - integrity sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8= +undefsafe@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" + integrity sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY= + dependencies: + debug "^2.2.0" underscore-keypath@~0.0.22: version "0.0.22" @@ -8908,18 +8520,10 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -update-notifier@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.5.0.tgz#07b5dc2066b3627ab3b4f530130f7eddda07a4cc" - integrity sha1-B7XcIGazYnqztPUwEw9+3doHpMw= - dependencies: - chalk "^1.0.0" - configstore "^1.0.0" - is-npm "^1.0.0" - latest-version "^1.0.0" - repeating "^1.1.2" - semver-diff "^2.0.0" - string-length "^1.0.0" +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" @@ -9050,11 +8654,6 @@ uue@^3.1.0: escape-string-regexp "~1.0.5" extend "~3.0.0" -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= - uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -9285,15 +8884,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^1.1.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" @@ -9335,13 +8925,6 @@ x-xss-protection@1.1.0: resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.1.0.tgz#4f1898c332deb1e7f2be1280efb3e2c53d69c1a7" integrity sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg== -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - integrity sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I= - dependencies: - os-homedir "^1.0.0" - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" -- cgit v1.2.3 From 1a8dd4da77468068d1ff7f7bd67f76399ae04e04 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 30 Nov 2018 15:06:06 +0100 Subject: Fix AP redirection --- server/controllers/activitypub/client.ts | 28 ++++++++++---------- server/tests/api/activitypub/client.ts | 44 +++++++++++++++++++++++++++----- server/tests/utils/server/activitypub.ts | 5 ++-- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/server/controllers/activitypub/client.ts b/server/controllers/activitypub/client.ts index d9d385460..1a4e28dc8 100644 --- a/server/controllers/activitypub/client.ts +++ b/server/controllers/activitypub/client.ts @@ -162,10 +162,10 @@ function getAccountVideoRate (rateType: VideoRateType) { } } -async function videoController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoController (req: express.Request, res: express.Response) { const video: VideoModel = res.locals.video - if (video.isOwned() === false) return res.redirect(video.url) + if (video.url.startsWith(CONFIG.WEBSERVER.URL) === false) return res.redirect(video.url) // We need captions to render AP object video.VideoCaptions = await VideoCaptionModel.listVideoCaptions(video.id) @@ -181,17 +181,17 @@ async function videoController (req: express.Request, res: express.Response, nex return activityPubResponse(activityPubContextify(videoObject), res) } -async function videoAnnounceController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoAnnounceController (req: express.Request, res: express.Response) { const share = res.locals.videoShare as VideoShareModel - if (share.Actor.isOwned() === false) return res.redirect(share.url) + if (share.url.startsWith(CONFIG.WEBSERVER.URL) === false) return res.redirect(share.url) const { activity } = await buildAnnounceWithVideoAudience(share.Actor, share, res.locals.video, undefined) return activityPubResponse(activityPubContextify(activity), res) } -async function videoAnnouncesController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoAnnouncesController (req: express.Request, res: express.Response) { const video: VideoModel = res.locals.video const handler = async (start: number, count: number) => { @@ -206,21 +206,21 @@ async function videoAnnouncesController (req: express.Request, res: express.Resp return activityPubResponse(activityPubContextify(json), res) } -async function videoLikesController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoLikesController (req: express.Request, res: express.Response) { const video: VideoModel = res.locals.video const json = await videoRates(req, 'like', video, getVideoLikesActivityPubUrl(video)) return activityPubResponse(activityPubContextify(json), res) } -async function videoDislikesController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoDislikesController (req: express.Request, res: express.Response) { const video: VideoModel = res.locals.video const json = await videoRates(req, 'dislike', video, getVideoDislikesActivityPubUrl(video)) return activityPubResponse(activityPubContextify(json), res) } -async function videoCommentsController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoCommentsController (req: express.Request, res: express.Response) { const video: VideoModel = res.locals.video const handler = async (start: number, count: number) => { @@ -235,30 +235,30 @@ async function videoCommentsController (req: express.Request, res: express.Respo return activityPubResponse(activityPubContextify(json), res) } -async function videoChannelController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoChannelController (req: express.Request, res: express.Response) { const videoChannel: VideoChannelModel = res.locals.videoChannel return activityPubResponse(activityPubContextify(videoChannel.toActivityPubObject()), res) } -async function videoChannelFollowersController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoChannelFollowersController (req: express.Request, res: express.Response) { const videoChannel: VideoChannelModel = res.locals.videoChannel const activityPubResult = await actorFollowers(req, videoChannel.Actor) return activityPubResponse(activityPubContextify(activityPubResult), res) } -async function videoChannelFollowingController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoChannelFollowingController (req: express.Request, res: express.Response) { const videoChannel: VideoChannelModel = res.locals.videoChannel const activityPubResult = await actorFollowing(req, videoChannel.Actor) return activityPubResponse(activityPubContextify(activityPubResult), res) } -async function videoCommentController (req: express.Request, res: express.Response, next: express.NextFunction) { +async function videoCommentController (req: express.Request, res: express.Response) { const videoComment: VideoCommentModel = res.locals.videoComment - if (videoComment.isOwned() === false) return res.redirect(videoComment.url) + if (videoComment.url.startsWith(CONFIG.WEBSERVER.URL) === false) return res.redirect(videoComment.url) const threadParentComments = await VideoCommentModel.listThreadParentComments(videoComment, undefined) const isPublic = true // Comments are always public @@ -276,7 +276,7 @@ async function videoCommentController (req: express.Request, res: express.Respon async function videoRedundancyController (req: express.Request, res: express.Response) { const videoRedundancy: VideoRedundancyModel = res.locals.videoRedundancy - if (videoRedundancy.isOwned() === false) return res.redirect(videoRedundancy.url) + if (videoRedundancy.url.startsWith(CONFIG.WEBSERVER.URL) === false) return res.redirect(videoRedundancy.url) const serverActor = await getServerActor() diff --git a/server/tests/api/activitypub/client.ts b/server/tests/api/activitypub/client.ts index 5ca8bdfd3..ea0682634 100644 --- a/server/tests/api/activitypub/client.ts +++ b/server/tests/api/activitypub/client.ts @@ -2,25 +2,42 @@ import * as chai from 'chai' import 'mocha' -import { flushTests, killallServers, makeActivityPubGetRequest, runServer, ServerInfo, setAccessTokensToServers } from '../../utils' +import { + doubleFollow, + flushAndRunMultipleServers, + flushTests, + killallServers, + makeActivityPubGetRequest, + runServer, + ServerInfo, + setAccessTokensToServers, uploadVideo +} from '../../utils' const expect = chai.expect describe('Test activitypub', function () { - let server: ServerInfo = null + let servers: ServerInfo[] = [] + let videoUUID: string before(async function () { this.timeout(30000) await flushTests() - server = await runServer(1) + servers = await flushAndRunMultipleServers(2) - await setAccessTokensToServers([ server ]) + await setAccessTokensToServers(servers) + + { + const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video' }) + videoUUID = res.body.video.uuid + } + + await doubleFollow(servers[0], servers[1]) }) it('Should return the account object', async function () { - const res = await makeActivityPubGetRequest(server.url, '/accounts/root') + const res = await makeActivityPubGetRequest(servers[0].url, '/accounts/root') const object = res.body expect(object.type).to.equal('Person') @@ -29,7 +46,22 @@ describe('Test activitypub', function () { expect(object.preferredUsername).to.equal('root') }) + it('Should return the video object', async function () { + const res = await makeActivityPubGetRequest(servers[0].url, '/videos/watch/' + videoUUID) + const object = res.body + + expect(object.type).to.equal('Video') + expect(object.id).to.equal('http://localhost:9001/videos/watch/' + videoUUID) + expect(object.name).to.equal('video') + }) + + it('Should redirect to the origin video object', async function () { + const res = await makeActivityPubGetRequest(servers[1].url, '/videos/watch/' + videoUUID, 302) + + expect(res.header.location).to.equal('http://localhost:9001/videos/watch/' + videoUUID) + }) + after(async function () { - killallServers([ server ]) + killallServers(servers) }) }) diff --git a/server/tests/utils/server/activitypub.ts b/server/tests/utils/server/activitypub.ts index cf3c1c3b3..eccb198ca 100644 --- a/server/tests/utils/server/activitypub.ts +++ b/server/tests/utils/server/activitypub.ts @@ -1,11 +1,10 @@ import * as request from 'supertest' -function makeActivityPubGetRequest (url: string, path: string) { +function makeActivityPubGetRequest (url: string, path: string, expectedStatus = 200) { return request(url) .get(path) .set('Accept', 'application/activity+json,text/html;q=0.9,\\*/\\*;q=0.8') - .expect(200) - .expect('Content-Type', /json/) + .expect(expectedStatus) } // --------------------------------------------------------------------------- -- cgit v1.2.3 From dbe6aa698eaacf9125d2c4232dee6e3e1f0d7ba1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 3 Dec 2018 09:14:56 +0100 Subject: Fix trending page --- server/controllers/api/videos/index.ts | 7 +------ server/lib/activitypub/process/process-create.ts | 13 +++++++++++-- server/lib/job-queue/handlers/video-views.ts | 13 +++++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index b659f53ed..3d1b2e1a2 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -411,12 +411,7 @@ async function viewVideo (req: express.Request, res: express.Response) { ]) const serverActor = await getServerActor() - - // Send the event to the origin server - // If we own the video, we'll send an update event when we'll process the views (in our job queue) - if (videoInstance.isOwned() === false) { - await sendCreateView(serverActor, videoInstance, undefined) - } + await sendCreateView(serverActor, videoInstance, undefined) return res.status(204).end() } diff --git a/server/lib/activitypub/process/process-create.ts b/server/lib/activitypub/process/process-create.ts index f7fb09fba..cd7ea01aa 100644 --- a/server/lib/activitypub/process/process-create.ts +++ b/server/lib/activitypub/process/process-create.ts @@ -87,10 +87,19 @@ async function processCreateDislike (byActor: ActorModel, activity: ActivityCrea async function processCreateView (byActor: ActorModel, activity: ActivityCreate) { const view = activity.object as ViewObject - const video = await VideoModel.loadByUrl(view.object) - if (!video || video.isOwned() === false) return + const options = { + videoObject: view.object, + fetchType: 'only-video' as 'only-video' + } + const { video } = await getOrCreateVideoAndAccountAndChannel(options) await Redis.Instance.addVideoView(video.id) + + if (video.isOwned()) { + // Don't resend the activity to the sender + const exceptions = [ byActor ] + await forwardVideoRelatedActivity(activity, undefined, exceptions, video) + } } async function processCacheFile (byActor: ActorModel, activity: ActivityCreate) { diff --git a/server/lib/job-queue/handlers/video-views.ts b/server/lib/job-queue/handlers/video-views.ts index f44c3c727..038ef43e2 100644 --- a/server/lib/job-queue/handlers/video-views.ts +++ b/server/lib/job-queue/handlers/video-views.ts @@ -24,12 +24,10 @@ async function processVideosViews () { try { const views = await Redis.Instance.getVideoViews(videoId, hour) if (isNaN(views)) { - logger.error('Cannot process videos views of video %d in hour %d: views number is NaN.', videoId, hour) + logger.error('Cannot process videos views of video %d in hour %d: views number is NaN (%s).', videoId, hour, views) } else { logger.debug('Adding %d views to video %d in hour %d.', views, videoId, hour) - await VideoModel.incrementViews(videoId, views) - try { await VideoViewModel.create({ startDate, @@ -39,7 +37,14 @@ async function processVideosViews () { }) const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId) - if (video.isOwned()) await federateVideoIfNeeded(video, false) + if (video.isOwned()) { + // If this is a remote video, the origin instance will send us an update + await VideoModel.incrementViews(videoId, views) + + // Send video update + video.views += views + await federateVideoIfNeeded(video, false) + } } catch (err) { logger.debug('Cannot create video views for video %d in hour %d. Maybe the video does not exist anymore?', videoId, hour) } -- cgit v1.2.3 From 556ec6d0bc559685b9d5fcc878095e73c5a36bf7 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 3 Dec 2018 09:54:34 +0100 Subject: Update changelog --- CHANGELOG.md | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae66805e3..a50884690 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,94 @@ # Changelog +## v1.1.0 + +## Since v1.0.1 + +### Maintenance + + * Improve REST API documentation: https://docs.joinpeertube.org/api.html ([@rigelk](https://github.com/rigelk)) + * Add basic ActivityPub documentation: https://docs.joinpeertube.org/lang/en/devdocs/federation.html ([@rigelk](https://github.com/rigelk)) + * Add CLI option to run PeerTube without client ([@rigelk](https://github.com/rigelk)) + * Add manpage to peertube CLI ([@rigelk](https://github.com/rigelk)) + * Make backups of files in optimize-old-videos script ([@Nutomic](https://github.com/nutomic)) + * Allow peertube-import-videos.ts CLI script to run concurrently ([@McFlat](https://github.com/mcflat)) + +### Scripts + + * Use DB information from config/production.yaml in upgrade script ([@ldidry](https://github.com/ldidry)) + * Add REPL script ([@McFlat](https://github.com/mcflat)) + +### Docker + + * Add search and import settings env settings env variables ([@kaiyou](https://github.com/kaiyou)) + * Add docker dev image ([@am97](https://github.com/am97)) + * Improve docker compose template ([@Nutomic](https://github.com/nutomic)) + * Add postfix image + * Redirect HTTP -> HTTPS + * Disable Træfik web UI + * Add ability to set an array in `PEERTUBE_TRUST_PROXY` ([LecygneNoir](https://github.com/LecygneNoir)) + +### Features + + * Automatically resume videos if the user is logged in + * Hide automatically the menu when the window is resized ([@BO41](https://github.com/BO41)) + * Remove confirm modal for JavaScript/CSS injection ([@scanlime](https://github.com/scanlime)) + * Set bitrate limits for transcoding ([@Nutomic](https://github.com/nutomic)) + * Add moderation tools in the account page + * Add bulk actions in users table (Delete/Ban for now) + * Add search filter in admin users table + * Add search filter in admin following + * Add search filter in admin followers + * Add ability to list all local videos + * Add ability for users to mute an account or an instance + * Add ability for administrators to mute an account or an instance + * Rename "News" category to "News & Politics" ([@daker](https://github.com/daker)) + * Add explicit error message when changing video ownership ([@lucas-dclrcq](https://github.com/lucas-dclrcq)) + * Improve description of the HTTP video import feature ([@rigelk](https://github.com/rigelk)) + * Set shorter keyframe interval for transcoding (2 seconds) ([@Nutomic](https://github.com/nutomic)) + * Add ability to disable webtorrent (as a user) ([@rigelk](https://github.com/rigelk)) + * Make abuse-delete clearer ([@barbeque](https://github.com/barbeque)) + * Adding minimum signup age conforming to ceiling GPDR age ([@rigelk](https://github.com/rigelk)) + * Feature/description support fields length 1000 ([@McFlat](https://github.com/mcflat)) + * Add background effect to activated menu entry + * Improve video upload error handling + * Improve message visibility on signup + * Auto login user on signup if email verification is disabled + * Speed up PeerTube startup (in particular the first one) + * Delete invalid or deleted remote videos + * Add ability to admin to set email as verified ([@joshmorel](https://github.com/joshmorel)) + * Add separators in user moderation dropdown + +### Bug fixes + + * AP mimeType -> mediaType + * PeerTube is not in beta anymore + * PeerTube is not in alpha anymore :p + * Fix optimize old videos script + * Check follow constraints when getting a video + * Fix application-config initialization in CLI tools ([Yetangitu](https://github.com/Yetangitu)) + * Fix video pixel format compatibility (using yuv420p) ([@rigelk](https://github.com/rigelk)) + * Fix video `state` AP context ([tcitworld](https://github.com/tcitworld)) + * Fix Linked Signature compatibility + * Fix AP collections pagination + * Fix too big thumbnails (when using URL import) + * Do not host remote AP objects: use redirection instead + * Fix video miniature with a long name + * Fix video views inconsistencies inside the federation + * Fix video embed in Wordpress Gutenberg + * Fix video channel videos url when scrolling + * Fix player progress bar/seeking when changing resolution + * Fix search tab title with no search + * Fix YouTube video import with some videos + +## Since v1.1.0-rc.1 + +### Bug fixes + + * Fix AP infinite redirection + * Fix trending page + + ## v1.1.0-rc.1 (since v1.1.0-alpha.2) ### Maintenance -- cgit v1.2.3 From ebb675b4b91217186c8e2fca4edb522a4ffe69ee Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 3 Dec 2018 09:58:59 +0100 Subject: Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a50884690..cce6e7402 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## v1.1.0 -## Since v1.0.1 +***Since v1.0.1*** ### Maintenance @@ -81,7 +81,7 @@ * Fix search tab title with no search * Fix YouTube video import with some videos -## Since v1.1.0-rc.1 +***Since v1.1.0-rc.1*** ### Bug fixes -- cgit v1.2.3 From b73ddc8a576531ae1398f3a2ad30c201290dcb12 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 3 Dec 2018 10:35:50 +0100 Subject: Fix release script --- scripts/release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release.sh b/scripts/release.sh index 134f2d288..08061fe6f 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -43,7 +43,7 @@ directory_name="peertube-$version" zip_name="peertube-$version.zip" tar_name="peertube-$version.tar.xz" -changelog=$(awk -v version="$version" '/## v/ { printit = $2 == version }; printit;' CHANGELOG.md | grep -v "$version" | sed '1{/^$/d}') +changelog=$(awk -v version="$version" '/## v/ { printit = $2 == version }; printit;' CHANGELOG.md | grep -v "## $version" | sed '1{/^$/d}') printf "Changelog will be:\\n\\n%s\\n\\n" "$changelog" -- cgit v1.2.3 From b6ff69719d7905c1c62c193d34fca3eb27e982fb Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 08:29:12 +0100 Subject: Bumped to version v1.1.0 --- client/package.json | 2 +- package.json | 2 +- support/doc/api/openapi.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/package.json b/client/package.json index 5184ac7bc..3761a641a 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "peertube-client", - "version": "1.1.0-rc.1", + "version": "1.1.0", "private": true, "licence": "GPLv3", "author": { diff --git a/package.json b/package.json index 2138c28c5..d4076612e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "peertube", "description": "Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.", - "version": "1.1.0-rc.1", + "version": "1.1.0", "private": true, "licence": "AGPLv3", "engines": { diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index b83362a37..9848c93ee 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: PeerTube - version: 1.1.0-rc.1 + version: 1.1.0 contact: name: PeerTube Community url: 'https://joinpeertube.org' -- cgit v1.2.3 From 75939291703cf18010495f6b85d6d65e01184235 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Thu, 22 Nov 2018 15:40:49 +0100 Subject: Check free storage before upgrading --- scripts/upgrade.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh index c70b3b42a..0a9ce1dab 100755 --- a/scripts/upgrade.sh +++ b/scripts/upgrade.sh @@ -20,6 +20,14 @@ if [ ! -e "$PEERTUBE_PATH/versions" -o ! -e "$PEERTUBE_PATH/config/production.ya exit 1 fi +REMAINING=$(df -k $PEERTUBE_PATH | awk '{ print $4}' | sed -n 2p) +ONE_GB=$((1024 * 1024)) +if [ "$REMAINING" -lt "$ONE_GB" ]; then + echo "Error - not enough free space for upgrading" + echo "" + echo "Make sure you have at least 1 GB of free space in $PEERTUBE_PATH" + exit 1 +fi # Backup database SQL_BACKUP_PATH="$PEERTUBE_PATH/backup/sql-peertube_prod-$(date +"%Y%m%d-%H%M").bak" -- cgit v1.2.3 From 5c94c38d18a02864b6f384bcd829a0d3f2d86c4a Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Sat, 1 Dec 2018 14:00:07 +0100 Subject: Check if awk and sed are executable --- scripts/upgrade.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh index 0a9ce1dab..4f7c58edd 100755 --- a/scripts/upgrade.sh +++ b/scripts/upgrade.sh @@ -20,13 +20,15 @@ if [ ! -e "$PEERTUBE_PATH/versions" -o ! -e "$PEERTUBE_PATH/config/production.ya exit 1 fi -REMAINING=$(df -k $PEERTUBE_PATH | awk '{ print $4}' | sed -n 2p) -ONE_GB=$((1024 * 1024)) -if [ "$REMAINING" -lt "$ONE_GB" ]; then - echo "Error - not enough free space for upgrading" - echo "" - echo "Make sure you have at least 1 GB of free space in $PEERTUBE_PATH" - exit 1 +if [ -x "$(command -v awk)" ] && [ -x "$(command -v sed)" ] ; then + REMAINING=$(df -k $PEERTUBE_PATH | awk '{ print $4}' | sed -n 2p) + ONE_GB=$((1024 * 1024)) + if [ "$REMAINING" -lt "$ONE_GB" ]; then + echo "Error - not enough free space for upgrading" + echo "" + echo "Make sure you have at least 1 GB of free space in $PEERTUBE_PATH" + exit 1 + fi fi # Backup database -- cgit v1.2.3 From f9a971c671d5a8b88f420a86656a788575105598 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 09:34:29 +0100 Subject: Update dependencies --- package.json | 4 +- server/initializers/constants.ts | 2 +- server/lib/job-queue/handlers/video-file.ts | 4 +- yarn.lock | 347 +++++++++++++++------------- 4 files changed, 196 insertions(+), 161 deletions(-) diff --git a/package.json b/package.json index d4076612e..c5e4c329c 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "cli-table": "^0.3.1", "commander": "^2.13.0", "concurrently": "^4.0.1", - "config": "^2.0.1", + "config": "^3.0.0", "cookie-parser": "^1.4.3", "cors": "^2.8.1", "create-torrent": "^3.24.5", @@ -165,7 +165,7 @@ "@types/bcrypt": "^3.0.0", "@types/bluebird": "3.5.21", "@types/body-parser": "^1.16.3", - "@types/bull": "^3.3.12", + "@types/bull": "3.4.0", "@types/bytes": "^3.0.0", "@types/chai": "^4.0.4", "@types/chai-json-schema": "^1.4.3", diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index aa243859c..8a8bcd126 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -773,7 +773,7 @@ function buildVideosRedundancy (objs: any[]): VideosRedundancy[] { if (!objs) return [] return objs.map(obj => { - return Object.assign(obj, { + return Object.assign({}, obj, { minLifetime: parseDuration(obj.min_lifetime), size: bytes.parse(obj.size), minViews: obj.min_views diff --git a/server/lib/job-queue/handlers/video-file.ts b/server/lib/job-queue/handlers/video-file.ts index adc0a2a15..ddbf6d1c2 100644 --- a/server/lib/job-queue/handlers/video-file.ts +++ b/server/lib/job-queue/handlers/video-file.ts @@ -1,5 +1,5 @@ import * as Bull from 'bull' -import { VideoResolution, VideoState } from '../../../../shared' +import { VideoResolution, VideoState, Job } from '../../../../shared' import { logger } from '../../../helpers/logger' import { VideoModel } from '../../../models/video/video' import { JobQueue } from '../job-queue' @@ -111,7 +111,7 @@ async function onVideoFileOptimizerSuccess (video: VideoModel, isNewVideo: boole ) if (resolutionsEnabled.length !== 0) { - const tasks: Bluebird[] = [] + const tasks: Bluebird>[] = [] for (const resolution of resolutionsEnabled) { const dataInput = { diff --git a/yarn.lock b/yarn.lock index b961fb5cc..1cbe6756d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,20 @@ # yarn lockfile v1 +"@iamstarkov/listr-update-renderer@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@iamstarkov/listr-update-renderer/-/listr-update-renderer-0.4.1.tgz#d7c48092a2dcf90fd672b6c8b458649cb350c77e" + integrity sha512-IJyxQWsYDEkf8C8QthBn5N8tIUR9V9je6j3sMIpAkonaadjbvxmRC6RAhpa3RKxndhNnU2M6iNbtJwd7usQYIA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" @@ -44,7 +58,7 @@ "@types/connect" "*" "@types/node" "*" -"@types/bull@^3.3.12": +"@types/bull@3.4.0": version "3.4.0" resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.4.0.tgz#18ffefefa4dd1cfbdbdc8ca7df56c934459f6b9d" integrity sha512-NVD2X+cUu1qNv6blsOfCr2fVsD3+O13U19dFuy9Du7PWfn1/gjFZEDk220uBuRSH5JyaP4nV6S8BLjsT5/bXUg== @@ -233,9 +247,9 @@ "@types/express" "*" "@types/node@*", "@types/node@^10.0.8": - version "10.12.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.8.tgz#d0a3ab5a6e61458c492304e2776ac136b81db927" - integrity sha512-INamyRZG4rW3lDCUmwVd5Xho/bXvQm/v1yP8V0UN1RuInU7RoWoaO570b+yLX4Ia/0szsx1wa8VzcsVlsvbWLA== + version "10.12.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.12.tgz#e15a9d034d9210f00320ef718a50c4a799417c47" + integrity sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A== "@types/node@6.0.41": version "6.0.41" @@ -251,9 +265,9 @@ "@types/node" "*" "@types/oauth2-server@^3.0.8": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@types/oauth2-server/-/oauth2-server-3.0.9.tgz#e3f32011862f03f399635c5916d5a383bca26fe2" - integrity sha512-NixZjyKS4TCM1mMr6QViK0rxR8iMHiE1utYje+ZGne1SgJQzLT3OOAjCrnRp70G+L8W1BXnzIPPaIxj1kYJHNg== + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/oauth2-server/-/oauth2-server-3.0.10.tgz#ea671a6ad3d02062aac5f7c1ba1fb9c468314db0" + integrity sha512-1XYQdBrBuGimRhGLk9XavjGY2h5IYmT0rTi3pDAWzq6xRWZp+LCAwNm8YNYdDwQxBp//eogtZePe8mS7QPDiNg== dependencies: "@types/express" "*" @@ -284,9 +298,9 @@ integrity sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw== "@types/redis@^2.8.5": - version "2.8.7" - resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.7.tgz#e0825093fb1af9d5b4a7246c6d7d1163cc842c35" - integrity sha512-ZMW8M5LRxU0D4u2GhnCEqJ1/mUJKSudlCWxeP1FRxfZQqr0Pb4tonPLzDEyRpC50uvEfAP3xOLjDuUOWi0QHCQ== + version "2.8.8" + resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.8.tgz#70855e79a6020080cca3cb5f1f5ee7f11b49a979" + integrity sha512-o/1ufNVPA92uum9HFbEiXXIHBuLywSwHQtAZoACMc1FhPXS5YftybBC1EI0zjdbUb273VVWF0Ivll/bq4g+gyw== dependencies: "@types/node" "*" @@ -341,9 +355,9 @@ "@types/node" "*" "@types/supertest@^2.0.3": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.6.tgz#a0665350c0e36315e1bccdf4785f2b76fcb71b6b" - integrity sha512-qRvPP8dO7IBqJz8LaQ7/Lw2oo/geiDUPAMx/L+CQCkR9sN622O30XCH7RSyUmilyCSyjxyhJ7cEtd3hmwPwvhw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.7.tgz#46ff6508075cd4519736be060f0d6331a5c8ca7b" + integrity sha512-GibTh4OTkal71btYe2fpZP/rVHIPnnUsYphEaoywVHo+mo2a/LhlOFkIm5wdN0H0DA0Hx8x+tKgCYMD9elHu5w== dependencies: "@types/superagent" "*" @@ -477,9 +491,9 @@ ajv@^4.7.0: json-stable-stringify "^1.0.1" ajv@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" - integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== + version "6.6.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61" + integrity sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -844,9 +858,9 @@ binary-search@^1.3.4: integrity sha512-dPxU/vZLnH0tEVjVPgi015oSwqu6oLfCeHywuFRhBE0yM0mYocvleTl8qsdM1YFhRzTRhM1+VzS8XLDVrHPopg== bindings@^1.3.0, bindings@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" - integrity sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.1.tgz#21fc7c6d67c18516ec5aaa2815b145ff77b26ea5" + integrity sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew== bindings@~1.2.1: version "1.2.1" @@ -1143,9 +1157,9 @@ builtins@^1.0.3: integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= bull@^3.4.2: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.1.tgz#b936a1306cb7e9dc1ac9c23a0dcaf41a1370effc" - integrity sha512-stbptND5+uRmzd6gIUJlC93fikXKyrJl53HGxzyqD0ahCMeyFRlaD5kN1i+PqfZSkcHKx/kK3HOJ8knum/Yi7A== + version "3.5.2" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.5.2.tgz#9c85f205b17686efab2ee28aaa4388887360de32" + integrity sha512-tuL4Uj0kUeaQ7Cow3POkca20fk+VSsR8AiTFeNkyMmuicBnE1ZMwvF1NRDY7vIH43pD9PiMCSEP4Li/934Pw1w== dependencies: bluebird "^3.5.3" cron-parser "^2.5.0" @@ -1283,6 +1297,11 @@ camelcase@^4.0.0, camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + camelize@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -1447,14 +1466,14 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" -cli-cursor@^1.0.1, cli-cursor@^1.0.2: +cli-cursor@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= dependencies: restore-cursor "^1.0.1" -cli-cursor@^2.0.0: +cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= @@ -1701,15 +1720,15 @@ concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.5.2: typedarray "^0.0.6" concurrently@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.0.1.tgz#f6310fbadf2f476dd95df952edb5c0ab789f672c" - integrity sha512-D8UI+mlI/bfvrA57SeKOht6sEpb01dKk+8Yee4fbnkk1Ue8r3S+JXoEdFZIpzQlXJGtnxo47Wvvg/kG4ba3U6Q== + version "4.1.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.0.tgz#17fdf067da71210685d9ea554423ef239da30d33" + integrity sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg== dependencies: chalk "^2.4.1" date-fns "^1.23.0" lodash "^4.17.10" read-pkg "^4.0.1" - rxjs "6.2.2" + rxjs "^6.3.3" spawn-command "^0.0.2-1" supports-color "^4.5.0" tree-kill "^1.1.0" @@ -1723,10 +1742,10 @@ config-chain@~1.1.11: ini "^1.3.4" proto-list "~1.2.1" -config@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/config/-/config-2.0.1.tgz#995ccc8175460578d646ac0a2e4018ffa44ca046" - integrity sha512-aTaviJnC8ZjQYx8kQf4u6tWqIxWolyQQ3LqXgnCLAsIb78JrUshHG0YuzIarzTaVVe1Pazms3TXImfYra8UsyQ== +config@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/config/-/config-3.0.0.tgz#a71cdbb22d225df9eff20b95178d65a63c452367" + integrity sha512-QMr3BCOcHdgXx8t8cLfBhWtHcIAAMikaxUc2XASuH2A93g9kOIRch7sXFQdSvdMxhQobnctWm2y68YJYRttJlw== dependencies: json5 "^1.0.1" @@ -1830,7 +1849,16 @@ cors@^2.8.1: object-assign "^4" vary "^1" -cosmiconfig@^5.0.2, cosmiconfig@^5.0.6: +cosmiconfig@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" + integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + +cosmiconfig@^5.0.6: version "5.0.7" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== @@ -1867,9 +1895,9 @@ create-torrent@^3.24.5, create-torrent@^3.33.0: simple-sha1 "^2.0.0" cron-parser@^2.5.0: - version "2.7.1" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.1.tgz#d08c00b1e220db564fd1cecb5019c8dd450f84d1" - integrity sha512-gupE4KsGEVtp5X4YbUlQx6NiFt3e+VOhREPI4ZXS9FT5JcOjfw2ey1EUv3J6XWrxHR1aKYrk4uJDmdRjG39bgA== + version "2.7.3" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.7.3.tgz#12603f89f5375af353a9357be2543d3172eac651" + integrity sha512-t9Kc7HWBWPndBzvbdQ1YG9rpPRB37Tb/tTviziUOh1qs3TARGh3b1p+tnkOHNe1K5iI3oheBPgLqwotMM7+lpg== dependencies: is-nan "^1.2.1" moment-timezone "^0.5.23" @@ -1993,18 +2021,11 @@ debuglog@^1.0.0, debuglog@^1.0.1: resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= -decamelize@^1.1.1: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2644,10 +2665,10 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-template@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" - integrity sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg== +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== expect-ct@0.1.1: version "0.1.1" @@ -2837,6 +2858,13 @@ figures@^1.3.5, figures@^1.7.0: escape-string-regexp "^1.0.5" object-assign "^4.1.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^1.1.1: version "1.3.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" @@ -3420,9 +3448,9 @@ has-values@^1.0.0: kind-of "^4.0.0" hash.js@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" - integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -3557,9 +3585,9 @@ humanize-ms@^1.2.1: ms "^2.0.0" husky@^1.0.0-rc.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-1.1.4.tgz#92f61383527d2571e9586234e5864356bfaceaa9" - integrity sha512-cZjGpS7qsaBSo3fOMUuR7erQloX3l5XzL1v/RkIqU6zrQImDdU70z5Re9fGDp7+kbYlM2EtS4aYMlahBeiCUGw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-1.2.0.tgz#d631dda1e4a9ee8ba69a10b0c51a0e2c66e711e5" + integrity sha512-/ib3+iycykXC0tYIxsyqierikVa9DA2DrT32UEirqNEFVqOj1bFMTgP3jAz8HM7FgC/C8pc/BTUa9MV2GEkZaA== dependencies: cosmiconfig "^5.0.6" execa "^1.0.0" @@ -4483,13 +4511,14 @@ libxmljs@0.19.5: node-pre-gyp "~0.11.0" lint-staged@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.0.4.tgz#d3c909fcf7897152cdce2d6e42500cd9b5b41a0d" - integrity sha512-Rs0VxXoyFqHMrPQgKAMy+O907+m5Po71UVPhBi7BUBwU7ZZ2aoc+mZmpOX3DVPCoTcy6+hqJa9yIZfacNpJHdg== + version "8.1.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.0.tgz#dbc3ae2565366d8f20efb9f9799d076da64863f2" + integrity sha512-yfSkyJy7EuVsaoxtUSEhrD81spdJOe/gMTGea3XaV7HyoRhTb9Gdlp6/JppRZERvKSEYXP9bjcmq6CA5oL2lYQ== dependencies: + "@iamstarkov/listr-update-renderer" "0.4.1" chalk "^2.3.1" commander "^2.14.1" - cosmiconfig "^5.0.2" + cosmiconfig "5.0.6" debug "^3.1.0" dedent "^0.7.0" del "^3.0.0" @@ -4500,7 +4529,6 @@ lint-staged@^8.0.4: is-windows "^1.0.2" jest-validate "^23.5.0" listr "^0.14.2" - listr-update-renderer "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update" lodash "^4.17.5" log-symbols "^2.2.0" micromatch "^3.1.8" @@ -4518,9 +4546,10 @@ listr-silent-renderer@^1.1.1: resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= -listr-update-renderer@^0.4.0, "listr-update-renderer@https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update": - version "0.4.0" - resolved "https://github.com/okonet/listr-update-renderer/tarball/upgrade-log-update#06073fa93166277607a7814f4e1f83960081414c" +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== dependencies: chalk "^1.1.3" cli-truncate "^0.2.1" @@ -4531,30 +4560,30 @@ listr-update-renderer@^0.4.0, "listr-update-renderer@https://github.com/okonet/l log-update "^2.3.0" strip-ansi "^3.0.1" -listr-verbose-renderer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" - integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU= +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" + chalk "^2.4.1" + cli-cursor "^2.1.0" date-fns "^1.27.2" - figures "^1.7.0" + figures "^2.0.0" listr@^0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.2.tgz#cbe44b021100a15376addfc2d79349ee430bfe14" - integrity sha512-vmaNJ1KlGuGWShHI35X/F8r9xxS0VTHh9GejVXwSN20fG5xpq3Jh4bJbnumoT6q5EDM/8/YP1z3YMtQbFmhuXw== + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== dependencies: "@samverschueren/stream-to-observable" "^0.3.0" is-observable "^1.1.0" is-promise "^2.1.0" is-stream "^1.1.0" listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.4.0" - listr-verbose-renderer "^0.4.0" - p-map "^1.1.1" - rxjs "^6.1.0" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" load-ip-set@^2.1.0: version "2.1.0" @@ -4791,9 +4820,9 @@ lowercase-keys@^1.0.0: integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -5054,9 +5083,9 @@ mime@^1.3.4, mime@^1.4.1: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== mimelib@^0.3.0: version "0.3.1" @@ -5386,9 +5415,9 @@ node-abi@^2.2.0: semver "^5.4.1" node-addon-api@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.1.tgz#a9881c8dbc6400bac6ddedcb96eccf8051678536" - integrity sha512-GcLOYrG5/enbqH4SMsqXt6GQUQGGnDnE3FLDZzXYkCgQHuZV5UDFR+EboeY8kpG0avroyOjpFQ2qLEBosFcRIA== + version "1.6.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.2.tgz#d8aad9781a5cfc4132cc2fecdbdd982534265217" + integrity sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA== node-fetch-npm@^2.0.2: version "2.0.2" @@ -5484,20 +5513,20 @@ nodemailer-shared@^1.1.0: nodemailer-fetch "1.6.0" nodemailer@^4.4.2: - version "4.6.8" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.6.8.tgz#f82fb407828bf2e76d92acc34b823d83e774f89c" - integrity sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA== + version "4.7.0" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-4.7.0.tgz#4420e06abfffd77d0618f184ea49047db84f4ad8" + integrity sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw== nodemon@^1.18.6: - version "1.18.6" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.6.tgz#89b1136634d6c0afc7de24cc932a760e999e2c76" - integrity sha512-4pHQNYEZun+IkIC2jCaXEhkZnfA7rQe73i8RkdRyDJls/K+WxR7IpI5uNUsAvQ0zWvYcCDNGD+XVtw2ZG86/uQ== + version "1.18.7" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.7.tgz#716b66bf3e89ac4fcfb38a9e61887a03fc82efbb" + integrity sha512-xuC1V0F5EcEyKQ1VhHYD13owznQbUw29JKvZ8bVH7TmuvVNHvvbp9pLgE4PjTMRJVe0pJ8fGRvwR2nMiosIsPQ== dependencies: chokidar "^2.0.4" debug "^3.1.0" ignore-by-default "^1.0.1" minimatch "^3.0.4" - pstree.remy "^1.1.0" + pstree.remy "^1.1.2" semver "^5.5.0" supports-color "^5.2.0" touch "^3.1.0" @@ -6051,6 +6080,11 @@ p-map@^1.1.1: resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.0.0.tgz#be18c5a5adeb8e156460651421aceca56c213a50" + integrity sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w== + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -6270,7 +6304,7 @@ pg-hstore@^2.3.2: dependencies: underscore "^1.7.0" -pg-pool@~2.0.3: +pg-pool@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.4.tgz#05ad0f2d9437d89c94ccc4f4d0a44ac65ade865b" integrity sha512-Mi2AsmlFkVMpI28NreaDkz5DkfxLOG16C/HNwi091LDlOiDiQACtAroLxSd1vIS2imBqxdjjO9cQZg2CwsOPbw== @@ -6286,14 +6320,14 @@ pg-types@~1.12.1: postgres-interval "^1.1.0" pg@^7.4.1: - version "7.6.1" - resolved "https://registry.yarnpkg.com/pg/-/pg-7.6.1.tgz#42c68aed37bf38b813616e3d21f4338f350c1b79" - integrity sha512-rAItIkYrRaNGinZN/Hs8F9R5mQjQSPlnzxPF+eCimSl92qnuNGR42gkpOQKP1bnvTwkSjRTBL+VNC5EcFhtCuQ== + version "7.7.1" + resolved "https://registry.yarnpkg.com/pg/-/pg-7.7.1.tgz#546b192ff484322b69689391f885de3ba91a30d4" + integrity sha512-p3I0mXOmUvCoVlCMFW6iYSrnguPol6q8He15NGgSIdM3sPGjFc+8JGCeKclw8ZR4ETd+Jxy2KNiaPUcocHZeMw== dependencies: buffer-writer "2.0.0" packet-reader "0.3.1" pg-connection-string "0.1.3" - pg-pool "~2.0.3" + pg-pool "^2.0.4" pg-types "~1.12.1" pgpass "1.x" semver "4.3.2" @@ -6396,12 +6430,12 @@ postgres-interval@^1.1.0: xtend "^4.0.0" prebuild-install@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.1.tgz#87ba8cf17c65360a75eefeb3519e87973bf9791d" - integrity sha512-9DAccsInWHB48TBQi2eJkLPE049JuAI6FjIH0oIrij4bpDVEbX6JvlWRAcAAlUqBHhjgq0jNqA3m3bBXWm9v6w== + version "5.2.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.2.tgz#237888f21bfda441d0ee5f5612484390bccd4046" + integrity sha512-4e8VJnP3zJdZv/uP0eNWmr2r9urp4NECw7Mt1OSAi3rcLrbBRxGiAkfUFtre2MhQ5wfREAjRV+K1gubvs/GPsA== dependencies: detect-libc "^1.0.3" - expand-template "^1.0.2" + expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.0" mkdirp "^0.5.1" @@ -6529,7 +6563,7 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== -pstree.remy@^1.1.0: +pstree.remy@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.2.tgz#4448bbeb4b2af1fed242afc8dc7416a6f504951a" integrity sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA== @@ -6587,11 +6621,16 @@ qs@4.0.0: resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" integrity sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc= -qs@6.5.2, qs@^6.5.1, qs@~6.5.2: +qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +qs@^6.5.1: + version "6.6.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2" + integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA== + query-string@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.2.0.tgz#468edeb542b7e0538f9f9b1aeb26f034f19c86e1" @@ -7077,14 +7116,7 @@ rx-lite@^3.1.2: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= -rxjs@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" - integrity sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ== - dependencies: - tslib "^1.9.0" - -rxjs@^6.1.0: +rxjs@^6.3.3: version "6.3.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== @@ -7869,10 +7901,10 @@ string2compact@^1.1.1, string2compact@^1.2.5: addr-to-ip-port "^1.0.1" ipaddr.js "^1.0.1" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== dependencies: safe-buffer "~5.1.0" @@ -7881,6 +7913,13 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.2.2: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -8342,9 +8381,9 @@ tsutils@^2.27.2: tslib "^1.8.1" tsutils@^3.0.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.0.tgz#42602f7df241e753a2105cc3627a664abf11f745" - integrity sha512-/FZ+pEJQixWruFejFxNPRSwg+iF6aw7PYZVRqUscJ7EnzV3zieI8byfZziUR7QjCuJFulq8SEe9JcGflO4ze4Q== + version "3.5.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.2.tgz#6fd3c2d5a731e83bb21b070a173ec0faf3a8f6d3" + integrity sha512-qIlklNuI/1Dzfm+G+kJV5gg3gimZIX5haYtIVQe7qGyKd7eu8T1t1DY6pz4Sc2CGXAj9s1izycctm9Zfl9sRuQ== dependencies: tslib "^1.8.1" @@ -8411,9 +8450,9 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== + version "3.2.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.1.tgz#0b7a04b8cf3868188de914d9568bd030f0c56192" + integrity sha512-jw7P2z/h6aPT4AENXDGjcfHTu5CSqzsbZc6YlUIebTyBAq8XaKp78x7VcSh30xwSCcsu5irZkYZUSFP1MrAMbg== uid-number@0.0.6: version "0.0.6" @@ -8720,9 +8759,9 @@ wcwidth@^1.0.0: defaults "^1.0.3" webfinger.js@^2.6.6: - version "2.6.6" - resolved "https://registry.yarnpkg.com/webfinger.js/-/webfinger.js-2.6.6.tgz#52ebdc85da8c8fb6beb690e8e32594c99d2ff4ae" - integrity sha512-dQpuL01XtluQ9Ndgu62o3pEmIe/ssDoIE0CQsOyavGl04xyHal+Ge4gFerw5V0BFoLTQpD8ZZqaDzb43hG9atw== + version "2.7.0" + resolved "https://registry.yarnpkg.com/webfinger.js/-/webfinger.js-2.7.0.tgz#403354a14a65aeeba64c1408c18a387487cea106" + integrity sha512-l+UtsuV4zrBKyVAj9VCtwWgscTgadCsdGgL1OvbV102cvydWwJCGXlFIXauzWLzfheIDHfPNRWfgMuwyC6ZfIA== dependencies: xhr2 "^0.1.4" @@ -8909,9 +8948,9 @@ ws@1.1.2: ultron "1.0.x" ws@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.0.tgz#119a9dbf92c54e190ec18d10e871d55c95cf9373" - integrity sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg== + version "6.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8" + integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw== dependencies: async-limiter "~1.0.0" @@ -8936,16 +8975,16 @@ xhr2@^0.1.4: integrity sha1-f4dliEdxbbUCYyOBL4GMras4el8= xliff@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/xliff/-/xliff-4.1.0.tgz#32ea268a6442c122e132e6abf874539b1fc9c6b3" - integrity sha512-BlqCVTd16GLNx4TAll1Ebs1Gswh6g/Mx/9z6cXmbNTVqy7iqXAAwZjmhE2G1fX+++xoXy0IufPp+DOv8tJC/pA== + version "4.1.2" + resolved "https://registry.yarnpkg.com/xliff/-/xliff-4.1.2.tgz#eb6fae21346d82653febd44d478f5748ad79fbd2" + integrity sha512-ru+ya+rz2cb+D3Or9sf5xrj0MCL+q+vZmWOJlqZehIWlG3hqeIXhbfLMDAW9A5BsnRfL+BdMBHaogaTUGHyMyA== dependencies: - xml-js "1.6.7" + xml-js "1.6.8" -xml-js@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.7.tgz#a99b40c18a16d3e06537b3ae026a27bd60ffe8ab" - integrity sha512-1hn0xwwfMcWywnJxqiOXiv+pZaOJyf/YWcUeqJICF0BFb+IOkRFSkKyeA0V62WqTHXNdBxNuCFHhS/w2DtYpoA== +xml-js@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.8.tgz#e06419c54235f18f4c2cdda824cbd65a782330de" + integrity sha512-kUv/geyN80d+s1T68uBfjoz+PjNUjwwf5AWWRwKRqqQaGozpMVsFsKYnenPsxlbN/VL7f0ia8NfLLPCDwX+95Q== dependencies: sax "^1.2.4" @@ -8977,11 +9016,6 @@ xmlhttprequest-ssl@1.5.3: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" integrity sha1-GFqIjATspGw+QHDZn3tJ3jUomS0= -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -9003,16 +9037,17 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^8.0.0: version "8.1.0" @@ -9047,12 +9082,12 @@ yargs@^11.0.0: yargs-parser "^9.0.2" yargs@^12.0.1, yargs@^12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -9062,7 +9097,7 @@ yargs@^12.0.1, yargs@^12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" yeast@0.1.2: version "0.1.2" @@ -9085,9 +9120,9 @@ youtube-dl@^1.12.2: streamify "^0.2.9" z-schema@^3.24.1: - version "3.24.1" - resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.24.1.tgz#07a3643c8e061ec1af32e823c9f9e5e5e56e3c8d" - integrity sha512-2eR8eq/v1coNqyBc5HzswEcoLbw+S33RMnR326uiuOIr97ve5vwPNMDrKS1IRCB12bZ3a8BrfGxrRwuSXUyPvw== + version "3.24.2" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.24.2.tgz#193560e718812d98fdc190c38871b634b92f2386" + integrity sha512-Zb2YLJ9g72MexBXKPRzoypd4OZfVkFghdy10eVbcMNLl9YQsPXtyMpiK7a3sG7IIERg1lEDjEMrG9Km9DPbWLw== dependencies: core-js "^2.5.7" lodash.get "^4.0.0" -- cgit v1.2.3 From d639c3bf14bd490ab99b41b2feee5a3b91267436 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 10:07:43 +0100 Subject: Improve tools doc --- support/doc/tools.md | 80 ++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/support/doc/tools.md b/support/doc/tools.md index 1c7739525..5a1f212b1 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -4,13 +4,13 @@ **Table of Contents** -- [CLI wrapper](#cli-wrapper) - [Remote Tools](#remote-tools) - [Dependencies](#dependencies) - [Installation](#installation) - - [peertube-import-videos.js](#peertube-import-videosjs) - - [peertube-upload.js](#peertube-uploadjs) - - [peertube-watch.js](#peertube-watchjs) + - [CLI wrapper](#cli-wrapper) + - [peertube-import-videos.js](#peertube-import-videosjs) + - [peertube-upload.js](#peertube-uploadjs) + - [peertube-watch.js](#peertube-watchjs) - [Server tools](#server-tools) - [parse-log](#parse-log) - [create-transcoding-job.js](#create-transcoding-jobjs) @@ -26,9 +26,40 @@ -## CLI wrapper +## Remote Tools + +You need at least 512MB RAM to run the script. +Scripts can be launched directly from a PeerTube server, or from a separate server, even a desktop PC. +You need to follow all the following steps even if you are on a PeerTube server (including cloning the git repository in a different directory than your production installation because the scripts utilize non-production dependencies). + +### Dependencies + +Install the [PeerTube dependencies](dependencies.md). + +### Installation + +Clone the PeerTube repo to get the latest version (even if you are on your PeerTube server): + +``` +$ git clone https://github.com/Chocobozzz/PeerTube.git +$ CLONE="$(pwd)/PeerTube" +``` + +Run ``yarn install --pure-lockfile`` +``` +$ cd ${CLONE} +$ yarn install --pure-lockfile +``` + +Build server tools: +``` +$ cd ${CLONE} +$ npm run build:server +``` + +### CLI wrapper -The wrapper provides a convenient interface to most scripts, and requires the [same dependencies](#dependencies). You can access it as `peertube` via an alias in your `.bashrc` like `alias peertube="node ${PEERTUBE_PATH}/dist/server/tools/peertube.js"`: +The wrapper provides a convenient interface to the following scripts. You can access it as `peertube` via an alias in your `.bashrc` like `alias peertube="node /your/peertube/directory/dist/server/tools/peertube.js"`: ``` Usage: peertube [command] [options] @@ -72,38 +103,7 @@ And now that your video is online, you can watch it from the confort of your ter $ peertube watch https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10 ``` -## Remote Tools - -You need at least 512MB RAM to run the script. -Scripts can be launched directly from a PeerTube server, or from a separate server, even a desktop PC. -You need to follow all the following steps even if you are on a PeerTube server (including cloning the git repository in a different directory than your production installation because the scripts utilize non-production dependencies). - -### Dependencies - -Install the [PeerTube dependencies](dependencies.md). - -### Installation - -Clone the PeerTube repo to get the latest version (even if you are on your PeerTube server): - -``` -$ git clone https://github.com/Chocobozzz/PeerTube.git -$ CLONE="$(pwd)/PeerTube" -``` - -Run ``yarn install`` -``` -$ cd ${CLONE} -$ yarn install -``` - -Build server tools: -``` -$ cd ${CLONE} -$ npm run build:server -``` - -### peertube-import-videos.js +#### peertube-import-videos.js You can use this script to import videos from all [supported sites of youtube-dl](https://rg3.github.io/youtube-dl/supportedsites.html) into PeerTube. Be sure you own the videos or have the author's authorization to do so. @@ -133,7 +133,7 @@ Already downloaded videos will not be uploaded twice, so you can run and re-run Videos will be publicly available after transcoding (you can see them before that in your account on the web interface). -### peertube-upload.js +#### peertube-upload.js You can use this script to import videos directly from the CLI. @@ -144,7 +144,7 @@ $ cd ${CLONE} $ node dist/server/tools/peertube-upload.js --help ``` -### peertube-watch.js +#### peertube-watch.js You can use this script to play videos directly from the CLI. -- cgit v1.2.3 From 06471769fc29a82446ed5da6c65d2e9219bec73b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 10:29:28 +0100 Subject: Upgrade client dependencies --- client/package.json | 36 +- client/src/app/core/core.module.ts | 2 +- client/yarn.lock | 1375 ++++++++++++++++++++---------------- 3 files changed, 775 insertions(+), 638 deletions(-) diff --git a/client/package.json b/client/package.json index 3761a641a..62ae47184 100644 --- a/client/package.json +++ b/client/package.json @@ -63,26 +63,26 @@ "setupTestFrameworkScriptFile": "/src/setupJest.ts" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.10.0", - "@angular/animations": "~7.0.2", - "@angular/cli": "~7.0.4", - "@angular/common": "~7.0.2", - "@angular/compiler": "~7.0.2", - "@angular/compiler-cli": "~7.0.2", - "@angular/core": "~7.0.2", - "@angular/forms": "~7.0.2", - "@angular/http": "~7.0.2", - "@angular/language-service": "~7.0.2", - "@angular/platform-browser": "~7.0.2", - "@angular/platform-browser-dynamic": "~7.0.2", - "@angular/router": "~7.0.2", - "@angular/service-worker": "~7.0.2", + "@angular-devkit/build-angular": "~0.11.1", + "@angular/animations": "~7.1.1", + "@angular/cli": "~7.1.1", + "@angular/common": "~7.1.1", + "@angular/compiler": "~7.1.1", + "@angular/compiler-cli": "~7.1.1", + "@angular/core": "~7.1.1", + "@angular/forms": "~7.1.1", + "@angular/http": "~7.1.1", + "@angular/language-service": "~7.1.1", + "@angular/platform-browser": "~7.1.1", + "@angular/platform-browser-dynamic": "~7.1.1", + "@angular/router": "~7.1.1", + "@angular/service-worker": "~7.1.1", "@angularclass/hmr": "^2.1.3", "@neos21/bootstrap3-glyphicons": "^1.0.1", "@ng-bootstrap/ng-bootstrap": "^4.0.0", - "@ngx-loading-bar/core": "^2.2.0", - "@ngx-loading-bar/http-client": "^2.2.0", - "@ngx-loading-bar/router": "^2.2.0", + "@ngx-loading-bar/core": "^3.0.0", + "@ngx-loading-bar/http-client": "^3.0.0", + "@ngx-loading-bar/router": "^3.0.0", "@ngx-meta/core": "^6.0.0-rc.1", "@ngx-translate/i18n-polyfill": "^1.0.0", "@types/core-js": "^2.5.0", @@ -132,7 +132,7 @@ "node-sass": "^4.9.3", "npm-font-source-sans-pro": "^1.0.2", "path-browserify": "^1.0.0", - "primeng": "^6.1.2", + "primeng": "^7.0.0", "process": "^0.11.10", "protractor": "^5.3.2", "purify-css": "^1.2.5", diff --git a/client/src/app/core/core.module.ts b/client/src/app/core/core.module.ts index df2ec696d..8a6654aa1 100644 --- a/client/src/app/core/core.module.ts +++ b/client/src/app/core/core.module.ts @@ -29,7 +29,7 @@ import { CheatSheetComponent } from '@app/core/hotkeys' LoadingBarHttpClientModule, LoadingBarRouterModule, - LoadingBarModule.forRoot(), + LoadingBarModule, HotkeyModule.forRoot({ cheatSheetCloseEsc: true diff --git a/client/yarn.lock b/client/yarn.lock index 928dec01e..98a30941e 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2,26 +2,26 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.10.6": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.10.6.tgz#7007e7591be21eeb478951106c84c83802ca21a4" - integrity sha512-IygpkXNn946vVUFFWKWEDxRqRy888vOAUWcmkZzqPEBYkuwWt7WnLfe8Sjw4fH/+HLWEMS8RXbdSTHiiaP9qOg== +"@angular-devkit/architect@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.11.1.tgz#fb8429b583d4d7efafe5ff551ffdd30a705b9ab0" + integrity sha512-MdcZ5KclwL2SBXCQSn8uI2hakBX58EyuAwFWsM/pKrNt9j8RqIk93l4amd2OkaMtZRFP5zWodyf/3qOwacjuQg== dependencies: - "@angular-devkit/core" "7.0.6" + "@angular-devkit/core" "7.1.1" rxjs "6.3.3" -"@angular-devkit/build-angular@~0.10.0": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.10.6.tgz#9c713a786de89a68063bd9e86516eb450f2dac72" - integrity sha512-Lbx6rjIGB2mMmkTCaolrQ86OfPxO/qfb4l2RvPiSyx06MEZfmFWKGeJzqCYKBRQajziX3Yc3AFzAPecoCkbIGA== - dependencies: - "@angular-devkit/architect" "0.10.6" - "@angular-devkit/build-optimizer" "0.10.6" - "@angular-devkit/build-webpack" "0.10.6" - "@angular-devkit/core" "7.0.6" - "@ngtools/webpack" "7.0.6" +"@angular-devkit/build-angular@~0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.11.1.tgz#a828797d9177227aee70a65bb06d4b189b1404cd" + integrity sha512-hA/3GVMmRwOPXWhImrBG9gZTdERr937NMuedKhTXuNj6TNMNjk9XQ+q2erd0LZVbgfhL/nC0wHnpy0dUWXu8jA== + dependencies: + "@angular-devkit/architect" "0.11.1" + "@angular-devkit/build-optimizer" "0.11.1" + "@angular-devkit/build-webpack" "0.11.1" + "@angular-devkit/core" "7.1.1" + "@ngtools/webpack" "7.1.1" ajv "6.5.3" - autoprefixer "9.1.5" + autoprefixer "9.3.1" circular-dependency-plugin "5.0.2" clean-css "4.2.1" copy-webpack-plugin "4.5.4" @@ -34,7 +34,7 @@ less-loader "4.1.0" license-webpack-plugin "2.0.2" loader-utils "1.1.0" - mini-css-extract-plugin "0.4.3" + mini-css-extract-plugin "0.4.4" minimatch "3.0.4" opn "5.3.0" parse5 "4.0.0" @@ -48,45 +48,45 @@ semver "5.5.1" source-map-loader "0.2.4" source-map-support "0.5.9" - speed-measure-webpack-plugin "^1.2.3" + speed-measure-webpack-plugin "1.2.3" stats-webpack-plugin "0.7.0" - style-loader "0.23.0" + style-loader "0.23.1" stylus "0.54.5" stylus-loader "3.0.2" terser-webpack-plugin "1.1.0" tree-kill "1.2.0" - webpack "4.19.1" - webpack-dev-middleware "3.3.0" - webpack-dev-server "3.1.8" + webpack "4.23.1" + webpack-dev-middleware "3.4.0" + webpack-dev-server "3.1.10" webpack-merge "4.1.4" - webpack-sources "1.2.0" + webpack-sources "1.3.0" webpack-subresource-integrity "1.1.0-rc.6" optionalDependencies: - node-sass "4.9.3" + node-sass "4.10.0" -"@angular-devkit/build-optimizer@0.10.6": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.10.6.tgz#ca7db9b3d5378b2759509692f02a5fb5af273dd0" - integrity sha512-oedg8F++8zZTmoTt141k3nlyPtrSSsQUZI9TFbSdfR1D5WDflwOlkLyRb5WoC53HSoQnagKxY2qzd7khVah//Q== +"@angular-devkit/build-optimizer@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.11.1.tgz#1079737a44b26b39e35cea7f966a39cd11bbbf48" + integrity sha512-pyFP6ykZf8Iq8nRkgP2XKq8knpIG6ye0qYklnBC9815AC5RAO126Y4fmtd6tnH+5p1mQxnt5HegG0j5xOCgDRw== dependencies: loader-utils "1.1.0" source-map "0.5.6" typescript "3.1.6" webpack-sources "1.2.0" -"@angular-devkit/build-webpack@0.10.6": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.10.6.tgz#d3acb781f97406a49a3e3adfcc49a8518d33e291" - integrity sha512-tPv23KKw3iAGCTF6noD7zdHbufny4A3d+mlX1VoJDiAa6jqmuFxhY2fALymc11MRY4HVtMF5J1kQy9BLGCDbQg== +"@angular-devkit/build-webpack@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.11.1.tgz#bd98ff3dea633c5b77671b471e72cf6c91f6c679" + integrity sha512-p7fPHOi2Wfq2VPtnRVowg3n99MujghpOp6zW0gBJQD1TQhGVzPK6AX42S0NA4d05ahNBCDU2n7Y+5TjNJRIGJw== dependencies: - "@angular-devkit/architect" "0.10.6" - "@angular-devkit/core" "7.0.6" + "@angular-devkit/architect" "0.11.1" + "@angular-devkit/core" "7.1.1" rxjs "6.3.3" -"@angular-devkit/core@7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-7.0.6.tgz#26c4cd4d271e8cd03f6e50b4ec30cbc606f3346e" - integrity sha512-RPSXUtLrpYDTqAEL0rCyDKxES76EomsPBvUUZTD6UkE2pihoh9ZIxkzhzlE+HU/xdqm28+smQYFhvvEAXFWwSQ== +"@angular-devkit/core@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-7.1.1.tgz#ce0a674f16188072988502cc3f073b15efcfe194" + integrity sha512-rODqECpOiV6vX+L1qd63GLiF3SG+V1O+d8WYtnKPOxnsMM9yWpWmqmroHtXfisjucu/zwoqj8HoO/noJZCfynw== dependencies: ajv "6.5.3" chokidar "2.0.4" @@ -94,48 +94,47 @@ rxjs "6.3.3" source-map "0.7.3" -"@angular-devkit/schematics@7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-7.0.6.tgz#97fca028bd937e2319d9d34c12b82e8d1d99de23" - integrity sha512-S/3CrBDoh/BD4mBq8RNGQ8sgNFDsveCuFHDkOyct8+NDg2wcRkEGigyq8eZwVN/iVKCwjxc0I/bC336edoNMIQ== +"@angular-devkit/schematics@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-7.1.1.tgz#328ec6071c5ef3b1588a9f4bc97f5edfc3620b09" + integrity sha512-yjzTw8ZWMPg0Fc9VQCHNpUCAH7aiNxrUDs0IbhdC0CyKTBoqH+cx2xP4Z6ECf4uNwceLKJlE0l3ot42Ypnlziw== dependencies: - "@angular-devkit/core" "7.0.6" + "@angular-devkit/core" "7.1.1" rxjs "6.3.3" -"@angular/animations@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-7.0.4.tgz#f53fc9f1bce3bf1afe60dcbc08b6863472f519e4" - integrity sha512-QfFikT0FzYNMjdVg0LWTBijdu9JDJyzejnhCFlXxv+KR4zolpRK98/rU7CFW1Fg2jjL3/yL9PT1sf5I0fTJZYA== +"@angular/animations@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-7.1.1.tgz#8fecbd19417364946a9ea40c8fdf32462110232f" + integrity sha512-iTNxhPPraCZsE4rgM23lguT1kDV4mfYAr+Bsi5J0+v9ZJA+VaKvi6eRW8ZGrx4/rDz6hzTnBn1jgPppHFbsOcw== dependencies: tslib "^1.9.0" -"@angular/cli@~7.0.4": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-7.0.6.tgz#f97bc9ca92785c7ce2e5f20819c48265a1da5b53" - integrity sha512-f76kq8AQMkloeojIffeT7DYLXT/J4DRhYoAPQR4E09V7lkigFCILiYzQs5RtCAX6EjlPxlrZKkdfnBn0OUPnig== - dependencies: - "@angular-devkit/architect" "0.10.6" - "@angular-devkit/core" "7.0.6" - "@angular-devkit/schematics" "7.0.6" - "@schematics/angular" "7.0.6" - "@schematics/update" "0.10.6" +"@angular/cli@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-7.1.1.tgz#c5dd2b92c5c3391f20262b5e530813e4e2d31777" + integrity sha512-lPVKsk035T5Ls0Mf83OngrNoLZu/ucZSjRLN/GWZK1O/YYVmb/dTgVl/a7HC+G480tWQ34nlqnCRbrP7sE9v7g== + dependencies: + "@angular-devkit/architect" "0.11.1" + "@angular-devkit/core" "7.1.1" + "@angular-devkit/schematics" "7.1.1" + "@schematics/angular" "7.1.1" + "@schematics/update" "0.11.1" inquirer "6.2.0" opn "5.3.0" - rxjs "6.3.3" semver "5.5.1" symbol-observable "1.2.0" -"@angular/common@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-7.0.4.tgz#aafb26ce59c967daa5b122393e1933208a247f72" - integrity sha512-akQojdqY/RBlItkDWAPI3k0Llk1wnbAp+f47yySi3cgQz9SaZ1/RLNWZV84I/cKrksb4ehorT/lTqRBojsAD1A== +"@angular/common@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-7.1.1.tgz#f78f884614ef81ab2fd648f1aa3e83aae370a6c8" + integrity sha512-SngekFx9v39sjgi9pON0Wehxpu+NdUk7OEebw4Fa8dKqTgydTkuhmnNH+9WQe264asoeCt51oufPRjIqMLNohA== dependencies: tslib "^1.9.0" -"@angular/compiler-cli@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-7.0.4.tgz#f96fc1c0aec27ee97ec5f13a8eb72bc8b964db97" - integrity sha512-kvhWt6OTb1Uduns9Vm+Dwd/UUBNSEU6Jgu+QOPeHr7lg+4NTyr9uQLU0DtfBP0ljOlds8esmfii5IIFTeUQw1Q== +"@angular/compiler-cli@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-7.1.1.tgz#c5f6225fb72b56f42fa78c332fdee9755c64604e" + integrity sha512-4NXlkDhOEQgaP3Agigqw93CvXJvsfnXa0xiglq9e/wjL+6XbtM9WcDb5lfRQz41N9RSkO3pEHGvKMweKZGgogA== dependencies: canonical-path "1.0.0" chokidar "^1.4.2" @@ -149,64 +148,64 @@ tslib "^1.9.0" yargs "9.0.1" -"@angular/compiler@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-7.0.4.tgz#df91dab990c46b464705b0901d70d1cfdfd190e1" - integrity sha512-ExDhH1cJkuJkUsgNRZyZBse0a7wWkQyG5O8HONi3Rzig9dalFEuve9jD04zfA1Jx1GTXhovqtGnF72x4kw0V8Q== +"@angular/compiler@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-7.1.1.tgz#4efbcad27ab43d4cd36d936a8df2e073f6d02d0a" + integrity sha512-oJvBe8XZ+DXF/W/DxWBTbBcixJTuPeZWdkcZIGWhJoQP7K5GnGnj8ffP9Lp6Dh4TKv85awtC6OfIKhbHxa650Q== dependencies: tslib "^1.9.0" -"@angular/core@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-7.0.4.tgz#98340a1bdb53f0bbecfcfc9831a7a22a1540d79b" - integrity sha512-17SSmCz1wQoZKnVHF/T8UkWYPpDm5kPyoc1okkTTv8ZA2EAMMuZFFnRSAxEL5i7mNB9z5CvRqF2tRx/DbgbIRA== +"@angular/core@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-7.1.1.tgz#9748b0103cd86226554e1ccbd0f43dd8c46f1ed1" + integrity sha512-Osig5SRgDRQ+Hec/liN7nq/BCJieB+4/pqRh9rFbOXezb2ptgRZqdXOXN8P17i4AwPVf308Mh55V0niJ5Eu3Rw== dependencies: tslib "^1.9.0" -"@angular/forms@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-7.0.4.tgz#5f2328d297f5c7f9f3af81e1f76a13e1546c743f" - integrity sha512-W3nN9n1VY9On9+9f7PDRbzJUg+mMq1bjkhWsk/b7DfaYdmlzpG+Wd6OfArob2edsqGqH1dvTM8q8aGbWiFZ7dA== +"@angular/forms@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-7.1.1.tgz#d16ef10a901c007062fd19144cd77917ef55ee24" + integrity sha512-yCWuPjpu23Wc3XUw7v/ACNn/e249oT0bYlM8aaMQ1F5OwrmmC4NJC12Rpl9Ihza61RIHIKzNcHVEgzc7WhcSag== dependencies: tslib "^1.9.0" -"@angular/http@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/http/-/http-7.0.4.tgz#445d6a812d25ea1656fc3e3381ef82b3f98fccb4" - integrity sha512-oUGT7xS7FZYajuHq0DP6MgahacB5sJTRgxiUU4uhQ/mqV7aREODVJJgw7oHDhM7Cnyzzo0B9D0zpEljKmeCLWQ== +"@angular/http@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-7.1.1.tgz#f19f17ad42e7f3cdabcf1250ca757640d0f02219" + integrity sha512-pRk+c/kz9aJ8te5xzCxlPLpFnwB0d/E9YkOo3/ydaXF9vZw13RTzk00YyzJ41PDzJf8oPDdXtueTQ+vtJ7Srtw== dependencies: tslib "^1.9.0" -"@angular/language-service@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-7.0.4.tgz#db221f183725ff54c1188aec7acb2948e29f4c50" - integrity sha512-CuJ2Ii97sNoN1HOZOLxG1lEHsQFi8K/RSB/k2suWPKzdM53ldSkKoYRac38zW/uqNABYItgvxb7w0Vi7HhxLsg== +"@angular/language-service@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-7.1.1.tgz#6bbe35b2430ad54618a1803f881efb5894b296c9" + integrity sha512-X+5g20PMtNRGZIa3svMv4PLJdJehn4wqrS8nwOtzH5XkSn5vA3IxjsJVdSzAy2AN0/sKKJK5jmQorPtKO4saJg== -"@angular/platform-browser-dynamic@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.0.4.tgz#69abb8c784bb71a660a0c824ca4a1a4960811a33" - integrity sha512-k1I53zIg8YWhtQizLfq/tWrUUdY5vHV8pGHyt0/UTGDqat5TORd6LDFfzCSux0r3qZujCOGNi9f4/AbyV8B9lw== +"@angular/platform-browser-dynamic@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.1.1.tgz#6945298446173338782f437a996226110cda0d3e" + integrity sha512-ZIu48Vn4S6gjD7CMbGlKGaPQ8v9rYkWzlNYi4vTYzgiqKKNC3hqLsVESU3mSvr5oeQBxSIBidTdHSyafHFrA2w== dependencies: tslib "^1.9.0" -"@angular/platform-browser@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-7.0.4.tgz#57dfaa23f8a3d678bad6ca110051e3ac6622ff3d" - integrity sha512-4brYZZgsCJk1/a6JoSwaiVWO9+/T4iyE27dAgstao1nOf/jrBNKW2HnZtkWZmCCBK0WIk15wlB0Xr87OZbjNVA== +"@angular/platform-browser@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-7.1.1.tgz#a6bd408f656dc43ee5a2d8af3dfaa786c7c1dfca" + integrity sha512-I6OPjecynGJSbPtzu0gvEgSmIR6X6/xEAhg4L9PycW1ryjzptTC9klWRTWIqsIBqMxhVnY44uKLeRNrDwMOwyA== dependencies: tslib "^1.9.0" -"@angular/router@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-7.0.4.tgz#ae2c32cc6a29bfe6eb909b9c63257d187075f4ff" - integrity sha512-nt1jJsxN+JmYZ6URamMdULUpH4aHdnNVKjWtjDI0OpdZvPx7PMFD8cfc92q0tavy2KqqexcceIb4BIC965gtpA== +"@angular/router@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-7.1.1.tgz#80a4cdffc03a529b73485c2ad63a30ec435364ea" + integrity sha512-jbnqEq/1iDBkeH8Vn13hauGPTzhwllWM+MLfmdNGTiMzGRx4pmkWa57seDOeBF/GNYBL9JjkWTCrkKFAc2FJKw== dependencies: tslib "^1.9.0" -"@angular/service-worker@~7.0.2": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-7.0.4.tgz#be274843ae29cb69ac969c078edd8ae5b25e3e61" - integrity sha512-vBA9T1xeCP6QesOYhMyVpXTUVdXU4eMYdoZItHncyom8AxS2a26FB8zLW72VXdEfZ7xnJgcDtsYzYzVi+3DXsQ== +"@angular/service-worker@~7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-7.1.1.tgz#c9e6f0265d7e102d8271483519cf09a180f0e08b" + integrity sha512-xX00x0XMW47jEfYTZLwdJCqkmPE7+mdtlSeOGpjaKv6Y2hqZodz80RYgH5JltM4RKEzOvQolR6KmdKcw1ANs9Q== dependencies: tslib "^1.9.0" @@ -223,11 +222,11 @@ "@babel/highlight" "^7.0.0" "@babel/generator@^7.0.0", "@babel/generator@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz#001303cf87a5b9d093494a4bf251d7b5d03d3999" - integrity sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.0.tgz#eaf3821fa0301d9d4aef88e63d4bcc19b73ba16c" + integrity sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg== dependencies: - "@babel/types" "^7.1.6" + "@babel/types" "^7.2.0" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" @@ -266,14 +265,14 @@ js-tokens "^4.0.0" "@babel/parser@^7.0.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854" - integrity sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.0.tgz#02d01dbc330b6cbf36b76ac93c50752c69027065" + integrity sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg== "@babel/runtime@^7.0.0": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz#4170907641cf1f61508f563ece3725150cc6fe39" - integrity sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" + integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== dependencies: regenerator-runtime "^0.12.0" @@ -301,10 +300,10 @@ globals "^11.1.0" lodash "^4.17.10" -"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.6": - version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce" - integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w== +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.6", "@babel/types@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.0.tgz#7941c5b2d8060e06f9601d6be7c223eef906d5d8" + integrity sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A== dependencies: esutils "^2.0.2" lodash "^4.17.10" @@ -322,38 +321,38 @@ dependencies: tslib "^1.9.0" -"@ngtools/webpack@7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-7.0.6.tgz#cc4f4189765f6743417b4eee946fb69590f93ce1" - integrity sha512-lOHpVqr30QXPuaOxSRasHv6ybDj4a1jVwSOk+W4aGqVlLi0bsngt9HrvgR+FALEoG9P520bytz16wma81Y2Aeg== +"@ngtools/webpack@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-7.1.1.tgz#c418e1cb0d70a77d06e8c32500fe2e92e606ea52" + integrity sha512-XW/YDjiDZlwOYK4YvGAIKIVEkqtdwPLwTWAmDbnfpEHQc8UALsBrzGdjze0jSfXQdQxkbmXo0aolZgNc7uL/wQ== dependencies: - "@angular-devkit/core" "7.0.6" + "@angular-devkit/core" "7.1.1" enhanced-resolve "4.1.0" rxjs "6.3.3" tree-kill "1.2.0" webpack-sources "1.2.0" -"@ngx-loading-bar/core@2.2.0", "@ngx-loading-bar/core@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ngx-loading-bar/core/-/core-2.2.0.tgz#ad313bbbd69e4c52cc2d6f0a8b5911272371d16a" - integrity sha512-0jcnEzuhqE/c+4iAumJ/0D4GBWm4RRVas0+qXpX4Wm225SJoE5KupUOlMrvLnJNK2bn8NW31dEj80kJ+UzhE5A== +"@ngx-loading-bar/core@3.0.0", "@ngx-loading-bar/core@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@ngx-loading-bar/core/-/core-3.0.0.tgz#86c6d036b5ad50950b5ea526db585f39d44f396a" + integrity sha512-DBH+bKf8M9uSk2791HbtN/JvcEmBxEbUCiOJ6PYrjbginH6dUn2NsSxnv3myu0lpx+7K3MusXLNImkB5JUh2QA== dependencies: tslib "^1.7.1" -"@ngx-loading-bar/http-client@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ngx-loading-bar/http-client/-/http-client-2.2.0.tgz#4b5443feed5c53bc5b5f06119f771edbe89799f4" - integrity sha512-+eilxs10KncQWg7DQJLK2AoWnmTPidhVHNxfTOPHJVnmcyAFmTtk+lQbf5Ke3aC4d/KXZklkRyBizqDfvRvc9w== +"@ngx-loading-bar/http-client@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@ngx-loading-bar/http-client/-/http-client-3.0.0.tgz#2fce2f60da37a48f2173ef4f08189eecf98d9215" + integrity sha512-7AHM3tmA2FDFXsKbL09vnRqqxdztpjilkP3U9zXB5Lkv3XtlJnZoQKFCSbmEusw30k3oAmY5id/ZE9X83uekZg== dependencies: - "@ngx-loading-bar/core" "2.2.0" + "@ngx-loading-bar/core" "3.0.0" tslib "^1.7.1" -"@ngx-loading-bar/router@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ngx-loading-bar/router/-/router-2.2.0.tgz#c13c1a05c620a9da102102322685b671d3c9a1ba" - integrity sha512-/lrWc0ZwGcpmuoa26/h0rC7SRVKgCtsikhy0mVXwrb1VVJ+sRU8vNKbq7aidcvEY5vdi3l0Z7DcVq9+JV/i/BQ== +"@ngx-loading-bar/router@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@ngx-loading-bar/router/-/router-3.0.0.tgz#627e73be406dfdff48175f75c110bebd4f6fa588" + integrity sha512-UL3GaFyFfHwgGeAdSEG800Rl3GuBfKydPp21lD/paqdsrUT2Z1cBLAiVFw7U4QdnSLaPzngYr9bzgDFdy4GqYQ== dependencies: - "@ngx-loading-bar/core" "2.2.0" + "@ngx-loading-bar/core" "3.0.0" tslib "^1.7.1" "@ngx-meta/core@^6.0.0-rc.1": @@ -372,23 +371,25 @@ tslib "^1.9.0" yargs "10.0.3" -"@schematics/angular@7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-7.0.6.tgz#1173c201d118cf38d1afdb382e9a916e4b540a17" - integrity sha512-jOHL+vSu1cqAo3kRNDmgkq/GR2EDkJx5/h0VXGlbtdEpq892LipKHtyPgXa269AABgPKb3TSNBwZls6g2L9FCw== +"@schematics/angular@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-7.1.1.tgz#4ee17a17d221eaf48009db0b991766d1074d0b4f" + integrity sha512-jMaj8y3rNTQQXuH38uoWfAOmwYjtzqo1RelNfACnT54mfO/Dat+k7WasBLHWuvzvnN4/Ga3kXL7sJpkeMciiIg== dependencies: - "@angular-devkit/core" "7.0.6" - "@angular-devkit/schematics" "7.0.6" + "@angular-devkit/core" "7.1.1" + "@angular-devkit/schematics" "7.1.1" typescript "3.1.6" -"@schematics/update@0.10.6": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.10.6.tgz#616e6c321cd51468eacda7fc8a0306b37f8b4ca2" - integrity sha512-Yy/M4JosrVDb5tbpmi+v1uTHSmBYISOiuFVuxtpMN5DWdDNq/JTBEw2jy3quelGWHCU06rbGo578Ml3azGZ+9g== - dependencies: - "@angular-devkit/core" "7.0.6" - "@angular-devkit/schematics" "7.0.6" - npm-registry-client "8.6.0" +"@schematics/update@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.11.1.tgz#5129a800043dc38ee1f1c879865e0df82ddac7ed" + integrity sha512-IzPXamoMpDb2eY2zSW4fPuuH+7RfJLte9XVzQM2y3ZTBhlJQFLqx7qJtOXdcXUboonC6o61KCayNDERFnDUdPg== + dependencies: + "@angular-devkit/core" "7.1.1" + "@angular-devkit/schematics" "7.1.1" + "@yarnpkg/lockfile" "1.1.0" + ini "1.3.5" + pacote "9.1.1" rxjs "6.3.3" semver "5.5.1" semver-intersect "1.4.0" @@ -405,10 +406,15 @@ resolved "https://registry.yarnpkg.com/@types/core-js/-/core-js-2.5.0.tgz#35cc282488de6f10af1d92902899a3b8ca3fbc47" integrity sha512-qjkHL3wF0JMHMqgm/kmL8Pf8rIiqvueEiZ0g6NVTcBX1WN46GWDr+V5z+gsHUeL0n8TfAmXnYmF7ajsxmBp4PQ== -"@types/jasmine@*", "@types/jasmine@^2.8.7": - version "2.8.11" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.11.tgz#0b5eba9e02616736b1a189112eacc163c3773b7b" - integrity sha512-ITPYT5rkV9S0BcucyBwXIUzqzSODVhvAzhOGV0bwZMuqWJeU0Kfdd6IJeJjGI8Gob+lDyAtKaWUfhG6QXJIPRg== +"@types/jasmine@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.3.1.tgz#b6c4f356013364e98b583647c7b3b6de6fccd2cc" + integrity sha512-JnKB+cEIFuQZXizZP6N0zxma+JlvowkjefWuL61otVmXN7Ebbs4ka3IbDVIz1pc+TCiT00q925jANz3gQJ9qXw== + +"@types/jasmine@^2.8.7": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.12.tgz#dfe606b07686c977f54d17cb8ebe6cae2e26f8ff" + integrity sha512-eE+xeiGBPgQsNcyg61JBqQS6NtxC+s2yfOikMCnc0Z4NqKujzmSahmtjLCKVQU/AyrTEQ76TOwQBnr8wGP2bmA== "@types/jasminewd2@^2.0.3": version "2.0.6" @@ -418,9 +424,9 @@ "@types/jasmine" "*" "@types/jest@^23.3.1": - version "23.3.9" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.9.tgz#c16b55186ee73ae65e001fbee69d392c51337ad1" - integrity sha512-wNMwXSUcwyYajtbayfPp55tSayuDVU6PfY5gzvRSj80UvxdXEJOVPnUVajaOp7NgXLm+1e2ZDLULmpsU9vDvQw== + version "23.3.10" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.10.tgz#4897974cc317bf99d4fe6af1efa15957fa9c94de" + integrity sha512-DC8xTuW/6TYgvEg3HEXS7cu9OijFqprVDXXiOcdOKZCU/5PJNLZU37VVvmZHdtMiGOa8wAA/We+JzbdxFzQTRQ== "@types/jschannel@^1.0.0": version "1.0.1" @@ -457,9 +463,9 @@ integrity sha512-Jn2cF8X6RAMiSmJaATGjf2r3GzIfpZQpvnQhKprQ5sAbMaNXc7hc9sA2XHdMl3bEMEQhTV79JVW7n4Pgg7sjtg== "@types/node@*", "@types/node@^10.9.2": - version "10.12.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.8.tgz#d0a3ab5a6e61458c492304e2776ac136b81db927" - integrity sha512-INamyRZG4rW3lDCUmwVd5Xho/bXvQm/v1yP8V0UN1RuInU7RoWoaO570b+yLX4Ia/0szsx1wa8VzcsVlsvbWLA== + version "10.12.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.12.tgz#e15a9d034d9210f00320ef718a50c4a799417c47" + integrity sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A== "@types/node@^6.0.46": version "6.14.2" @@ -532,6 +538,15 @@ url-toolkit "^2.1.3" video.js "^6.8.0 || ^7.0.0" +"@webassemblyjs/ast@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.10.tgz#0cfc61d61286240b72fc522cb755613699eea40a" + integrity sha512-wTUeaByYN2EA6qVqhbgavtGc7fLTOx0glG2IBsFlrFG51uXIGlYBTyIZMf4SPLo3v1bgV/7lBN3l7Z0R6Hswew== + dependencies: + "@webassemblyjs/helper-module-context" "1.7.10" + "@webassemblyjs/helper-wasm-bytecode" "1.7.10" + "@webassemblyjs/wast-parser" "1.7.10" + "@webassemblyjs/ast@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" @@ -541,45 +556,42 @@ "@webassemblyjs/helper-wasm-bytecode" "1.7.11" "@webassemblyjs/wast-parser" "1.7.11" -"@webassemblyjs/ast@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" - integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/wast-parser" "1.7.6" - mamacro "^0.0.3" +"@webassemblyjs/floating-point-hex-parser@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.10.tgz#ee63d729c6311a85863e369a473f9983f984e4d9" + integrity sha512-gMsGbI6I3p/P1xL2UxqhNh1ga2HCsx5VBB2i5VvJFAaqAjd2PBTRULc3BpTydabUQEGlaZCzEUQhLoLG7TvEYQ== "@webassemblyjs/floating-point-hex-parser@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== -"@webassemblyjs/floating-point-hex-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" - integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== +"@webassemblyjs/helper-api-error@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.10.tgz#bfcb3bbe59775357475790a2ad7b289f09b2f198" + integrity sha512-DoYRlPWtuw3yd5BOr9XhtrmB6X1enYF0/54yNvQWGXZEPDF5PJVNI7zQ7gkcKfTESzp8bIBWailaFXEK/jjCsw== "@webassemblyjs/helper-api-error@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== -"@webassemblyjs/helper-api-error@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" - integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== +"@webassemblyjs/helper-buffer@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.10.tgz#0a8c624c67ad0b214d2e003859921a1988cb151b" + integrity sha512-+RMU3dt/dPh4EpVX4u5jxsOlw22tp3zjqE0m3ftU2tsYxnPULb4cyHlgaNd2KoWuwasCQqn8Mhr+TTdbtj3LlA== "@webassemblyjs/helper-buffer@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== -"@webassemblyjs/helper-buffer@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" - integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== +"@webassemblyjs/helper-code-frame@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.10.tgz#0ab7e22fad0241a173178c73976fc0edf50832ce" + integrity sha512-UiytbpKAULOEab2hUZK2ywXen4gWJVrgxtwY3Kn+eZaaSWaRM8z/7dAXRSoamhKFiBh1uaqxzE/XD9BLlug3gw== + dependencies: + "@webassemblyjs/wast-printer" "1.7.10" "@webassemblyjs/helper-code-frame@1.7.11": version "1.7.11" @@ -588,44 +600,45 @@ dependencies: "@webassemblyjs/wast-printer" "1.7.11" -"@webassemblyjs/helper-code-frame@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" - integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== - dependencies: - "@webassemblyjs/wast-printer" "1.7.6" +"@webassemblyjs/helper-fsm@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.10.tgz#0915e7713fbbb735620a9d3e4fa3d7951f97ac64" + integrity sha512-w2vDtUK9xeSRtt5+RnnlRCI7wHEvLjF0XdnxJpgx+LJOvklTZPqWkuy/NhwHSLP19sm9H8dWxKeReMR7sCkGZA== "@webassemblyjs/helper-fsm@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== -"@webassemblyjs/helper-fsm@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" - integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== +"@webassemblyjs/helper-module-context@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.10.tgz#9beb83f72740f5ac8075313b5cac5e796510f755" + integrity sha512-yE5x/LzZ3XdPdREmJijxzfrf+BDRewvO0zl8kvORgSWmxpRrkqY39KZSq6TSgIWBxkK4SrzlS3BsMCv2s1FpsQ== "@webassemblyjs/helper-module-context@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== -"@webassemblyjs/helper-module-context@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" - integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== - dependencies: - mamacro "^0.0.3" +"@webassemblyjs/helper-wasm-bytecode@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.10.tgz#797b1e734bbcfdea8399669cdc58308ef1c7ffc0" + integrity sha512-u5qy4SJ/OrxKxZqJ9N3qH4ZQgHaAzsopsYwLvoWJY6Q33r8PhT3VPyNMaJ7ZFoqzBnZlCcS/0f4Sp8WBxylXfg== "@webassemblyjs/helper-wasm-bytecode@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== -"@webassemblyjs/helper-wasm-bytecode@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" - integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== +"@webassemblyjs/helper-wasm-section@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.10.tgz#c0ea3703c615d7bc3e3507c3b7991c8767b2f20e" + integrity sha512-Ecvww6sCkcjatcyctUrn22neSJHLN/TTzolMGG/N7S9rpbsTZ8c6Bl98GpSpV77EvzNijiNRHBG0+JO99qKz6g== + dependencies: + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/helper-buffer" "1.7.10" + "@webassemblyjs/helper-wasm-bytecode" "1.7.10" + "@webassemblyjs/wasm-gen" "1.7.10" "@webassemblyjs/helper-wasm-section@1.7.11": version "1.7.11" @@ -637,15 +650,12 @@ "@webassemblyjs/helper-wasm-bytecode" "1.7.11" "@webassemblyjs/wasm-gen" "1.7.11" -"@webassemblyjs/helper-wasm-section@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" - integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== +"@webassemblyjs/ieee754@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.10.tgz#62c1728b7ef0f66ef8221e2966a0afd75db430df" + integrity sha512-HRcWcY+YWt4+s/CvQn+vnSPfRaD4KkuzQFt5MNaELXXHSjelHlSEA8ZcqT69q0GTIuLWZ6JaoKar4yWHVpZHsQ== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" + "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/ieee754@1.7.11": version "1.7.11" @@ -654,12 +664,12 @@ dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/ieee754@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" - integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== +"@webassemblyjs/leb128@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.10.tgz#167e0bb4b06d7701585772a73fba9f4df85439f6" + integrity sha512-og8MciYlA8hvzCLR71hCuZKPbVBfLQeHv7ImKZ4nlyxrYbG7uJHYtHiHu6OV9SqrGuD03H/HtXC4Bgdjfm9FHw== dependencies: - "@xtuc/ieee754" "^1.2.0" + "@xtuc/long" "4.2.1" "@webassemblyjs/leb128@1.7.11": version "1.7.11" @@ -668,22 +678,29 @@ dependencies: "@xtuc/long" "4.2.1" -"@webassemblyjs/leb128@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" - integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== - dependencies: - "@xtuc/long" "4.2.1" +"@webassemblyjs/utf8@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.10.tgz#b6728f5b6f50364abc155be029f9670e6685605a" + integrity sha512-Ng6Pxv6siyZp635xCSnH3mKmIFgqWPCcGdoo0GBYgyGdxu7cUj4agV7Uu1a8REP66UYUFXJLudeGgd4RvuJAnQ== "@webassemblyjs/utf8@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== -"@webassemblyjs/utf8@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" - integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== +"@webassemblyjs/wasm-edit@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.10.tgz#83fe3140f5a58f5a30b914702be9f0e59a399092" + integrity sha512-e9RZFQlb+ZuYcKRcW9yl+mqX/Ycj9+3/+ppDI8nEE/NCY6FoK8f3dKBcfubYV/HZn44b+ND4hjh+4BYBt+sDnA== + dependencies: + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/helper-buffer" "1.7.10" + "@webassemblyjs/helper-wasm-bytecode" "1.7.10" + "@webassemblyjs/helper-wasm-section" "1.7.10" + "@webassemblyjs/wasm-gen" "1.7.10" + "@webassemblyjs/wasm-opt" "1.7.10" + "@webassemblyjs/wasm-parser" "1.7.10" + "@webassemblyjs/wast-printer" "1.7.10" "@webassemblyjs/wasm-edit@1.7.11": version "1.7.11" @@ -699,19 +716,16 @@ "@webassemblyjs/wasm-parser" "1.7.11" "@webassemblyjs/wast-printer" "1.7.11" -"@webassemblyjs/wasm-edit@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" - integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== +"@webassemblyjs/wasm-gen@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.10.tgz#4de003806ae29c97ab3707782469b53299570174" + integrity sha512-M0lb6cO2Y0PzDye/L39PqwV+jvO+2YxEG5ax+7dgq7EwXdAlpOMx1jxyXJTScQoeTpzOPIb+fLgX/IkLF8h2yw== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/helper-wasm-section" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - "@webassemblyjs/wasm-opt" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" - "@webassemblyjs/wast-printer" "1.7.6" + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/helper-wasm-bytecode" "1.7.10" + "@webassemblyjs/ieee754" "1.7.10" + "@webassemblyjs/leb128" "1.7.10" + "@webassemblyjs/utf8" "1.7.10" "@webassemblyjs/wasm-gen@1.7.11": version "1.7.11" @@ -724,16 +738,15 @@ "@webassemblyjs/leb128" "1.7.11" "@webassemblyjs/utf8" "1.7.11" -"@webassemblyjs/wasm-gen@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" - integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== +"@webassemblyjs/wasm-opt@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.10.tgz#d151e31611934a556c82789fdeec41a814993c2a" + integrity sha512-R66IHGCdicgF5ZliN10yn5HaC7vwYAqrSVJGjtJJQp5+QNPBye6heWdVH/at40uh0uoaDN/UVUfXK0gvuUqtVg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/ieee754" "1.7.6" - "@webassemblyjs/leb128" "1.7.6" - "@webassemblyjs/utf8" "1.7.6" + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/helper-buffer" "1.7.10" + "@webassemblyjs/wasm-gen" "1.7.10" + "@webassemblyjs/wasm-parser" "1.7.10" "@webassemblyjs/wasm-opt@1.7.11": version "1.7.11" @@ -745,15 +758,17 @@ "@webassemblyjs/wasm-gen" "1.7.11" "@webassemblyjs/wasm-parser" "1.7.11" -"@webassemblyjs/wasm-opt@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" - integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== +"@webassemblyjs/wasm-parser@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.10.tgz#0367be7bf8f09e3e6abc95f8e483b9206487ec65" + integrity sha512-AEv8mkXVK63n/iDR3T693EzoGPnNAwKwT3iHmKJNBrrALAhhEjuPzo/lTE4U7LquEwyvg5nneSNdTdgrBaGJcA== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/helper-api-error" "1.7.10" + "@webassemblyjs/helper-wasm-bytecode" "1.7.10" + "@webassemblyjs/ieee754" "1.7.10" + "@webassemblyjs/leb128" "1.7.10" + "@webassemblyjs/utf8" "1.7.10" "@webassemblyjs/wasm-parser@1.7.11": version "1.7.11" @@ -767,17 +782,17 @@ "@webassemblyjs/leb128" "1.7.11" "@webassemblyjs/utf8" "1.7.11" -"@webassemblyjs/wasm-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" - integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== +"@webassemblyjs/wast-parser@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.10.tgz#058f598b52f730b23fc874d4775b6286b6247264" + integrity sha512-YTPEtOBljkCL0VjDp4sHe22dAYSm3ZwdJ9+2NTGdtC7ayNvuip1wAhaAS8Zt9Q6SW9E5Jf5PX7YE3XWlrzR9cw== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-api-error" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/ieee754" "1.7.6" - "@webassemblyjs/leb128" "1.7.6" - "@webassemblyjs/utf8" "1.7.6" + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/floating-point-hex-parser" "1.7.10" + "@webassemblyjs/helper-api-error" "1.7.10" + "@webassemblyjs/helper-code-frame" "1.7.10" + "@webassemblyjs/helper-fsm" "1.7.10" + "@xtuc/long" "4.2.1" "@webassemblyjs/wast-parser@1.7.11": version "1.7.11" @@ -791,18 +806,14 @@ "@webassemblyjs/helper-fsm" "1.7.11" "@xtuc/long" "4.2.1" -"@webassemblyjs/wast-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" - integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== +"@webassemblyjs/wast-printer@1.7.10": + version "1.7.10" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.10.tgz#d817909d2450ae96c66b7607624d98a33b84223b" + integrity sha512-mJ3QKWtCchL1vhU/kZlJnLPuQZnlDOdZsyP0bbLWPGdYsQDnSBvyTLhzwBA3QAMlzEL9V4JHygEmK6/OTEyytA== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/floating-point-hex-parser" "1.7.6" - "@webassemblyjs/helper-api-error" "1.7.6" - "@webassemblyjs/helper-code-frame" "1.7.6" - "@webassemblyjs/helper-fsm" "1.7.6" + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/wast-parser" "1.7.10" "@xtuc/long" "4.2.1" - mamacro "^0.0.3" "@webassemblyjs/wast-printer@1.7.11": version "1.7.11" @@ -813,15 +824,6 @@ "@webassemblyjs/wast-parser" "1.7.11" "@xtuc/long" "4.2.1" -"@webassemblyjs/wast-printer@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" - integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/wast-parser" "1.7.6" - "@xtuc/long" "4.2.1" - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -832,6 +834,19 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== +"@yarnpkg/lockfile@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" @@ -909,13 +924,20 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@^4.1.0: +agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + ajv-errors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" @@ -944,7 +966,7 @@ ajv@^4.11.2: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.0: +ajv@^5.0.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -955,9 +977,9 @@ ajv@^5.0.0, ajv@^5.1.0: json-schema-traverse "^0.3.0" ajv@^6.1.0, ajv@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" - integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== + version "6.6.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61" + integrity sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -983,9 +1005,9 @@ angular2-notifications@^1.0.2: integrity sha512-DjazfwXtLY8BNXKIEw1oEEMy7G6fmldpzP1FYwyVGUwEtZPLQyYGu9MQYCjtVlZMljxpa3qvnv8l9ZUfXAarNA== ansi-colors@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.1.tgz#9638047e4213f3428a11944a7d4b31cba0a3ff95" - integrity sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ== + version "3.2.2" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.2.tgz#e49349137dbeb6d381b91e607c189915e53265ba" + integrity sha512-kJmcp4PrviBBEx95fC3dYRiC/QSN3EBd0GU1XoNEk/IuUa92rsB6o90zP3w5VAyNznR38Vkc9i8vk5zK6T7TxA== ansi-escapes@^3.0.0: version "3.1.0" @@ -1112,9 +1134,9 @@ array-flatten@1.1.1: integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-slice@^0.2.3: version "0.2.3" @@ -1238,17 +1260,17 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@9.1.5: - version "9.1.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.1.5.tgz#8675fd8d1c0d43069f3b19a2c316f3524e4f6671" - integrity sha512-kk4Zb6RUc58ld7gdosERHMF3DzIYJc2fp5sX46qEsGXQQy5bXsu8qyLjoxuY1NuQ/cJuCYnx99BfjwnRggrYIw== +autoprefixer@9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.3.1.tgz#71b622174de2b783d5fd99f9ad617b7a3c78443e" + integrity sha512-DY9gOh8z3tnCbJ13JIWaeQsoYncTGdsrgCceBaQSIL4nvdrLxgbRSBPevg2XbX7u4QCSfLheSJEEIUUSlkbx6Q== dependencies: - browserslist "^4.1.0" - caniuse-lite "^1.0.30000884" + browserslist "^4.3.3" + caniuse-lite "^1.0.30000898" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.2" - postcss-value-parser "^3.2.3" + postcss "^7.0.5" + postcss-value-parser "^3.3.1" awesome-typescript-loader@5.2.1: version "5.2.1" @@ -1269,7 +1291,7 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.6.0, aws4@^1.8.0: +aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== @@ -1631,7 +1653,7 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -bluebird@^3.3.0, bluebird@^3.5.1: +bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -1800,14 +1822,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz#4477b737db6a1b07077275b24791e680d4300425" - integrity sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA== +browserslist@^4.3.3: + version "4.3.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.5.tgz#1a917678acc07b55606748ea1adf9846ea8920f7" + integrity sha512-z9ZhGc3d9e/sJ9dIx5NFXkKoaiQTnrvrMsN3R1fGb1tkWWNSz12UewJn9TNxGo1l7J23h0MRaPmk7jfeTZYs1w== dependencies: - caniuse-lite "^1.0.30000899" - electron-to-chromium "^1.3.82" - node-releases "^1.0.1" + caniuse-lite "^1.0.30000912" + electron-to-chromium "^1.3.86" + node-releases "^1.0.5" browserstack@^1.5.1: version "1.5.1" @@ -1931,7 +1953,7 @@ cacache@^10.0.4: unique-filename "^1.1.0" y18n "^4.0.0" -cacache@^11.0.2: +cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: version "11.3.1" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== @@ -2014,10 +2036,15 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -caniuse-lite@^1.0.30000884, caniuse-lite@^1.0.30000899: - version "1.0.30000907" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000907.tgz#0b9899bde53fb1c30e214fb12402361e02ff5c42" - integrity sha512-No5sQ/OB2Nmka8MNOOM6nJx+Hxt6MQ6h7t7kgJFu9oTuwjykyKRSBP/+i/QAyFHxeHB+ddE0Da1CG5ihx9oehQ== +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +caniuse-lite@^1.0.30000898, caniuse-lite@^1.0.30000912: + version "1.0.30000914" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000914.tgz#f802b4667c24d0255f54a95818dcf8e1aa41f624" + integrity sha512-qqj0CL1xANgg6iDOybiPTIxtsmAnfIky9mBC35qgWrnK4WwmhqfpmkDYMYgwXJ8LRZ3/2jXlCntulO8mBaAgSg== canonical-path@1.0.0: version "1.0.0" @@ -2276,7 +2303,7 @@ combine-lists@^1.0.0: dependencies: lodash "^4.5.0" -combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== @@ -2355,7 +2382,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.5.2: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -2622,6 +2649,14 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" +css-tree@^1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + css-what@2.1: version "2.1.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" @@ -2718,28 +2753,28 @@ debug@*, debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@=3.1.0, debug@~3.1.0: +debug@3.1.0, debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -debug@^3.1.0: +debug@^3.1.0, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3106,10 +3141,10 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== -electron-to-chromium@^1.3.82: - version "1.3.84" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz#2e55df59e818f150a9f61b53471ebf4f0feecc65" - integrity sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw== +electron-to-chromium@^1.3.86: + version "1.3.88" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.88.tgz#f36ab32634f49ef2b0fdc1e82e2d1cc17feb29e7" + integrity sha512-UPV4NuQMKeUh1S0OWRvwg0PI8ASHN9kBC8yDTk1ROXLC85W5GnhTRu/MZu3Teqx3JjlQYuckuHYXSUSgtb3J+A== elliptic@^6.0.0: version "6.4.1" @@ -3134,6 +3169,13 @@ encodeurl@~1.0.1, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -3200,6 +3242,11 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -3384,12 +3431,12 @@ events@^1.0.0: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== dependencies: - original ">=0.0.5" + original "^1.0.0" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -3544,7 +3591,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -3631,7 +3678,7 @@ faye-websocket@^0.10.0: dependencies: websocket-driver ">=0.5.1" -faye-websocket@~0.11.0: +faye-websocket@~0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= @@ -3645,7 +3692,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: +figgy-pudding@^3.1.0, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== @@ -3780,6 +3827,11 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -3799,9 +3851,9 @@ focus-visible@^4.1.5: integrity sha512-yo/njtk/BB4Z2euzaZe3CZrg4u5s5uEi7ZwbHBJS2quHx51N0mmcx9nTIiImUGlgy+vf26d0CcQluahBBBL/Fw== follow-redirects@^1.0.0: - version "1.5.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.9.tgz#c9ed9d748b814a39535716e531b9196a845d89c6" - integrity sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w== + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== dependencies: debug "=3.1.0" @@ -3841,7 +3893,7 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@~2.3.1, form-data@~2.3.2: +form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== @@ -3969,6 +4021,11 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + get-browser-rtc@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" @@ -3994,6 +4051,13 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -4053,7 +4117,7 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: +glob@7.1.3, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -4077,9 +4141,9 @@ glob@^5.0.15: path-is-absolute "^1.0.0" global-modules-path@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" - integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag== + version "2.3.1" + resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.1.tgz#e541f4c800a1a8514a990477b267ac67525b9931" + integrity sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg== global@4.3.2, global@^4.3.0, global@^4.3.1, global@^4.3.2, global@~4.3.0: version "4.3.2" @@ -4182,14 +4246,6 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" @@ -4284,9 +4340,9 @@ hash-base@^3.0.0: safe-buffer "^5.0.1" hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" - integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" @@ -4382,7 +4438,7 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.9.0: +htmlparser2@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== @@ -4404,6 +4460,11 @@ htmlparser2@~3.3.0: domutils "1.1" readable-stream "1.0" +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -4424,6 +4485,14 @@ http-parser-js@>=0.4.0: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + http-proxy-middleware@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" @@ -4465,6 +4534,13 @@ https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4472,7 +4548,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4603,7 +4679,7 @@ inherits@2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -ini@^1.3.4, ini@~1.3.0: +ini@1.3.5, ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -5640,7 +5716,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -5701,6 +5777,11 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5796,9 +5877,9 @@ karma-source-map-support@1.3.0: source-map-support "^0.5.5" karma@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.1.tgz#94c8edd20fb9597ccde343326da009737fb0423a" - integrity sha512-NetT3wPCQMNB36uiL9LLyhrOt8SQwrEKt0xD3+KpTCfm0VxVyUJdPL5oTq2Ic5ouemgL/Iz4wqXEbF3zea9kQQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.3.tgz#6e251648e3aff900927bc1126dbcbcb92d3edd61" + integrity sha512-JU4FYUtFEGsLZd6ZJzLrivcPj0TkteBiIRDcXWFsltPMGgZMDtby/MIzNOzgyZv/9dahs9vHpSxerC/ZfeX9Qw== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -5810,11 +5891,12 @@ karma@^3.0.0: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" + flatted "^2.0.0" glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" - lodash "^4.17.4" + lodash "^4.17.5" log4js "^3.0.0" mime "^2.3.1" minimatch "^3.0.2" @@ -5826,7 +5908,7 @@ karma@^3.0.0: socket.io "2.1.1" source-map "^0.6.1" tmp "0.0.33" - useragent "2.2.1" + useragent "2.3.0" killable@^1.0.0: version "1.0.1" @@ -5939,9 +6021,9 @@ lie@~3.1.0: immediate "~3.0.5" linkify-it@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f" - integrity sha1-2UpGSPmxwXnWT6lykSaL22zpQ08= + version "2.1.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" + integrity sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg== dependencies: uc.micro "^1.0.1" @@ -6061,7 +6143,7 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.mergewith@^4.6.0: +lodash.mergewith@^4.6.0, lodash.mergewith@^4.6.1: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== @@ -6119,7 +6201,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0, loud-rejection@^1.6.0: +loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= @@ -6132,15 +6214,10 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - integrity sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0= - -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== +lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -6184,6 +6261,23 @@ make-error@1.x: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== +make-fetch-happen@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" + integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ== + dependencies: + agentkeepalive "^3.4.1" + cacache "^11.0.1" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^4.1.2" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -6191,11 +6285,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -6245,6 +6334,11 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -6400,9 +6494,9 @@ mime@^1.4.1: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.2.0, mime@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== mimic-fn@^1.0.0: version "1.2.0" @@ -6421,10 +6515,10 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -mini-css-extract-plugin@0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" - integrity sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg== +mini-css-extract-plugin@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz#c10410a004951bd3cedac1da69053940fccb625d" + integrity sha512-o+Jm+ocb0asEngdM6FsZWtZsRzA8koFUudIDwYUfl94M3PejPHG7Vopw5hN9V8WsMkSFpm3tZP3Fesz89EyrfQ== dependencies: loader-utils "^1.1.0" schema-utils "^1.0.0" @@ -6462,7 +6556,7 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.4: +minipass@^2.2.1, minipass@^2.3.4, minipass@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== @@ -6582,7 +6676,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== @@ -6735,6 +6829,15 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" +node-fetch-npm@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" @@ -6823,39 +6926,14 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-releases@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.3.tgz#3414ed84595096459c251699bfcb47d88324a9e4" - integrity sha512-ZaZWMsbuDcetpHmYeKWPO6e63pSXLb50M7lJgCbcM2nC/nQC3daNifmtp5a2kp7EWwYfhuvH6zLPWkrF8IiDdw== +node-releases@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.5.tgz#a641adcc968b039a27345d92ef10b093e5cbd41d" + integrity sha512-Ky7q0BO1BBkG/rQz6PkEZ59rwo+aSfhczHP1wwq8IowoVdN/FpiP7qp0XW0P2+BVCWe5fQUBozdbVd54q1RbCQ== dependencies: semver "^5.3.0" -node-sass@4.9.3: - version "4.9.3" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" - integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.10.0" - node-gyp "^3.8.0" - npmlog "^4.0.0" - request "2.87.0" - sass-graph "^2.2.4" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -node-sass@^4.9.3: +node-sass@4.10.0, node-sass@^4.9.3: version "4.10.0" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.10.0.tgz#dcc2b364c0913630945ccbf7a2bbf1f926effca4" integrity sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q== @@ -6895,7 +6973,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0": +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== @@ -6927,7 +7005,7 @@ npm-font-source-sans-pro@^1.0.2: resolved "https://registry.yarnpkg.com/npm-font-source-sans-pro/-/npm-font-source-sans-pro-1.0.2.tgz#c55c8ae368eebdbcaca65425a0d7e1f9a192a03e" integrity sha1-xVyK42juvbysplQloNfh+aGSoD4= -"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": +npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== @@ -6937,7 +7015,7 @@ npm-font-source-sans-pro@^1.0.2: semver "^5.5.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.6: +npm-packlist@^1.1.12, npm-packlist@^1.1.6: version "1.1.12" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== @@ -6945,24 +7023,26 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-registry-client@8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" - integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg== +npm-pick-manifest@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" + integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== dependencies: - concat-stream "^1.5.2" - graceful-fs "^4.1.6" - normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - once "^1.3.3" - request "^2.74.0" - retry "^0.10.0" - safe-buffer "^5.1.1" - semver "2 >=2.2.1 || 3.x || 4 || 5" - slide "^1.1.3" - ssri "^5.2.4" - optionalDependencies: - npmlog "2 || ^3.1.0 || ^4.0.0" + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-registry-fetch@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz#aa7d9a7c92aff94f48dba0984bdef4bd131c88cc" + integrity sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^4.1.3" + make-fetch-happen "^4.0.1" + npm-package-arg "^6.1.0" npm-run-path@^2.0.0: version "2.0.2" @@ -6971,7 +7051,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -7008,11 +7088,6 @@ nwsapi@^2.0.7: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -7152,7 +7227,7 @@ optionator@^0.8.1: type-check "~0.3.2" wordwrap "~1.0.0" -original@>=0.0.5: +original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== @@ -7272,10 +7347,43 @@ package-json-versionify@^1.0.2: dependencies: browserify-package-json "^1.0.0" +pacote@9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.1.1.tgz#25091f75a25021de8be8d34cc6408728fca3579b" + integrity sha512-f28Rq5ozzKAA9YwIKw61/ipwAatUZseYmVssDbHHaexF0wRIVotapVEZPAjOT7Eu3LYVqEp0NVpNizoAnYBUaA== + dependencies: + bluebird "^3.5.2" + cacache "^11.2.0" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + lru-cache "^4.1.3" + make-fetch-happen "^4.0.1" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^2.1.0" + npm-registry-fetch "^3.8.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.6" + unique-filename "^1.1.1" + which "^1.3.1" + pako@~1.0.2, pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" + integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ== parallel-transform@^1.1.0: version "1.1.0" @@ -7543,9 +7651,9 @@ portfinder@1.0.17: mkdirp "0.5.x" portfinder@^1.0.9: - version "1.0.19" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.19.tgz#07e87914a55242dcda5b833d42f018d6875b595f" - integrity sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw== + version "1.0.20" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" + integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== dependencies: async "^1.5.2" debug "^2.2.0" @@ -7615,12 +7723,12 @@ postcss-modules-values@^1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" -postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: +postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@7.0.5, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2: +postcss@7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.5.tgz#70e6443e36a6d520b0fd4e7593fcca3635ee9f55" integrity sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ== @@ -7629,7 +7737,7 @@ postcss@7.0.5, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2: source-map "^0.6.1" supports-color "^5.5.0" -postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.23: +postcss@^6.0.1, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -7638,6 +7746,15 @@ postcss@^6.0.1, postcss@^6.0.14, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5: + version "7.0.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.6.tgz#6dcaa1e999cdd4a255dcd7d4d9547f4ca010cdc2" + integrity sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.5.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -7664,10 +7781,10 @@ pretty-format@^23.6.0: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -primeng@^6.1.2: - version "6.1.6" - resolved "https://registry.yarnpkg.com/primeng/-/primeng-6.1.6.tgz#3a699a02507fcd5befb2fb9fe18fcc5d385f810e" - integrity sha512-9QYkXfBuSwx5zZej5QiEWhdAFJPc+f9h6PXuFtw4PzUfOhPmnoUxR5K04xeFreCNP13WwP3Uh/U3o7mY0PZtQA== +primeng@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/primeng/-/primeng-7.0.0.tgz#3a189568069a31544c9ed952328e221daad9b9b1" + integrity sha512-PrEEnp0VPbzsUQdpB/4KtUdRxaWwpprHy+IpUi09C42OAI2zqdTVIC0AaW81gDAGQyW7XraCP9EFI8KT4nC9GA== private@^0.1.8, private@~0.1.5: version "0.1.8" @@ -7699,6 +7816,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -7722,6 +7847,13 @@ prop-types@^15.6.2: loose-envify "^1.3.1" object-assign "^4.1.1" +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" + protractor@^5.3.2: version "5.4.1" resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.1.tgz#011a99e38df7aa45d22455b889ffbb13a6ce0bd9" @@ -7762,7 +7894,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: +psl@^1.1.24, psl@^1.1.28: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== @@ -7814,7 +7946,7 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -7863,7 +7995,7 @@ qrcode@^0.8.2: isarray "^2.0.1" pngjs "^2.3.1" -qs@6.5.2, qs@~6.5.1, qs@~6.5.2: +qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== @@ -8241,33 +8373,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2.87.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -request@^2.74.0, request@^2.83.0, request@^2.87.0, request@^2.88.0: +request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -8335,7 +8441,7 @@ resolve@1.1.7, resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: +resolve@1.x, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== @@ -8482,20 +8588,20 @@ sane@^2.0.0: fsevents "^1.2.3" sanitize-html@^1.18.4: - version "1.19.1" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.19.1.tgz#e8b33c69578054d6ee4f57ea152d6497f3f6fb7d" - integrity sha512-zNYr6FvBn4bZukr9x2uny6od/9YdjCLwF+FqxivqI0YOt/m9GIxfX+tWhm52tBAPUXiTTb4bJTGVagRz5b06bw== + version "1.19.2" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.19.2.tgz#c03fffe2bf96cd582968ece9792cbca32e64dde0" + integrity sha512-7fNb3/N0sZ/nkshMRBoxLz6K1dlMSVF/eQHX1Bof9sRT7cZJvmrDGfXEn544MXJnpY29vux1A599g9UrcHTBXA== dependencies: - chalk "^2.3.0" - htmlparser2 "^3.9.0" + chalk "^2.4.1" + css-tree "^1.0.0-alpha.29" + htmlparser2 "^3.10.0" lodash.clonedeep "^4.5.0" lodash.escaperegexp "^4.1.2" lodash.isplainobject "^4.0.6" lodash.isstring "^4.0.1" - lodash.mergewith "^4.6.0" - postcss "^6.0.14" + lodash.mergewith "^4.6.1" srcset "^1.0.0" - xtend "^4.0.0" + xtend "^4.0.1" sass-graph@^2.2.4: version "2.2.4" @@ -8547,9 +8653,9 @@ sax@>=0.6.0, sax@^1.2.4: integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scheduler@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.2.tgz#a8db5399d06eba5abac51b705b7151d2319d33d3" - integrity sha512-+WCP3s3wOaW4S7C1tl3TEXp4l9lJn0ZK8G3W3WKRWmw77Z2cIFUW2MiNTMHn5sCjxN+t7N43HAOOgMjyAg5hlg== + version "0.11.3" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b" + integrity sha512-i9X9VRRVZDd3xZw10NY5Z2cVMbdYg6gqFecfj79USv1CFN+YrJ3gIPRKf1qlY+Sxly4djoKdfx1T+m9dnRB8kQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -8622,7 +8728,7 @@ semver-intersect@1.4.0: dependencies: semver "^5.0.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.3.0, semver@^5.5, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -8820,10 +8926,10 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= -slide@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= +smart-buffer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" + integrity sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg== snapdragon-node@^2.0.1: version "2.1.1" @@ -8901,17 +9007,17 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -sockjs-client@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" - integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" json3 "^3.3.2" - url-parse "^1.1.8" + url-parse "^1.4.3" sockjs@0.3.19: version "0.3.19" @@ -8921,6 +9027,22 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +socks-proxy-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" + integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== + dependencies: + agent-base "~4.2.0" + socks "~2.2.0" + +socks@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.2.tgz#f061219fc2d4d332afb4af93e865c84d3fa26e2b" + integrity sha512-g6wjBnnMOZpE0ym6e0uHSddz9p3a+WsBaaYQaBaSCJYvrC4IXykQR9MNGjLQf38e9iIIhp3b1/Zk8YZI3KGJ0Q== + dependencies: + ip "^1.1.5" + smart-buffer "^4.0.1" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -9012,9 +9134,9 @@ source-map@~0.2.0: amdefine ">=0.0.4" sourcemap-codec@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.3.tgz#0ba615b73ec35112f63c2f2d9e7c3f87282b0e33" - integrity sha512-vFrY/x/NdsD7Yc8mpTJXuao9S8lq08Z/kOITHz6b7YbfI9xL8Spe5EvSQUHOI7SbpY8bRPr0U3kKSsPuqEGSfA== + version "1.4.4" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" + integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== spdx-correct@^3.0.0: version "3.0.2" @@ -9067,7 +9189,7 @@ spdy@^3.4.1: select-hose "^2.0.0" spdy-transport "^2.0.18" -speed-measure-webpack-plugin@^1.2.3: +speed-measure-webpack-plugin@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.2.3.tgz#de170b5cefbfa1c039d95e639edd3ad50cfc7c48" integrity sha512-p+taQ69VkRUXYMoZOx2nxV/Tz8tt79ahctoZJyJDHWP7fEYvwFNf5Pd73k5kZ6auu0pTsPNLEUwWpM8mCk85Zw== @@ -9133,7 +9255,7 @@ ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" -ssri@^6.0.0: +ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -9293,10 +9415,10 @@ string2compact@^1.1.1, string2compact@^1.2.5: addr-to-ip-port "^1.0.1" ipaddr.js "^1.0.1" -string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== dependencies: safe-buffer "~5.1.0" @@ -9305,6 +9427,13 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -9348,13 +9477,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" - integrity sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ== +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: loader-utils "^1.1.0" - schema-utils "^0.4.5" + schema-utils "^1.0.0" stylus-loader@3.0.2: version "3.0.2" @@ -9407,9 +9536,9 @@ symbol-tree@^3.2.2: integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= tapable@^1.0.0, tapable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" - integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== tar@^2.0.0: version "2.2.1" @@ -9420,7 +9549,7 @@ tar@^2.0.0: fstream "^1.0.2" inherits "2" -tar@^4: +tar@^4, tar@^4.4.6: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== @@ -9448,9 +9577,9 @@ terser-webpack-plugin@1.1.0, terser-webpack-plugin@^1.1.0: worker-farm "^1.5.2" terser@^3.8.1: - version "3.10.11" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.11.tgz#e063da74b194dde9faf0a561f3a438c549d2da3f" - integrity sha512-iruZ7j14oBbRYJC5cP0/vTU7YOWjN+J1ZskEGoF78tFzXdkK2hbCL/3TRZN8XB+MuvFhvOHMp7WkOCBO4VEL5g== + version "3.11.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.11.0.tgz#60782893e1f4d6788acc696351f40636d0e37af0" + integrity sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ== dependencies: commander "~2.17.1" source-map "~0.6.1" @@ -9485,7 +9614,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, through@X.X.X, through@^2.3.6, through@~2.3.6: +through@2, "through@>=2.2.7 <3", through@X.X.X, through@^2.3.6, through@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -9586,7 +9715,15 @@ torrent-piece@^2.0.0: resolved "https://registry.yarnpkg.com/torrent-piece/-/torrent-piece-2.0.0.tgz#6598ae67d93699e887f178db267ba16d89d7ec9b" integrity sha512-H/Z/yCuvZJj1vl1IQHI8dvF2QrUuXRJoptT5DW5967/dsLpXlCg+uyhFR5lfNj5mNaYePUbKtnL+qKWZGXv4Nw== -tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== @@ -9594,13 +9731,6 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -9641,9 +9771,9 @@ tryer@^1.0.0: integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== ts-jest@^23.1.4: - version "23.10.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.4.tgz#a7a953f55c9165bcaa90ff91014a178e87fe0df8" - integrity sha512-oV/wBwGUS7olSk/9yWMiSIJWbz5xO4zhftnY3gwv6s4SMg6WHF1m8XZNBvQOKQRiTAexZ9754Z13dxBq3Zgssw== + version "23.10.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.5.tgz#cdb550df4466a30489bf70ba867615799f388dd5" + integrity sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -9651,6 +9781,7 @@ ts-jest@^23.1.4: json5 "2.x" make-error "1.x" mkdirp "0.x" + resolve "1.x" semver "^5.5" yargs-parser "10.x" @@ -9721,9 +9852,9 @@ tsutils@^2.27.2: tslib "^1.8.1" tsutils@^3.0.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.0.tgz#42602f7df241e753a2105cc3627a664abf11f745" - integrity sha512-/FZ+pEJQixWruFejFxNPRSwg+iF6aw7PYZVRqUscJ7EnzV3zieI8byfZziUR7QjCuJFulq8SEe9JcGflO4ze4Q== + version "3.5.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.2.tgz#6fd3c2d5a731e83bb21b070a173ec0faf3a8f6d3" + integrity sha512-qIlklNuI/1Dzfm+G+kJV5gg3gimZIX5haYtIVQe7qGyKd7eu8T1t1DY6pz4Sc2CGXAj9s1izycctm9Zfl9sRuQ== dependencies: tslib "^1.8.1" @@ -9838,7 +9969,7 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-filename@^1.1.0: +unique-filename@^1.1.0, unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== @@ -9897,12 +10028,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" - integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= - -url-parse@^1.1.8, url-parse@^1.4.3: +url-parse@^1.4.3: version "1.4.4" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== @@ -9928,12 +10054,12 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -useragent@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" - integrity sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4= +useragent@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== dependencies: - lru-cache "2.2.x" + lru-cache "4.1.x" tmp "0.0.x" ut_metadata@^3.3.0: @@ -10222,35 +10348,20 @@ webpack-core@^0.6.8: source-list-map "~0.1.7" source-map "~0.4.1" -webpack-dev-middleware@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" - integrity sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA== - dependencies: - loud-rejection "^1.6.0" - memory-fs "~0.4.1" - mime "^2.3.1" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - url-join "^4.0.0" - webpack-log "^2.0.0" - -webpack-dev-middleware@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.3.0.tgz#8104daf4d4f65defe06ee2eaaeea612a7c541462" - integrity sha512-5C5gXtOo1I6+0AEg4UPglYEtu3Rai6l5IiO6aUu65scHXz29dc3oIWMiRwvcNLXgL0HwRkRxa9N02ZjFt4hY8w== +webpack-dev-middleware@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" + integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== dependencies: - loud-rejection "^1.6.0" memory-fs "~0.4.1" mime "^2.3.1" range-parser "^1.0.3" - url-join "^4.0.0" webpack-log "^2.0.0" -webpack-dev-server@3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz#eb7a95945d1108170f902604fb3b939533d9daeb" - integrity sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A== +webpack-dev-server@3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz#507411bee727ee8d2fdffdc621b66a64ab3dea2b" + integrity sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -10273,11 +10384,11 @@ webpack-dev-server@3.1.8: selfsigned "^1.9.1" serve-index "^1.7.2" sockjs "0.3.19" - sockjs-client "1.1.5" + sockjs-client "1.3.0" spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^5.1.0" - webpack-dev-middleware "3.2.0" + webpack-dev-middleware "3.4.0" webpack-log "^2.0.0" yargs "12.0.2" @@ -10314,6 +10425,14 @@ webpack-sources@1.2.0: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@1.3.0, webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + webpack-sources@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" @@ -10322,14 +10441,6 @@ webpack-sources@^0.1.4: source-list-map "~0.1.7" source-map "~0.5.3" -webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - webpack-subresource-integrity@1.1.0-rc.6: version "1.1.0-rc.6" resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz#37f6f1264e1eb378e41465a98da80fad76ab8886" @@ -10337,15 +10448,15 @@ webpack-subresource-integrity@1.1.0-rc.6: dependencies: webpack-core "^0.6.8" -webpack@4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.1.tgz#096674bc3b573f8756c762754366e5b333d6576f" - integrity sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g== +webpack@4.23.1: + version "4.23.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.23.1.tgz#db7467b116771ae020c58bdfe2a0822785bb8239" + integrity sha512-iE5Cu4rGEDk7ONRjisTOjVHv3dDtcFfwitSxT7evtYj/rANJpt1OuC/Kozh1pBa99AUBr1L/LsaNB+D9Xz3CEg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-module-context" "1.7.6" - "@webassemblyjs/wasm-edit" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" + "@webassemblyjs/ast" "1.7.10" + "@webassemblyjs/helper-module-context" "1.7.10" + "@webassemblyjs/wasm-edit" "1.7.10" + "@webassemblyjs/wasm-parser" "1.7.10" acorn "^5.6.2" acorn-dynamic-import "^3.0.0" ajv "^6.1.0" @@ -10365,12 +10476,12 @@ webpack@4.19.1: tapable "^1.1.0" uglifyjs-webpack-plugin "^1.2.4" watchpack "^1.5.0" - webpack-sources "^1.2.0" + webpack-sources "^1.3.0" webpack@^4.17.1: - version "4.25.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.25.1.tgz#4f459fbaea0f93440dc86c89f771bb3a837cfb6d" - integrity sha512-T0GU/3NRtO4tMfNzsvpdhUr8HnzA4LTdP2zd+e5zd6CdOH5vNKHnAlO+DvzccfhPdzqRrALOFcjYxx7K5DWmvA== + version "4.26.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.1.tgz#ff3a9283d363c07b3494dfa702d08f4f2ef6cb39" + integrity sha512-i2oOvEvuvLLSuSCkdVrknaxAhtUZ9g+nLSoHCWV0gDzqGX2DXaCrMmMUpbRsTSSLrUqAI56PoEiyMUZIZ1msug== dependencies: "@webassemblyjs/ast" "1.7.11" "@webassemblyjs/helper-module-context" "1.7.11" @@ -10393,7 +10504,7 @@ webpack@^4.17.1: node-libs-browser "^2.0.0" schema-utils "^0.4.4" tapable "^1.1.0" - uglifyjs-webpack-plugin "^1.2.4" + terser-webpack-plugin "^1.1.0" watchpack "^1.5.0" webpack-sources "^1.3.0" @@ -10468,9 +10579,9 @@ whatwg-fetch@^3.0.0: integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz#a3d58ef10b76009b042d03e25591ece89b88d171" - integrity sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^6.4.1: version "6.5.0" @@ -10505,7 +10616,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@1, which@^1.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -10566,9 +10677,9 @@ ws@^5.2.0: async-limiter "~1.0.0" ws@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.0.tgz#119a9dbf92c54e190ec18d10e871d55c95cf9373" - integrity sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg== + version "6.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8" + integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw== dependencies: async-limiter "~1.0.0" @@ -10640,9 +10751,9 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== yargs-parser@10.x, yargs-parser@^10.1.0: version "10.1.0" @@ -10651,6 +10762,14 @@ yargs-parser@10.x, yargs-parser@^10.1.0: dependencies: camelcase "^4.1.0" +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -10697,7 +10816,7 @@ yargs@10.0.3: y18n "^3.2.1" yargs-parser "^8.0.0" -yargs@12.0.2, yargs@^12.0.2: +yargs@12.0.2: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== @@ -10752,6 +10871,24 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" +yargs@^12.0.2: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" -- cgit v1.2.3 From 2beb98952a4c5939f33ea2dc77f0bd053bffbb5a Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Tue, 4 Dec 2018 13:50:50 +0100 Subject: change type of languageOneOf query parameter --- support/doc/api/openapi.yaml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index 9848c93ee..cb6ba9af5 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -1434,6 +1434,8 @@ components: - type: array items: type: number + style: form + explode: false tagsOneOf: name: tagsOneOf in: query @@ -1445,6 +1447,8 @@ components: - type: array items: type: string + style: form + explode: false tagsAllOf: name: tagsAllOf in: query @@ -1456,6 +1460,8 @@ components: - type: array items: type: string + style: form + explode: false languageOneOf: name: languageOneOf in: query @@ -1463,10 +1469,12 @@ components: description: language id of the video schema: oneOf: - - type: number + - type: string - type: array items: - type: number + type: string + style: form + explode: false licenceOneOf: name: licenceOneOf in: query @@ -1478,6 +1486,8 @@ components: - type: array items: type: number + style: form + explode: false nsfw: name: nsfw in: query -- cgit v1.2.3 From 745778256ced65415b04a9817fc49db70d4b6681 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 15:12:54 +0100 Subject: Fix thumbnail processing --- server/helpers/image-utils.ts | 14 ++++++-------- server/helpers/requests.ts | 4 ++-- server/lib/activitypub/process/process-update.ts | 2 +- server/lib/activitypub/videos.ts | 21 +++++++++++++-------- .../lib/job-queue/handlers/activitypub-refresher.ts | 3 ++- server/tests/cli/index.ts | 1 + 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/server/helpers/image-utils.ts b/server/helpers/image-utils.ts index da3285b13..e43ea3f1d 100644 --- a/server/helpers/image-utils.ts +++ b/server/helpers/image-utils.ts @@ -1,6 +1,7 @@ import 'multer' import * as sharp from 'sharp' -import { move, remove } from 'fs-extra' +import { readFile, remove } from 'fs-extra' +import { logger } from './logger' async function processImage ( physicalFile: { path: string }, @@ -11,14 +12,11 @@ async function processImage ( throw new Error('Sharp needs an input path different that the output path.') } - const sharpInstance = sharp(physicalFile.path) - const metadata = await sharpInstance.metadata() + logger.debug('Processing image %s to %s.', physicalFile.path, destination) - // No need to resize - if (metadata.width === newSize.width && metadata.height === newSize.height) { - await move(physicalFile.path, destination, { overwrite: true }) - return - } + // Avoid sharp cache + const buf = await readFile(physicalFile.path) + const sharpInstance = sharp(buf) await remove(destination) diff --git a/server/helpers/requests.ts b/server/helpers/requests.ts index 805930a9f..5760ad1c1 100644 --- a/server/helpers/requests.ts +++ b/server/helpers/requests.ts @@ -3,6 +3,7 @@ import { createWriteStream } from 'fs-extra' import * as request from 'request' import { ACTIVITY_PUB } from '../initializers' import { processImage } from './image-utils' +import { extname } from 'path' function doRequest ( requestOptions: request.CoreOptions & request.UriOptions & { activityPub?: boolean } @@ -29,8 +30,7 @@ function doRequestAndSaveToFile (requestOptions: request.CoreOptions & request.U } async function downloadImage (url: string, destPath: string, size: { width: number, height: number }) { - const tmpPath = destPath + '.tmp' - + const tmpPath = destPath + '.tmp' + extname(destPath) await doRequestAndSaveToFile({ method: 'GET', uri: url }, tmpPath) await processImage({ path: tmpPath }, destPath, size) diff --git a/server/lib/activitypub/process/process-update.ts b/server/lib/activitypub/process/process-update.ts index 03831a00e..c6b42d846 100644 --- a/server/lib/activitypub/process/process-update.ts +++ b/server/lib/activitypub/process/process-update.ts @@ -51,7 +51,7 @@ async function processUpdateVideo (actor: ActorModel, activity: ActivityUpdate) return undefined } - const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: videoObject.id }) + const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: videoObject.id, allowRefresh: false }) const channelActor = await getOrCreateVideoChannelFromVideoObject(videoObject) const updateOptions = { diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 998f90330..a5d649391 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -158,25 +158,30 @@ async function syncVideoExternalAttributes (video: VideoModel, fetchedVideo: Vid async function getOrCreateVideoAndAccountAndChannel (options: { videoObject: VideoTorrentObject | string, syncParam?: SyncParam, - fetchType?: VideoFetchByUrlType + fetchType?: VideoFetchByUrlType, + allowRefresh?: boolean // true by default }) { // Default params const syncParam = options.syncParam || { likes: true, dislikes: true, shares: true, comments: true, thumbnail: true, refreshVideo: false } const fetchType = options.fetchType || 'all' + const allowRefresh = options.allowRefresh !== false // Get video url const videoUrl = getAPUrl(options.videoObject) let videoFromDatabase = await fetchVideoByUrl(videoUrl, fetchType) if (videoFromDatabase) { - const refreshOptions = { - video: videoFromDatabase, - fetchedType: fetchType, - syncParam - } - if (syncParam.refreshVideo === true) videoFromDatabase = await refreshVideoIfNeeded(refreshOptions) - else await JobQueue.Instance.createJob({ type: 'activitypub-refresher', payload: { type: 'video', videoUrl: videoFromDatabase.url } }) + if (allowRefresh === true) { + const refreshOptions = { + video: videoFromDatabase, + fetchedType: fetchType, + syncParam + } + + if (syncParam.refreshVideo === true) videoFromDatabase = await refreshVideoIfNeeded(refreshOptions) + else await JobQueue.Instance.createJob({ type: 'activitypub-refresher', payload: { type: 'video', videoUrl: videoFromDatabase.url } }) + } return { video: videoFromDatabase } } diff --git a/server/lib/job-queue/handlers/activitypub-refresher.ts b/server/lib/job-queue/handlers/activitypub-refresher.ts index 7752b3b40..671b0f487 100644 --- a/server/lib/job-queue/handlers/activitypub-refresher.ts +++ b/server/lib/job-queue/handlers/activitypub-refresher.ts @@ -10,7 +10,8 @@ export type RefreshPayload = { async function refreshAPObject (job: Bull.Job) { const payload = job.data as RefreshPayload - logger.info('Processing AP refresher in job %d.', job.id) + + logger.info('Processing AP refresher in job %d for video %s.', job.id, payload.videoUrl) if (payload.type === 'video') return refreshAPVideo(payload.videoUrl) } diff --git a/server/tests/cli/index.ts b/server/tests/cli/index.ts index 6201314ce..c6b7ec078 100644 --- a/server/tests/cli/index.ts +++ b/server/tests/cli/index.ts @@ -1,6 +1,7 @@ // Order of the tests we want to execute import './create-import-video-file-job' import './create-transcoding-job' +import './optimize-old-videos' import './peertube' import './reset-password' import './update-host' -- cgit v1.2.3 From 6040f87d143a5fa01db79867ece8197c3ce7be47 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 16:02:49 +0100 Subject: Add tmp and redundancy directories --- config/default.yaml | 4 +++- config/production.yaml.example | 4 +++- config/test-1.yaml | 2 ++ config/test-2.yaml | 2 ++ config/test-3.yaml | 2 ++ config/test-4.yaml | 2 ++ config/test-5.yaml | 2 ++ config/test-6.yaml | 2 ++ config/test.yaml | 2 +- server/controllers/api/users/me.ts | 4 ++-- server/controllers/api/video-channel.ts | 2 +- server/controllers/api/videos/import.ts | 6 +++--- server/controllers/api/videos/index.ts | 10 +++++----- server/controllers/static.ts | 9 +++++++-- server/helpers/requests.ts | 9 +++++---- server/helpers/utils.ts | 6 +++--- server/helpers/webtorrent.ts | 6 +++--- server/helpers/youtube-dl.ts | 4 ++-- server/initializers/checker-before-init.ts | 1 + server/initializers/constants.ts | 2 ++ server/lib/activitypub/actor.ts | 4 +--- server/lib/activitypub/videos.ts | 3 +-- server/lib/job-queue/handlers/video-import.ts | 9 ++++----- server/lib/job-queue/handlers/video-views.ts | 4 +--- server/lib/redis.ts | 9 ++++++++- support/docker/production/config/production.yaml | 2 ++ 26 files changed, 70 insertions(+), 42 deletions(-) diff --git a/config/default.yaml b/config/default.yaml index 257ec7ed1..d95fdc57b 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -45,8 +45,10 @@ smtp: # From the project root directory storage: + tmp: 'storage/tmp/' # Used to download data (imports etc), store uploaded files before processing... avatars: 'storage/avatars/' videos: 'storage/videos/' + redundancy: 'storage/redundancy/' logs: 'storage/logs/' previews: 'storage/previews/' thumbnails: 'storage/thumbnails/' @@ -75,7 +77,7 @@ trending: redundancy: videos: check_interval: '1 hour' # How often you want to check new videos to cache - strategies: + strategies: # Just uncomment strategies you want # - # size: '10GB' # # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) diff --git a/config/production.yaml.example b/config/production.yaml.example index ac15fc736..4c50a550b 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example @@ -46,8 +46,10 @@ smtp: # From the project root directory storage: + tmp: '/var/www/peertube/storage/tmp/' # Used to download data (imports etc), store uploaded files before processing... avatars: '/var/www/peertube/storage/avatars/' videos: '/var/www/peertube/storage/videos/' + redundancy: '/var/www/peertube/storage/videos/' logs: '/var/www/peertube/storage/logs/' previews: '/var/www/peertube/storage/previews/' thumbnails: '/var/www/peertube/storage/thumbnails/' @@ -76,7 +78,7 @@ trending: redundancy: videos: check_interval: '1 hour' # How often you want to check new videos to cache - strategies: + strategies: # Just uncomment strategies you want # - # size: '10GB' # # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) diff --git a/config/test-1.yaml b/config/test-1.yaml index 503bbc661..8f4f66d2a 100644 --- a/config/test-1.yaml +++ b/config/test-1.yaml @@ -10,8 +10,10 @@ database: # From the project root directory storage: + tmp: 'test1/tmp/' avatars: 'test1/avatars/' videos: 'test1/videos/' + redundancy: 'test1/redundancy/' logs: 'test1/logs/' previews: 'test1/previews/' thumbnails: 'test1/thumbnails/' diff --git a/config/test-2.yaml b/config/test-2.yaml index 8c77bf581..a80ec6e54 100644 --- a/config/test-2.yaml +++ b/config/test-2.yaml @@ -10,8 +10,10 @@ database: # From the project root directory storage: + tmp: 'test2/tmp/' avatars: 'test2/avatars/' videos: 'test2/videos/' + redundancy: 'test2/redundancy/' logs: 'test2/logs/' previews: 'test2/previews/' thumbnails: 'test2/thumbnails/' diff --git a/config/test-3.yaml b/config/test-3.yaml index 82d89567a..934401eb0 100644 --- a/config/test-3.yaml +++ b/config/test-3.yaml @@ -10,8 +10,10 @@ database: # From the project root directory storage: + tmp: 'test3/tmp/' avatars: 'test3/avatars/' videos: 'test3/videos/' + redundancy: 'test3/redundancy/' logs: 'test3/logs/' previews: 'test3/previews/' thumbnails: 'test3/thumbnails/' diff --git a/config/test-4.yaml b/config/test-4.yaml index 1aa56d041..ee99b250b 100644 --- a/config/test-4.yaml +++ b/config/test-4.yaml @@ -10,8 +10,10 @@ database: # From the project root directory storage: + tmp: 'test4/tmp/' avatars: 'test4/avatars/' videos: 'test4/videos/' + redundancy: 'test4/redundancy/' logs: 'test4/logs/' previews: 'test4/previews/' thumbnails: 'test4/thumbnails/' diff --git a/config/test-5.yaml b/config/test-5.yaml index 5f1c2f583..e2662bdd9 100644 --- a/config/test-5.yaml +++ b/config/test-5.yaml @@ -10,8 +10,10 @@ database: # From the project root directory storage: + tmp: 'test5/tmp/' avatars: 'test5/avatars/' videos: 'test5/videos/' + redundancy: 'test5/redundancy/' logs: 'test5/logs/' previews: 'test5/previews/' thumbnails: 'test5/thumbnails/' diff --git a/config/test-6.yaml b/config/test-6.yaml index 719629844..ad39c6a9f 100644 --- a/config/test-6.yaml +++ b/config/test-6.yaml @@ -10,8 +10,10 @@ database: # From the project root directory storage: + tmp: 'test6/tmp/' avatars: 'test6/avatars/' videos: 'test6/videos/' + redundancy: 'test6/redundancy/' logs: 'test6/logs/' previews: 'test6/previews/' thumbnails: 'test6/thumbnails/' diff --git a/config/test.yaml b/config/test.yaml index 9c051fabc..51a77e2fd 100644 --- a/config/test.yaml +++ b/config/test.yaml @@ -67,4 +67,4 @@ import: enabled: true instance: - default_nsfw_policy: 'display' \ No newline at end of file + default_nsfw_policy: 'display' diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index 82299747d..47f2c9ec7 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts @@ -42,7 +42,7 @@ import { AccountModel } from '../../../models/account/account' const auditLogger = auditLoggerFactory('users-me') -const reqAvatarFile = createReqFiles([ 'avatarfile' ], IMAGE_MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.AVATARS_DIR }) +const reqAvatarFile = createReqFiles([ 'avatarfile' ], IMAGE_MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.TMP_DIR }) const meRouter = express.Router() @@ -348,7 +348,7 @@ async function updateMe (req: express.Request, res: express.Response, next: expr return res.sendStatus(204) } -async function updateMyAvatar (req: express.Request, res: express.Response, next: express.NextFunction) { +async function updateMyAvatar (req: express.Request, res: express.Response) { const avatarPhysicalFile = req.files[ 'avatarfile' ][ 0 ] const user: UserModel = res.locals.oauth.token.user const oldUserAuditView = new UserAuditView(user.toFormattedJSON()) diff --git a/server/controllers/api/video-channel.ts b/server/controllers/api/video-channel.ts index 9bf3c5fd8..63240dfa1 100644 --- a/server/controllers/api/video-channel.ts +++ b/server/controllers/api/video-channel.ts @@ -32,7 +32,7 @@ import { resetSequelizeInstance } from '../../helpers/database-utils' import { UserModel } from '../../models/account/user' const auditLogger = auditLoggerFactory('channels') -const reqAvatarFile = createReqFiles([ 'avatarfile' ], IMAGE_MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.AVATARS_DIR }) +const reqAvatarFile = createReqFiles([ 'avatarfile' ], IMAGE_MIMETYPE_EXT, { avatarfile: CONFIG.STORAGE.TMP_DIR }) const videoChannelRouter = express.Router() diff --git a/server/controllers/api/videos/import.ts b/server/controllers/api/videos/import.ts index 398fd5a7f..f27d648c7 100644 --- a/server/controllers/api/videos/import.ts +++ b/server/controllers/api/videos/import.ts @@ -37,9 +37,9 @@ const reqVideoFileImport = createReqFiles( [ 'thumbnailfile', 'previewfile', 'torrentfile' ], Object.assign({}, TORRENT_MIMETYPE_EXT, IMAGE_MIMETYPE_EXT), { - thumbnailfile: CONFIG.STORAGE.THUMBNAILS_DIR, - previewfile: CONFIG.STORAGE.PREVIEWS_DIR, - torrentfile: CONFIG.STORAGE.TORRENTS_DIR + thumbnailfile: CONFIG.STORAGE.TMP_DIR, + previewfile: CONFIG.STORAGE.TMP_DIR, + torrentfile: CONFIG.STORAGE.TMP_DIR } ) diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 3d1b2e1a2..4e4697ef4 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -67,17 +67,17 @@ const reqVideoFileAdd = createReqFiles( [ 'videofile', 'thumbnailfile', 'previewfile' ], Object.assign({}, VIDEO_MIMETYPE_EXT, IMAGE_MIMETYPE_EXT), { - videofile: CONFIG.STORAGE.VIDEOS_DIR, - thumbnailfile: CONFIG.STORAGE.THUMBNAILS_DIR, - previewfile: CONFIG.STORAGE.PREVIEWS_DIR + videofile: CONFIG.STORAGE.TMP_DIR, + thumbnailfile: CONFIG.STORAGE.TMP_DIR, + previewfile: CONFIG.STORAGE.TMP_DIR } ) const reqVideoFileUpdate = createReqFiles( [ 'thumbnailfile', 'previewfile' ], IMAGE_MIMETYPE_EXT, { - thumbnailfile: CONFIG.STORAGE.THUMBNAILS_DIR, - previewfile: CONFIG.STORAGE.PREVIEWS_DIR + thumbnailfile: CONFIG.STORAGE.TMP_DIR, + previewfile: CONFIG.STORAGE.TMP_DIR } ) diff --git a/server/controllers/static.ts b/server/controllers/static.ts index 75e30353c..f16a7d72b 100644 --- a/server/controllers/static.ts +++ b/server/controllers/static.ts @@ -34,12 +34,17 @@ staticRouter.use( ) // Videos path for webseeding -const videosPhysicalPath = CONFIG.STORAGE.VIDEOS_DIR staticRouter.use( STATIC_PATHS.WEBSEED, cors(), - express.static(videosPhysicalPath) + express.static(CONFIG.STORAGE.VIDEOS_DIR) ) +staticRouter.use( + STATIC_PATHS.WEBSEED, + cors(), + express.static(CONFIG.STORAGE.REDUNDANCY_DIR, { fallthrough: false }) // 404, because we don't have this video +) + staticRouter.use( STATIC_DOWNLOAD_PATHS.VIDEOS + ':id-:resolution([0-9]+).:extension', asyncMiddleware(videosGetValidator), diff --git a/server/helpers/requests.ts b/server/helpers/requests.ts index 5760ad1c1..3fc776f1a 100644 --- a/server/helpers/requests.ts +++ b/server/helpers/requests.ts @@ -1,9 +1,9 @@ import * as Bluebird from 'bluebird' import { createWriteStream } from 'fs-extra' import * as request from 'request' -import { ACTIVITY_PUB } from '../initializers' +import { ACTIVITY_PUB, CONFIG } from '../initializers' import { processImage } from './image-utils' -import { extname } from 'path' +import { join } from 'path' function doRequest ( requestOptions: request.CoreOptions & request.UriOptions & { activityPub?: boolean } @@ -29,10 +29,11 @@ function doRequestAndSaveToFile (requestOptions: request.CoreOptions & request.U }) } -async function downloadImage (url: string, destPath: string, size: { width: number, height: number }) { - const tmpPath = destPath + '.tmp' + extname(destPath) +async function downloadImage (url: string, destDir: string, destName: string, size: { width: number, height: number }) { + const tmpPath = join(CONFIG.STORAGE.TMP_DIR, 'pending-' + destName) await doRequestAndSaveToFile({ method: 'GET', uri: url }, tmpPath) + const destPath = join(destDir, destName) await processImage({ path: tmpPath }, destPath, size) } diff --git a/server/helpers/utils.ts b/server/helpers/utils.ts index 5c9d6fe2f..9b89e3e61 100644 --- a/server/helpers/utils.ts +++ b/server/helpers/utils.ts @@ -46,11 +46,11 @@ const getServerActor = memoizee(async function () { return actor }) -function generateVideoTmpPath (target: string | ParseTorrent) { +function generateVideoImportTmpPath (target: string | ParseTorrent) { const id = typeof target === 'string' ? target : target.infoHash const hash = sha256(id) - return join(CONFIG.STORAGE.VIDEOS_DIR, hash + '-import.mp4') + return join(CONFIG.STORAGE.TMP_DIR, hash + '-import.mp4') } function getSecureTorrentName (originalName: string) { @@ -103,6 +103,6 @@ export { getSecureTorrentName, getServerActor, getServerCommit, - generateVideoTmpPath, + generateVideoImportTmpPath, getUUIDFromFilename } diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts index ce35b87da..3c9a0b96a 100644 --- a/server/helpers/webtorrent.ts +++ b/server/helpers/webtorrent.ts @@ -1,5 +1,5 @@ import { logger } from './logger' -import { generateVideoTmpPath } from './utils' +import { generateVideoImportTmpPath } from './utils' import * as WebTorrent from 'webtorrent' import { createWriteStream, ensureDir, remove } from 'fs-extra' import { CONFIG } from '../initializers' @@ -9,10 +9,10 @@ async function downloadWebTorrentVideo (target: { magnetUri: string, torrentName const id = target.magnetUri || target.torrentName let timer - const path = generateVideoTmpPath(id) + const path = generateVideoImportTmpPath(id) logger.info('Importing torrent video %s', id) - const directoryPath = join(CONFIG.STORAGE.VIDEOS_DIR, 'import') + const directoryPath = join(CONFIG.STORAGE.TMP_DIR, 'webtorrent') await ensureDir(directoryPath) return new Promise((res, rej) => { diff --git a/server/helpers/youtube-dl.ts b/server/helpers/youtube-dl.ts index 2a5663042..b74351b42 100644 --- a/server/helpers/youtube-dl.ts +++ b/server/helpers/youtube-dl.ts @@ -1,7 +1,7 @@ import { truncate } from 'lodash' import { CONSTRAINTS_FIELDS, VIDEO_CATEGORIES } from '../initializers' import { logger } from './logger' -import { generateVideoTmpPath } from './utils' +import { generateVideoImportTmpPath } from './utils' import { join } from 'path' import { root } from './core-utils' import { ensureDir, writeFile, remove } from 'fs-extra' @@ -40,7 +40,7 @@ function getYoutubeDLInfo (url: string, opts?: string[]): Promise } function downloadYoutubeDLVideo (url: string, timeout: number) { - const path = generateVideoTmpPath(url) + const path = generateVideoImportTmpPath(url) let timer logger.info('Importing youtubeDL video %s', url) diff --git a/server/initializers/checker-before-init.ts b/server/initializers/checker-before-init.ts index 9dfb5d68c..b51c7cfba 100644 --- a/server/initializers/checker-before-init.ts +++ b/server/initializers/checker-before-init.ts @@ -12,6 +12,7 @@ function checkMissedConfig () { 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password', 'database.pool.max', 'smtp.hostname', 'smtp.port', 'smtp.username', 'smtp.password', 'smtp.tls', 'smtp.from_address', 'storage.avatars', 'storage.videos', 'storage.logs', 'storage.previews', 'storage.thumbnails', 'storage.torrents', 'storage.cache', + 'storage.redundancy', 'storage.tmp', 'log.level', 'user.video_quota', 'user.video_quota_daily', 'cache.previews.size', 'admin.email', diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 8a8bcd126..876aa1cf5 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -185,9 +185,11 @@ const CONFIG = { FROM_ADDRESS: config.get('smtp.from_address') }, STORAGE: { + TMP_DIR: buildPath(config.get('storage.tmp')), AVATARS_DIR: buildPath(config.get('storage.avatars')), LOG_DIR: buildPath(config.get('storage.logs')), VIDEOS_DIR: buildPath(config.get('storage.videos')), + REDUNDANCY_DIR: buildPath(config.get('storage.redundancy')), THUMBNAILS_DIR: buildPath(config.get('storage.thumbnails')), PREVIEWS_DIR: buildPath(config.get('storage.previews')), CAPTIONS_DIR: buildPath(config.get('storage.captions')), diff --git a/server/lib/activitypub/actor.ts b/server/lib/activitypub/actor.ts index 504263c99..bbe48833d 100644 --- a/server/lib/activitypub/actor.ts +++ b/server/lib/activitypub/actor.ts @@ -178,9 +178,7 @@ async function fetchAvatarIfExists (actorJSON: ActivityPubActor) { const extension = IMAGE_MIMETYPE_EXT[actorJSON.icon.mediaType] const avatarName = uuidv4() + extension - const destPath = join(CONFIG.STORAGE.AVATARS_DIR, avatarName) - - await downloadImage(actorJSON.icon.url, destPath, AVATARS_SIZE) + await downloadImage(actorJSON.icon.url, CONFIG.STORAGE.AVATARS_DIR, avatarName, AVATARS_SIZE) return avatarName } diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index a5d649391..3d17e6846 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -95,9 +95,8 @@ function fetchRemoteVideoStaticFile (video: VideoModel, path: string, reject: Fu function generateThumbnailFromUrl (video: VideoModel, icon: ActivityIconObject) { const thumbnailName = video.getThumbnailName() - const thumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, thumbnailName) - return downloadImage(icon.url, thumbnailPath, THUMBNAILS_SIZE) + return downloadImage(icon.url, CONFIG.STORAGE.THUMBNAILS_DIR, thumbnailName, THUMBNAILS_SIZE) } function getOrCreateVideoChannelFromVideoObject (videoObject: VideoTorrentObject) { diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts index 4de901c0c..51a0b5faf 100644 --- a/server/lib/job-queue/handlers/video-import.ts +++ b/server/lib/job-queue/handlers/video-import.ts @@ -7,7 +7,7 @@ import { getDurationFromVideoFile, getVideoFileFPS, getVideoFileResolution } fro import { extname, join } from 'path' import { VideoFileModel } from '../../../models/video/video-file' import { CONFIG, PREVIEWS_SIZE, sequelizeTypescript, THUMBNAILS_SIZE, VIDEO_IMPORT_TIMEOUT } from '../../../initializers' -import { doRequestAndSaveToFile, downloadImage } from '../../../helpers/requests' +import { downloadImage } from '../../../helpers/requests' import { VideoState } from '../../../../shared' import { JobQueue } from '../index' import { federateVideoIfNeeded } from '../../activitypub' @@ -109,6 +109,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide let tempVideoPath: string let videoDestFile: string let videoFile: VideoFileModel + try { // Download video from youtubeDL tempVideoPath = await downloader() @@ -144,8 +145,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide // Process thumbnail if (options.downloadThumbnail) { if (options.thumbnailUrl) { - const destThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, videoImport.Video.getThumbnailName()) - await downloadImage(options.thumbnailUrl, destThumbnailPath, THUMBNAILS_SIZE) + await downloadImage(options.thumbnailUrl, CONFIG.STORAGE.THUMBNAILS_DIR, videoImport.Video.getThumbnailName(), THUMBNAILS_SIZE) } else { await videoImport.Video.createThumbnail(videoFile) } @@ -156,8 +156,7 @@ async function processFile (downloader: () => Promise, videoImport: Vide // Process preview if (options.downloadPreview) { if (options.thumbnailUrl) { - const destPreviewPath = join(CONFIG.STORAGE.PREVIEWS_DIR, videoImport.Video.getPreviewName()) - await downloadImage(options.thumbnailUrl, destPreviewPath, PREVIEWS_SIZE) + await downloadImage(options.thumbnailUrl, CONFIG.STORAGE.PREVIEWS_DIR, videoImport.Video.getPreviewName(), PREVIEWS_SIZE) } else { await videoImport.Video.createPreview(videoFile) } diff --git a/server/lib/job-queue/handlers/video-views.ts b/server/lib/job-queue/handlers/video-views.ts index 038ef43e2..fa1fd13b3 100644 --- a/server/lib/job-queue/handlers/video-views.ts +++ b/server/lib/job-queue/handlers/video-views.ts @@ -23,9 +23,7 @@ async function processVideosViews () { for (const videoId of videoIds) { try { const views = await Redis.Instance.getVideoViews(videoId, hour) - if (isNaN(views)) { - logger.error('Cannot process videos views of video %d in hour %d: views number is NaN (%s).', videoId, hour, views) - } else { + if (views) { logger.debug('Adding %d views to video %d in hour %d.', views, videoId, hour) try { diff --git a/server/lib/redis.ts b/server/lib/redis.ts index abd75d512..3e25e6a2c 100644 --- a/server/lib/redis.ts +++ b/server/lib/redis.ts @@ -121,7 +121,14 @@ class Redis { const key = this.generateVideoViewKey(videoId, hour) const valueString = await this.getValue(key) - return parseInt(valueString, 10) + const valueInt = parseInt(valueString, 10) + + if (isNaN(valueInt)) { + logger.error('Cannot get videos views of video %d in hour %d: views number is NaN (%s).', videoId, hour, valueString) + return undefined + } + + return valueInt } async getVideosIdViewed (hour: number) { diff --git a/support/docker/production/config/production.yaml b/support/docker/production/config/production.yaml index 4970bbcca..846c838e8 100644 --- a/support/docker/production/config/production.yaml +++ b/support/docker/production/config/production.yaml @@ -32,8 +32,10 @@ redis: # From the project root directory storage: + tmp: '../data/tmp/' avatars: '../data/avatars/' videos: '../data/videos/' + redundancy: '../data/redundancy/' logs: '../data/logs/' previews: '../data/previews/' thumbnails: '../data/thumbnails/' -- cgit v1.2.3 From b9fffa297f49a84df8ffd0d7b842599bc88a8e3e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 17:08:55 +0100 Subject: Create redundancy endpoint --- server/controllers/static.ts | 6 ++--- server/initializers/constants.ts | 1 + .../lib/schedulers/videos-redundancy-scheduler.ts | 4 ++-- server/models/redundancy/video-redundancy.ts | 4 ++-- server/models/video/video.ts | 10 ++++++-- server/tests/api/redundancy/redundancy.ts | 27 ++++++++++++---------- support/nginx/peertube | 9 ++++++-- 7 files changed, 38 insertions(+), 23 deletions(-) diff --git a/server/controllers/static.ts b/server/controllers/static.ts index f16a7d72b..55e7392a1 100644 --- a/server/controllers/static.ts +++ b/server/controllers/static.ts @@ -37,12 +37,12 @@ staticRouter.use( staticRouter.use( STATIC_PATHS.WEBSEED, cors(), - express.static(CONFIG.STORAGE.VIDEOS_DIR) + express.static(CONFIG.STORAGE.VIDEOS_DIR, { fallthrough: false }) // 404 because we don't have this video ) staticRouter.use( - STATIC_PATHS.WEBSEED, + STATIC_PATHS.REDUNDANCY, cors(), - express.static(CONFIG.STORAGE.REDUNDANCY_DIR, { fallthrough: false }) // 404, because we don't have this video + express.static(CONFIG.STORAGE.REDUNDANCY_DIR, { fallthrough: false }) // 404 because we don't have this video ) staticRouter.use( diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 876aa1cf5..7195ae6c5 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -571,6 +571,7 @@ const STATIC_PATHS = { THUMBNAILS: '/static/thumbnails/', TORRENTS: '/static/torrents/', WEBSEED: '/static/webseed/', + REDUNDANCY: '/static/redundancy/', AVATARS: '/static/avatars/', VIDEO_CAPTIONS: '/static/video-captions/' } diff --git a/server/lib/schedulers/videos-redundancy-scheduler.ts b/server/lib/schedulers/videos-redundancy-scheduler.ts index 8b7f33539..2a99a665d 100644 --- a/server/lib/schedulers/videos-redundancy-scheduler.ts +++ b/server/lib/schedulers/videos-redundancy-scheduler.ts @@ -145,13 +145,13 @@ export class VideosRedundancyScheduler extends AbstractScheduler { const tmpPath = await downloadWebTorrentVideo({ magnetUri }, VIDEO_IMPORT_TIMEOUT) - const destPath = join(CONFIG.STORAGE.VIDEOS_DIR, video.getVideoFilename(file)) + const destPath = join(CONFIG.STORAGE.REDUNDANCY_DIR, video.getVideoFilename(file)) await rename(tmpPath, destPath) const createdModel = await VideoRedundancyModel.create({ expiresOn: this.buildNewExpiration(redundancy.minLifetime), url: getVideoCacheFileActivityPubUrl(file), - fileUrl: video.getVideoFileUrl(file, CONFIG.WEBSERVER.URL), + fileUrl: video.getVideoRedundancyUrl(file, CONFIG.WEBSERVER.URL), strategy: redundancy.strategy, videoFileId: file.id, actorId: serverActor.id diff --git a/server/models/redundancy/video-redundancy.ts b/server/models/redundancy/video-redundancy.ts index 9de4356b4..dd37dad22 100644 --- a/server/models/redundancy/video-redundancy.ts +++ b/server/models/redundancy/video-redundancy.ts @@ -15,7 +15,7 @@ import { import { ActorModel } from '../activitypub/actor' import { getVideoSort, throwIfNotValid } from '../utils' import { isActivityPubUrlValid, isUrlValid } from '../../helpers/custom-validators/activitypub/misc' -import { CONFIG, CONSTRAINTS_FIELDS, VIDEO_EXT_MIMETYPE } from '../../initializers' +import { CONFIG, CONSTRAINTS_FIELDS, STATIC_PATHS, VIDEO_EXT_MIMETYPE } from '../../initializers' import { VideoFileModel } from '../video/video-file' import { getServerActor } from '../../helpers/utils' import { VideoModel } from '../video/video' @@ -124,7 +124,7 @@ export class VideoRedundancyModel extends Model { const logIdentifier = `${videoFile.Video.uuid}-${videoFile.resolution}` logger.info('Removing duplicated video file %s.', logIdentifier) - videoFile.Video.removeFile(videoFile) + videoFile.Video.removeFile(videoFile, true) .catch(err => logger.error('Cannot delete %s files.', logIdentifier, { err })) return undefined diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 0f18d9f0c..e8cb5aa88 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -1538,8 +1538,10 @@ export class VideoModel extends Model { .catch(err => logger.warn('Cannot delete preview %s.', previewPath, { err })) } - removeFile (videoFile: VideoFileModel) { - const filePath = join(CONFIG.STORAGE.VIDEOS_DIR, this.getVideoFilename(videoFile)) + removeFile (videoFile: VideoFileModel, isRedundancy = false) { + const baseDir = isRedundancy ? CONFIG.STORAGE.REDUNDANCY_DIR : CONFIG.STORAGE.VIDEOS_DIR + + const filePath = join(baseDir, this.getVideoFilename(videoFile)) return remove(filePath) .catch(err => logger.warn('Cannot delete file %s.', filePath, { err })) } @@ -1617,6 +1619,10 @@ export class VideoModel extends Model { return baseUrlHttp + STATIC_PATHS.WEBSEED + this.getVideoFilename(videoFile) } + getVideoRedundancyUrl (videoFile: VideoFileModel, baseUrlHttp: string) { + return baseUrlHttp + STATIC_PATHS.REDUNDANCY + this.getVideoFilename(videoFile) + } + getVideoFileDownloadUrl (videoFile: VideoFileModel, baseUrlHttp: string) { return baseUrlHttp + STATIC_DOWNLOAD_PATHS.VIDEOS + this.getVideoFilename(videoFile) } diff --git a/server/tests/api/redundancy/redundancy.ts b/server/tests/api/redundancy/redundancy.ts index a8a2f305f..5b29a503a 100644 --- a/server/tests/api/redundancy/redundancy.ts +++ b/server/tests/api/redundancy/redundancy.ts @@ -136,7 +136,7 @@ async function check2Webseeds (strategy: VideoRedundancyStrategy, videoUUID?: st if (!videoUUID) videoUUID = video1Server2UUID const webseeds = [ - 'http://localhost:9001/static/webseed/' + videoUUID, + 'http://localhost:9001/static/redundancy/' + videoUUID, 'http://localhost:9002/static/webseed/' + videoUUID ] @@ -148,20 +148,23 @@ async function check2Webseeds (strategy: VideoRedundancyStrategy, videoUUID?: st for (const file of video.files) { checkMagnetWebseeds(file, webseeds, server) - // Only servers 1 and 2 have the video - if (server.serverNumber !== 3) { - await makeGetRequest({ - url: server.url, - statusCodeExpected: 200, - path: '/static/webseed/' + `${videoUUID}-${file.resolution.id}.mp4`, - contentType: null - }) - } + await makeGetRequest({ + url: servers[0].url, + statusCodeExpected: 200, + path: '/static/redundancy/' + `${videoUUID}-${file.resolution.id}.mp4`, + contentType: null + }) + await makeGetRequest({ + url: servers[1].url, + statusCodeExpected: 200, + path: '/static/webseed/' + `${videoUUID}-${file.resolution.id}.mp4`, + contentType: null + }) } } - for (const directory of [ 'test1', 'test2' ]) { - const files = await readdir(join(root(), directory, 'videos')) + for (const directory of [ 'test1/redundancy', 'test2/videos' ]) { + const files = await readdir(join(root(), directory)) expect(files).to.have.length.at.least(4) for (const resolution of [ 240, 360, 480, 720 ]) { diff --git a/support/nginx/peertube b/support/nginx/peertube index b00031133..e0b006088 100644 --- a/support/nginx/peertube +++ b/support/nginx/peertube @@ -105,7 +105,7 @@ server { } # Bypass PeerTube for performance reasons. Could be removed - location /static/webseed { + location ~ ^/static/(webseed|redundancy)/ { # Clients usually have 4 simultaneous webseed connections, so the real limit is 3MB/s per client limit_rate 800k; @@ -128,7 +128,12 @@ server { access_log off; } - alias /var/www/peertube/storage/videos; + root /var/www/peertube/storage; + + rewrite ^/static/webseed/(.*)$ /videos/$1 break; + rewrite ^/static/redundancy/(.*)$ /redundancy/$1 break; + + try_files $uri /; } # Websocket tracker -- cgit v1.2.3 From 9024bece9a51d3bc666ba94f272aaec186e3c278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathana=C3=ABl=20J?= Date: Tue, 4 Dec 2018 14:23:28 +0100 Subject: Use `'` instead of `'` for passwords in the documentation (see #1453) --- support/doc/tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support/doc/tools.md b/support/doc/tools.md index 5a1f212b1..98048ec41 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -82,7 +82,7 @@ The wrapper provides a convenient interface to the following scripts. You can ac The wrapper can keep track of instances you have an account on. We limit to one account per instance for now. ```bash -$ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD" +$ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password 'PEERTUBE_PASSWORD' $ peertube auth list ┌──────────────────────────────┬──────────────────────────────┐ │ instance │ login │ @@ -112,7 +112,7 @@ Be sure you own the videos or have the author's authorization to do so. $ node dist/server/tools/peertube-import-videos.js \ -u "PEERTUBE_URL" \ -U "PEERTUBE_USER" \ - --password "PEERTUBE_PASSWORD" \ + --password 'PEERTUBE_PASSWORD' \ -t "TARGET_URL" ``` -- cgit v1.2.3 From 5b036b8ef2f15c30afe6cddfe9bcfc5816b08bba Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 17:19:44 +0100 Subject: Better tools.md doc --- support/doc/tools.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/support/doc/tools.md b/support/doc/tools.md index 98048ec41..69d68464a 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md @@ -82,12 +82,12 @@ The wrapper provides a convenient interface to the following scripts. You can ac The wrapper can keep track of instances you have an account on. We limit to one account per instance for now. ```bash -$ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password 'PEERTUBE_PASSWORD' +$ peertube auth add -u 'PEERTUBE_URL' -U 'PEERTUBE_USER' --password 'PEERTUBE_PASSWORD' $ peertube auth list ┌──────────────────────────────┬──────────────────────────────┐ │ instance │ login │ ├──────────────────────────────┼──────────────────────────────┤ -│ "PEERTUBE_URL" │ "PEERTUBE_USER" │ +│ 'PEERTUBE_URL' │ 'PEERTUBE_USER' │ └──────────────────────────────┴──────────────────────────────┘ ``` @@ -110,15 +110,15 @@ Be sure you own the videos or have the author's authorization to do so. ```sh $ node dist/server/tools/peertube-import-videos.js \ - -u "PEERTUBE_URL" \ - -U "PEERTUBE_USER" \ + -u 'PEERTUBE_URL' \ + -U 'PEERTUBE_USER' \ --password 'PEERTUBE_PASSWORD' \ - -t "TARGET_URL" + -t 'TARGET_URL' ``` * `PEERTUBE_URL` : the full URL of your PeerTube server where you want to import, eg: https://peertube.cpy.re * `PEERTUBE_USER` : your PeerTube account where videos will be uploaded -* `PEERTUBE_PASSWORD` : password of your PeerTube account (if omitted, you will be prompted for it) +* `PEERTUBE_PASSWORD` : password of your PeerTube account (if `PEERTUBE_PASSWORD` is omitted, you will be prompted for it) * `TARGET_URL` : the target url you want to import. Examples: * YouTube: * Channel: https://www.youtube.com/channel/ChannelId -- cgit v1.2.3 From d7aea77bdb989df7df4a9c492f5e5ab033291e07 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 4 Dec 2018 17:43:24 +0100 Subject: Add ru pl and it translations --- client/src/locale/target/angular_ar_001.xml | 301 ++++++++++ client/src/locale/target/angular_eu_ES.xml | 358 ++++++++++++ client/src/locale/target/angular_it_IT.xml | 141 +++++ client/src/locale/target/angular_oc.xml | 67 +++ client/src/locale/target/angular_pl_PL.xml | 4 + client/src/locale/target/angular_sv_SE.xml | 14 + client/src/locale/target/angular_zh_Hant_TW.xml | 67 +++ client/src/locale/target/iso639_pl_PL.xml | 695 ------------------------ client/src/locale/target/player_ar_001.xml | 2 +- client/src/locale/target/player_it_IT.json | 1 + client/src/locale/target/player_pl_PL.json | 1 + client/src/locale/target/player_pl_PL.xml | 383 ------------- client/src/locale/target/player_ru_RU.json | 1 + client/src/locale/target/server_it_IT.json | 1 + client/src/locale/target/server_pl_PL.json | 1 + client/src/locale/target/server_pl_PL.xml | 147 ----- client/src/locale/target/server_ru_RU.json | 1 + scripts/build/client.sh | 2 +- shared/models/i18n/i18n.ts | 9 +- 19 files changed, 966 insertions(+), 1230 deletions(-) delete mode 100644 client/src/locale/target/iso639_pl_PL.xml create mode 100644 client/src/locale/target/player_it_IT.json create mode 100644 client/src/locale/target/player_pl_PL.json delete mode 100644 client/src/locale/target/player_pl_PL.xml create mode 100644 client/src/locale/target/player_ru_RU.json create mode 100644 client/src/locale/target/server_it_IT.json create mode 100644 client/src/locale/target/server_pl_PL.json delete mode 100644 client/src/locale/target/server_pl_PL.xml create mode 100644 client/src/locale/target/server_ru_RU.json diff --git a/client/src/locale/target/angular_ar_001.xml b/client/src/locale/target/angular_ar_001.xml index 05e55793d..894798226 100644 --- a/client/src/locale/target/angular_ar_001.xml +++ b/client/src/locale/target/angular_ar_001.xml @@ -1804,6 +1804,13 @@ 159
    + + Sorry, but something went wrong + عذرا، لقد حدث خلل ما + + 49 + + Update تحديث @@ -1811,6 +1818,13 @@ 92
    + + Select the file to upload + اختر الملف الذي تريد ارساله + + 6 + + Scheduled مبرمجة @@ -1916,6 +1930,20 @@ 177 + + Upload thumbnail + تحديث الصورة المصغرة + + 195 + + + + Upload preview + إرسال معاينة + + 202 + + Support الدعم @@ -2032,6 +2060,13 @@ 57 + + Dislike this video + إلغاء الإعجاب بهذه الفيديو + + 64 + + Download the video تنزيل الفيديو @@ -2060,6 +2095,13 @@ 91 + + Blacklist + حجب في القائمة السوداء + + 96 + + Blacklist this video حجب هذه الفيديو @@ -2109,6 +2151,13 @@ 152 + + Friendly Reminder: + تذكير أخوي: + + 208 + + More information المزيد من التفاصيل @@ -2259,6 +2308,13 @@ 1 + + Configuration updated. + تم تحديث الإعدادات + + 1 + + Unlimited بلا حدود @@ -2280,6 +2336,20 @@ 1 + + enabled + مفعّل + + 1 + + + + disabled + خامل + + 1 + + Comment updated. تم تحديث التعليق. @@ -2336,6 +2406,13 @@ 1 + + Ownership accepted + تم قبول الملكية + + 1 + + Password updated. تم تحديث الكلمة السرية. @@ -2343,6 +2420,13 @@ 1 + + You current password is invalid. + كلمتك السرية الحالية غير صالحة. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. متأكد أنك تريد حذف حسابك ؟هذا سيحذف بياناتك,قنواتك,فيديوهاتك الخ. @@ -2413,6 +2497,20 @@ 1 + + Published + المنشورة + + 1 + + + + To import + للاستيراد + + 1 + + Channels القنوات @@ -2420,6 +2518,90 @@ 1 + + Subscribe to the account + الاشتراك في الحساب + + 1 + + + + Toggle the left menu + الانتقال إلى القائمة اليسرى + + 1 + + + + Go to the videos overview page + الذهاب إلى صفحة معاينة الفيديوهات + + 1 + + + + Go to the trending videos page + الذهاب إلى صفحة الفيديوهات الشائعة + + 1 + + + + Go to the recently added videos page + الذهاب إلى صفحةالفيديوهات المضافة حديثا + + 1 + + + + Go to the local videos page + الذهاب إلى صفحة الفيديوهات المحلية + + 1 + + + + Go to the videos upload page + الذهاب إلى صفحة إرسال الفيديوهات + + 1 + + + + Toggle Dark theme + التغيير إلى السمة الداكنة + + 1 + + + + Go to my subscriptions + الذهاب إلى اشتراكاتي + + 1 + + + + Go to my videos + الذهاب إلى فيديوهاتي + + 1 + + + + Go to my imports + الذهاب إلى استيراداتي + + 1 + + + + Go to my channels + الذهاب إلى قنواتي + + 1 + + You need to reconnect. يجب عليك إعادة الإتصال. @@ -2434,6 +2616,13 @@ 1 + + Keyboard Shortcuts: + اختصارات لوحة المفاتيح: + + 1 + + Incorrect username or password. اسم المستخدم أو كلمة المرور خاطئة. @@ -2448,6 +2637,13 @@ 1 + + Your password has been successfully reset! + لقد تم إعادة تعيين كلمتك السرية بنجاح! + + 1 + + Today اليوم @@ -2567,6 +2763,62 @@ 1 + + User role is required. + دور المستخدم مطلوب. + + 1 + + + + Display name is required. + عرض الاسم لازم. + + 1 + + + + Description must be at least 3 characters long. + طول الوصف يجب أن يتعدى 3حروف. + + 1 + + + + Report reason is required. + سبب الإبلاغ لازم. + + 1 + + + + Moderation comment is required. + تعليق الإشراف لازم. + + 1 + + + + The channel is required. + القناة لازمة. + + 1 + + + + The username is required. + اسم المستخدم مطلوب. + + 1 + + + + You can only transfer ownership to a local account + لا يمكن نقل الملكية إلى حساب محلي + + 1 + + Name is required. الاسم مطلوب. @@ -2574,6 +2826,13 @@ 1 + + Name cannot be more than 20 characters long. + طول الاسم لا يجب أن يتجاوز 20 حرفا. + + 1 + + Comment is required. التعليق مطلوب. @@ -2595,6 +2854,13 @@ 1 + + A tag should be less than 30 characters long. + طول الوسم لا يجب أن يتجاوز 30 حرفا. + + 1 + + This file is too large. حجم هذا الملف كبير جدًّا. @@ -2917,6 +3183,20 @@ 1 + + Clear + مسح + + 1 + + + + Torrent import + استيراد تورنت + + 1 + + Links الروابط @@ -2980,6 +3260,20 @@ 1 + + Too many attempts, please try again later. + محاولات كثيرة، يرجى العودة لاحقا. + + 1 + + + + Server error. Please retry later. + خطأ على السيرفر. يرجى إعادة المحاولة لاحقا. + + 1 + + Subscribed مشترك @@ -3036,6 +3330,13 @@ 1 + + Video reported. + فيديو تم الإبلاغ عنها. + + 1 + + Like the video الإعجاب بالفيديو diff --git a/client/src/locale/target/angular_eu_ES.xml b/client/src/locale/target/angular_eu_ES.xml index d30351a35..d17189c7a 100644 --- a/client/src/locale/target/angular_eu_ES.xml +++ b/client/src/locale/target/angular_eu_ES.xml @@ -601,6 +601,13 @@ 17 + + I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance + 16 urte edo gehiago ditut eta onartzen ditut instantzia honen <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>erabilera badintzak</a> + + 55 + + Signup Eman izena @@ -633,6 +640,19 @@ 6 + + + Filters + + + + Iragazkiak + + + + 16 + + No results found @@ -1239,6 +1259,19 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 83 + + + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. + In the meantime, we want to test different ideas related to this issue: + + + PeerTube oso berria da oraindik, eta egonkortzen denerako babes-neurri egokienak ezarri nahi ditugu. + Bitartean, hainbat ideia saiatu nahi ditugu gai honen inguruan: + + + 85 + + Set a limit to the number of peers sent by the tracker Tracker-ak bidaltzen dituen berdin kopurua mugatzea @@ -1984,6 +2017,20 @@ Erabiltzaile berriek izena ematea ez da onartzen orain. 133 + + User's email must be verified to login + Erabiltzailearen e-mail helbidea baieztatu behar da saioa hasi aurretik + + 70 + + + + User's email is verified / User can login without email verification + Erabiltzailearen e-mail helbidea baieztatuta dago / Erabiltzaileak e-mail helbidea baieztatu gabe saioa hasi dezake + + 74 + + Ban reason: Debekatzeko arrazoia: @@ -2465,6 +2512,13 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin 3 + + Use WebTorrent to exchange parts of the video with others + Erabili WebTorrent bideoaren zatiak besteekin partekatzeko + + 21 + + Automatically plays video Automatikoki abiatzen du bideoa @@ -2507,6 +2561,13 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin 18 + + Once you delete your account, there is no going back. Please be certain. + Behin kontua ezabatuta ez dago atzera egiterik. Ziurtatu hau dela nahi duzuna. + + 2 + + Delete your account Ezabatu zure kontua @@ -2621,6 +2682,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 159 + + Sorry, but something went wrong + Akatsen bat egon da + + 49 + + Congratulations, the video behind will be imported! You can already add information about this video. @@ -2885,6 +2953,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 159 + + Will be created on update + Eguneratzean sortuko da + + 167 + + Cancel create Ezeztatu sorkuntza @@ -2892,6 +2967,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 169 + + Will be deleted on update + Eguneratzean ezabatuko da + + 175 + + Cancel deletion Ezeztatu ezabaketa @@ -2899,6 +2981,17 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 177 + + + No captions for now. + + + Azpititulurik ez oraingoz. + + + 182 + + Captions Azpitituluak @@ -3337,6 +3430,24 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 20 + + You are one step away from commenting + Iruzkina egitetik urrats batera zaude + + 28 + + + + + If you have an account on this instance, you can login: + + + Instantzia honetan kontua baduzu, saioa hasi dezakezu: + + + 32 + + login to comment hasi saioa iruzkinak egiteko @@ -3344,6 +3455,15 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 35 + + + If you have an account on Mastodon or Pleroma, you can open it directly in their interface: + + Mastodon edo Pleroma sareetan kontua baduzu, zuzenean ireki dezakezu hango interfazean: + + 41 + + Highlighted comment Nabarmendutako iruzkina @@ -3596,6 +3716,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Account unmuted by your instance. + kontua zure instantziak desmutututa. + + 1 + + + + Instance unmuted by your instance. + instantzia zure instantziak demutututa. + + 1 + + Comment updated. Iruzkina eguneratua. @@ -3687,6 +3821,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Set Email as Verified + Ezarri e-maila baieztatua gisa + + 1 + + You cannot ban root. Ezin duzu root debekatu @@ -3694,6 +3835,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Do you really want to unban users? + Ziur erabiltzaileei debekua kendu nahi diozula? + + 1 + + + + users unbanned. + erabiltzaileei debekua kendu zaie. + + 1 + + You cannot delete root. Ezin duzu erroa ezabatu. @@ -3708,6 +3863,34 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + users deleted. + erabiltzaile ezabatuta. + + 1 + + + + users email set as verified. + erabiltzailearen e-mail helbidea baieztatua gisa ezarri da. + + 1 + + + + Account unmuted. + kontua desmutututa. + + 1 + + + + Instance unmuted. + instantzia desmutututa. + + 1 + + Ownership accepted Jabetza onartuta @@ -3722,6 +3905,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + You current password is invalid. + Zure uneko pasahitza baliogabea da. + + 1 + + Are you sure you want to delete your account? This will delete all you data, including channels, videos etc. Ziur kontua ezabatu nahi duzula? Honek zure datu guztiak ezabatuko ditu, kanalak, bideoak eta abar barne. @@ -3932,6 +4122,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Toggle the left menu + Txandakatu ezkerreko menua + + 1 + + Go to the videos overview page Joan bideoen ikuspegi orokorraren orrira @@ -3939,6 +4136,69 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Go to the trending videos page + Joan puri-purian dauden bideoen orrira + + 1 + + + + Go to the recently added videos page + Joan gehitutako azken bideoen orrira + + 1 + + + + Go to the local videos page + Joan bideo lokalen orrira + + 1 + + + + Go to the videos upload page + Joan bideoak igotzeko orrira + + 1 + + + + Toggle Dark theme + Txandakatu gai iluna + + 1 + + + + Go to my subscriptions + Joan nire harpidetzetara + + 1 + + + + Go to my videos + Joan nire bideoetara + + 1 + + + + Go to my imports + Joan nire inportazioetara + + 1 + + + + Go to my channels + Joan nire kanaletara + + 1 + + Cannot retrieve OAuth Client credentials: . @@ -3969,6 +4229,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Keyboard Shortcuts: + Teklatu laster-bideak: + + 1 + + Incorrect username or password. Erabiltzaile-izen edo pasahitz okerra. @@ -4326,6 +4593,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Description cannot be more than 1000 characters long. + Deskripzioa ezin da 1000 karaktere baino luzeagoa izan. + + 1 + + You must to agree with the instance terms in order to registering on it. Instantziaren baldintzak onartu behar dituzu bertan izena emateko. @@ -5103,6 +5377,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + users banned. + erabiltzaile debekatuta. + + 1 + + User banned. erabiltzailea debekatuta. @@ -5124,6 +5405,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + If you remove this user, you will not be able to create another with the same username! + Erabiltzaile hau kentzen baduzu, ezin izango duzu erabiltzaile-izen bera duen beste bat sortu gero! + + 1 + + User deleted. erabiltzailea ezabatuta. @@ -5131,6 +5419,13 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + User email set as verified + erabiltzailearen e-mail helbidea baieztatua gisa ezarri da + + 1 + + Account muted. kontua mutututa. @@ -5138,6 +5433,41 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Instance muted. + instantzia mutututa. + + 1 + + + + Account muted by the instance. + kontua instantziak mutututa. + + 1 + + + + Account unmuted by the instance. + kontua instantziak desmutututa. + + 1 + + + + Instance muted by the instance. + instantzia instantziak mutututa. + + 1 + + + + Instance unmuted by the instance. + kontua instantziak desmutututa. + + 1 + + Mute this account Mututu kontu hau @@ -5278,6 +5608,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Welcome! Now please check your emails to verify your account and complete signup. + Ongi etorri! Egiaztatu zure e-maila kontua baieztatzeko eta izen ematea osatzeko. + + 1 + + + + You are now logged in as ! + gisa hasi duzu saioa! + + 1 + + Video to import updated. Inportatzeko bideoa eguneratuta. @@ -5327,6 +5671,20 @@ Ezin izan dugu bilatzen duzun orria aurkitu. 1 + + Your video quota is exceeded with this video (video size: , used: , quota: ) + Zure bideo-kuota bideo honekin gainditzen da (bideoaren tamaina: , erabilita: , kuota: ) + + 1 + + + + Your daily video quota is exceeded with this video (video size: , used: , quota: ) + Zure eguneko bideo-kuota bideo honekin gainditzen da (bideoaren tamaina: , erabilita: , kuota: ) + + 1 + + Video published. Bideoa argitaratuta. diff --git a/client/src/locale/target/angular_it_IT.xml b/client/src/locale/target/angular_it_IT.xml index dea48b4a7..2f5178484 100644 --- a/client/src/locale/target/angular_it_IT.xml +++ b/client/src/locale/target/angular_it_IT.xml @@ -613,6 +613,19 @@ 6 + + + Filters + + + + Filtri + + + + 16 + + No results found @@ -1646,6 +1659,21 @@ </pre> + + Scrivi direttamente codice CSS .Esempio:<br /> + <pre> + body + background-color: red; + + </pre> + + Precedi con <em>#custom-css</em> per sovrascrivere stili. Esempio: + <pre> + #custom-css .logged-in-email + color: red; + + </pre> + 297 @@ -1901,6 +1929,10 @@ Transcoding is enabled on server. The video quota only take in account original video. At most, this user could use ~ . + + Il Transcoding e abilitato sul server. La quota video considera solo originale video. + In totale, questo utente potrebbe usare ~ . + 65 @@ -2292,6 +2324,8 @@ Short text to tell people how they can support your channel (membership platform...).<br /><br /> When you will upload a video in this channel, the video support field will be automatically filled by this text. + Breve testo per dire alla gente come possono supportare il tuo canale (iscrizione piattaforma...).<br /><br /> +Quando tu carichi un video su questo canale. il campo di supporto per il video verra riempito con questo testo. 52 @@ -2970,6 +3004,9 @@ When you will upload a video in this channel, the video support field will be au The url is not secured (no HTTPS), so the embed video won't work on HTTPS websites (web browsers block non secured HTTP requests on HTTPS websites). + + L'url non è sicuro (no HTTPS), quindi il video "incluso" non funzionerà su siti HTTPS (il browser blocca richieste verso siti HTTP su siti in cui HTTPS è abilitato). + 45 @@ -2992,6 +3029,9 @@ When you will upload a video in this channel, the video support field will be au The video is being imported, it will be available when the import is finished. + + Il video è nella fase di import, sarà disponibile quando l'import sarà completato. + 11 @@ -3028,6 +3068,9 @@ When you will upload a video in this channel, the video support field will be au Published - views + + Pubblicato - visioni + 37 @@ -3297,6 +3340,20 @@ Altri video 1 + + 240p + 240p + + 1 + + + + 360p + 360p + + 1 + + SuccessSuccess 1 @@ -3316,6 +3373,48 @@ Altri video 1 + + 100MB + 100MB + + 1 + + + + 500MB + 500MB + + 1 + + + + 1GB + 1GB + + 1 + + + + 5GB + 5GB + + 1 + + + + 20GB + 20GB + + 1 + + + + 50GB + 50GB + + 1 + + 10MB 10MB @@ -3400,6 +3499,13 @@ Altri video 1 + + enabled + attivato + + 1 + + disabled disabilitato @@ -3421,6 +3527,13 @@ Altri video 1 + + Delete this report + Elimina questa segnalazione + + 1 + + Update moderation comment Modifica commento di moderazione @@ -3442,6 +3555,13 @@ Altri video 1 + + Do you really want to delete this abuse report? + Vuoi veramente eliminare questa segnalazione di abuso? + + 1 + + Abuse deleted.Abuse deleted. 1 @@ -3501,6 +3621,13 @@ Altri video 1 + + users deleted. + utenti eliminati. + + 1 + + Ownership acceptedOwnership accepted 1 @@ -3576,6 +3703,13 @@ Altri video 1 + + This name already exists on this instance. + Questo nome esiste già nell'istanza. + + 1 + + Create Crea @@ -3705,6 +3839,13 @@ Altri video 1 + + Go to the videos overview page + Vai alla pagina di anteprima dei video + + 1 + + Cannot retrieve OAuth Client credentials: . diff --git a/client/src/locale/target/angular_oc.xml b/client/src/locale/target/angular_oc.xml index c353ead7a..26ff5264e 100644 --- a/client/src/locale/target/angular_oc.xml +++ b/client/src/locale/target/angular_oc.xml @@ -1578,6 +1578,17 @@ 198 + + If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> + If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> + Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. + Se vòstra instància es mesa en lista blanca per Twitter, un lector vidèo serà integrat pel fil Twitter sul partatge d’una vidèo PeerTube.<br /> + Se l’instància es pas en lista blanca, utilizam un imatge amb un ligam que mena a l’instància PeerTube.<br /><br /> + Clicatz aquesta bóstia, salvagardatz la configuracion e ensajatz amb l’URL d’una vidèo de vòstra instància (https://exemple.com/videos/watch/blabla) sus <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> per veire se vòstra instància es en lista blanca. + + 199 + + Services Servicis @@ -2022,6 +2033,20 @@ 133 + + User's email must be verified to login + Lo corrièl de l’utilizaire deu èsser verificat abans la connexion + + 70 + + + + User's email is verified / User can login without email verification + Lo corrièl de l’utilizaire es verificat / Pòt se connectar sens verificacion de l’adreça + + 74 + + Ban reason: Rason del bandiment : @@ -2680,6 +2705,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 159 + + Sorry, but something went wrong + O planhèm, quicòm a trucat + + 49 + + Congratulations, the video behind will be imported! You can already add information about this video. @@ -3836,6 +3868,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Set Email as Verified + Passar l’adreça coma verificada + + 1 + + You cannot ban root. Podètz pas fòrabandir lo root. @@ -3878,6 +3917,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + users email set as verified. + adreças d’utilizaires passadas coma verificadas. + + 1 + + Account unmuted. Compte pas mai mut. @@ -5420,6 +5466,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + User email set as verified + L’adreça a es passada coma verificada + + 1 + + Account muted. Lo compte es mut. @@ -5602,6 +5655,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto 1 + + Welcome! Now please check your emails to verify your account and complete signup. + La benvenguda ! Ara volgatz ben verificar vòstres corrièls per confirmar vòstre compte e acabar l’inscripcion. + + 1 + + + + You are now logged in as ! + Sètz ara connectat coma ! + + 1 + + Video to import updated. Vidèo d’importar actualizada diff --git a/client/src/locale/target/angular_pl_PL.xml b/client/src/locale/target/angular_pl_PL.xml index fd6e03469..e8494997a 100644 --- a/client/src/locale/target/angular_pl_PL.xml +++ b/client/src/locale/target/angular_pl_PL.xml @@ -1601,6 +1601,10 @@ Transcoding is enabled on server. The video quota only take in account original video. At most, this user could use ~ . + + Transcoding is enabled on server. The video quota only take in account original video. + At most, this user could use ~ . + 65 diff --git a/client/src/locale/target/angular_sv_SE.xml b/client/src/locale/target/angular_sv_SE.xml index e30575d80..eadcfa444 100644 --- a/client/src/locale/target/angular_sv_SE.xml +++ b/client/src/locale/target/angular_sv_SE.xml @@ -5550,6 +5550,20 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt 1 + + Welcome! Now please check your emails to verify your account and complete signup. + Välkommen! Kontrollera gärna din e-post för att verifiera ditt konto och fullfölja kontoskapandet. + + 1 + + + + You are now logged in as ! + Du är nu inloggad som ! + + 1 + + Video to import updated. Videon att importera har uppdaterats. diff --git a/client/src/locale/target/angular_zh_Hant_TW.xml b/client/src/locale/target/angular_zh_Hant_TW.xml index 4779d9cc8..028520a6e 100644 --- a/client/src/locale/target/angular_zh_Hant_TW.xml +++ b/client/src/locale/target/angular_zh_Hant_TW.xml @@ -1538,6 +1538,17 @@ 198 + + If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.<br /> + If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.<br /><br /> + Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> to see if you instance is whitelisted. + 如果您的實體在 Twitter 的白名單裡面,PeerTube 的影片分享將會在 Twitter 的推文中嵌入影片播放器。<br /> + 如果實體不在白名單中,我們會使用一張圖片連結卡片並重新導向至您的 PeerTube 實體。<br /><br /> + 在此勾選框打勾,儲存設定並使用您實體的影片 URL (https://example.com/videos/watch/blabla)在 <a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'>https://cards-dev.twitter.com/validator</a> 上測試以檢視您的實體是否在白名單內。 + + 199 + + Services 服務 @@ -1972,6 +1983,20 @@ 133 + + User's email must be verified to login + 使用者的電子郵件必須驗證過才能登入 + + 70 + + + + User's email is verified / User can login without email verification + 使用者的電子郵件已驗證/使用者可以不透過電子郵件驗證登入 + + 74 + + Ban reason: 阻擋理由: @@ -2628,6 +2653,13 @@ When you will upload a video in this channel, the video support field will be au 159 + + Sorry, but something went wrong + 抱歉,不過好像有什麼東西出錯了 + + 49 + + Congratulations, the video behind will be imported! You can already add information about this video. @@ -3778,6 +3810,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + Set Email as Verified + 設定電子郵件為已驗證 + + 1 + + You cannot ban root. 您不能阻擋 root。 @@ -3820,6 +3859,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + users email set as verified. + 個使用者電子郵件設定為已驗證。 + + 1 + + Account unmuted. 帳號 已解除靜音。 @@ -5362,6 +5408,13 @@ When you will upload a video in this channel, the video support field will be au 1 + + User email set as verified + 使用者 的電子郵件設定為已驗證 + + 1 + + Account muted. 帳號 已解除靜音。 @@ -5544,6 +5597,20 @@ When you will upload a video in this channel, the video support field will be au 1 + + Welcome! Now please check your emails to verify your account and complete signup. + 歡迎!現在請檢查您的電子郵件以驗證您的帳號並完成註冊。 + + 1 + + + + You are now logged in as ! + 您現在登入為 + + 1 + + Video to import updated. 要匯入的影片已更新。 diff --git a/client/src/locale/target/iso639_pl_PL.xml b/client/src/locale/target/iso639_pl_PL.xml deleted file mode 100644 index b483f5ce8..000000000 --- a/client/src/locale/target/iso639_pl_PL.xml +++ /dev/null @@ -1,695 +0,0 @@ - - - - - - - Afar - Afar - - - Abkhazian - Abchaski - - - Afrikaans - Afrikaans - - - Akan - Akan - - - Amharic - Amharski - - - Arabic - Arabski - - - Aragonese - - - American Sign Language - Amerykański Język Migowy - - - Assamese - - - Avaric - Awarski - - - Kotava - - - Aymara - - - Azerbaijani - - - Bashkir - Baszkirski - - - Bambara - Bambara - - - Belarusian - Białoruski - - - Bengali - Bengalski - - - British Sign Language - Brytyjski Język Migowy - - - Bislama - Bislama - - - Tibetan - Tybetański - - - Bosnian - Bośniacki - - - Breton - Bretoński - - - Bulgarian - Bułgarski - - - Brazilian Sign Language - - - Catalan - Kataloński - - - Czech - Czeski - - - Chamorro - - - Chechen - - - Chuvash - - - Cornish - Kornijski - - - Corsican - Korsykański - - - Cree - Kri - - - Czech Sign Language - Czeski Język Migowy - - - Chinese Sign Language - Chiński Język Migowy - - - Welsh - Walijski - - - Danish - Duński - - - German - Niemiecki - - - Dhivehi - - - Danish Sign Language - Duński Język Migowy - - - Dzongkha - Dzongkha - - - Modern Greek (1453-) - Nowogrecki (1453-) - - - English - Angielski - - - Esperanto - - - Estonian - Estoński - - - Basque - Baskijski - - - Ewe - Ewe - - - Faroese - - - Persian - Perski - - - Fijian - Fidżyjski - - - Finnish - Fiński - - - French - Francuski - - - Western Frisian - - - French Sign Language - Francuski Język Migowy - - - Fulah - Ful - - - Scottish Gaelic - - - Irish - Irlandzki - - - Galician - Galicyjski - - - Manx - - - Guarani - - - German Sign Language - Niemiecki Język Migowy - - - Gujarati - - - Haitian - - - Hausa - Hausa - - - Serbo-Croatian - Serbsko-Chorwacki - - - Hebrew - - - Herero - - - Hindi - Hindi - - - Hiri Motu - - - Croatian - Chorwacki - - - Hungarian - Węgierski - - - Armenian - Ormański - - - Igbo - Igbo - - - Sichuan Yi - - - Inuktitut - - - Indonesian - Indonezyjski - - - Inupiaq - - - Icelandic - Islandzki - - - Italian - Włoski - - - Javanese - Jawajski - - - Lojban - - - Japanese - Japoński - - - Japanese Sign Language - Japoński Język Migowy - - - Kalaallisut - - - Kannada - - - Kashmiri - - - Georgian - - - Kanuri - - - Kazakh - - - Khmer - - - Kikuyu - - - Kinyarwanda - - - Kirghiz - - - Komi - Komi - - - Kongo - Kongo - - - Korean - Koreański - - - Kuanyama - - - Kurdish - Kurdyjski - - - Lao - Laotański - - - Latvian - Łotewski - - - Limburgan - - - Lingala - - - Lithuanian - Litewski - - - Luxembourgish - Luksemburski - - - Luba-Katanga - - - Ganda - - - Marshallese - - - Malayalam - - - Marathi - - - Macedonian - - - Malagasy - - - Maltese - - - Mongolian - - - Maori - - - Malay (macrolanguage) - - - Burmese - - - Nauru - Naurański - - - Navajo - - - South Ndebele - - - North Ndebele - - - Ndonga - - - Nepali (macrolanguage) - - - Dutch - Holenderski - - - Norwegian Nynorsk - Norweski Nynorsk - - - Norwegian Bokmål - Norweski Bokmål - - - Norwegian - Norweski - - - Nyanja - - - Occitan - - - Ojibwa - - - Oriya (macrolanguage) - - - Oromo - Oromo - - - Ossetian - - - Panjabi - - - Pakistan Sign Language - - - Polish - Polski - - - Portuguese - Portugalski - - - Pushto - Paszto - - - Quechua - - - Romansh - Romansz - - - Romanian - Rumuński - - - Russian Sign Language - Rosyjski Język Migowy - - - Rundi - Rundi - - - Russian - Rosyjski - - - Sango - Sango - - - Saudi Arabian Sign Language - - - South African Sign Language - - - Sinhala - - - Slovak - Słowacki - - - Slovenian - Słoweński - - - Northern Sami - - - Samoan - Samoański - - - Shona - Shona - - - Sindhi - Sindhi - - - Somali - Somalijski - - - Southern Sotho - - - Spanish - Hiszpański - - - Albanian - - - Sardinian - - - Serbian - Serbski - - - Swati - - - Sundanese - - - Swahili (macrolanguage) - - - Swedish - Szwedzki - - - Swedish Sign Language - Szwedzki Język Migowy - - - Tahitian - - - Tamil - Tamilski - - - Tatar - Tatarski - - - Telugu - Telugu - - - Tajik - Tadżycki - - - Tagalog - Tagalski - - - Thai - Tajski - - - Tigrinya - - - Klingon - - - Tonga (Tonga Islands) - - - Tswana - - - Tsonga - - - Turkmen - Turkmeński - - - Turkish - Turecki - - - Twi - Twi - - - Uighur - - - Ukrainian - Ukraiński - - - Urdu - Urdu - - - Uzbek - Uzbecki - - - Venda - Venda - - - Vietnamese - Wietnamski - - - Walloon - Waloński - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Yiddish - Jidysz - - - Yoruba - Joruba - - - Zhuang - Zhuang - - - Chinese - Chiński - - - Zulu - Zulu - - - \ No newline at end of file diff --git a/client/src/locale/target/player_ar_001.xml b/client/src/locale/target/player_ar_001.xml index f81c084d4..4e3a12ad7 100644 --- a/client/src/locale/target/player_ar_001.xml +++ b/client/src/locale/target/player_ar_001.xml @@ -81,7 +81,7 @@ Subtitles - ترجمة + الترجمات subtitles off diff --git a/client/src/locale/target/player_it_IT.json b/client/src/locale/target/player_it_IT.json new file mode 100644 index 000000000..add193bfe --- /dev/null +++ b/client/src/locale/target/player_it_IT.json @@ -0,0 +1 @@ +{"Audio Player":"Riproduttore Audio","Video Player":"Riproduttore Video","Play":"Play","Pause":"Pausa","Replay":"Replay","Current Time":"Posizione attuale","Duration":"Durata","Remaining Time":"Tempo rimanente","Stream Type":"Tipo dello Streaming","LIVE":"LIVE","Loaded":"Caricato","Progress":"Stato","Progress Bar":"Barra di progresso","progress bar timing: currentTime={1} duration={2}":"{1} di {2}","Fullscreen":"Schermo intero","Non-Fullscreen":"Chiudi schermo intero","Mute":"Muto","Unmute":"Audio ","Playback Rate":"Velocità di riproduzione","Subtitles":"Sottotitoli","subtitles off":"Senza sottotitoli","Captions":"Sottotitoli per non udenti","captions off":"Senza sottotitoli per non udenti","Chapters":"Capitoli","Descriptions":"Descrizioni","descriptions off":"Descrizioni disattivate","Audio Track":"Traccia Audio","Volume Level":"Volume","You aborted the media playback":"La riproduzione del filmato è stata interrotta","A network error caused the media download to fail part-way.":"Il download del filmato è stato interrotto a causa di un problema rete.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Il filmato non può essere caricato a causa di un errore nel server o nella rete o perché il formato non viene supportato.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"La riproduzione del filmato è stata interrotta a causa di un file danneggiato o per l’utilizzo di impostazioni non supportate dal browser.","No compatible source was found for this media.":"Non ci sono fonti compatibili per questo filmato.","The media is encrypted and we do not have the keys to decrypt it.":"Il filmato è crittato e non disponiamo delle chiavi per decrittarlo","Play Video":"Riproduci Video","Close":"Chiudi","Close Modal Dialog":"Chiudi finestra di dialogo","Modal Window":"Finestra di dialogo","This is a modal window":"Questa è una finestra di dialogo","This modal can be closed by pressing the Escape key or activating the close button.":"Questa finestra di dialogo può essere chiusa premendo Esc o cliccando sul pulsante chiudi.",", opens captions settings dialog":", apri la finestra delle impostazioni delle didascalie",", opens subtitles settings dialog":", apri la finestra delle impostazioni dei sottotitoli",", opens descriptions settings dialog":", apri la finestra delle impostazioni delle descrizioni",", selected":", selezionati","captions settings":"impostazioni delle didascalie","subtitles settings":"impostazioni dei sottotitoli","descriptions settings":"impostazioni delle descrizioni","Text":"Testo","White":"Bianco","Black":"Nero","Red":"Rosso","Green":"Verde","Blue":"Blu","Yellow":"Giallo","Magenta":"Magenta","Cyan":"Ciano","Background":"Sfondo","Window":"Finestra","Transparent":"Trasparente","Semi-Transparent":"Semi-Trasparente","Opaque":"Opaco","Font Size":"Dimensione del Testo","Text Edge Style":"Stile dei Bordi del Testo","None":"Nessuno","Raised":"In Rilievo","Depressed":"Incavato","Uniform":"Uniforme","Dropshadow":"Ombreggiatura","Font Family":"Stile del Testo","Proportional Sans-Serif":"Senza Grazie Proporzionale","Monospace Sans-Serif":"Senza Grazie Monospazio","Proportional Serif":"Con Grazie Proporzionale","Monospace Serif":"Con Grazie Monospazio","Casual":"Casuale","Script":"Codice","Small Caps":"Maiuscoletto","Reset":"Ripristina","restore all settings to the default values":"ripristina tutte le impostazioni ai valori predefiniti","Done":"Fatto","Caption Settings Dialog":"Finestra delle Impostazioni dei Sottotitoli","Beginning of dialog window. Escape will cancel and close the window.":"Apertura della finestra di dialogo. Premendo ESC si annullerà e si chiuderà la finestra.","End of dialog window.":"Chiusura della finestra di dialogo.","{1} is loading.":"{1} è in caricamento.","Quality":"Qualità","Auto":"Auto","Speed":"Velocità","Subtitles/CC":"Sottotitoli/CC","peers":"nodi","Go to the video page":"Vai alla pagina del video","Settings":"Impostazioni","Uses P2P, others may know you are watching this video.":"Usa P2P, altri potrebbero sapere che stai guardando questo video.","Copy the video URL":"Copia l'URL del video","Copy the video URL at the current time":"Copia l'URL del video della posizione corrente","Copy embed code":"Copia il codice per incorporare"} \ No newline at end of file diff --git a/client/src/locale/target/player_pl_PL.json b/client/src/locale/target/player_pl_PL.json new file mode 100644 index 000000000..2178a137d --- /dev/null +++ b/client/src/locale/target/player_pl_PL.json @@ -0,0 +1 @@ +{"Audio Player":"Odtwarzacz audio","Video Player":"Odtwarzacz wideo","Play":"Odtwórz","Pause":"Wstrzymaj","Replay":"Powtórz","Current Time":"Obecny czas","Duration":"Czas trwania","Remaining Time":"Pozostały czas","Stream Type":"Rodzaj strumienia","LIVE":"NA ŻYWO","Loaded":"Załadowano","Progress":"Postęp","Progress Bar":"Pasek postępu","progress bar timing: currentTime={1} duration={2}":"{1} z {2}","Fullscreen":"Pełny ekran","Non-Fullscreen":"Bez pełnego ekranu","Mute":"Wycisz","Unmute":"Cofnij wyciszenie","Playback Rate":"Szybkość odtwarzania","Subtitles":"Napisy","subtitles off":"napisy są wyłączone","Captions":"CC","captions off":"CC są wyłączone","Chapters":"Rozdziały","Descriptions":"Opisy","descriptions off":"opisy są wyłączone","Audio Track":"Ścieżka dźwiękowa","Volume Level":"Poziom głośności","You aborted the media playback":"Przerwałeś odtwarzanie zawartości mulimedialnej","A network error caused the media download to fail part-way.":"Błąd sieci spowodował, że zawartość multimedialna została pobrana tylko częściowo.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Nie udało się załadować zawartości multimedialnej z powodu błędy sieci lub serwera lub ponieważ format nie jest obsługiwany.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Odtwarzanie zostało przerwane ze względu na uszkodzenie pliku lub przez brak wsparcia funkcji multimediów przez Twoją przeglądarkę.","No compatible source was found for this media.":"Nie znaleziono kompatybilnego źródła dla tego media.","The media is encrypted and we do not have the keys to decrypt it.":"Zawartość multimedialna jest zaszyfrowana, a klucz do jej odszyfrowania jest nieznany.","Play Video":"Odtwórz film","Close":"Zamknij","Close Modal Dialog":"Zamknij okno modalne","Modal Window":"Okno modalne","This is a modal window":"To jest okno modalne","This modal can be closed by pressing the Escape key or activating the close button.":"To okno może zostać zamknięte klawiszem Escape lub przyciskiem zamykania.",", opens captions settings dialog":", otwiera okno ustawień CC",", opens subtitles settings dialog":", otwiera okno ustawień napisów",", opens descriptions settings dialog":", otwiera okno ustawień opisów",", selected":", zaznaczone","captions settings":"ustawienia CC","subtitles settings":"ustawienia napisów","descriptions settings":"ustawienia opisów","Text":"Tekst","White":"Biały","Black":"Czarny","Red":"Czerwony","Green":"Zielony","Blue":"Niebieski","Yellow":"Żółty","Magenta":"Magenta","Cyan":"Cyjanowy","Background":"Tło","Window":"Okno","Transparent":"Przezroczyste","Semi-Transparent":"Półprzezroczyste","Opaque":"Widoczne","Font Size":"Rozmiar czcionki","Text Edge Style":"Styl krawędzi tekstu","None":"Brak","Raised":"Wypukłe","Depressed":"Wgłębione","Uniform":"Jednolity","Dropshadow":"Cień","Font Family":"Rodzina czcionek","Proportional Sans-Serif":"Proporcjonalne bezszeryfowe","Monospace Sans-Serif":"Bezszeryfowe o stałej szerokości","Proportional Serif":"Proporcjonalne szeryfowe","Monospace Serif":"Szeryfowe o stałej szerokości","Casual":"Ozdobne","Script":"Pismo odręczne","Small Caps":"Kapitaliki","Reset":"Resetuj","restore all settings to the default values":"przywróć wszystkie ustawienia do wartości domyślnych","Done":"Gotowe","Caption Settings Dialog":"Okno ustawień napisów","Beginning of dialog window. Escape will cancel and close the window.":"Początek okna dialogowego. Przycisk Escape anuluje i zamknie okno.","End of dialog window.":"Koniec okna dialogowego.","{1} is loading.":"{1} ładuje się.","Quality":"Jakość","Auto":"Automatyczna","Speed":"Prędkość","Subtitles/CC":"Napisy/CC","peers":"peers","Go to the video page":"Przejdź na stronę filmu","Settings":"Ustawienia","Uses P2P, others may know you are watching this video.":"Korzysta z P2P, inni mogą dowiedzieć się, że oglądasz ten film.","Copy the video URL":"Skopiuj adres URL filmu","Copy the video URL at the current time":"Skopiuj adres URL filmu z obecnym czasem","Copy embed code":"Skopiuj kod do osadzenia"} \ No newline at end of file diff --git a/client/src/locale/target/player_pl_PL.xml b/client/src/locale/target/player_pl_PL.xml deleted file mode 100644 index 2affa5948..000000000 --- a/client/src/locale/target/player_pl_PL.xml +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - Audio Player - Odtwarzacz audio - - - Video Player - Odtwarzacz wideo - - - Play - Odtwórz - - - Pause - Wstrzymaj - - - Replay - Powtórz - - - Current Time - Obecny czas - - - Duration - Czas trwania - - - Remaining Time - Pozostały czas - - - Stream Type - Rodzaj strumienia - - - LIVE - NA ŻYWO - - - Loaded - Załadowano - - - Progress - Postęp - - - Progress Bar - Pasek postępu - - - {1} of {2} - {1} z {2} - - - Fullscreen - Pełny ekran - - - Non-Fullscreen - Bez pełnego ekranu - - - Mute - Wycisz - - - Unmute - Cofnij wyciszenie - - - Playback Rate - Szybkość odtwarzania - - - Subtitles - Napisy - - - subtitles off - napisy są wyłączone - - - Captions - CC - - - captions off - CC są wyłączone - - - Chapters - Rozdziały - - - Descriptions - Opisy - - - descriptions off - opisy są wyłączone - - - Audio Track - Ścieżka dźwiękowa - - - Volume Level - Poziom głośności - - - You aborted the media playback - Przerwałeś odtwarzanie zawartości mulimedialnej - - - A network error caused the media download to fail part-way. - Błąd sieci spowodował, że zawartość multimedialna została pobrana tylko częściowo. - - - The media could not be loaded, either because the server or network failed or because the format is not supported. - Nie udało się załadować zawartości multimedialnej z powodu błędy sieci lub serwera lub ponieważ format nie jest obsługiwany. - - - The media playback was aborted due to a corruption problem or because the media used features your browser did not support. - Odtwarzanie zostało przerwane ze względu na uszkodzenie pliku lub przez brak wsparcia funkcji multimediów przez Twoją przeglądarkę. - - - No compatible source was found for this media. - Nie znaleziono kompatybilnego źródła dla tego media. - - - The media is encrypted and we do not have the keys to decrypt it. - Zawartość multimedialna jest zaszyfrowana, a klucz do jej odszyfrowania jest nieznany. - - - Play Video - Odtwórz film - - - Close - Zamknij - - - Close Modal Dialog - Zamknij okno modalne - - - Modal Window - Okno modalne - - - This is a modal window - To jest okno modalne - - - This modal can be closed by pressing the Escape key or activating the close button. - To okno może zostać zamknięte klawiszem Escape lub przyciskiem zamykania. - - - , opens captions settings dialog - , otwiera okno ustawień CC - - - , opens subtitles settings dialog - , otwiera okno ustawień napisów - - - , opens descriptions settings dialog - , otwiera okno ustawień opisów - - - , selected - , zaznaczone - - - captions settings - ustawienia CC - - - subititles settings - ustawienia napisów - - - descriptions settings - ustawienia opisów - - - Text - Tekst - - - White - Biały - - - Black - Czarny - - - Red - Czerwony - - - Green - Zielony - - - Blue - Niebieski - - - Yellow - Żółty - - - Magenta - Magenta - - - Cyan - Cyjanowy - - - Background - Tło - - - Window - Okno - - - Transparent - Przezroczyste - - - Semi-Transparent - Półprzezroczyste - - - Opaque - Widoczne - - - Font Size - Rozmiar czcionki - - - Text Edge Style - Styl krawędzi tekstu - - - None - Brak - - - Raised - Wypukłe - - - Depressed - Wgłębione - - - Uniform - Jednolity - - - Dropshadow - Cień - - - Font Family - Rodzina czcionek - - - Proportional Sans-Serif - Proporcjonalne bezszeryfowe - - - Monospace Sans-Serif - Bezszeryfowe o stałej szerokości - - - Proportional Serif - Proporcjonalne szeryfowe - - - Monospace Serif - Szeryfowe o stałej szerokości - - - Casual - Ozdobne - - - Script - Pismo odręczne - - - Small Caps - Kapitaliki - - - Reset - Resetuj - - - restore all settings to the default values - przywróć wszystkie ustawienia do wartości domyślnych - - - Done - Gotowe - - - Caption Settings Dialog - Okno ustawień napisów - - - Beginning of dialog window. Escape will cancel and close the window. - Początek okna dialogowego. Przycisk Escape anuluje i zamknie okno. - - - End of dialog window. - Koniec okna dialogowego. - - - {1} is loading. - {1} ładuje się. - - - Quality - Jakość - - - Auto - Automatyczna - - - Speed - Prędkość - - - Subtitles/CC - Napisy/CC - - - peers - peers - - - Go to the video page - Przejdź na stronę filmu - - - Settings - Ustawienia - - - Uses P2P, others may know you are watching this video. - Korzysta z P2P, inni mogą dowiedzieć się, że oglądasz ten film. - - - Copy the video URL - Skopiuj adres URL filmu - - - Copy the video URL at the current time - Skopiuj adres URL filmu z obecnym czasem - - - Copy embed code - Skopiuj kod do osadzenia - - - \ No newline at end of file diff --git a/client/src/locale/target/player_ru_RU.json b/client/src/locale/target/player_ru_RU.json new file mode 100644 index 000000000..e2d8d4980 --- /dev/null +++ b/client/src/locale/target/player_ru_RU.json @@ -0,0 +1 @@ +{"Audio Player":"Аудиоплеер","Video Player":"Видеоплеер","Play":"Воспроизвести","Pause":"Пауза","Replay":"Воспроизвести снова","Current Time":"Текущий момент","Duration":"Продолжительность","Remaining Time":"Оставшееся время","Stream Type":"Тип потока","LIVE":"Прямой эфир","Loaded":"Загружено","Progress":"Ход выполнения","Progress Bar":"Индикатор выполнения","progress bar timing: currentTime={1} duration={2}":"{1} из {2}","Fullscreen":"Полный экран","Non-Fullscreen":"Окно","Mute":"Без звука","Unmute":"Со звуком","Playback Rate":" Скорость воспроизведения","Subtitles":"Субтитры","subtitles off":"Без субтитров","Captions":"Сопроводительные надписи","captions off":"Без сопроводительных надписей","Chapters":"Главы","Descriptions":"Описание","descriptions off":"без описаний","Audio Track":"Аудиодорожка","Volume Level":"Громкость","You aborted the media playback":"Вы отменили воспроизведение медиафайла","A network error caused the media download to fail part-way.":"Ошибка сети стала причиной неудачного воспроизведения медиафайла","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Медиафайл не может быть воспроизведен: ошибки сервера или сети; или не поддерживается формат медиафайла","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Воспроизведение отменено: файл испорчен или использует инструменты, которые ваш навигатор не поддерживает ","No compatible source was found for this media.":"Не найдено совместимого источника для загружения медиафайла","The media is encrypted and we do not have the keys to decrypt it.":"Этот медиафайл зашифрован и у нас нет ключей для его расшифровки ","Play Video":"Воспроизвести видео","Close":"Закрыть","Close Modal Dialog":"Закрыть модальное диалоговое окно","Modal Window":"Модальное окно","This is a modal window":"Это модальное окно","This modal can be closed by pressing the Escape key or activating the close button.":"Это модальное окно можно закрыть нажав на кнопку Escape или на кнопку закрыть",", opens captions settings dialog":", открывает окно настроек сопроводительных надписей",", opens subtitles settings dialog":", открывает окно настроек субтитров",", opens descriptions settings dialog":", открывает окно настроек описаний",", selected":", выделено ","captions settings":"Настройки сопроводительных надписей","subtitles settings":"Настройки субтитров","descriptions settings":"Настройки описаний ","Text":"Текст","White":"Белый","Black":"Черный","Red":"Красный","Green":"Зеленый","Blue":"Синий","Yellow":"Желтый","Magenta":"Пурпурный ","Cyan":"Голубой","Background":"Фон","Window":"Окно","Transparent":"Прозрачный","Semi-Transparent":"Полупрозрачный ","Opaque":"Непрозрачный","Font Size":"Размер шрифта ","None":"Отсутствует","Uniform":"Однообразный","Dropshadow":"Падающая тень","Font Family":"Шрифт","Proportional Sans-Serif":"Пропорциональный без засечек","Monospace Sans-Serif":"Фиксированной ширины без засечек","Proportional Serif":"Пропорциональный с засечками","Monospace Serif":"Фиксированной ширины с засечками","Casual":"Свободный","Script":"рукописный шрифт","Small Caps":" Уменьшенные заглавные буквы","Reset":"Восстановить ","restore all settings to the default values":"Восстановить настройки по умолчанию ","Done":"Выполнено","Caption Settings Dialog":"Окно настроек сопроводительных надписей","Beginning of dialog window. Escape will cancel and close the window.":"Начало диалогового окна. Клавиша Escape отменит действие и закроет окно","End of dialog window.":"Конец диалогового окна","{1} is loading.":"{1} в процессе загрузки","Quality":"Качество","Auto":"Авто","Speed":"Скорость","Subtitles/CC":"Субтитры","peers":"Партнер","Go to the video page":"Перейти на страницу с видео","Settings":"Настройки","Uses P2P, others may know you are watching this video.":"Использует P2P, другие могут знать, что вы просматриваете это видео.","Copy the video URL":"Скопировать URL видео","Copy the video URL at the current time":"Скопировать URL видео на текущем моменте ","Copy embed code":"Скопировать встроенный код"} \ No newline at end of file diff --git a/client/src/locale/target/server_it_IT.json b/client/src/locale/target/server_it_IT.json new file mode 100644 index 000000000..6586f622e --- /dev/null +++ b/client/src/locale/target/server_it_IT.json @@ -0,0 +1 @@ +{"Music":"Musica","Films":"Film","Vehicles":"Veicoli","Art":"Arte","Sports":"Sport","Travels":"Viaggi","Gaming":"Giochi","People":"Persone","Comedy":"Commedia","Entertainment":"Intrattenimento","News & Politics":"Notizie & Politica","How To":"Come fare","Education":"Educazione","Activism":"Attivismo","Science & Technology":"Scienza & Tecnologia","Animals":"Animali","Kids":"Bambini","Food":"Cibo","Attribution":"Attribuzione","Attribution - Share Alike":"Attribuzione - Condividi Allo Stesso Modo","Attribution - No Derivatives":"Attribuzione - Non Opere Derivate","Attribution - Non Commercial":"Attribuzione - Non Commerciale","Attribution - Non Commercial - Share Alike":"Attribuzione - Non Commerciale - Condividi Allo Stesso Modo","Attribution - Non Commercial - No Derivatives":"Attribuzione - Non Commerciale - Non Opere Derivate","Public Domain Dedication":"Pubblico Dominio","Public":"Pubblico","Unlisted":"Non elencato","Private":"Privato","Published":"Pubblicato","To transcode":"Da codificare","To import":"Da importare","Pending":"In sospeso","Success":"Successo","Failed":"Fallito","Misc":"Altro","Unknown":"Sconosciuto","Afar":"Afar","Abkhazian":"Abcaso","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amarico","Arabic":"Arabo","Aragonese":"Aragonese","American Sign Language":"Lingua dei Segni Americana","Assamese":"Assamese","Avaric":"Avarico","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azero","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorusso","Bengali":"Bengalese","British Sign Language":"Lingua dei Segni Britannica","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosniaco","Breton":"Bretone","Bulgarian":"Bulgaro","Brazilian Sign Language":"Lingua dei Segni Brasiliana","Catalan":"Catalano","Czech":"Ceco","Chamorro":"Chamorro","Chechen":"Ceceno","Chuvash":"Ciuvascio","Cornish":"Cornico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lingua dei Segni Ceca","Chinese Sign Language":"Lingua dei Segni Cinese","Welsh":"Gallese","Danish":"Danese","German":"Tedesco","Dhivehi":"Dhivehi","Danish Sign Language":"Lingua dei Segni Danese","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greco Moderno (1453-)","English":"Inglese","Esperanto":"Esperanto","Estonian":"Estone","Basque":"Basco","Ewe":"Ewe","Faroese":"Faroese","Persian":"Persiano","Fijian":"Fijiano","Finnish":"Finlandese","French":"Francese","Western Frisian":"Frisone Occidentale","French Sign Language":"Lingua dei Segni Francese","Fulah":"Fula","Scottish Gaelic":"Gaelico Scozzese","Irish":"Irlandese","Galician":"Galiziano","Manx":"Mannese","Guarani":"Guarani","German Sign Language":"Lingua dei Segni Tedesca","Gujarati":"Gujarati","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroato","Hebrew":"Ebraico","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Croato","Hungarian":"Ungherese","Armenian":"Armeno","Igbo":"Igbo","Sichuan Yi":"Sichuan Yi","Inuktitut":"Inuktitut","Indonesian":"Indonesiano","Inupiaq":"Inupiaq","Icelandic":"Islandese","Italian":"Italiano","Javanese":"Giavanese","Lojban":"Lojban","Japanese":"Giapponese","Japanese Sign Language":"Lingua dei Segni Giapponese","Kalaallisut":"Kalaallisut","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Georgiano","Kanuri":"Kanuri","Kazakh":"Kazako","Khmer":"Khmer","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirghiso","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Curdo","Lao":"Lao","Latvian":"Lettone","Limburgan":"Limburghese","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Lussemburghese","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallese","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Macedone","Malagasy":"Malgascio","Maltese":"Maltese","Mongolian":"Mongolo","Maori":"Maori","Malay (macrolanguage)":"Malay (macrolinguaggio)","Burmese":"Birmano","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele Meridionale","North Ndebele":"Ndebele Settentrionale","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalese (macrolinguaggio)","Dutch":"Olandese","Norwegian Nynorsk":"Norvegese Nynorsk","Norwegian Bokmål":"Norvegese Bokmål","Norwegian":"Norvegese","Nyanja":"Chewa","Occitan":"Occitano","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolinguaggio)","Oromo":"Oromo","Ossetian":"Osseto","Panjabi":"Punjabi","Pakistan Sign Language":"Lingua dei Segni Pakistana","Polish":"Polacco","Portuguese":"Portoghese","Pushto":"Pashto","Quechua":"Quechua","Romansh":"Romancio","Romanian":"Romeno","Russian Sign Language":"Lingua dei Segni Russa","Rundi":"Rundi","Russian":"Russo","Sango":"Sango","Saudi Arabian Sign Language":"Lingua dei Segni dell'Arabia Saudita","South African Sign Language":"Lingua dei Segni Sudafricana","Sinhala":"Singalese","Slovak":"Slovacco","Slovenian":"Sloveno","Northern Sami":"Sami Settentrionale","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somalo","Southern Sotho":"Sotho Meridionale","Spanish":"Spagnolo","Albanian":"Albanese","Sardinian":"Sardo","Serbian":"Serbo","Swati":"Swati","Sundanese":"Sondanese","Swahili (macrolanguage)":"Swahili (macrolinguaggio)","Swedish":"Svedese","Swedish Sign Language":"Lingua dei Segni Svedese","Tahitian":"Tahitiano","Tamil":"Tamil","Tatar":"Tataro","Telugu":"Telugu","Tajik":"Tagico","Tagalog":"Tagalog","Thai":"Thai","Tigrinya":"Tigrino","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Isole delle Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turcmeno","Turkish":"Turco","Twi":"Twi","Uighur":"Uighuro","Ukrainian":"Ucraino","Urdu":"Urdu","Uzbek":"Uzbeco","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Vallone","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Cinese","Zulu":"Zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_pl_PL.json b/client/src/locale/target/server_pl_PL.json new file mode 100644 index 000000000..90973bf28 --- /dev/null +++ b/client/src/locale/target/server_pl_PL.json @@ -0,0 +1 @@ +{"Music":"Muzyka","Films":"Filmy","Vehicles":"Pojazdy","Art":"Sztuka","Sports":"Sport","Travels":"Podróże","Gaming":"Gry","People":"Ludzie","Comedy":"Komedia","Entertainment":"Rozrywka","How To":"Poradniki","Education":"Edukacja","Activism":"Aktywizm","Science & Technology":"Nauka i technologia","Animals":"Zwierzęta","Kids":"Dzieci","Food":"Jedzenie","Attribution":"Uznanie autostwa","Attribution - Share Alike":"Uznanie autorstwa - Na tych samych warunkach","Attribution - No Derivatives":"Uznanie autorstwa - Bez utworów zależnych","Attribution - Non Commercial":"Uznanie autorstwa - Użycie niekomercyjne","Attribution - Non Commercial - Share Alike":"Uznanie autorstwa - Użycie niekomercyjne - Na tych samych warunkach","Attribution - Non Commercial - No Derivatives":"Uznanie autorstwa - Użycie niekomercyjne - Bez utworów zależnych","Public Domain Dedication":"Przekazanie do Domeny Publicznej","Public":"Publiczne","Unlisted":"Niewypisane","Private":"Prywatne","Published":"Opublikowano","To transcode":"Transkodować","To import":"Importować","Pending":"Oczekiwanie","Success":"Sukces","Failed":"Niepowodzenie","Misc":"Różne","Unknown":"Nieznane","Afar":"Afar","Abkhazian":"Abchaski","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharski","Arabic":"Arabski","American Sign Language":"Amerykański Język Migowy","Avaric":"Awarski","Bashkir":"Baszkirski","Bambara":"Bambara","Belarusian":"Białoruski","Bengali":"Bengalski","British Sign Language":"Brytyjski Język Migowy","Bislama":"Bislama","Tibetan":"Tybetański","Bosnian":"Bośniacki","Breton":"Bretoński","Bulgarian":"Bułgarski","Catalan":"Kataloński","Czech":"Czeski","Cornish":"Kornijski","Corsican":"Korsykański","Cree":"Kri","Czech Sign Language":"Czeski Język Migowy","Chinese Sign Language":"Chiński Język Migowy","Welsh":"Walijski","Danish":"Duński","German":"Niemiecki","Danish Sign Language":"Duński Język Migowy","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Nowogrecki (1453-)","English":"Angielski","Estonian":"Estoński","Basque":"Baskijski","Ewe":"Ewe","Persian":"Perski","Fijian":"Fidżyjski","Finnish":"Fiński","French":"Francuski","French Sign Language":"Francuski Język Migowy","Fulah":"Ful","Irish":"Irlandzki","Galician":"Galicyjski","German Sign Language":"Niemiecki Język Migowy","Hausa":"Hausa","Serbo-Croatian":"Serbsko-Chorwacki","Hindi":"Hindi","Croatian":"Chorwacki","Hungarian":"Węgierski","Armenian":"Ormański","Igbo":"Igbo","Indonesian":"Indonezyjski","Icelandic":"Islandzki","Italian":"Włoski","Javanese":"Jawajski","Japanese":"Japoński","Japanese Sign Language":"Japoński Język Migowy","Komi":"Komi","Kongo":"Kongo","Korean":"Koreański","Kurdish":"Kurdyjski","Lao":"Laotański","Latvian":"Łotewski","Lithuanian":"Litewski","Luxembourgish":"Luksemburski","Nauru":"Naurański","Dutch":"Holenderski","Norwegian Nynorsk":"Norweski Nynorsk","Norwegian Bokmål":"Norweski Bokmål","Norwegian":"Norweski","Oromo":"Oromo","Polish":"Polski","Portuguese":"Portugalski","Pushto":"Paszto","Romansh":"Romansz","Romanian":"Rumuński","Russian Sign Language":"Rosyjski Język Migowy","Rundi":"Rundi","Russian":"Rosyjski","Sango":"Sango","Slovak":"Słowacki","Slovenian":"Słoweński","Samoan":"Samoański","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somalijski","Spanish":"Hiszpański","Serbian":"Serbski","Swedish":"Szwedzki","Swedish Sign Language":"Szwedzki Język Migowy","Tamil":"Tamilski","Tatar":"Tatarski","Telugu":"Telugu","Tajik":"Tadżycki","Tagalog":"Tagalski","Thai":"Tajski","Turkmen":"Turkmeński","Turkish":"Turecki","Twi":"Twi","Ukrainian":"Ukraiński","Urdu":"Urdu","Uzbek":"Uzbecki","Venda":"Venda","Vietnamese":"Wietnamski","Walloon":"Waloński","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Jidysz","Yoruba":"Joruba","Zhuang":"Zhuang","Chinese":"Chiński","Zulu":"Zulu"} \ No newline at end of file diff --git a/client/src/locale/target/server_pl_PL.xml b/client/src/locale/target/server_pl_PL.xml deleted file mode 100644 index f5ce3f9ad..000000000 --- a/client/src/locale/target/server_pl_PL.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - Music - Muzyka - - - Films - Filmy - - - Vehicles - Pojazdy - - - Art - Sztuka - - - Sports - Sport - - - Travels - Podróże - - - Gaming - Gry - - - People - Ludzie - - - Comedy - Komedia - - - Entertainment - Rozrywka - - - How To - Poradniki - - - Education - Edukacja - - - Activism - Aktywizm - - - Science & Technology - Nauka i technologia - - - Animals - Zwierzęta - - - Kids - Dzieci - - - Food - Jedzenie - - - Attribution - Uznanie autostwa - - - Attribution - Share Alike - Uznanie autorstwa - Na tych samych warunkach - - - Attribution - No Derivatives - Uznanie autorstwa - Bez utworów zależnych - - - Attribution - Non Commercial - Uznanie autorstwa - Użycie niekomercyjne - - - Attribution - Non Commercial - Share Alike - Uznanie autorstwa - Użycie niekomercyjne - Na tych samych warunkach - - - Attribution - Non Commercial - No Derivatives - Uznanie autorstwa - Użycie niekomercyjne - Bez utworów zależnych - - - Public Domain Dedication - Przekazanie do Domeny Publicznej - - - Public - Publiczne - - - Unlisted - Niewypisane - - - Private - Prywatne - - - Published - Opublikowano - - - To transcode - Transkodować - - - To import - Importować - - - Pending - Oczekiwanie - - - Success - Sukces - - - Failed - Niepowodzenie - - - Misc - Różne - - - Unknown - Nieznane - - - \ No newline at end of file diff --git a/client/src/locale/target/server_ru_RU.json b/client/src/locale/target/server_ru_RU.json new file mode 100644 index 000000000..e62f2aeb4 --- /dev/null +++ b/client/src/locale/target/server_ru_RU.json @@ -0,0 +1 @@ +{"Music":"Музыка","Films":"Филмы","Vehicles":"Транспортные средства","Art":"Искусство","Sports":"Спорт","Travels":"Путешествия","Gaming":"Видеоигры","People":"Люди","Comedy":"Комедия","Entertainment":"Развлечения","How To":"Как","Education":"Образование","Activism":"Активизм","Science & Technology":"Наука и Технология","Animals":"Животные ","Kids":"Дети","Food":"Еда","Attribution":"Атрибуция","Attribution - Share Alike":" Атрибуция - публикация с одинаковыми условиями ","Attribution - No Derivatives":"Атрибуция - без права изменения ","Attribution - Non Commercial":"Атрибуция - не коммерческое использование","Attribution - Non Commercial - Share Alike":"Атрибуция - не коммерческое использование - публикация с одинаковыми условиями","Attribution - Non Commercial - No Derivatives":"Атрибуция - не коммерческое использование - без права изменения","Public Domain Dedication":"Безлицензионный","Public":"Общественный","Unlisted":" Ее включённый в список","Private":"Личный","Published":"Опубликованный","To transcode":"Перекодировать","To import":"Импортировать","Pending":"В ожидании","Success":"Удачное завершение","Failed":"Неудачно","Misc":"Разное","Unknown":"Неизвестное","Afar":"Афарский","Abkhazian":"Абхазский","Afrikaans":"Африкаанс","Akan":"Акан","Amharic":"Амхарский","Arabic":"Арабский","Aragonese":"Арагонский","American Sign Language":"Амслен","Assamese":"Ассамский","Avaric":"Аварский","Kotava":"Котава","Aymara":"Аймара","Azerbaijani":"Азербайджанский","Bashkir":"Башкирский","Bambara":"Бамана","Belarusian":"Белорусский","Bengali":"Бенгальский","British Sign Language":"Британский жестовый","Bislama":"Бислама","Tibetan":"Тибетский","Bosnian":"Боснийский","Breton":"Бретонский","Bulgarian":"Болгарский","Brazilian Sign Language":"Бразильский жестовый","Catalan":"Каталанский","Czech":"Чешский","Chamorro":"Чаморро","Chechen":"Чеченский","Chuvash":"Чувашский","Cornish":"Корнский","Corsican":"Корсиканский","Cree":"Кри","Czech Sign Language":"Чешский жестовый","Chinese Sign Language":"Китайский жестовый","Welsh":"Уэлш","Danish":"Датский","German":"Немецкий","Dhivehi":"Дивехи","Danish Sign Language":"Датский жестовый ","Dzongkha":"Дзонг-кэ","Modern Greek (1453-)":"Современный греческий","English":"Английский","Esperanto":"Эсперанто","Estonian":"Эстонский","Basque":"Баскский","Ewe":"Эве","Faroese":"Фарерский","Persian":"Персидский","Fijian":"Фиджийский","Finnish":"Финский","French":"Французский","Western Frisian":"Западнофризский","French Sign Language":"Французский жестовый","Fulah":"Фула","Scottish Gaelic":"Шотландский","Irish":"Ирландский","Galician":"Галисийский","Manx":"Мэнский","Guarani":"Гуарани","German Sign Language":"Немецкий жестовый","Gujarati":"Гуджарати","Haitian":"Гаитянский креольский","Hausa":"Хауса","Serbo-Croatian":"Сербохорватский","Hebrew":"Иврит","Herero":"Гереро","Hindi":"Хинди","Hiri Motu":"Хири-моту","Croatian":"Хорватский","Hungarian":"Венгерский","Armenian":"Армянский","Igbo":"Игбо","Sichuan Yi":"Носу","Inuktitut":"Инуктитут","Indonesian":"Индонезийский","Inupiaq":"Аляскинско-инуитские","Icelandic":"Исландский","Italian":"Итальянский","Javanese":"Яванский","Lojban":"Ложбан","Japanese":"Японский","Japanese Sign Language":"Японский жестовый","Kalaallisut":"Гренландский","Kannada":"Каннада","Kashmiri":"Кашмирский","Georgian":"Грузинский","Kanuri":"Канури","Kazakh":"Казахский","Khmer":"Кхмерский","Kikuyu":"Кикуйю","Kinyarwanda":"Руанда","Kirghiz":"Киргизский","Komi":"Коми","Kongo":"Конго","Korean":"Корейский","Kuanyama":"Кваньяма","Kurdish":"Курдские","Lao":"Лаосский","Latvian":"Латышский","Limburgan":"Лимбургский","Lingala":"Лингала","Lithuanian":"Литовский","Luxembourgish":"Люксембургский","Luba-Katanga":"Луба-катанга","Ganda":"Луганда","Marshallese":"Маршалльский","Malayalam":"Малаялам","Marathi":"Маратхи","Macedonian":"Македонский","Malagasy":"Малагасийский","Maltese":"Мальтийский","Mongolian":"Монгольский","Maori":"Маори","Malay (macrolanguage)":"Малайский","Burmese":"Бирманский","Nauru":"Науруанский","Navajo":"Навахо","South Ndebele":"Южный ндебеле","North Ndebele":"Северный ндебеле","Ndonga":"Ндонга","Nepali (macrolanguage)":"Непальский","Dutch":"Нидерландский","Norwegian Nynorsk":"Новонорвежский","Norwegian Bokmål":"Букмол","Norwegian":"Норвежский","Nyanja":"Ньянджа","Ojibwa":"Оджибве","Oriya (macrolanguage)":"Ория","Oromo":"Оромо","Ossetian":"Осетинский","Panjabi":"Панджаби","Pakistan Sign Language":"Дагестанский ","Polish":"Польский","Portuguese":"Португальский","Pushto":"Пушту","Quechua":"Ке́чуа","Romansh":"Романшский","Romanian":"Румынский","Russian Sign Language":"Русский жестовый","Rundi":"Рунди","Russian":"Русский","Sango":"Санго","Saudi Arabian Sign Language":"Арабский жестовый","South African Sign Language":"Жестовый Южной Африки","Sinhala":"Сингальский","Slovak":"Словацкий","Slovenian":"Словенский","Northern Sami":"Северносаамский","Samoan":"Самоанский","Shona":"Шона","Sindhi":"Синдхи","Somali":"Сомалийский","Southern Sotho":"Сесото","Spanish":"Испанский","Albanian":"Албанский","Sardinian":"Сардинский","Serbian":"Сербский","Swati":"Свати","Sundanese":"Сунданский","Swahili (macrolanguage)":"Суахили","Swedish":"Шведский","Swedish Sign Language":"Шведский жестовый","Tahitian":"Таитянский","Tamil":"Тамильский","Tatar":"Татарский","Telugu":"Телугу","Tajik":"Таджикский","Tagalog":"Тагальский","Thai":"Тайский","Tigrinya":"Тигринья","Klingon":"Клингонский","Tonga (Tonga Islands)":"Тонганский","Tswana":"Тсвана","Tsonga":"Тсонга","Turkmen":"Туркменский","Turkish":"Турецкий","Twi":"Чви","Uighur":"Уйгурский","Ukrainian":"Украинский","Urdu":"Урду","Uzbek":"Узбекский","Venda":"Венда","Vietnamese":"Вьетнамский","Walloon":"Валлонский","Wolof":"Волоф","Xhosa":"Коса","Yiddish":"Идиш","Yoruba":"Йоруба","Zhuang":"Чжуанский","Chinese":"Китайский","Zulu":"Зулу"} \ No newline at end of file diff --git a/scripts/build/client.sh b/scripts/build/client.sh index 62daf98cf..be3eef802 100755 --- a/scripts/build/client.sh +++ b/scripts/build/client.sh @@ -41,7 +41,7 @@ if [ -z ${1+x} ] || [ "$1" != "--light" ]; then languages=("fr_FR") else # Supported languages - languages=("fr_FR" "pt_BR" "sv_SE" "eu_ES" "ca_ES" "cs_CZ" "eo" "zh_Hant_TW" "de_DE" "es_ES" "oc" "zh_Hans_CN") + languages=("pl_PL" "it_IT" "ru_RU" "fr_FR" "pt_BR" "sv_SE" "eu_ES" "ca_ES" "cs_CZ" "eo" "zh_Hant_TW" "de_DE" "es_ES" "oc" "zh_Hans_CN") fi for lang in "${languages[@]}"; do diff --git a/shared/models/i18n/i18n.ts b/shared/models/i18n/i18n.ts index 5c3249452..d7164b73f 100644 --- a/shared/models/i18n/i18n.ts +++ b/shared/models/i18n/i18n.ts @@ -8,12 +8,14 @@ export const I18N_LOCALES = { 'cs-CZ': 'Čeština', 'eo': 'Esperanto', 'de-DE': 'Deutsch', + 'it-IT': 'Italiano', 'es-ES': 'Español', 'oc': 'Occitan', 'zh-Hant-TW': '繁體中文(台灣)', 'pt-BR': 'Português (Brasil)', 'sv-SE': 'svenska', - // 'pl-PL': 'Polski' + 'pl-PL': 'Polski', + 'ru-RU': 'русский', 'zh-Hans-CN': '简体中文(中国)' } @@ -26,8 +28,9 @@ const I18N_LOCALE_ALIAS = { 'de': 'de-DE', 'es': 'es-ES', 'pt': 'pt-BR', - 'sv': 'sv-SE' - // 'pl': 'pl-PL' + 'sv': 'sv-SE', + 'pl': 'pl-PL', + 'ru': 'ru-RU' } export const POSSIBLE_LOCALES = Object.keys(I18N_LOCALES) -- cgit v1.2.3 From 9c53ef67e303d6c2742126670963db8cfc81e6d2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 5 Dec 2018 10:53:14 +0100 Subject: Add button to help to translate peertube --- client/src/app/menu/language-chooser.component.html | 5 +++++ client/src/app/menu/language-chooser.component.scss | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/client/src/app/menu/language-chooser.component.html b/client/src/app/menu/language-chooser.component.html index c37bf2826..c79609898 100644 --- a/client/src/app/menu/language-chooser.component.html +++ b/client/src/app/menu/language-chooser.component.html @@ -4,6 +4,11 @@
    + + + Help to translate PeerTube! + + diff --git a/client/src/app/menu/language-chooser.component.scss b/client/src/app/menu/language-chooser.component.scss index 944e86f46..72deb3952 100644 --- a/client/src/app/menu/language-chooser.component.scss +++ b/client/src/app/menu/language-chooser.component.scss @@ -1,6 +1,11 @@ @import '_variables'; @import '_mixins'; +.help-to-translate { + @include peertube-button-link; + @include orange-button; +} + .modal-body { text-align: center; @@ -9,4 +14,4 @@ font-size: 16px; margin: 15px; } -} \ No newline at end of file +} -- cgit v1.2.3 From a1b2f876132e2c1fa8adb27bb333b2cd859dc82b Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 5 Dec 2018 11:05:54 +0100 Subject: Add information in report modal --- .../+video-watch/modal/video-report.component.html | 5 +++++ .../+video-watch/modal/video-report.component.scss | 4 ++++ .../videos/+video-watch/modal/video-report.component.ts | 16 ++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/client/src/app/videos/+video-watch/modal/video-report.component.html b/client/src/app/videos/+video-watch/modal/video-report.component.html index 8d9a49276..733c01be0 100644 --- a/client/src/app/videos/+video-watch/modal/video-report.component.html +++ b/client/src/app/videos/+video-watch/modal/video-report.component.html @@ -6,6 +6,11 @@