diff options
80 files changed, 2752 insertions, 1303 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 227137f48..8000f471f 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 | |||
@@ -699,6 +699,87 @@ | |||
699 | </ng-template> | 699 | </ng-template> |
700 | </ng-container> | 700 | </ng-container> |
701 | 701 | ||
702 | <ng-container ngbNavItem="live"> | ||
703 | <a ngbNavLink i18n>Live streaming</a> | ||
704 | |||
705 | <ng-template ngbNavContent> | ||
706 | |||
707 | <div class="form-row mt-5"> | ||
708 | <div class="form-group col-12 col-lg-4 col-xl-3"> | ||
709 | <div i18n class="inner-form-title">LIVE</div> | ||
710 | <div i18n class="inner-form-description"> | ||
711 | Add ability for your users to do live streaming on your instance. | ||
712 | </div> | ||
713 | </div> | ||
714 | |||
715 | <div class="form-group form-group-right col-12 col-lg-8 col-xl-9"> | ||
716 | |||
717 | <ng-container formGroupName="live"> | ||
718 | |||
719 | <div class="form-group"> | ||
720 | <my-peertube-checkbox inputName="liveEnabled" formControlName="enabled"> | ||
721 | <ng-template ptTemplate="label"> | ||
722 | <ng-container i18n>Allow live streaming</ng-container> | ||
723 | </ng-template> | ||
724 | |||
725 | <ng-template ptTemplate="help"> | ||
726 | <ng-container i18n>Enabling live streaming requires trust in your users and extra moderation work</ng-container> | ||
727 | </ng-template> | ||
728 | |||
729 | <ng-container ngProjectAs="extra" formGroupName="transcoding"> | ||
730 | |||
731 | <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }"> | ||
732 | <my-peertube-checkbox | ||
733 | inputName="liveTranscodingEnabled" formControlName="enabled" | ||
734 | i18n-labelText labelText="Enable live transcoding" | ||
735 | > | ||
736 | <ng-container ngProjectAs="description"> | ||
737 | Requires a lot of CPU! | ||
738 | </ng-container> | ||
739 | </my-peertube-checkbox> | ||
740 | </div> | ||
741 | |||
742 | <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }"> | ||
743 | <label i18n for="liveTranscodingThreads">Live transcoding threads</label> | ||
744 | <div class="peertube-select-container"> | ||
745 | <select id="liveTranscodingThreads" formControlName="threads" class="form-control"> | ||
746 | <option *ngFor="let transcodingThreadOption of transcodingThreadOptions" [value]="transcodingThreadOption.value"> | ||
747 | {{ transcodingThreadOption.label }} | ||
748 | </option> | ||
749 | </select> | ||
750 | </div> | ||
751 | <div *ngIf="formErrors.live.transcoding.threads" class="form-error">{{ formErrors.live.transcoding.threads }}</div> | ||
752 | </div> | ||
753 | |||
754 | <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }"> | ||
755 | |||
756 | <label i18n for="liveTranscodingThreads">Live resolutions to generate</label> | ||
757 | |||
758 | <div class="ml-2 mt-2 d-flex flex-column"> | ||
759 | <ng-container formGroupName="resolutions"> | ||
760 | <div class="form-group" *ngFor="let resolution of liveResolutions"> | ||
761 | <my-peertube-checkbox | ||
762 | [inputName]="getResolutionKey(resolution.id)" [formControlName]="resolution.id" | ||
763 | labelText="{{resolution.label}}" | ||
764 | > | ||
765 | <ng-template *ngIf="resolution.description" ptTemplate="help"> | ||
766 | <div [innerHTML]="resolution.description"></div> | ||
767 | </ng-template> | ||
768 | </my-peertube-checkbox> | ||
769 | </div> | ||
770 | </ng-container> | ||
771 | </div> | ||
772 | </div> | ||
773 | </ng-container> | ||
774 | </my-peertube-checkbox> | ||
775 | </div> | ||
776 | </ng-container> | ||
777 | </div> | ||
778 | </div> | ||
779 | |||
780 | </ng-template> | ||
781 | </ng-container> | ||
782 | |||
702 | <ng-container ngbNavItem="advanced-configuration"> | 783 | <ng-container ngbNavItem="advanced-configuration"> |
703 | <a ngbNavLink i18n>Advanced configuration</a> | 784 | <a ngbNavLink i18n>Advanced configuration</a> |
704 | 785 | ||
@@ -814,7 +895,7 @@ | |||
814 | 895 | ||
815 | <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }"> | 896 | <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }"> |
816 | 897 | ||
817 | <label i18n for="transcodingThreads">Resolutions to generate</label> | 898 | <label i18n>Resolutions to generate</label> |
818 | 899 | ||
819 | <div class="ml-2 mt-2 d-flex flex-column"> | 900 | <div class="ml-2 mt-2 d-flex flex-column"> |
820 | <ng-container formGroupName="resolutions"> | 901 | <ng-container formGroupName="resolutions"> |
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 78e9dd5e5..de800c87e 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 | |||
@@ -34,6 +34,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A | |||
34 | customConfig: CustomConfig | 34 | customConfig: CustomConfig |
35 | 35 | ||
36 | resolutions: { id: string, label: string, description?: string }[] = [] | 36 | resolutions: { id: string, label: string, description?: string }[] = [] |
37 | liveResolutions: { id: string, label: string, description?: string }[] = [] | ||
37 | transcodingThreadOptions: { label: string, value: number }[] = [] | 38 | transcodingThreadOptions: { label: string, value: number }[] = [] |
38 | 39 | ||
39 | languageItems: SelectOptionsItem[] = [] | 40 | languageItems: SelectOptionsItem[] = [] |
@@ -82,6 +83,8 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A | |||
82 | } | 83 | } |
83 | ] | 84 | ] |
84 | 85 | ||
86 | this.liveResolutions = this.resolutions.filter(r => r.id !== '0p') | ||
87 | |||
85 | this.transcodingThreadOptions = [ | 88 | this.transcodingThreadOptions = [ |
86 | { value: 0, label: $localize`Auto (via ffmpeg)` }, | 89 | { value: 0, label: $localize`Auto (via ffmpeg)` }, |
87 | { value: 1, label: '1' }, | 90 | { value: 1, label: '1' }, |
@@ -198,6 +201,15 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A | |||
198 | enabled: null | 201 | enabled: null |
199 | } | 202 | } |
200 | }, | 203 | }, |
204 | live: { | ||
205 | enabled: null, | ||
206 | |||
207 | transcoding: { | ||
208 | enabled: null, | ||
209 | threads: TRANSCODING_THREADS_VALIDATOR, | ||
210 | resolutions: {} | ||
211 | } | ||
212 | }, | ||
201 | autoBlacklist: { | 213 | autoBlacklist: { |
202 | videos: { | 214 | videos: { |
203 | ofUsers: { | 215 | ofUsers: { |
@@ -245,13 +257,24 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A | |||
245 | const defaultValues = { | 257 | const defaultValues = { |
246 | transcoding: { | 258 | transcoding: { |
247 | resolutions: {} | 259 | resolutions: {} |
260 | }, | ||
261 | live: { | ||
262 | transcoding: { | ||
263 | resolutions: {} | ||
264 | } | ||
248 | } | 265 | } |
249 | } | 266 | } |
267 | |||
250 | for (const resolution of this.resolutions) { | 268 | for (const resolution of this.resolutions) { |
251 | defaultValues.transcoding.resolutions[resolution.id] = 'false' | 269 | defaultValues.transcoding.resolutions[resolution.id] = 'false' |
252 | formGroupData.transcoding.resolutions[resolution.id] = null | 270 | formGroupData.transcoding.resolutions[resolution.id] = null |
253 | } | 271 | } |
254 | 272 | ||
273 | for (const resolution of this.liveResolutions) { | ||
274 | defaultValues.live.transcoding.resolutions[resolution.id] = 'false' | ||
275 | formGroupData.live.transcoding.resolutions[resolution.id] = null | ||
276 | } | ||
277 | |||
255 | this.buildForm(formGroupData) | 278 | this.buildForm(formGroupData) |
256 | this.loadForm() | 279 | this.loadForm() |
257 | this.checkTranscodingFields() | 280 | this.checkTranscodingFields() |
@@ -268,6 +291,14 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A | |||
268 | return this.form.value['transcoding']['enabled'] === true | 291 | return this.form.value['transcoding']['enabled'] === true |
269 | } | 292 | } |
270 | 293 | ||
294 | isLiveEnabled () { | ||
295 | return this.form.value['live']['enabled'] === true | ||
296 | } | ||
297 | |||
298 | isLiveTranscodingEnabled () { | ||
299 | return this.form.value['live']['transcoding']['enabled'] === true | ||
300 | } | ||
301 | |||
271 | isSignupEnabled () { | 302 | isSignupEnabled () { |
272 | return this.form.value['signup']['enabled'] === true | 303 | return this.form.value['signup']['enabled'] === true |
273 | } | 304 | } |
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit-utils.ts b/client/src/app/+videos/+video-edit/shared/video-edit-utils.ts new file mode 100644 index 000000000..3a7dbed36 --- /dev/null +++ b/client/src/app/+videos/+video-edit/shared/video-edit-utils.ts | |||
@@ -0,0 +1,35 @@ | |||
1 | import { FormGroup } from '@angular/forms' | ||
2 | import { VideoEdit } from '@app/shared/shared-main' | ||
3 | |||
4 | function hydrateFormFromVideo (formGroup: FormGroup, video: VideoEdit, thumbnailFiles: boolean) { | ||
5 | formGroup.patchValue(video.toFormPatch()) | ||
6 | |||
7 | if (thumbnailFiles === false) return | ||
8 | |||
9 | const objects = [ | ||
10 | { | ||
11 | url: 'thumbnailUrl', | ||
12 | name: 'thumbnailfile' | ||
13 | }, | ||
14 | { | ||
15 | url: 'previewUrl', | ||
16 | name: 'previewfile' | ||
17 | } | ||
18 | ] | ||
19 | |||
20 | for (const obj of objects) { | ||
21 | if (!video[obj.url]) continue | ||
22 | |||
23 | fetch(video[obj.url]) | ||
24 | .then(response => response.blob()) | ||
25 | .then(data => { | ||
26 | formGroup.patchValue({ | ||
27 | [ obj.name ]: data | ||
28 | }) | ||
29 | }) | ||
30 | } | ||
31 | } | ||
32 | |||
33 | export { | ||
34 | hydrateFormFromVideo | ||
35 | } | ||
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.component.html b/client/src/app/+videos/+video-edit/shared/video-edit.component.html index 842997b20..c444dd8d3 100644 --- a/client/src/app/+videos/+video-edit/shared/video-edit.component.html +++ b/client/src/app/+videos/+video-edit/shared/video-edit.component.html | |||
@@ -195,6 +195,29 @@ | |||
195 | </ng-template> | 195 | </ng-template> |
196 | </ng-container> | 196 | </ng-container> |
197 | 197 | ||
198 | <ng-container ngbNavItem *ngIf="videoLive"> | ||
199 | <a ngbNavLink i18n>Live settings</a> | ||
200 | |||
201 | <ng-template ngbNavContent> | ||
202 | <div class="row live-settings"> | ||
203 | <div class="col-md-12"> | ||
204 | |||
205 | <div class="form-group"> | ||
206 | <label for="videoLiveRTMPUrl" i18n>Live RTMP Url</label> | ||
207 | <my-input-readonly-copy id="videoLiveRTMPUrl" [value]="videoLive.rtmpUrl"></my-input-readonly-copy> | ||
208 | </div> | ||
209 | |||
210 | <div class="form-group"> | ||
211 | <label for="videoLiveStreamKey" i18n>Live stream key</label> | ||
212 | <my-input-readonly-copy id="videoLiveStreamKey" [value]="videoLive.streamKey"></my-input-readonly-copy> | ||
213 | </div> | ||
214 | </div> | ||
215 | </div> | ||
216 | </ng-template> | ||
217 | |||
218 | </ng-container> | ||
219 | |||
220 | |||
198 | <ng-container ngbNavItem> | 221 | <ng-container ngbNavItem> |
199 | <a ngbNavLink i18n>Advanced settings</a> | 222 | <a ngbNavLink i18n>Advanced settings</a> |
200 | 223 | ||
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 f04111e69..bee65184b 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 | |||
@@ -20,10 +20,11 @@ import { | |||
20 | import { FormReactiveValidationMessages, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms' | 20 | import { FormReactiveValidationMessages, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms' |
21 | import { InstanceService } from '@app/shared/shared-instance' | 21 | import { InstanceService } from '@app/shared/shared-instance' |
22 | import { VideoCaptionEdit, VideoEdit, VideoService } from '@app/shared/shared-main' | 22 | import { VideoCaptionEdit, VideoEdit, VideoService } from '@app/shared/shared-main' |
23 | import { ServerConfig, VideoConstant, VideoPrivacy } from '@shared/models' | 23 | import { ServerConfig, VideoConstant, VideoLive, VideoPrivacy } from '@shared/models' |
24 | import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model' | 24 | import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model' |
25 | import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' | 25 | import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' |
26 | import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' | 26 | import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' |
27 | import { VideoEditType } from './video-edit.type' | ||
27 | 28 | ||
28 | type VideoLanguages = VideoConstant<string> & { group?: string } | 29 | type VideoLanguages = VideoConstant<string> & { group?: string } |
29 | 30 | ||
@@ -40,7 +41,8 @@ export class VideoEditComponent implements OnInit, OnDestroy { | |||
40 | @Input() schedulePublicationPossible = true | 41 | @Input() schedulePublicationPossible = true |
41 | @Input() videoCaptions: (VideoCaptionEdit & { captionPath?: string })[] = [] | 42 | @Input() videoCaptions: (VideoCaptionEdit & { captionPath?: string })[] = [] |
42 | @Input() waitTranscodingEnabled = true | 43 | @Input() waitTranscodingEnabled = true |
43 | @Input() type: 'import-url' | 'import-torrent' | 'upload' | 'update' | 44 | @Input() type: VideoEditType |
45 | @Input() videoLive: VideoLive | ||
44 | 46 | ||
45 | @ViewChild('videoCaptionAddModal', { static: true }) videoCaptionAddModal: VideoCaptionAddModalComponent | 47 | @ViewChild('videoCaptionAddModal', { static: true }) videoCaptionAddModal: VideoCaptionAddModalComponent |
46 | 48 | ||
@@ -124,7 +126,8 @@ export class VideoEditComponent implements OnInit, OnDestroy { | |||
124 | previewfile: null, | 126 | previewfile: null, |
125 | support: VIDEO_SUPPORT_VALIDATOR, | 127 | support: VIDEO_SUPPORT_VALIDATOR, |
126 | schedulePublicationAt: VIDEO_SCHEDULE_PUBLICATION_AT_VALIDATOR, | 128 | schedulePublicationAt: VIDEO_SCHEDULE_PUBLICATION_AT_VALIDATOR, |
127 | originallyPublishedAt: VIDEO_ORIGINALLY_PUBLISHED_AT_VALIDATOR | 129 | originallyPublishedAt: VIDEO_ORIGINALLY_PUBLISHED_AT_VALIDATOR, |
130 | liveStreamKey: null | ||
128 | } | 131 | } |
129 | 132 | ||
130 | this.formValidatorService.updateForm( | 133 | this.formValidatorService.updateForm( |
@@ -320,7 +323,12 @@ export class VideoEditComponent implements OnInit, OnDestroy { | |||
320 | const currentSupport = this.form.value[ 'support' ] | 323 | const currentSupport = this.form.value[ 'support' ] |
321 | 324 | ||
322 | // First time we set the channel? | 325 | // First time we set the channel? |
323 | if (isNaN(oldChannelId) && !currentSupport) return this.updateSupportField(newChannel.support) | 326 | if (isNaN(oldChannelId)) { |
327 | // Fill support if it's empty | ||
328 | if (!currentSupport) this.updateSupportField(newChannel.support) | ||
329 | |||
330 | return | ||
331 | } | ||
324 | 332 | ||
325 | const oldChannel = this.userVideoChannels.find(c => c.id === oldChannelId) | 333 | const oldChannel = this.userVideoChannels.find(c => c.id === oldChannelId) |
326 | if (!newChannel || !oldChannel) { | 334 | if (!newChannel || !oldChannel) { |
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.type.ts b/client/src/app/+videos/+video-edit/shared/video-edit.type.ts new file mode 100644 index 000000000..fdbe9505c --- /dev/null +++ b/client/src/app/+videos/+video-edit/shared/video-edit.type.ts | |||
@@ -0,0 +1 @@ | |||
export type VideoEditType = 'update' | 'upload' | 'import-url' | 'import-torrent' | 'go-live' | |||
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.html b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.html new file mode 100644 index 000000000..6997f5388 --- /dev/null +++ b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.html | |||
@@ -0,0 +1,47 @@ | |||
1 | <div *ngIf="!isInUpdateForm" class="upload-video-container"> | ||
2 | <div class="first-step-block"> | ||
3 | <my-global-icon class="upload-icon" iconName="upload" aria-hidden="true"></my-global-icon> | ||
4 | |||
5 | <div class="form-group"> | ||
6 | <label i18n for="first-step-channel">Channel</label> | ||
7 | <my-select-channel | ||
8 | labelForId="first-step-channel" [items]="userVideoChannels" [(ngModel)]="firstStepChannelId" | ||
9 | ></my-select-channel> | ||
10 | </div> | ||
11 | |||
12 | <div class="form-group"> | ||
13 | <label i18n for="first-step-privacy">Privacy</label> | ||
14 | <my-select-options | ||
15 | labelForId="first-step-privacy" [items]="videoPrivacies" [(ngModel)]="firstStepPrivacyId" | ||
16 | ></my-select-options> | ||
17 | </div> | ||
18 | |||
19 | <input | ||
20 | type="button" i18n-value value="Go Live" (click)="goLive()" | ||
21 | /> | ||
22 | </div> | ||
23 | </div> | ||
24 | |||
25 | <div *ngIf="error" class="alert alert-danger"> | ||
26 | <div i18n>Sorry, but something went wrong</div> | ||
27 | {{ error }} | ||
28 | </div> | ||
29 | |||
30 | <!-- Hidden because we want to load the component --> | ||
31 | <form [hidden]="!isInUpdateForm" novalidate [formGroup]="form"> | ||
32 | <my-video-edit | ||
33 | [form]="form" [formErrors]="formErrors" [videoCaptions]="videoCaptions" [schedulePublicationPossible]="false" | ||
34 | [validationMessages]="validationMessages" [userVideoChannels]="userVideoChannels" [videoLive]="videoLive" | ||
35 | type="go-live" | ||
36 | ></my-video-edit> | ||
37 | |||
38 | <div class="submit-container"> | ||
39 | <div class="submit-button" | ||
40 | (click)="updateSecondStep()" | ||
41 | [ngClass]="{ disabled: !form.valid }" | ||
42 | > | ||
43 | <my-global-icon iconName="circle-tick" aria-hidden="true"></my-global-icon> | ||
44 | <input type="button" i18n-value value="Update" /> | ||
45 | </div> | ||
46 | </div> | ||
47 | </form> | ||
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts new file mode 100644 index 000000000..64fd4c4d4 --- /dev/null +++ b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts | |||
@@ -0,0 +1,129 @@ | |||
1 | |||
2 | import { Component, EventEmitter, OnInit, Output } from '@angular/core' | ||
3 | import { Router } from '@angular/router' | ||
4 | import { AuthService, CanComponentDeactivate, Notifier, ServerService } from '@app/core' | ||
5 | import { scrollToTop } from '@app/helpers' | ||
6 | import { FormValidatorService } from '@app/shared/shared-forms' | ||
7 | import { VideoCaptionService, VideoEdit, VideoService, VideoLiveService } from '@app/shared/shared-main' | ||
8 | import { LoadingBarService } from '@ngx-loading-bar/core' | ||
9 | import { VideoCreate, VideoLive, VideoPrivacy } from '@shared/models' | ||
10 | import { VideoSend } from './video-send' | ||
11 | |||
12 | @Component({ | ||
13 | selector: 'my-video-go-live', | ||
14 | templateUrl: './video-go-live.component.html', | ||
15 | styleUrls: [ | ||
16 | '../shared/video-edit.component.scss', | ||
17 | './video-send.scss' | ||
18 | ] | ||
19 | }) | ||
20 | export class VideoGoLiveComponent extends VideoSend implements OnInit, CanComponentDeactivate { | ||
21 | @Output() firstStepDone = new EventEmitter<string>() | ||
22 | @Output() firstStepError = new EventEmitter<void>() | ||
23 | |||
24 | isInUpdateForm = false | ||
25 | |||
26 | videoLive: VideoLive | ||
27 | videoId: number | ||
28 | videoUUID: string | ||
29 | error: string | ||
30 | |||
31 | protected readonly DEFAULT_VIDEO_PRIVACY = VideoPrivacy.PUBLIC | ||
32 | |||
33 | constructor ( | ||
34 | protected formValidatorService: FormValidatorService, | ||
35 | protected loadingBar: LoadingBarService, | ||
36 | protected notifier: Notifier, | ||
37 | protected authService: AuthService, | ||
38 | protected serverService: ServerService, | ||
39 | protected videoService: VideoService, | ||
40 | protected videoCaptionService: VideoCaptionService, | ||
41 | private videoLiveService: VideoLiveService, | ||
42 | private router: Router | ||
43 | ) { | ||
44 | super() | ||
45 | } | ||
46 | |||
47 | ngOnInit () { | ||
48 | super.ngOnInit() | ||
49 | } | ||
50 | |||
51 | canDeactivate () { | ||
52 | return { canDeactivate: true } | ||
53 | } | ||
54 | |||
55 | goLive () { | ||
56 | const video: VideoCreate = { | ||
57 | name: 'Live', | ||
58 | privacy: VideoPrivacy.PRIVATE, | ||
59 | nsfw: this.serverConfig.instance.isNSFW, | ||
60 | waitTranscoding: true, | ||
61 | commentsEnabled: true, | ||
62 | downloadEnabled: true, | ||
63 | channelId: this.firstStepChannelId | ||
64 | } | ||
65 | |||
66 | this.firstStepDone.emit(name) | ||
67 | |||
68 | // Go live in private mode, but correctly fill the update form with the first user choice | ||
69 | const toPatch = Object.assign({}, video, { privacy: this.firstStepPrivacyId }) | ||
70 | this.form.patchValue(toPatch) | ||
71 | |||
72 | this.videoLiveService.goLive(video).subscribe( | ||
73 | res => { | ||
74 | this.videoId = res.video.id | ||
75 | this.videoUUID = res.video.uuid | ||
76 | this.isInUpdateForm = true | ||
77 | |||
78 | this.fetchVideoLive() | ||
79 | }, | ||
80 | |||
81 | err => { | ||
82 | this.firstStepError.emit() | ||
83 | this.notifier.error(err.message) | ||
84 | } | ||
85 | ) | ||
86 | } | ||
87 | |||
88 | updateSecondStep () { | ||
89 | if (this.checkForm() === false) { | ||
90 | return | ||
91 | } | ||
92 | |||
93 | const video = new VideoEdit() | ||
94 | video.patch(this.form.value) | ||
95 | video.id = this.videoId | ||
96 | video.uuid = this.videoUUID | ||
97 | |||
98 | // Update the video | ||
99 | this.updateVideoAndCaptions(video) | ||
100 | .subscribe( | ||
101 | () => { | ||
102 | this.notifier.success($localize`Live published.`) | ||
103 | |||
104 | this.router.navigate([ '/videos/watch', video.uuid ]) | ||
105 | }, | ||
106 | |||
107 | err => { | ||
108 | this.error = err.message | ||
109 | scrollToTop() | ||
110 | console.error(err) | ||
111 | } | ||
112 | ) | ||
113 | |||
114 | } | ||
115 | |||
116 | private fetchVideoLive () { | ||
117 | this.videoLiveService.getVideoLive(this.videoId) | ||
118 | .subscribe( | ||
119 | videoLive => { | ||
120 | this.videoLive = videoLive | ||
121 | }, | ||
122 | |||
123 | err => { | ||
124 | this.firstStepError.emit() | ||
125 | this.notifier.error(err.message) | ||
126 | } | ||
127 | ) | ||
128 | } | ||
129 | } | ||
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 e9ad8af7a..64e887987 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 | |||
@@ -6,6 +6,7 @@ import { FormValidatorService } from '@app/shared/shared-forms' | |||
6 | import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' | 6 | import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' |
7 | import { LoadingBarService } from '@ngx-loading-bar/core' | 7 | import { LoadingBarService } from '@ngx-loading-bar/core' |
8 | import { VideoPrivacy, VideoUpdate } from '@shared/models' | 8 | import { VideoPrivacy, VideoUpdate } from '@shared/models' |
9 | import { hydrateFormFromVideo } from '../shared/video-edit-utils' | ||
9 | import { VideoSend } from './video-send' | 10 | import { VideoSend } from './video-send' |
10 | 11 | ||
11 | @Component({ | 12 | @Component({ |
@@ -99,7 +100,7 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca | |||
99 | previewUrl: null | 100 | previewUrl: null |
100 | })) | 101 | })) |
101 | 102 | ||
102 | this.hydrateFormFromVideo() | 103 | hydrateFormFromVideo(this.form, this.video, false) |
103 | }, | 104 | }, |
104 | 105 | ||
105 | err => { | 106 | err => { |
@@ -136,10 +137,5 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca | |||
136 | console.error(err) | 137 | console.error(err) |
137 | } | 138 | } |
138 | ) | 139 | ) |
139 | |||
140 | } | ||
141 | |||
142 | private hydrateFormFromVideo () { | ||
143 | this.form.patchValue(this.video.toFormPatch()) | ||
144 | } | 140 | } |
145 | } | 141 | } |
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 8bad81097..47f59a5d0 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 | |||
@@ -7,6 +7,7 @@ import { FormValidatorService } from '@app/shared/shared-forms' | |||
7 | import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' | 7 | import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' |
8 | import { LoadingBarService } from '@ngx-loading-bar/core' | 8 | import { LoadingBarService } from '@ngx-loading-bar/core' |
9 | import { VideoPrivacy, VideoUpdate } from '@shared/models' | 9 | import { VideoPrivacy, VideoUpdate } from '@shared/models' |
10 | import { hydrateFormFromVideo } from '../shared/video-edit-utils' | ||
10 | import { VideoSend } from './video-send' | 11 | import { VideoSend } from './video-send' |
11 | 12 | ||
12 | @Component({ | 13 | @Component({ |
@@ -109,7 +110,7 @@ export class VideoImportUrlComponent extends VideoSend implements OnInit, CanCom | |||
109 | 110 | ||
110 | this.videoCaptions = videoCaptions | 111 | this.videoCaptions = videoCaptions |
111 | 112 | ||
112 | this.hydrateFormFromVideo() | 113 | hydrateFormFromVideo(this.form, this.video, true) |
113 | }, | 114 | }, |
114 | 115 | ||
115 | err => { | 116 | err => { |
@@ -146,31 +147,5 @@ export class VideoImportUrlComponent extends VideoSend implements OnInit, CanCom | |||
146 | console.error(err) | 147 | console.error(err) |
147 | } | 148 | } |
148 | ) | 149 | ) |
149 | |||
150 | } | ||
151 | |||
152 | private hydrateFormFromVideo () { | ||
153 | this.form.patchValue(this.video.toFormPatch()) | ||
154 | |||
155 | const objects = [ | ||
156 | { | ||
157 | url: 'thumbnailUrl', | ||
158 | name: 'thumbnailfile' | ||
159 | }, | ||
160 | { | ||
161 | url: 'previewUrl', | ||
162 | name: 'previewfile' | ||
163 | } | ||
164 | ] | ||
165 | |||
166 | for (const obj of objects) { | ||
167 | fetch(this.video[obj.url]) | ||
168 | .then(response => response.blob()) | ||
169 | .then(data => { | ||
170 | this.form.patchValue({ | ||
171 | [ obj.name ]: data | ||
172 | }) | ||
173 | }) | ||
174 | } | ||
175 | } | 150 | } |
176 | } | 151 | } |
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 32a17052a..258f5c7a0 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 | |||
@@ -157,7 +157,6 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy | |||
157 | this.waitTranscodingEnabled = false | 157 | this.waitTranscodingEnabled = false |
158 | } | 158 | } |
159 | 159 | ||
160 | const privacy = this.firstStepPrivacyId.toString() | ||
161 | const nsfw = this.serverConfig.instance.isNSFW | 160 | const nsfw = this.serverConfig.instance.isNSFW |
162 | const waitTranscoding = true | 161 | const waitTranscoding = true |
163 | const commentsEnabled = true | 162 | const commentsEnabled = true |
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 14d41f95b..bf2cc9c83 100644 --- a/client/src/app/+videos/+video-edit/video-add.component.html +++ b/client/src/app/+videos/+video-edit/video-add.component.html | |||
@@ -50,7 +50,17 @@ | |||
50 | <my-video-import-torrent #videoImportTorrent (firstStepDone)="onFirstStepDone('import-torrent', $event)" (firstStepError)="onError()"></my-video-import-torrent> | 50 | <my-video-import-torrent #videoImportTorrent (firstStepDone)="onFirstStepDone('import-torrent', $event)" (firstStepError)="onError()"></my-video-import-torrent> |
51 | </ng-template> | 51 | </ng-template> |
52 | </ng-container> | 52 | </ng-container> |
53 | |||
54 | <ng-container ngbNavItem *ngIf="isVideoLiveEnabled()"> | ||
55 | <a ngbNavLink> | ||
56 | <span i18n>Go live</span> | ||
57 | </a> | ||
58 | |||
59 | <ng-template ngbNavContent> | ||
60 | <my-video-go-live #videoGoLive (firstStepDone)="onFirstStepDone('go-live', $event)" (firstStepError)="onError()"></my-video-go-live> | ||
61 | </ng-template> | ||
62 | </ng-container> | ||
53 | </div> | 63 | </div> |
54 | 64 | ||
55 | <div [ngbNavOutlet]="nav"></div> | 65 | <div [ngbNavOutlet]="nav"></div> |
56 | </div> \ No newline at end of file | 66 | </div> |
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 94e85efc1..441d5a3db 100644 --- a/client/src/app/+videos/+video-edit/video-add.component.ts +++ b/client/src/app/+videos/+video-edit/video-add.component.ts | |||
@@ -1,6 +1,8 @@ | |||
1 | import { Component, HostListener, OnInit, ViewChild } from '@angular/core' | 1 | import { Component, HostListener, OnInit, ViewChild } from '@angular/core' |
2 | import { AuthService, AuthUser, CanComponentDeactivate, ServerService } from '@app/core' | 2 | import { AuthService, AuthUser, CanComponentDeactivate, ServerService } from '@app/core' |
3 | import { ServerConfig } from '@shared/models' | 3 | import { ServerConfig } from '@shared/models' |
4 | import { VideoEditType } from './shared/video-edit.type' | ||
5 | import { VideoGoLiveComponent } from './video-add-components/video-go-live.component' | ||
4 | import { VideoImportTorrentComponent } from './video-add-components/video-import-torrent.component' | 6 | import { VideoImportTorrentComponent } from './video-add-components/video-import-torrent.component' |
5 | import { VideoImportUrlComponent } from './video-add-components/video-import-url.component' | 7 | import { VideoImportUrlComponent } from './video-add-components/video-import-url.component' |
6 | import { VideoUploadComponent } from './video-add-components/video-upload.component' | 8 | import { VideoUploadComponent } from './video-add-components/video-upload.component' |
@@ -14,10 +16,11 @@ export class VideoAddComponent implements OnInit, CanComponentDeactivate { | |||
14 | @ViewChild('videoUpload') videoUpload: VideoUploadComponent | 16 | @ViewChild('videoUpload') videoUpload: VideoUploadComponent |
15 | @ViewChild('videoImportUrl') videoImportUrl: VideoImportUrlComponent | 17 | @ViewChild('videoImportUrl') videoImportUrl: VideoImportUrlComponent |
16 | @ViewChild('videoImportTorrent') videoImportTorrent: VideoImportTorrentComponent | 18 | @ViewChild('videoImportTorrent') videoImportTorrent: VideoImportTorrentComponent |
19 | @ViewChild('videoGoLive') videoGoLive: VideoGoLiveComponent | ||
17 | 20 | ||
18 | user: AuthUser = null | 21 | user: AuthUser = null |
19 | 22 | ||
20 | secondStepType: 'upload' | 'import-url' | 'import-torrent' | 23 | secondStepType: VideoEditType |
21 | videoName: string | 24 | videoName: string |
22 | serverConfig: ServerConfig | 25 | serverConfig: ServerConfig |
23 | 26 | ||
@@ -41,7 +44,7 @@ export class VideoAddComponent implements OnInit, CanComponentDeactivate { | |||
41 | this.user = this.auth.getUser() | 44 | this.user = this.auth.getUser() |
42 | } | 45 | } |
43 | 46 | ||
44 | onFirstStepDone (type: 'upload' | 'import-url' | 'import-torrent', videoName: string) { | 47 | onFirstStepDone (type: VideoEditType, videoName: string) { |
45 | this.secondStepType = type | 48 | this.secondStepType = type |
46 | this.videoName = videoName | 49 | this.videoName = videoName |
47 | } | 50 | } |
@@ -62,9 +65,9 @@ export class VideoAddComponent implements OnInit, CanComponentDeactivate { | |||
62 | } | 65 | } |
63 | 66 | ||
64 | canDeactivate (): { canDeactivate: boolean, text?: string} { | 67 | canDeactivate (): { canDeactivate: boolean, text?: string} { |
65 | if (this.secondStepType === 'upload') return this.videoUpload.canDeactivate() | ||
66 | if (this.secondStepType === 'import-url') return this.videoImportUrl.canDeactivate() | 68 | if (this.secondStepType === 'import-url') return this.videoImportUrl.canDeactivate() |
67 | if (this.secondStepType === 'import-torrent') return this.videoImportTorrent.canDeactivate() | 69 | if (this.secondStepType === 'import-torrent') return this.videoImportTorrent.canDeactivate() |
70 | if (this.secondStepType === 'go-live') return this.videoGoLive.canDeactivate() | ||
68 | 71 | ||
69 | return { canDeactivate: true } | 72 | return { canDeactivate: true } |
70 | } | 73 | } |
@@ -77,6 +80,10 @@ export class VideoAddComponent implements OnInit, CanComponentDeactivate { | |||
77 | return this.serverConfig.import.videos.torrent.enabled | 80 | return this.serverConfig.import.videos.torrent.enabled |
78 | } | 81 | } |
79 | 82 | ||
83 | isVideoLiveEnabled () { | ||
84 | return this.serverConfig.live.enabled | ||
85 | } | ||
86 | |||
80 | isInSecondStep () { | 87 | isInSecondStep () { |
81 | return !!this.secondStepType | 88 | return !!this.secondStepType |
82 | } | 89 | } |
diff --git a/client/src/app/+videos/+video-edit/video-add.module.ts b/client/src/app/+videos/+video-edit/video-add.module.ts index 477c1cf5e..da651119b 100644 --- a/client/src/app/+videos/+video-edit/video-add.module.ts +++ b/client/src/app/+videos/+video-edit/video-add.module.ts | |||
@@ -4,6 +4,7 @@ import { VideoEditModule } from './shared/video-edit.module' | |||
4 | import { DragDropDirective } from './video-add-components/drag-drop.directive' | 4 | import { DragDropDirective } from './video-add-components/drag-drop.directive' |
5 | import { VideoImportTorrentComponent } from './video-add-components/video-import-torrent.component' | 5 | import { VideoImportTorrentComponent } from './video-add-components/video-import-torrent.component' |
6 | import { VideoImportUrlComponent } from './video-add-components/video-import-url.component' | 6 | import { VideoImportUrlComponent } from './video-add-components/video-import-url.component' |
7 | import { VideoGoLiveComponent } from './video-add-components/video-go-live.component' | ||
7 | import { VideoUploadComponent } from './video-add-components/video-upload.component' | 8 | import { VideoUploadComponent } from './video-add-components/video-upload.component' |
8 | import { VideoAddRoutingModule } from './video-add-routing.module' | 9 | import { VideoAddRoutingModule } from './video-add-routing.module' |
9 | import { VideoAddComponent } from './video-add.component' | 10 | import { VideoAddComponent } from './video-add.component' |
@@ -20,7 +21,8 @@ import { VideoAddComponent } from './video-add.component' | |||
20 | VideoUploadComponent, | 21 | VideoUploadComponent, |
21 | VideoImportUrlComponent, | 22 | VideoImportUrlComponent, |
22 | VideoImportTorrentComponent, | 23 | VideoImportTorrentComponent, |
23 | DragDropDirective | 24 | DragDropDirective, |
25 | VideoGoLiveComponent | ||
24 | ], | 26 | ], |
25 | 27 | ||
26 | exports: [ ], | 28 | exports: [ ], |
diff --git a/client/src/app/+videos/+video-edit/video-update.component.html b/client/src/app/+videos/+video-edit/video-update.component.html index b37596399..5f50ddc74 100644 --- a/client/src/app/+videos/+video-edit/video-update.component.html +++ b/client/src/app/+videos/+video-edit/video-update.component.html | |||
@@ -11,6 +11,7 @@ | |||
11 | [validationMessages]="validationMessages" [userVideoChannels]="userVideoChannels" | 11 | [validationMessages]="validationMessages" [userVideoChannels]="userVideoChannels" |
12 | [videoCaptions]="videoCaptions" [waitTranscodingEnabled]="waitTranscodingEnabled" | 12 | [videoCaptions]="videoCaptions" [waitTranscodingEnabled]="waitTranscodingEnabled" |
13 | type="update" (pluginFieldsAdded)="hydratePluginFieldsFromVideo()" | 13 | type="update" (pluginFieldsAdded)="hydratePluginFieldsFromVideo()" |
14 | [videoLive]="videoLive" | ||
14 | ></my-video-edit> | 15 | ></my-video-edit> |
15 | 16 | ||
16 | <div class="submit-container"> | 17 | <div class="submit-container"> |
diff --git a/client/src/app/+videos/+video-edit/video-update.component.ts b/client/src/app/+videos/+video-edit/video-update.component.ts index 20438a2d3..c0f46acd2 100644 --- a/client/src/app/+videos/+video-edit/video-update.component.ts +++ b/client/src/app/+videos/+video-edit/video-update.component.ts | |||
@@ -5,7 +5,8 @@ import { Notifier } from '@app/core' | |||
5 | import { FormReactive, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms' | 5 | import { FormReactive, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms' |
6 | import { VideoCaptionEdit, VideoCaptionService, VideoDetails, VideoEdit, VideoService } from '@app/shared/shared-main' | 6 | import { VideoCaptionEdit, VideoCaptionService, VideoDetails, VideoEdit, VideoService } from '@app/shared/shared-main' |
7 | import { LoadingBarService } from '@ngx-loading-bar/core' | 7 | import { LoadingBarService } from '@ngx-loading-bar/core' |
8 | import { VideoPrivacy } from '@shared/models' | 8 | import { VideoPrivacy, VideoLive } from '@shared/models' |
9 | import { hydrateFormFromVideo } from './shared/video-edit-utils' | ||
9 | 10 | ||
10 | @Component({ | 11 | @Component({ |
11 | selector: 'my-videos-update', | 12 | selector: 'my-videos-update', |
@@ -14,11 +15,12 @@ import { VideoPrivacy } from '@shared/models' | |||
14 | }) | 15 | }) |
15 | export class VideoUpdateComponent extends FormReactive implements OnInit { | 16 | export class VideoUpdateComponent extends FormReactive implements OnInit { |
16 | video: VideoEdit | 17 | video: VideoEdit |
18 | userVideoChannels: SelectChannelItem[] = [] | ||
19 | videoCaptions: VideoCaptionEdit[] = [] | ||
20 | videoLive: VideoLive | ||
17 | 21 | ||
18 | isUpdatingVideo = false | 22 | isUpdatingVideo = false |
19 | userVideoChannels: SelectChannelItem[] = [] | ||
20 | schedulePublicationPossible = false | 23 | schedulePublicationPossible = false |
21 | videoCaptions: VideoCaptionEdit[] = [] | ||
22 | waitTranscodingEnabled = true | 24 | waitTranscodingEnabled = true |
23 | 25 | ||
24 | private updateDone = false | 26 | private updateDone = false |
@@ -40,10 +42,11 @@ export class VideoUpdateComponent extends FormReactive implements OnInit { | |||
40 | 42 | ||
41 | this.route.data | 43 | this.route.data |
42 | .pipe(map(data => data.videoData)) | 44 | .pipe(map(data => data.videoData)) |
43 | .subscribe(({ video, videoChannels, videoCaptions }) => { | 45 | .subscribe(({ video, videoChannels, videoCaptions, videoLive }) => { |
44 | this.video = new VideoEdit(video) | 46 | this.video = new VideoEdit(video) |
45 | this.userVideoChannels = videoChannels | 47 | this.userVideoChannels = videoChannels |
46 | this.videoCaptions = videoCaptions | 48 | this.videoCaptions = videoCaptions |
49 | this.videoLive = videoLive | ||
47 | 50 | ||
48 | this.schedulePublicationPossible = this.video.privacy === VideoPrivacy.PRIVATE | 51 | this.schedulePublicationPossible = this.video.privacy === VideoPrivacy.PRIVATE |
49 | 52 | ||
@@ -53,7 +56,7 @@ export class VideoUpdateComponent extends FormReactive implements OnInit { | |||
53 | } | 56 | } |
54 | 57 | ||
55 | // FIXME: Angular does not detect the change inside this subscription, so use the patched setTimeout | 58 | // FIXME: Angular does not detect the change inside this subscription, so use the patched setTimeout |
56 | setTimeout(() => this.hydrateFormFromVideo()) | 59 | setTimeout(() => hydrateFormFromVideo(this.form, this.video, true)) |
57 | }, | 60 | }, |
58 | 61 | ||
59 | err => { | 62 | err => { |
@@ -133,29 +136,4 @@ export class VideoUpdateComponent extends FormReactive implements OnInit { | |||
133 | pluginData: this.video.pluginData | 136 | pluginData: this.video.pluginData |
134 | }) | 137 | }) |
135 | } | 138 | } |
136 | |||
137 | private hydrateFormFromVideo () { | ||
138 | this.form.patchValue(this.video.toFormPatch()) | ||
139 | |||
140 | const objects = [ | ||
141 | { | ||
142 | url: 'thumbnailUrl', | ||
143 | name: 'thumbnailfile' | ||
144 | }, | ||
145 | { | ||
146 | url: 'previewUrl', | ||
147 | name: 'previewfile' | ||
148 | } | ||
149 | ] | ||
150 | |||
151 | for (const obj of objects) { | ||
152 | fetch(this.video[obj.url]) | ||
153 | .then(response => response.blob()) | ||
154 | .then(data => { | ||
155 | this.form.patchValue({ | ||
156 | [ obj.name ]: data | ||
157 | }) | ||
158 | }) | ||
159 | } | ||
160 | } | ||
161 | } | 139 | } |
diff --git a/client/src/app/+videos/+video-edit/video-update.resolver.ts b/client/src/app/+videos/+video-edit/video-update.resolver.ts index a391913d8..3a82324c3 100644 --- a/client/src/app/+videos/+video-edit/video-update.resolver.ts +++ b/client/src/app/+videos/+video-edit/video-update.resolver.ts | |||
@@ -1,13 +1,14 @@ | |||
1 | import { forkJoin } from 'rxjs' | 1 | import { forkJoin, of } from 'rxjs' |
2 | import { map, switchMap } from 'rxjs/operators' | 2 | import { map, switchMap } from 'rxjs/operators' |
3 | import { Injectable } from '@angular/core' | 3 | import { Injectable } from '@angular/core' |
4 | import { ActivatedRouteSnapshot, Resolve } from '@angular/router' | 4 | import { ActivatedRouteSnapshot, Resolve } from '@angular/router' |
5 | import { VideoCaptionService, VideoChannelService, VideoService } from '@app/shared/shared-main' | 5 | import { VideoCaptionService, VideoChannelService, VideoDetails, VideoLiveService, VideoService } from '@app/shared/shared-main' |
6 | 6 | ||
7 | @Injectable() | 7 | @Injectable() |
8 | export class VideoUpdateResolver implements Resolve<any> { | 8 | export class VideoUpdateResolver implements Resolve<any> { |
9 | constructor ( | 9 | constructor ( |
10 | private videoService: VideoService, | 10 | private videoService: VideoService, |
11 | private videoLiveService: VideoLiveService, | ||
11 | private videoChannelService: VideoChannelService, | 12 | private videoChannelService: VideoChannelService, |
12 | private videoCaptionService: VideoCaptionService | 13 | private videoCaptionService: VideoCaptionService |
13 | ) { | 14 | ) { |
@@ -18,32 +19,38 @@ export class VideoUpdateResolver implements Resolve<any> { | |||
18 | 19 | ||
19 | return this.videoService.getVideo({ videoId: uuid }) | 20 | return this.videoService.getVideo({ videoId: uuid }) |
20 | .pipe( | 21 | .pipe( |
21 | switchMap(video => { | 22 | switchMap(video => forkJoin(this.buildVideoObservables(video))), |
22 | return forkJoin([ | 23 | map(([ video, videoChannels, videoCaptions, videoLive ]) => ({ video, videoChannels, videoCaptions, videoLive })) |
23 | this.videoService | 24 | ) |
24 | .loadCompleteDescription(video.descriptionPath) | 25 | } |
25 | .pipe(map(description => Object.assign(video, { description }))), | ||
26 | 26 | ||
27 | this.videoChannelService | 27 | private buildVideoObservables (video: VideoDetails) { |
28 | .listAccountVideoChannels(video.account) | 28 | return [ |
29 | .pipe( | 29 | this.videoService |
30 | map(result => result.data), | 30 | .loadCompleteDescription(video.descriptionPath) |
31 | map(videoChannels => videoChannels.map(c => ({ | 31 | .pipe(map(description => Object.assign(video, { description }))), |
32 | id: c.id, | ||
33 | label: c.displayName, | ||
34 | support: c.support, | ||
35 | avatarPath: c.avatar?.path | ||
36 | }))) | ||
37 | ), | ||
38 | 32 | ||
39 | this.videoCaptionService | 33 | this.videoChannelService |
40 | .listCaptions(video.id) | 34 | .listAccountVideoChannels(video.account) |
41 | .pipe( | 35 | .pipe( |
42 | map(result => result.data) | 36 | map(result => result.data), |
43 | ) | 37 | map(videoChannels => videoChannels.map(c => ({ |
44 | ]) | 38 | id: c.id, |
45 | }), | 39 | label: c.displayName, |
46 | map(([ video, videoChannels, videoCaptions ]) => ({ video, videoChannels, videoCaptions })) | 40 | support: c.support, |
47 | ) | 41 | avatarPath: c.avatar?.path |
42 | }))) | ||
43 | ), | ||
44 | |||
45 | this.videoCaptionService | ||
46 | .listCaptions(video.id) | ||
47 | .pipe( | ||
48 | map(result => result.data) | ||
49 | ), | ||
50 | |||
51 | video.isLive | ||
52 | ? this.videoLiveService.getVideoLive(video.id) | ||
53 | : of(undefined) | ||
54 | ] | ||
48 | } | 55 | } |
49 | } | 56 | } |
diff --git a/client/src/app/core/plugins/plugin.service.ts b/client/src/app/core/plugins/plugin.service.ts index 4e44a1865..b755fda2c 100644 --- a/client/src/app/core/plugins/plugin.service.ts +++ b/client/src/app/core/plugins/plugin.service.ts | |||
@@ -2,6 +2,7 @@ import { Observable, of, ReplaySubject } from 'rxjs' | |||
2 | import { catchError, first, map, shareReplay } from 'rxjs/operators' | 2 | import { catchError, first, map, shareReplay } from 'rxjs/operators' |
3 | import { HttpClient } from '@angular/common/http' | 3 | import { HttpClient } from '@angular/common/http' |
4 | import { Inject, Injectable, LOCALE_ID, NgZone } from '@angular/core' | 4 | import { Inject, Injectable, LOCALE_ID, NgZone } from '@angular/core' |
5 | import { VideoEditType } from '@app/+videos/+video-edit/shared/video-edit.type' | ||
5 | import { AuthService } from '@app/core/auth' | 6 | import { AuthService } from '@app/core/auth' |
6 | import { Notifier } from '@app/core/notification' | 7 | import { Notifier } from '@app/core/notification' |
7 | import { MarkdownService } from '@app/core/renderer' | 8 | import { MarkdownService } from '@app/core/renderer' |
@@ -192,7 +193,7 @@ export class PluginService implements ClientHook { | |||
192 | : PluginType.THEME | 193 | : PluginType.THEME |
193 | } | 194 | } |
194 | 195 | ||
195 | getRegisteredVideoFormFields (type: 'import-url' | 'import-torrent' | 'upload' | 'update') { | 196 | getRegisteredVideoFormFields (type: VideoEditType) { |
196 | return this.formFields.video.filter(f => f.videoFormOptions.type === type) | 197 | return this.formFields.video.filter(f => f.videoFormOptions.type === type) |
197 | } | 198 | } |
198 | 199 | ||
diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts index 5bcf33c1b..bc76bacfc 100644 --- a/client/src/app/core/server/server.service.ts +++ b/client/src/app/core/server/server.service.ts | |||
@@ -74,6 +74,13 @@ export class ServerService { | |||
74 | enabled: true | 74 | enabled: true |
75 | } | 75 | } |
76 | }, | 76 | }, |
77 | live: { | ||
78 | enabled: false, | ||
79 | transcoding: { | ||
80 | enabled: false, | ||
81 | enabledResolutions: [] | ||
82 | } | ||
83 | }, | ||
77 | avatar: { | 84 | avatar: { |
78 | file: { | 85 | file: { |
79 | size: { max: 0 }, | 86 | size: { max: 0 }, |
diff --git a/client/src/app/shared/shared-forms/input-readonly-copy.component.html b/client/src/app/shared/shared-forms/input-readonly-copy.component.html index 9566e9741..7a75bd70b 100644 --- a/client/src/app/shared/shared-forms/input-readonly-copy.component.html +++ b/client/src/app/shared/shared-forms/input-readonly-copy.component.html | |||
@@ -1,5 +1,5 @@ | |||
1 | <div class="input-group input-group-sm"> | 1 | <div class="input-group input-group-sm"> |
2 | <input #urlInput (click)="urlInput.select()" type="text" class="form-control readonly" readonly [value]="value" /> | 2 | <input [id]="id" #urlInput (click)="urlInput.select()" type="text" class="form-control readonly" readonly [value]="value" /> |
3 | 3 | ||
4 | <div class="input-group-append"> | 4 | <div class="input-group-append"> |
5 | <button [cdkCopyToClipboard]="urlInput.value" (click)="activateCopiedMessage()" type="button" class="btn btn-outline-secondary"> | 5 | <button [cdkCopyToClipboard]="urlInput.value" (click)="activateCopiedMessage()" type="button" class="btn btn-outline-secondary"> |
diff --git a/client/src/app/shared/shared-forms/input-readonly-copy.component.ts b/client/src/app/shared/shared-forms/input-readonly-copy.component.ts index a67b0c691..520827a53 100644 --- a/client/src/app/shared/shared-forms/input-readonly-copy.component.ts +++ b/client/src/app/shared/shared-forms/input-readonly-copy.component.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | import { Component, Input } from '@angular/core' | 1 | import { Component, Input } from '@angular/core' |
2 | import { Notifier } from '@app/core' | 2 | import { Notifier } from '@app/core' |
3 | import { FormGroup } from '@angular/forms' | ||
3 | 4 | ||
4 | @Component({ | 5 | @Component({ |
5 | selector: 'my-input-readonly-copy', | 6 | selector: 'my-input-readonly-copy', |
@@ -7,6 +8,7 @@ import { Notifier } from '@app/core' | |||
7 | styleUrls: [ './input-readonly-copy.component.scss' ] | 8 | styleUrls: [ './input-readonly-copy.component.scss' ] |
8 | }) | 9 | }) |
9 | export class InputReadonlyCopyComponent { | 10 | export class InputReadonlyCopyComponent { |
11 | @Input() id: string | ||
10 | @Input() value = '' | 12 | @Input() value = '' |
11 | 13 | ||
12 | constructor (private notifier: Notifier) { } | 14 | constructor (private notifier: Notifier) { } |
diff --git a/client/src/app/shared/shared-instance/instance-features-table.component.html b/client/src/app/shared/shared-instance/instance-features-table.component.html index f6a3b7f0b..002695238 100644 --- a/client/src/app/shared/shared-instance/instance-features-table.component.html +++ b/client/src/app/shared/shared-instance/instance-features-table.component.html | |||
@@ -64,6 +64,24 @@ | |||
64 | </tr> | 64 | </tr> |
65 | 65 | ||
66 | <tr> | 66 | <tr> |
67 | <th i18n class="label" colspan="2">Live streaming</th> | ||
68 | </tr> | ||
69 | |||
70 | <tr> | ||
71 | <th i18n class="sub-label" scope="row">Live streaming enabled</th> | ||
72 | <td> | ||
73 | <my-feature-boolean [value]="serverConfig.live.enabled"></my-feature-boolean> | ||
74 | </td> | ||
75 | </tr> | ||
76 | |||
77 | <tr> | ||
78 | <th i18n class="sub-label" scope="row">Transcode live video in multiple resolutions</th> | ||
79 | <td> | ||
80 | <my-feature-boolean [value]="serverConfig.live.transcoding.enabled && serverConfig.live.transcoding.enabledResolutions.length > 1"></my-feature-boolean> | ||
81 | </td> | ||
82 | </tr> | ||
83 | |||
84 | <tr> | ||
67 | <th i18n class="label" colspan="2">Import</th> | 85 | <th i18n class="label" colspan="2">Import</th> |
68 | </tr> | 86 | </tr> |
69 | 87 | ||
diff --git a/client/src/app/shared/shared-main/shared-main.module.ts b/client/src/app/shared/shared-main/shared-main.module.ts index 7f4676dd1..bca67b193 100644 --- a/client/src/app/shared/shared-main/shared-main.module.ts +++ b/client/src/app/shared/shared-main/shared-main.module.ts | |||
@@ -23,7 +23,7 @@ import { FeedComponent } from './feeds' | |||
23 | import { LoaderComponent, SmallLoaderComponent } from './loaders' | 23 | import { LoaderComponent, SmallLoaderComponent } from './loaders' |
24 | import { HelpComponent, ListOverflowComponent, TopMenuDropdownComponent } from './misc' | 24 | import { HelpComponent, ListOverflowComponent, TopMenuDropdownComponent } from './misc' |
25 | import { UserHistoryService, UserNotificationsComponent, UserNotificationService, UserQuotaComponent } from './users' | 25 | import { UserHistoryService, UserNotificationsComponent, UserNotificationService, UserQuotaComponent } from './users' |
26 | import { RedundancyService, VideoImportService, VideoOwnershipService, VideoService } from './video' | 26 | import { RedundancyService, VideoImportService, VideoOwnershipService, VideoService, VideoLiveService } from './video' |
27 | import { VideoCaptionService } from './video-caption' | 27 | import { VideoCaptionService } from './video-caption' |
28 | import { VideoChannelService } from './video-channel' | 28 | import { VideoChannelService } from './video-channel' |
29 | 29 | ||
@@ -142,6 +142,7 @@ import { VideoChannelService } from './video-channel' | |||
142 | RedundancyService, | 142 | RedundancyService, |
143 | VideoImportService, | 143 | VideoImportService, |
144 | VideoOwnershipService, | 144 | VideoOwnershipService, |
145 | VideoLiveService, | ||
145 | VideoService, | 146 | VideoService, |
146 | 147 | ||
147 | VideoCaptionService, | 148 | VideoCaptionService, |
diff --git a/client/src/app/shared/shared-main/video/index.ts b/client/src/app/shared/shared-main/video/index.ts index 3053df4ef..121635a30 100644 --- a/client/src/app/shared/shared-main/video/index.ts +++ b/client/src/app/shared/shared-main/video/index.ts | |||
@@ -2,6 +2,7 @@ export * from './redundancy.service' | |||
2 | export * from './video-details.model' | 2 | export * from './video-details.model' |
3 | export * from './video-edit.model' | 3 | export * from './video-edit.model' |
4 | export * from './video-import.service' | 4 | export * from './video-import.service' |
5 | export * from './video-live.service' | ||
5 | export * from './video-ownership.service' | 6 | export * from './video-ownership.service' |
6 | export * from './video.model' | 7 | export * from './video.model' |
7 | export * from './video.service' | 8 | export * from './video.service' |
diff --git a/client/src/app/shared/shared-main/video/video-details.model.ts b/client/src/app/shared/shared-main/video/video-details.model.ts index a1cb051e9..f060d1dc9 100644 --- a/client/src/app/shared/shared-main/video/video-details.model.ts +++ b/client/src/app/shared/shared-main/video/video-details.model.ts | |||
@@ -62,8 +62,11 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { | |||
62 | } | 62 | } |
63 | 63 | ||
64 | getFiles () { | 64 | getFiles () { |
65 | if (this.files.length === 0) return this.getHlsPlaylist().files | 65 | if (this.files.length !== 0) return this.files |
66 | 66 | ||
67 | return this.files | 67 | const hls = this.getHlsPlaylist() |
68 | if (hls) return hls.files | ||
69 | |||
70 | return [] | ||
68 | } | 71 | } |
69 | } | 72 | } |
diff --git a/client/src/app/shared/shared-main/video/video-live.service.ts b/client/src/app/shared/shared-main/video/video-live.service.ts new file mode 100644 index 000000000..12daff756 --- /dev/null +++ b/client/src/app/shared/shared-main/video/video-live.service.ts | |||
@@ -0,0 +1,28 @@ | |||
1 | import { catchError } from 'rxjs/operators' | ||
2 | import { HttpClient } from '@angular/common/http' | ||
3 | import { Injectable } from '@angular/core' | ||
4 | import { RestExtractor } from '@app/core' | ||
5 | import { VideoCreate, VideoLive } from '@shared/models' | ||
6 | import { environment } from '../../../../environments/environment' | ||
7 | |||
8 | @Injectable() | ||
9 | export class VideoLiveService { | ||
10 | static BASE_VIDEO_LIVE_URL = environment.apiUrl + '/api/v1/videos/live/' | ||
11 | |||
12 | constructor ( | ||
13 | private authHttp: HttpClient, | ||
14 | private restExtractor: RestExtractor | ||
15 | ) {} | ||
16 | |||
17 | goLive (video: VideoCreate) { | ||
18 | return this.authHttp | ||
19 | .post<{ video: { id: number, uuid: string } }>(VideoLiveService.BASE_VIDEO_LIVE_URL, video) | ||
20 | .pipe(catchError(err => this.restExtractor.handleError(err))) | ||
21 | } | ||
22 | |||
23 | getVideoLive (videoId: number | string) { | ||
24 | return this.authHttp | ||
25 | .get<VideoLive>(VideoLiveService.BASE_VIDEO_LIVE_URL + videoId) | ||
26 | .pipe(catchError(err => this.restExtractor.handleError(err))) | ||
27 | } | ||
28 | } | ||
diff --git a/client/src/app/shared/shared-main/video/video.model.ts b/client/src/app/shared/shared-main/video/video.model.ts index 0dca3da0d..e3a52af3d 100644 --- a/client/src/app/shared/shared-main/video/video.model.ts +++ b/client/src/app/shared/shared-main/video/video.model.ts | |||
@@ -40,6 +40,8 @@ export class Video implements VideoServerModel { | |||
40 | thumbnailPath: string | 40 | thumbnailPath: string |
41 | thumbnailUrl: string | 41 | thumbnailUrl: string |
42 | 42 | ||
43 | isLive: boolean | ||
44 | |||
43 | previewPath: string | 45 | previewPath: string |
44 | previewUrl: string | 46 | previewUrl: string |
45 | 47 | ||
@@ -103,6 +105,8 @@ export class Video implements VideoServerModel { | |||
103 | this.state = hash.state | 105 | this.state = hash.state |
104 | this.description = hash.description | 106 | this.description = hash.description |
105 | 107 | ||
108 | this.isLive = hash.isLive | ||
109 | |||
106 | this.duration = hash.duration | 110 | this.duration = hash.duration |
107 | this.durationLabel = durationToString(hash.duration) | 111 | this.durationLabel = durationToString(hash.duration) |
108 | 112 | ||
@@ -113,10 +117,14 @@ export class Video implements VideoServerModel { | |||
113 | this.name = hash.name | 117 | this.name = hash.name |
114 | 118 | ||
115 | this.thumbnailPath = hash.thumbnailPath | 119 | this.thumbnailPath = hash.thumbnailPath |
116 | this.thumbnailUrl = hash.thumbnailUrl || (absoluteAPIUrl + hash.thumbnailPath) | 120 | this.thumbnailUrl = this.thumbnailPath |
121 | ? hash.thumbnailUrl || (absoluteAPIUrl + hash.thumbnailPath) | ||
122 | : null | ||
117 | 123 | ||
118 | this.previewPath = hash.previewPath | 124 | this.previewPath = hash.previewPath |
119 | this.previewUrl = hash.previewUrl || (absoluteAPIUrl + hash.previewPath) | 125 | this.previewUrl = this.previewPath |
126 | ? hash.previewUrl || (absoluteAPIUrl + hash.previewPath) | ||
127 | : null | ||
120 | 128 | ||
121 | this.embedPath = hash.embedPath | 129 | this.embedPath = hash.embedPath |
122 | this.embedUrl = hash.embedUrl || (getAbsoluteEmbedUrl() + hash.embedPath) | 130 | this.embedUrl = hash.embedUrl || (getAbsoluteEmbedUrl() + hash.embedPath) |
diff --git a/client/src/app/shared/shared-main/video/video.service.ts b/client/src/app/shared/shared-main/video/video.service.ts index 8a688c8ed..0e2d36081 100644 --- a/client/src/app/shared/shared-main/video/video.service.ts +++ b/client/src/app/shared/shared-main/video/video.service.ts | |||
@@ -18,7 +18,8 @@ import { | |||
18 | VideoFilter, | 18 | VideoFilter, |
19 | VideoPrivacy, | 19 | VideoPrivacy, |
20 | VideoSortField, | 20 | VideoSortField, |
21 | VideoUpdate | 21 | VideoUpdate, |
22 | VideoCreate | ||
22 | } from '@shared/models' | 23 | } from '@shared/models' |
23 | import { environment } from '../../../../environments/environment' | 24 | import { environment } from '../../../../environments/environment' |
24 | import { Account } from '../account/account.model' | 25 | import { Account } from '../account/account.model' |
diff --git a/client/src/assets/player/p2p-media-loader/segment-validator.ts b/client/src/assets/player/p2p-media-loader/segment-validator.ts index 72c32f9e0..0614f73d2 100644 --- a/client/src/assets/player/p2p-media-loader/segment-validator.ts +++ b/client/src/assets/player/p2p-media-loader/segment-validator.ts | |||
@@ -1,17 +1,42 @@ | |||
1 | import { Segment } from 'p2p-media-loader-core' | 1 | import { Segment } from 'p2p-media-loader-core' |
2 | import { basename } from 'path' | 2 | import { basename } from 'path' |
3 | 3 | ||
4 | type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } } | ||
5 | |||
4 | function segmentValidatorFactory (segmentsSha256Url: string) { | 6 | function segmentValidatorFactory (segmentsSha256Url: string) { |
5 | const segmentsJSON = fetchSha256Segments(segmentsSha256Url) | 7 | let segmentsJSON = fetchSha256Segments(segmentsSha256Url) |
6 | const regex = /bytes=(\d+)-(\d+)/ | 8 | const regex = /bytes=(\d+)-(\d+)/ |
7 | 9 | ||
8 | return async function segmentValidator (segment: Segment) { | 10 | return async function segmentValidator (segment: Segment, canRefetchSegmentHashes = true) { |
9 | const filename = basename(segment.url) | 11 | const filename = basename(segment.url) |
10 | const captured = regex.exec(segment.range) | ||
11 | 12 | ||
12 | const range = captured[1] + '-' + captured[2] | 13 | const segmentValue = (await segmentsJSON)[filename] |
14 | |||
15 | if (!segmentValue && !canRefetchSegmentHashes) { | ||
16 | throw new Error(`Unknown segment name ${filename} in segment validator`) | ||
17 | } | ||
18 | |||
19 | if (!segmentValue) { | ||
20 | console.log('Refetching sha segments.') | ||
21 | |||
22 | // Refetch | ||
23 | segmentsJSON = fetchSha256Segments(segmentsSha256Url) | ||
24 | segmentValidator(segment, false) | ||
25 | return | ||
26 | } | ||
27 | |||
28 | let hashShouldBe: string | ||
29 | let range = '' | ||
30 | |||
31 | if (typeof segmentValue === 'string') { | ||
32 | hashShouldBe = segmentValue | ||
33 | } else { | ||
34 | const captured = regex.exec(segment.range) | ||
35 | range = captured[1] + '-' + captured[2] | ||
36 | |||
37 | hashShouldBe = segmentValue[range] | ||
38 | } | ||
13 | 39 | ||
14 | const hashShouldBe = (await segmentsJSON)[filename][range] | ||
15 | if (hashShouldBe === undefined) { | 40 | if (hashShouldBe === undefined) { |
16 | throw new Error(`Unknown segment name ${filename}/${range} in segment validator`) | 41 | throw new Error(`Unknown segment name ${filename}/${range} in segment validator`) |
17 | } | 42 | } |
@@ -36,7 +61,7 @@ export { | |||
36 | 61 | ||
37 | function fetchSha256Segments (url: string) { | 62 | function fetchSha256Segments (url: string) { |
38 | return fetch(url) | 63 | return fetch(url) |
39 | .then(res => res.json()) | 64 | .then(res => res.json() as Promise<SegmentsJSON>) |
40 | .catch(err => { | 65 | .catch(err => { |
41 | console.error('Cannot get sha256 segments', err) | 66 | console.error('Cannot get sha256 segments', err) |
42 | return {} | 67 | return {} |
diff --git a/client/src/assets/player/peertube-player-manager.ts b/client/src/assets/player/peertube-player-manager.ts index af044c864..3d72d4609 100644 --- a/client/src/assets/player/peertube-player-manager.ts +++ b/client/src/assets/player/peertube-player-manager.ts | |||
@@ -325,7 +325,7 @@ export class PeertubePlayerManager { | |||
325 | trackerAnnounce, | 325 | trackerAnnounce, |
326 | segmentValidator: segmentValidatorFactory(options.p2pMediaLoader.segmentsSha256Url), | 326 | segmentValidator: segmentValidatorFactory(options.p2pMediaLoader.segmentsSha256Url), |
327 | rtcConfig: getRtcConfig(), | 327 | rtcConfig: getRtcConfig(), |
328 | requiredSegmentsPriority: 5, | 328 | requiredSegmentsPriority: 1, |
329 | segmentUrlBuilder: segmentUrlBuilderFactory(redundancyUrlManager), | 329 | segmentUrlBuilder: segmentUrlBuilderFactory(redundancyUrlManager), |
330 | useP2P: getStoredP2PEnabled(), | 330 | useP2P: getStoredP2PEnabled(), |
331 | consumeOnly | 331 | consumeOnly |
@@ -353,7 +353,7 @@ export class PeertubePlayerManager { | |||
353 | hlsjsConfig: { | 353 | hlsjsConfig: { |
354 | capLevelToPlayerSize: true, | 354 | capLevelToPlayerSize: true, |
355 | autoStartLoad: false, | 355 | autoStartLoad: false, |
356 | liveSyncDurationCount: 7, | 356 | liveSyncDurationCount: 5, |
357 | loader: new p2pMediaLoaderModule.Engine(p2pMediaLoaderConfig).createLoaderClass() | 357 | loader: new p2pMediaLoaderModule.Engine(p2pMediaLoaderConfig).createLoaderClass() |
358 | } | 358 | } |
359 | } | 359 | } |
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index 995e8c277..9b07ef5e6 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts | |||
@@ -556,9 +556,9 @@ export class PeerTubeEmbed { | |||
556 | 556 | ||
557 | Object.assign(options, { | 557 | Object.assign(options, { |
558 | p2pMediaLoader: { | 558 | p2pMediaLoader: { |
559 | playlistUrl: hlsPlaylist.playlistUrl, | 559 | playlistUrl: 'http://localhost:9000/live/toto/master.m3u8', |
560 | segmentsSha256Url: hlsPlaylist.segmentsSha256Url, | 560 | segmentsSha256Url: hlsPlaylist.segmentsSha256Url, |
561 | redundancyBaseUrls: hlsPlaylist.redundancies.map(r => r.baseUrl), | 561 | redundancyBaseUrls: [], |
562 | trackerAnnounce: videoInfo.trackerUrls, | 562 | trackerAnnounce: videoInfo.trackerUrls, |
563 | videoFiles: hlsPlaylist.files | 563 | videoFiles: hlsPlaylist.files |
564 | } as P2PMediaLoaderOptions | 564 | } as P2PMediaLoaderOptions |
diff --git a/config/default.yaml b/config/default.yaml index 0c2d165be..7efaeb5a2 100644 --- a/config/default.yaml +++ b/config/default.yaml | |||
@@ -243,6 +243,24 @@ transcoding: | |||
243 | hls: | 243 | hls: |
244 | enabled: false | 244 | enabled: false |
245 | 245 | ||
246 | live: | ||
247 | enabled: false | ||
248 | |||
249 | rtmp: | ||
250 | port: 1935 | ||
251 | |||
252 | transcoding: | ||
253 | enabled: false | ||
254 | threads: 2 | ||
255 | |||
256 | resolutions: | ||
257 | 240p: false | ||
258 | 360p: false | ||
259 | 480p: false | ||
260 | 720p: false | ||
261 | 1080p: false | ||
262 | 2160p: false | ||
263 | |||
246 | import: | 264 | import: |
247 | # Add ability for your users to import remote videos (from YouTube, torrent...) | 265 | # Add ability for your users to import remote videos (from YouTube, torrent...) |
248 | videos: | 266 | videos: |
diff --git a/config/test.yaml b/config/test.yaml index fb37ff8c7..b9279b5e6 100644 --- a/config/test.yaml +++ b/config/test.yaml | |||
@@ -37,24 +37,24 @@ log: | |||
37 | 37 | ||
38 | contact_form: | 38 | contact_form: |
39 | enabled: true | 39 | enabled: true |
40 | 40 | # | |
41 | redundancy: | 41 | #redundancy: |
42 | videos: | 42 | # videos: |
43 | check_interval: '1 minute' | 43 | # check_interval: '1 minute' |
44 | strategies: | 44 | # strategies: |
45 | - | 45 | # - |
46 | size: '1000MB' | 46 | # size: '1000MB' |
47 | min_lifetime: '10 minutes' | 47 | # min_lifetime: '10 minutes' |
48 | strategy: 'most-views' | 48 | # strategy: 'most-views' |
49 | - | 49 | # - |
50 | size: '1000MB' | 50 | # size: '1000MB' |
51 | min_lifetime: '10 minutes' | 51 | # min_lifetime: '10 minutes' |
52 | strategy: 'trending' | 52 | # strategy: 'trending' |
53 | - | 53 | # - |
54 | size: '1000MB' | 54 | # size: '1000MB' |
55 | min_lifetime: '10 minutes' | 55 | # min_lifetime: '10 minutes' |
56 | strategy: 'recently-added' | 56 | # strategy: 'recently-added' |
57 | min_views: 1 | 57 | # min_views: 1 |
58 | 58 | ||
59 | cache: | 59 | cache: |
60 | previews: | 60 | previews: |
@@ -82,6 +82,24 @@ transcoding: | |||
82 | hls: | 82 | hls: |
83 | enabled: true | 83 | enabled: true |
84 | 84 | ||
85 | live: | ||
86 | enabled: false | ||
87 | |||
88 | rtmp: | ||
89 | port: 1935 | ||
90 | |||
91 | transcoding: | ||
92 | enabled: false | ||
93 | threads: 2 | ||
94 | |||
95 | resolutions: | ||
96 | 240p: false | ||
97 | 360p: false | ||
98 | 480p: false | ||
99 | 720p: false | ||
100 | 1080p: false | ||
101 | 2160p: false | ||
102 | |||
85 | import: | 103 | import: |
86 | videos: | 104 | videos: |
87 | http: | 105 | http: |
diff --git a/package.json b/package.json index b08e5fe6c..15e55e978 100644 --- a/package.json +++ b/package.json | |||
@@ -92,6 +92,7 @@ | |||
92 | "body-parser": "^1.12.4", | 92 | "body-parser": "^1.12.4", |
93 | "bull": "^3.4.2", | 93 | "bull": "^3.4.2", |
94 | "bytes": "^3.0.0", | 94 | "bytes": "^3.0.0", |
95 | "chokidar": "^3.4.2", | ||
95 | "commander": "^6.0.0", | 96 | "commander": "^6.0.0", |
96 | "config": "^3.0.0", | 97 | "config": "^3.0.0", |
97 | "cookie-parser": "^1.4.3", | 98 | "cookie-parser": "^1.4.3", |
@@ -122,6 +123,7 @@ | |||
122 | "memoizee": "^0.4.14", | 123 | "memoizee": "^0.4.14", |
123 | "morgan": "^1.5.3", | 124 | "morgan": "^1.5.3", |
124 | "multer": "^1.1.0", | 125 | "multer": "^1.1.0", |
126 | "node-media-server": "^2.1.4", | ||
125 | "nodemailer": "^6.0.0", | 127 | "nodemailer": "^6.0.0", |
126 | "oauth2-server": "3.1.0-beta.1", | 128 | "oauth2-server": "3.1.0-beta.1", |
127 | "parse-torrent": "^7.0.0", | 129 | "parse-torrent": "^7.0.0", |
diff --git a/scripts/create-transcoding-job.ts b/scripts/create-transcoding-job.ts index 7ee0050e3..78eb455aa 100755 --- a/scripts/create-transcoding-job.ts +++ b/scripts/create-transcoding-job.ts | |||
@@ -43,7 +43,7 @@ async function run () { | |||
43 | if (program.generateHls) { | 43 | if (program.generateHls) { |
44 | const resolutionsEnabled = program.resolution | 44 | const resolutionsEnabled = program.resolution |
45 | ? [ program.resolution ] | 45 | ? [ program.resolution ] |
46 | : computeResolutionsToTranscode(videoFileResolution).concat([ videoFileResolution ]) | 46 | : computeResolutionsToTranscode(videoFileResolution, 'vod').concat([ videoFileResolution ]) |
47 | 47 | ||
48 | for (const resolution of resolutionsEnabled) { | 48 | for (const resolution of resolutionsEnabled) { |
49 | dataInput.push({ | 49 | dataInput.push({ |
diff --git a/scripts/update-host.ts b/scripts/update-host.ts index 2efe326a2..d2fb19c76 100755 --- a/scripts/update-host.ts +++ b/scripts/update-host.ts | |||
@@ -130,7 +130,7 @@ async function run () { | |||
130 | 130 | ||
131 | for (const playlist of video.VideoStreamingPlaylists) { | 131 | for (const playlist of video.VideoStreamingPlaylists) { |
132 | playlist.playlistUrl = WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsMasterPlaylistStaticPath(video.uuid) | 132 | playlist.playlistUrl = WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsMasterPlaylistStaticPath(video.uuid) |
133 | playlist.segmentsSha256Url = WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsSha256SegmentsStaticPath(video.uuid) | 133 | playlist.segmentsSha256Url = WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsSha256SegmentsStaticPath(video.uuid, video.isLive) |
134 | 134 | ||
135 | await playlist.save() | 135 | await playlist.save() |
136 | } | 136 | } |
@@ -98,10 +98,12 @@ import { | |||
98 | staticRouter, | 98 | staticRouter, |
99 | lazyStaticRouter, | 99 | lazyStaticRouter, |
100 | servicesRouter, | 100 | servicesRouter, |
101 | liveRouter, | ||
101 | pluginsRouter, | 102 | pluginsRouter, |
102 | webfingerRouter, | 103 | webfingerRouter, |
103 | trackerRouter, | 104 | trackerRouter, |
104 | createWebsocketTrackerServer, botsRouter | 105 | createWebsocketTrackerServer, |
106 | botsRouter | ||
105 | } from './server/controllers' | 107 | } from './server/controllers' |
106 | import { advertiseDoNotTrack } from './server/middlewares/dnt' | 108 | import { advertiseDoNotTrack } from './server/middlewares/dnt' |
107 | import { Redis } from './server/lib/redis' | 109 | import { Redis } from './server/lib/redis' |
@@ -119,6 +121,7 @@ import { updateStreamingPlaylistsInfohashesIfNeeded } from './server/lib/hls' | |||
119 | import { PluginsCheckScheduler } from './server/lib/schedulers/plugins-check-scheduler' | 121 | import { PluginsCheckScheduler } from './server/lib/schedulers/plugins-check-scheduler' |
120 | import { Hooks } from './server/lib/plugins/hooks' | 122 | import { Hooks } from './server/lib/plugins/hooks' |
121 | import { PluginManager } from './server/lib/plugins/plugin-manager' | 123 | import { PluginManager } from './server/lib/plugins/plugin-manager' |
124 | import { LiveManager } from '@server/lib/live-manager' | ||
122 | 125 | ||
123 | // ----------- Command line ----------- | 126 | // ----------- Command line ----------- |
124 | 127 | ||
@@ -139,14 +142,14 @@ if (isTestInstance()) { | |||
139 | } | 142 | } |
140 | 143 | ||
141 | // For the logger | 144 | // For the logger |
142 | morgan.token<express.Request>('remote-addr', req => { | 145 | morgan.token('remote-addr', req => { |
143 | if (CONFIG.LOG.ANONYMIZE_IP === true || req.get('DNT') === '1') { | 146 | if (CONFIG.LOG.ANONYMIZE_IP === true || req.get('DNT') === '1') { |
144 | return anonymize(req.ip, 16, 16) | 147 | return anonymize(req.ip, 16, 16) |
145 | } | 148 | } |
146 | 149 | ||
147 | return req.ip | 150 | return req.ip |
148 | }) | 151 | }) |
149 | morgan.token<express.Request>('user-agent', req => { | 152 | morgan.token('user-agent', req => { |
150 | if (req.get('DNT') === '1') { | 153 | if (req.get('DNT') === '1') { |
151 | return useragent.parse(req.get('user-agent')).family | 154 | return useragent.parse(req.get('user-agent')).family |
152 | } | 155 | } |
@@ -183,6 +186,9 @@ app.use(apiRoute, apiRouter) | |||
183 | // Services (oembed...) | 186 | // Services (oembed...) |
184 | app.use('/services', servicesRouter) | 187 | app.use('/services', servicesRouter) |
185 | 188 | ||
189 | // Live streaming | ||
190 | app.use('/live', liveRouter) | ||
191 | |||
186 | // Plugins & themes | 192 | // Plugins & themes |
187 | app.use('/', pluginsRouter) | 193 | app.use('/', pluginsRouter) |
188 | 194 | ||
@@ -271,6 +277,9 @@ async function startApplication () { | |||
271 | 277 | ||
272 | if (cli.plugins) await PluginManager.Instance.registerPluginsAndThemes() | 278 | if (cli.plugins) await PluginManager.Instance.registerPluginsAndThemes() |
273 | 279 | ||
280 | LiveManager.Instance.init() | ||
281 | if (CONFIG.LIVE.ENABLED) LiveManager.Instance.run() | ||
282 | |||
274 | // Make server listening | 283 | // Make server listening |
275 | server.listen(port, hostname, () => { | 284 | server.listen(port, hostname, () => { |
276 | logger.info('Server listening on %s:%d', hostname, port) | 285 | logger.info('Server listening on %s:%d', hostname, port) |
diff --git a/server/assets/default-live-background.jpg b/server/assets/default-live-background.jpg new file mode 100644 index 000000000..2743af7fc --- /dev/null +++ b/server/assets/default-live-background.jpg | |||
Binary files differ | |||
diff --git a/server/controllers/api/config.ts b/server/controllers/api/config.ts index b80ea4902..bd100ef9c 100644 --- a/server/controllers/api/config.ts +++ b/server/controllers/api/config.ts | |||
@@ -113,7 +113,15 @@ async function getConfig (req: express.Request, res: express.Response) { | |||
113 | webtorrent: { | 113 | webtorrent: { |
114 | enabled: CONFIG.TRANSCODING.WEBTORRENT.ENABLED | 114 | enabled: CONFIG.TRANSCODING.WEBTORRENT.ENABLED |
115 | }, | 115 | }, |
116 | enabledResolutions: getEnabledResolutions() | 116 | enabledResolutions: getEnabledResolutions('vod') |
117 | }, | ||
118 | live: { | ||
119 | enabled: CONFIG.LIVE.ENABLED, | ||
120 | |||
121 | transcoding: { | ||
122 | enabled: CONFIG.LIVE.TRANSCODING.ENABLED, | ||
123 | enabledResolutions: getEnabledResolutions('live') | ||
124 | } | ||
117 | }, | 125 | }, |
118 | import: { | 126 | import: { |
119 | videos: { | 127 | videos: { |
@@ -232,7 +240,7 @@ async function deleteCustomConfig (req: express.Request, res: express.Response) | |||
232 | 240 | ||
233 | const data = customConfig() | 241 | const data = customConfig() |
234 | 242 | ||
235 | return res.json(data).end() | 243 | return res.json(data) |
236 | } | 244 | } |
237 | 245 | ||
238 | async function updateCustomConfig (req: express.Request, res: express.Response) { | 246 | async function updateCustomConfig (req: express.Request, res: express.Response) { |
@@ -254,7 +262,7 @@ async function updateCustomConfig (req: express.Request, res: express.Response) | |||
254 | oldCustomConfigAuditKeys | 262 | oldCustomConfigAuditKeys |
255 | ) | 263 | ) |
256 | 264 | ||
257 | return res.json(data).end() | 265 | return res.json(data) |
258 | } | 266 | } |
259 | 267 | ||
260 | function getRegisteredThemes () { | 268 | function getRegisteredThemes () { |
@@ -268,9 +276,13 @@ function getRegisteredThemes () { | |||
268 | })) | 276 | })) |
269 | } | 277 | } |
270 | 278 | ||
271 | function getEnabledResolutions () { | 279 | function getEnabledResolutions (type: 'vod' | 'live') { |
272 | return Object.keys(CONFIG.TRANSCODING.RESOLUTIONS) | 280 | const transcoding = type === 'vod' |
273 | .filter(key => CONFIG.TRANSCODING.ENABLED && CONFIG.TRANSCODING.RESOLUTIONS[key] === true) | 281 | ? CONFIG.TRANSCODING |
282 | : CONFIG.LIVE.TRANSCODING | ||
283 | |||
284 | return Object.keys(transcoding.RESOLUTIONS) | ||
285 | .filter(key => transcoding.ENABLED && transcoding.RESOLUTIONS[key] === true) | ||
274 | .map(r => parseInt(r, 10)) | 286 | .map(r => parseInt(r, 10)) |
275 | } | 287 | } |
276 | 288 | ||
@@ -411,6 +423,21 @@ function customConfig (): CustomConfig { | |||
411 | enabled: CONFIG.TRANSCODING.HLS.ENABLED | 423 | enabled: CONFIG.TRANSCODING.HLS.ENABLED |
412 | } | 424 | } |
413 | }, | 425 | }, |
426 | live: { | ||
427 | enabled: CONFIG.LIVE.ENABLED, | ||
428 | transcoding: { | ||
429 | enabled: CONFIG.LIVE.TRANSCODING.ENABLED, | ||
430 | threads: CONFIG.LIVE.TRANSCODING.THREADS, | ||
431 | resolutions: { | ||
432 | '240p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['240p'], | ||
433 | '360p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['360p'], | ||
434 | '480p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['480p'], | ||
435 | '720p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['720p'], | ||
436 | '1080p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['1080p'], | ||
437 | '2160p': CONFIG.LIVE.TRANSCODING.RESOLUTIONS['2160p'] | ||
438 | } | ||
439 | } | ||
440 | }, | ||
414 | import: { | 441 | import: { |
415 | videos: { | 442 | videos: { |
416 | http: { | 443 | http: { |
diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 15b6f214f..94f0361ee 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts | |||
@@ -63,6 +63,7 @@ import { blacklistRouter } from './blacklist' | |||
63 | import { videoCaptionsRouter } from './captions' | 63 | import { videoCaptionsRouter } from './captions' |
64 | import { videoCommentRouter } from './comment' | 64 | import { videoCommentRouter } from './comment' |
65 | import { videoImportsRouter } from './import' | 65 | import { videoImportsRouter } from './import' |
66 | import { liveRouter } from './live' | ||
66 | import { ownershipVideoRouter } from './ownership' | 67 | import { ownershipVideoRouter } from './ownership' |
67 | import { rateVideoRouter } from './rate' | 68 | import { rateVideoRouter } from './rate' |
68 | import { watchingRouter } from './watching' | 69 | import { watchingRouter } from './watching' |
@@ -96,6 +97,7 @@ videosRouter.use('/', videoCaptionsRouter) | |||
96 | videosRouter.use('/', videoImportsRouter) | 97 | videosRouter.use('/', videoImportsRouter) |
97 | videosRouter.use('/', ownershipVideoRouter) | 98 | videosRouter.use('/', ownershipVideoRouter) |
98 | videosRouter.use('/', watchingRouter) | 99 | videosRouter.use('/', watchingRouter) |
100 | videosRouter.use('/', liveRouter) | ||
99 | 101 | ||
100 | videosRouter.get('/categories', listVideoCategories) | 102 | videosRouter.get('/categories', listVideoCategories) |
101 | videosRouter.get('/licences', listVideoLicences) | 103 | videosRouter.get('/licences', listVideoLicences) |
@@ -304,7 +306,7 @@ async function addVideo (req: express.Request, res: express.Response) { | |||
304 | id: videoCreated.id, | 306 | id: videoCreated.id, |
305 | uuid: videoCreated.uuid | 307 | uuid: videoCreated.uuid |
306 | } | 308 | } |
307 | }).end() | 309 | }) |
308 | } | 310 | } |
309 | 311 | ||
310 | async function updateVideo (req: express.Request, res: express.Response) { | 312 | async function updateVideo (req: express.Request, res: express.Response) { |
diff --git a/server/controllers/api/videos/live.ts b/server/controllers/api/videos/live.ts new file mode 100644 index 000000000..d08ef9869 --- /dev/null +++ b/server/controllers/api/videos/live.ts | |||
@@ -0,0 +1,116 @@ | |||
1 | import * as express from 'express' | ||
2 | import { v4 as uuidv4 } from 'uuid' | ||
3 | import { createReqFiles } from '@server/helpers/express-utils' | ||
4 | import { CONFIG } from '@server/initializers/config' | ||
5 | import { ASSETS_PATH, MIMETYPES } from '@server/initializers/constants' | ||
6 | import { getVideoActivityPubUrl } from '@server/lib/activitypub/url' | ||
7 | import { videoLiveAddValidator, videoLiveGetValidator } from '@server/middlewares/validators/videos/video-live' | ||
8 | import { VideoLiveModel } from '@server/models/video/video-live' | ||
9 | import { MVideoDetails, MVideoFullLight } from '@server/types/models' | ||
10 | import { VideoCreate, VideoPrivacy, VideoState } from '../../../../shared' | ||
11 | import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' | ||
12 | import { logger } from '../../../helpers/logger' | ||
13 | import { sequelizeTypescript } from '../../../initializers/database' | ||
14 | import { createVideoMiniatureFromExisting } from '../../../lib/thumbnail' | ||
15 | import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate } from '../../../middlewares' | ||
16 | import { TagModel } from '../../../models/video/tag' | ||
17 | import { VideoModel } from '../../../models/video/video' | ||
18 | import { buildLocalVideoFromCreate } from '@server/lib/video' | ||
19 | |||
20 | const liveRouter = express.Router() | ||
21 | |||
22 | const reqVideoFileLive = createReqFiles( | ||
23 | [ 'thumbnailfile', 'previewfile' ], | ||
24 | MIMETYPES.IMAGE.MIMETYPE_EXT, | ||
25 | { | ||
26 | thumbnailfile: CONFIG.STORAGE.TMP_DIR, | ||
27 | previewfile: CONFIG.STORAGE.TMP_DIR | ||
28 | } | ||
29 | ) | ||
30 | |||
31 | liveRouter.post('/live', | ||
32 | authenticate, | ||
33 | reqVideoFileLive, | ||
34 | asyncMiddleware(videoLiveAddValidator), | ||
35 | asyncRetryTransactionMiddleware(addLiveVideo) | ||
36 | ) | ||
37 | |||
38 | liveRouter.get('/live/:videoId', | ||
39 | authenticate, | ||
40 | asyncMiddleware(videoLiveGetValidator), | ||
41 | asyncRetryTransactionMiddleware(getVideoLive) | ||
42 | ) | ||
43 | |||
44 | // --------------------------------------------------------------------------- | ||
45 | |||
46 | export { | ||
47 | liveRouter | ||
48 | } | ||
49 | |||
50 | // --------------------------------------------------------------------------- | ||
51 | |||
52 | async function getVideoLive (req: express.Request, res: express.Response) { | ||
53 | const videoLive = res.locals.videoLive | ||
54 | |||
55 | return res.json(videoLive.toFormattedJSON()) | ||
56 | } | ||
57 | |||
58 | async function addLiveVideo (req: express.Request, res: express.Response) { | ||
59 | const videoInfo: VideoCreate = req.body | ||
60 | |||
61 | // Prepare data so we don't block the transaction | ||
62 | const videoData = buildLocalVideoFromCreate(videoInfo, res.locals.videoChannel.id) | ||
63 | videoData.isLive = true | ||
64 | |||
65 | const videoLive = new VideoLiveModel() | ||
66 | videoLive.streamKey = uuidv4() | ||
67 | |||
68 | const video = new VideoModel(videoData) as MVideoDetails | ||
69 | video.url = getVideoActivityPubUrl(video) // We use the UUID, so set the URL after building the object | ||
70 | |||
71 | // Process thumbnail or create it from the video | ||
72 | const thumbnailField = req.files ? req.files['thumbnailfile'] : null | ||
73 | const thumbnailModel = thumbnailField | ||
74 | ? await createVideoMiniatureFromExisting(thumbnailField[0].path, video, ThumbnailType.MINIATURE, false) | ||
75 | : await createVideoMiniatureFromExisting(ASSETS_PATH.DEFAULT_LIVE_BACKGROUND, video, ThumbnailType.MINIATURE, true) | ||
76 | |||
77 | // Process preview or create it from the video | ||
78 | const previewField = req.files ? req.files['previewfile'] : null | ||
79 | const previewModel = previewField | ||
80 | ? await createVideoMiniatureFromExisting(previewField[0].path, video, ThumbnailType.PREVIEW, false) | ||
81 | : await createVideoMiniatureFromExisting(ASSETS_PATH.DEFAULT_LIVE_BACKGROUND, video, ThumbnailType.PREVIEW, true) | ||
82 | |||
83 | const { videoCreated } = await sequelizeTypescript.transaction(async t => { | ||
84 | const sequelizeOptions = { transaction: t } | ||
85 | |||
86 | const videoCreated = await video.save(sequelizeOptions) as MVideoFullLight | ||
87 | |||
88 | if (thumbnailModel) await videoCreated.addAndSaveThumbnail(thumbnailModel, t) | ||
89 | if (previewModel) await videoCreated.addAndSaveThumbnail(previewModel, t) | ||
90 | |||
91 | // Do not forget to add video channel information to the created video | ||
92 | videoCreated.VideoChannel = res.locals.videoChannel | ||
93 | |||
94 | videoLive.videoId = videoCreated.id | ||
95 | await videoLive.save(sequelizeOptions) | ||
96 | |||
97 | // Create tags | ||
98 | if (videoInfo.tags !== undefined) { | ||
99 | const tagInstances = await TagModel.findOrCreateTags(videoInfo.tags, t) | ||
100 | |||
101 | await video.$set('Tags', tagInstances, sequelizeOptions) | ||
102 | video.Tags = tagInstances | ||
103 | } | ||
104 | |||
105 | logger.info('Video live %s with uuid %s created.', videoInfo.name, videoCreated.uuid) | ||
106 | |||
107 | return { videoCreated } | ||
108 | }) | ||
109 | |||
110 | return res.json({ | ||
111 | video: { | ||
112 | id: videoCreated.id, | ||
113 | uuid: videoCreated.uuid | ||
114 | } | ||
115 | }) | ||
116 | } | ||
diff --git a/server/controllers/index.ts b/server/controllers/index.ts index 0d64b33bb..5a199ae9c 100644 --- a/server/controllers/index.ts +++ b/server/controllers/index.ts | |||
@@ -5,6 +5,7 @@ export * from './feeds' | |||
5 | export * from './services' | 5 | export * from './services' |
6 | export * from './static' | 6 | export * from './static' |
7 | export * from './lazy-static' | 7 | export * from './lazy-static' |
8 | export * from './live' | ||
8 | export * from './webfinger' | 9 | export * from './webfinger' |
9 | export * from './tracker' | 10 | export * from './tracker' |
10 | export * from './bots' | 11 | export * from './bots' |
diff --git a/server/controllers/live.ts b/server/controllers/live.ts new file mode 100644 index 000000000..fa4c2cc1a --- /dev/null +++ b/server/controllers/live.ts | |||
@@ -0,0 +1,29 @@ | |||
1 | import * as express from 'express' | ||
2 | import { mapToJSON } from '@server/helpers/core-utils' | ||
3 | import { LiveManager } from '@server/lib/live-manager' | ||
4 | |||
5 | const liveRouter = express.Router() | ||
6 | |||
7 | liveRouter.use('/segments-sha256/:videoUUID', | ||
8 | getSegmentsSha256 | ||
9 | ) | ||
10 | |||
11 | // --------------------------------------------------------------------------- | ||
12 | |||
13 | export { | ||
14 | liveRouter | ||
15 | } | ||
16 | |||
17 | // --------------------------------------------------------------------------- | ||
18 | |||
19 | function getSegmentsSha256 (req: express.Request, res: express.Response) { | ||
20 | const videoUUID = req.params.videoUUID | ||
21 | |||
22 | const result = LiveManager.Instance.getSegmentsSha256(videoUUID) | ||
23 | |||
24 | if (!result) { | ||
25 | return res.sendStatus(404) | ||
26 | } | ||
27 | |||
28 | return res.json(mapToJSON(result)) | ||
29 | } | ||
diff --git a/server/controllers/static.ts b/server/controllers/static.ts index 3f7bbdbae..e04c27b11 100644 --- a/server/controllers/static.ts +++ b/server/controllers/static.ts | |||
@@ -260,7 +260,14 @@ async function generateNodeinfo (req: express.Request, res: express.Response) { | |||
260 | webtorrent: { | 260 | webtorrent: { |
261 | enabled: CONFIG.TRANSCODING.WEBTORRENT.ENABLED | 261 | enabled: CONFIG.TRANSCODING.WEBTORRENT.ENABLED |
262 | }, | 262 | }, |
263 | enabledResolutions: getEnabledResolutions() | 263 | enabledResolutions: getEnabledResolutions('vod') |
264 | }, | ||
265 | live: { | ||
266 | enabled: CONFIG.LIVE.ENABLED, | ||
267 | transcoding: { | ||
268 | enabled: CONFIG.LIVE.TRANSCODING.ENABLED, | ||
269 | enabledResolutions: getEnabledResolutions('live') | ||
270 | } | ||
264 | }, | 271 | }, |
265 | import: { | 272 | import: { |
266 | videos: { | 273 | videos: { |
diff --git a/server/helpers/core-utils.ts b/server/helpers/core-utils.ts index b1f5d9610..49eee7c59 100644 --- a/server/helpers/core-utils.ts +++ b/server/helpers/core-utils.ts | |||
@@ -175,6 +175,16 @@ function pageToStartAndCount (page: number, itemsPerPage: number) { | |||
175 | return { start, count: itemsPerPage } | 175 | return { start, count: itemsPerPage } |
176 | } | 176 | } |
177 | 177 | ||
178 | function mapToJSON (map: Map<any, any>) { | ||
179 | const obj: any = {} | ||
180 | |||
181 | for (const [ k, v ] of map) { | ||
182 | obj[k] = v | ||
183 | } | ||
184 | |||
185 | return obj | ||
186 | } | ||
187 | |||
178 | function buildPath (path: string) { | 188 | function buildPath (path: string) { |
179 | if (isAbsolute(path)) return path | 189 | if (isAbsolute(path)) return path |
180 | 190 | ||
@@ -263,6 +273,7 @@ export { | |||
263 | 273 | ||
264 | sha256, | 274 | sha256, |
265 | sha1, | 275 | sha1, |
276 | mapToJSON, | ||
266 | 277 | ||
267 | promisify0, | 278 | promisify0, |
268 | promisify1, | 279 | promisify1, |
diff --git a/server/helpers/custom-validators/videos.ts b/server/helpers/custom-validators/videos.ts index 40fecc09b..e99992236 100644 --- a/server/helpers/custom-validators/videos.ts +++ b/server/helpers/custom-validators/videos.ts | |||
@@ -8,7 +8,8 @@ import { | |||
8 | VIDEO_LICENCES, | 8 | VIDEO_LICENCES, |
9 | VIDEO_PRIVACIES, | 9 | VIDEO_PRIVACIES, |
10 | VIDEO_RATE_TYPES, | 10 | VIDEO_RATE_TYPES, |
11 | VIDEO_STATES | 11 | VIDEO_STATES, |
12 | VIDEO_LIVE | ||
12 | } from '../../initializers/constants' | 13 | } from '../../initializers/constants' |
13 | import { exists, isArray, isDateValid, isFileValid } from './misc' | 14 | import { exists, isArray, isDateValid, isFileValid } from './misc' |
14 | import * as magnetUtil from 'magnet-uri' | 15 | import * as magnetUtil from 'magnet-uri' |
@@ -77,7 +78,7 @@ function isVideoRatingTypeValid (value: string) { | |||
77 | } | 78 | } |
78 | 79 | ||
79 | function isVideoFileExtnameValid (value: string) { | 80 | function isVideoFileExtnameValid (value: string) { |
80 | return exists(value) && MIMETYPES.VIDEO.EXT_MIMETYPE[value] !== undefined | 81 | return exists(value) && (value === VIDEO_LIVE.EXTENSION || MIMETYPES.VIDEO.EXT_MIMETYPE[value] !== undefined) |
81 | } | 82 | } |
82 | 83 | ||
83 | function isVideoFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) { | 84 | function isVideoFile (files: { [ fieldname: string ]: Express.Multer.File[] } | Express.Multer.File[]) { |
diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index 02c66cd01..fac2595f1 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts | |||
@@ -1,13 +1,13 @@ | |||
1 | import * as ffmpeg from 'fluent-ffmpeg' | 1 | import * as ffmpeg from 'fluent-ffmpeg' |
2 | import { readFile, remove, writeFile } from 'fs-extra' | ||
2 | import { dirname, join } from 'path' | 3 | import { dirname, join } from 'path' |
4 | import { VideoFileMetadata } from '@shared/models/videos/video-file-metadata' | ||
3 | import { getMaxBitrate, getTargetBitrate, VideoResolution } from '../../shared/models/videos' | 5 | import { getMaxBitrate, getTargetBitrate, VideoResolution } from '../../shared/models/videos' |
6 | import { checkFFmpegEncoders } from '../initializers/checker-before-init' | ||
7 | import { CONFIG } from '../initializers/config' | ||
4 | import { FFMPEG_NICE, VIDEO_TRANSCODING_FPS } from '../initializers/constants' | 8 | import { FFMPEG_NICE, VIDEO_TRANSCODING_FPS } from '../initializers/constants' |
5 | import { processImage } from './image-utils' | 9 | import { processImage } from './image-utils' |
6 | import { logger } from './logger' | 10 | import { logger } from './logger' |
7 | import { checkFFmpegEncoders } from '../initializers/checker-before-init' | ||
8 | import { readFile, remove, writeFile } from 'fs-extra' | ||
9 | import { CONFIG } from '../initializers/config' | ||
10 | import { VideoFileMetadata } from '@shared/models/videos/video-file-metadata' | ||
11 | 11 | ||
12 | /** | 12 | /** |
13 | * A toolbox to play with audio | 13 | * A toolbox to play with audio |
@@ -74,9 +74,12 @@ namespace audio { | |||
74 | } | 74 | } |
75 | } | 75 | } |
76 | 76 | ||
77 | function computeResolutionsToTranscode (videoFileResolution: number) { | 77 | function computeResolutionsToTranscode (videoFileResolution: number, type: 'vod' | 'live') { |
78 | const configResolutions = type === 'vod' | ||
79 | ? CONFIG.TRANSCODING.RESOLUTIONS | ||
80 | : CONFIG.LIVE.TRANSCODING.RESOLUTIONS | ||
81 | |||
78 | const resolutionsEnabled: number[] = [] | 82 | const resolutionsEnabled: number[] = [] |
79 | const configResolutions = CONFIG.TRANSCODING.RESOLUTIONS | ||
80 | 83 | ||
81 | // Put in the order we want to proceed jobs | 84 | // Put in the order we want to proceed jobs |
82 | const resolutions = [ | 85 | const resolutions = [ |
@@ -270,14 +273,13 @@ type TranscodeOptions = | |||
270 | function transcode (options: TranscodeOptions) { | 273 | function transcode (options: TranscodeOptions) { |
271 | return new Promise<void>(async (res, rej) => { | 274 | return new Promise<void>(async (res, rej) => { |
272 | try { | 275 | try { |
273 | // we set cwd explicitly because ffmpeg appears to create temporary files when trancoding which fails in read-only file systems | 276 | let command = getFFmpeg(options.inputPath) |
274 | let command = ffmpeg(options.inputPath, { niceness: FFMPEG_NICE.TRANSCODING, cwd: CONFIG.STORAGE.TMP_DIR }) | ||
275 | .output(options.outputPath) | 277 | .output(options.outputPath) |
276 | 278 | ||
277 | if (options.type === 'quick-transcode') { | 279 | if (options.type === 'quick-transcode') { |
278 | command = buildQuickTranscodeCommand(command) | 280 | command = buildQuickTranscodeCommand(command) |
279 | } else if (options.type === 'hls') { | 281 | } else if (options.type === 'hls') { |
280 | command = await buildHLSCommand(command, options) | 282 | command = await buildHLSVODCommand(command, options) |
281 | } else if (options.type === 'merge-audio') { | 283 | } else if (options.type === 'merge-audio') { |
282 | command = await buildAudioMergeCommand(command, options) | 284 | command = await buildAudioMergeCommand(command, options) |
283 | } else if (options.type === 'only-audio') { | 285 | } else if (options.type === 'only-audio') { |
@@ -286,11 +288,6 @@ function transcode (options: TranscodeOptions) { | |||
286 | command = await buildx264Command(command, options) | 288 | command = await buildx264Command(command, options) |
287 | } | 289 | } |
288 | 290 | ||
289 | if (CONFIG.TRANSCODING.THREADS > 0) { | ||
290 | // if we don't set any threads ffmpeg will chose automatically | ||
291 | command = command.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS) | ||
292 | } | ||
293 | |||
294 | command | 291 | command |
295 | .on('error', (err, stdout, stderr) => { | 292 | .on('error', (err, stdout, stderr) => { |
296 | logger.error('Error in transcoding job.', { stdout, stderr }) | 293 | logger.error('Error in transcoding job.', { stdout, stderr }) |
@@ -356,16 +353,89 @@ function convertWebPToJPG (path: string, destination: string): Promise<void> { | |||
356 | }) | 353 | }) |
357 | } | 354 | } |
358 | 355 | ||
356 | function runLiveTranscoding (rtmpUrl: string, outPath: string, resolutions: number[]) { | ||
357 | const command = getFFmpeg(rtmpUrl) | ||
358 | command.inputOption('-fflags nobuffer') | ||
359 | |||
360 | const varStreamMap: string[] = [] | ||
361 | |||
362 | command.complexFilter([ | ||
363 | { | ||
364 | inputs: '[v:0]', | ||
365 | filter: 'split', | ||
366 | options: resolutions.length, | ||
367 | outputs: resolutions.map(r => `vtemp${r}`) | ||
368 | }, | ||
369 | |||
370 | ...resolutions.map(r => ({ | ||
371 | inputs: `vtemp${r}`, | ||
372 | filter: 'scale', | ||
373 | options: `w=-2:h=${r}`, | ||
374 | outputs: `vout${r}` | ||
375 | })) | ||
376 | ]) | ||
377 | |||
378 | const liveFPS = VIDEO_TRANSCODING_FPS.AVERAGE | ||
379 | |||
380 | command.withFps(liveFPS) | ||
381 | |||
382 | command.outputOption('-b_strategy 1') | ||
383 | command.outputOption('-bf 16') | ||
384 | command.outputOption('-preset superfast') | ||
385 | command.outputOption('-level 3.1') | ||
386 | command.outputOption('-map_metadata -1') | ||
387 | command.outputOption('-pix_fmt yuv420p') | ||
388 | |||
389 | for (let i = 0; i < resolutions.length; i++) { | ||
390 | const resolution = resolutions[i] | ||
391 | |||
392 | command.outputOption(`-map [vout${resolution}]`) | ||
393 | command.outputOption(`-c:v:${i} libx264`) | ||
394 | command.outputOption(`-b:v:${i} ${getTargetBitrate(resolution, liveFPS, VIDEO_TRANSCODING_FPS)}`) | ||
395 | |||
396 | command.outputOption(`-map a:0`) | ||
397 | command.outputOption(`-c:a:${i} aac`) | ||
398 | |||
399 | varStreamMap.push(`v:${i},a:${i}`) | ||
400 | } | ||
401 | |||
402 | addDefaultLiveHLSParams(command, outPath) | ||
403 | |||
404 | command.outputOption('-var_stream_map', varStreamMap.join(' ')) | ||
405 | |||
406 | command.run() | ||
407 | |||
408 | return command | ||
409 | } | ||
410 | |||
411 | function runLiveMuxing (rtmpUrl: string, outPath: string) { | ||
412 | const command = getFFmpeg(rtmpUrl) | ||
413 | command.inputOption('-fflags nobuffer') | ||
414 | |||
415 | command.outputOption('-c:v copy') | ||
416 | command.outputOption('-c:a copy') | ||
417 | command.outputOption('-map 0:a?') | ||
418 | command.outputOption('-map 0:v?') | ||
419 | |||
420 | addDefaultLiveHLSParams(command, outPath) | ||
421 | |||
422 | command.run() | ||
423 | |||
424 | return command | ||
425 | } | ||
426 | |||
359 | // --------------------------------------------------------------------------- | 427 | // --------------------------------------------------------------------------- |
360 | 428 | ||
361 | export { | 429 | export { |
362 | getVideoStreamCodec, | 430 | getVideoStreamCodec, |
363 | getAudioStreamCodec, | 431 | getAudioStreamCodec, |
432 | runLiveMuxing, | ||
364 | convertWebPToJPG, | 433 | convertWebPToJPG, |
365 | getVideoStreamSize, | 434 | getVideoStreamSize, |
366 | getVideoFileResolution, | 435 | getVideoFileResolution, |
367 | getMetadataFromFile, | 436 | getMetadataFromFile, |
368 | getDurationFromVideoFile, | 437 | getDurationFromVideoFile, |
438 | runLiveTranscoding, | ||
369 | generateImageFromVideoFile, | 439 | generateImageFromVideoFile, |
370 | TranscodeOptions, | 440 | TranscodeOptions, |
371 | TranscodeOptionsType, | 441 | TranscodeOptionsType, |
@@ -379,6 +449,25 @@ export { | |||
379 | 449 | ||
380 | // --------------------------------------------------------------------------- | 450 | // --------------------------------------------------------------------------- |
381 | 451 | ||
452 | function addDefaultX264Params (command: ffmpeg.FfmpegCommand) { | ||
453 | command.outputOption('-level 3.1') // 3.1 is the minimal resource allocation for our highest supported resolution | ||
454 | .outputOption('-b_strategy 1') // NOTE: b-strategy 1 - heuristic algorithm, 16 is optimal B-frames for it | ||
455 | .outputOption('-bf 16') // NOTE: Why 16: https://github.com/Chocobozzz/PeerTube/pull/774. b-strategy 2 -> B-frames<16 | ||
456 | .outputOption('-pix_fmt yuv420p') // allows import of source material with incompatible pixel formats (e.g. MJPEG video) | ||
457 | .outputOption('-map_metadata -1') // strip all metadata | ||
458 | } | ||
459 | |||
460 | function addDefaultLiveHLSParams (command: ffmpeg.FfmpegCommand, outPath: string) { | ||
461 | command.outputOption('-hls_time 4') | ||
462 | command.outputOption('-hls_list_size 15') | ||
463 | command.outputOption('-hls_flags delete_segments') | ||
464 | command.outputOption(`-hls_segment_filename ${join(outPath, '%v-%d.ts')}`) | ||
465 | command.outputOption('-master_pl_name master.m3u8') | ||
466 | command.outputOption(`-f hls`) | ||
467 | |||
468 | command.output(join(outPath, '%v.m3u8')) | ||
469 | } | ||
470 | |||
382 | async function buildx264Command (command: ffmpeg.FfmpegCommand, options: TranscodeOptions) { | 471 | async function buildx264Command (command: ffmpeg.FfmpegCommand, options: TranscodeOptions) { |
383 | let fps = await getVideoFileFPS(options.inputPath) | 472 | let fps = await getVideoFileFPS(options.inputPath) |
384 | if ( | 473 | if ( |
@@ -438,7 +527,7 @@ function buildQuickTranscodeCommand (command: ffmpeg.FfmpegCommand) { | |||
438 | return command | 527 | return command |
439 | } | 528 | } |
440 | 529 | ||
441 | async function buildHLSCommand (command: ffmpeg.FfmpegCommand, options: HLSTranscodeOptions) { | 530 | async function buildHLSVODCommand (command: ffmpeg.FfmpegCommand, options: HLSTranscodeOptions) { |
442 | const videoPath = getHLSVideoPath(options) | 531 | const videoPath = getHLSVideoPath(options) |
443 | 532 | ||
444 | if (options.copyCodecs) command = presetCopy(command) | 533 | if (options.copyCodecs) command = presetCopy(command) |
@@ -508,13 +597,10 @@ async function presetH264 (command: ffmpeg.FfmpegCommand, input: string, resolut | |||
508 | let localCommand = command | 597 | let localCommand = command |
509 | .format('mp4') | 598 | .format('mp4') |
510 | .videoCodec('libx264') | 599 | .videoCodec('libx264') |
511 | .outputOption('-level 3.1') // 3.1 is the minimal resource allocation for our highest supported resolution | ||
512 | .outputOption('-b_strategy 1') // NOTE: b-strategy 1 - heuristic algorithm, 16 is optimal B-frames for it | ||
513 | .outputOption('-bf 16') // NOTE: Why 16: https://github.com/Chocobozzz/PeerTube/pull/774. b-strategy 2 -> B-frames<16 | ||
514 | .outputOption('-pix_fmt yuv420p') // allows import of source material with incompatible pixel formats (e.g. MJPEG video) | ||
515 | .outputOption('-map_metadata -1') // strip all metadata | ||
516 | .outputOption('-movflags faststart') | 600 | .outputOption('-movflags faststart') |
517 | 601 | ||
602 | addDefaultX264Params(localCommand) | ||
603 | |||
518 | const parsedAudio = await audio.get(input) | 604 | const parsedAudio = await audio.get(input) |
519 | 605 | ||
520 | if (!parsedAudio.audioStream) { | 606 | if (!parsedAudio.audioStream) { |
@@ -565,3 +651,15 @@ function presetOnlyAudio (command: ffmpeg.FfmpegCommand): ffmpeg.FfmpegCommand { | |||
565 | .audioCodec('copy') | 651 | .audioCodec('copy') |
566 | .noVideo() | 652 | .noVideo() |
567 | } | 653 | } |
654 | |||
655 | function getFFmpeg (input: string) { | ||
656 | // We set cwd explicitly because ffmpeg appears to create temporary files when trancoding which fails in read-only file systems | ||
657 | const command = ffmpeg(input, { niceness: FFMPEG_NICE.TRANSCODING, cwd: CONFIG.STORAGE.TMP_DIR }) | ||
658 | |||
659 | if (CONFIG.TRANSCODING.THREADS > 0) { | ||
660 | // If we don't set any threads ffmpeg will chose automatically | ||
661 | command.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS) | ||
662 | } | ||
663 | |||
664 | return command | ||
665 | } | ||
diff --git a/server/initializers/config.ts b/server/initializers/config.ts index b40e525a5..7a8200ed9 100644 --- a/server/initializers/config.ts +++ b/server/initializers/config.ts | |||
@@ -198,6 +198,27 @@ const CONFIG = { | |||
198 | get ENABLED () { return config.get<boolean>('transcoding.webtorrent.enabled') } | 198 | get ENABLED () { return config.get<boolean>('transcoding.webtorrent.enabled') } |
199 | } | 199 | } |
200 | }, | 200 | }, |
201 | LIVE: { | ||
202 | get ENABLED () { return config.get<boolean>('live.enabled') }, | ||
203 | |||
204 | RTMP: { | ||
205 | get PORT () { return config.get<number>('live.rtmp.port') } | ||
206 | }, | ||
207 | |||
208 | TRANSCODING: { | ||
209 | get ENABLED () { return config.get<boolean>('live.transcoding.enabled') }, | ||
210 | get THREADS () { return config.get<number>('live.transcoding.threads') }, | ||
211 | |||
212 | RESOLUTIONS: { | ||
213 | get '240p' () { return config.get<boolean>('live.transcoding.resolutions.240p') }, | ||
214 | get '360p' () { return config.get<boolean>('live.transcoding.resolutions.360p') }, | ||
215 | get '480p' () { return config.get<boolean>('live.transcoding.resolutions.480p') }, | ||
216 | get '720p' () { return config.get<boolean>('live.transcoding.resolutions.720p') }, | ||
217 | get '1080p' () { return config.get<boolean>('live.transcoding.resolutions.1080p') }, | ||
218 | get '2160p' () { return config.get<boolean>('live.transcoding.resolutions.2160p') } | ||
219 | } | ||
220 | } | ||
221 | }, | ||
201 | IMPORT: { | 222 | IMPORT: { |
202 | VIDEOS: { | 223 | VIDEOS: { |
203 | HTTP: { | 224 | HTTP: { |
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 171e9e9c2..606eeba2d 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts | |||
@@ -23,7 +23,7 @@ import { CONFIG, registerConfigChangedHandler } from './config' | |||
23 | 23 | ||
24 | // --------------------------------------------------------------------------- | 24 | // --------------------------------------------------------------------------- |
25 | 25 | ||
26 | const LAST_MIGRATION_VERSION = 530 | 26 | const LAST_MIGRATION_VERSION = 540 |
27 | 27 | ||
28 | // --------------------------------------------------------------------------- | 28 | // --------------------------------------------------------------------------- |
29 | 29 | ||
@@ -50,7 +50,8 @@ const WEBSERVER = { | |||
50 | SCHEME: '', | 50 | SCHEME: '', |
51 | WS: '', | 51 | WS: '', |
52 | HOSTNAME: '', | 52 | HOSTNAME: '', |
53 | PORT: 0 | 53 | PORT: 0, |
54 | RTMP_URL: '' | ||
54 | } | 55 | } |
55 | 56 | ||
56 | // Sortable columns per schema | 57 | // Sortable columns per schema |
@@ -264,7 +265,7 @@ const CONSTRAINTS_FIELDS = { | |||
264 | VIEWS: { min: 0 }, | 265 | VIEWS: { min: 0 }, |
265 | LIKES: { min: 0 }, | 266 | LIKES: { min: 0 }, |
266 | DISLIKES: { min: 0 }, | 267 | DISLIKES: { min: 0 }, |
267 | FILE_SIZE: { min: 10 }, | 268 | FILE_SIZE: { min: -1 }, |
268 | URL: { min: 3, max: 2000 } // Length | 269 | URL: { min: 3, max: 2000 } // Length |
269 | }, | 270 | }, |
270 | VIDEO_PLAYLISTS: { | 271 | VIDEO_PLAYLISTS: { |
@@ -370,39 +371,41 @@ const VIDEO_LICENCES = { | |||
370 | 371 | ||
371 | const VIDEO_LANGUAGES: { [id: string]: string } = {} | 372 | const VIDEO_LANGUAGES: { [id: string]: string } = {} |
372 | 373 | ||
373 | const VIDEO_PRIVACIES = { | 374 | const VIDEO_PRIVACIES: { [ id in VideoPrivacy ]: string } = { |
374 | [VideoPrivacy.PUBLIC]: 'Public', | 375 | [VideoPrivacy.PUBLIC]: 'Public', |
375 | [VideoPrivacy.UNLISTED]: 'Unlisted', | 376 | [VideoPrivacy.UNLISTED]: 'Unlisted', |
376 | [VideoPrivacy.PRIVATE]: 'Private', | 377 | [VideoPrivacy.PRIVATE]: 'Private', |
377 | [VideoPrivacy.INTERNAL]: 'Internal' | 378 | [VideoPrivacy.INTERNAL]: 'Internal' |
378 | } | 379 | } |
379 | 380 | ||
380 | const VIDEO_STATES = { | 381 | const VIDEO_STATES: { [ id in VideoState ]: string } = { |
381 | [VideoState.PUBLISHED]: 'Published', | 382 | [VideoState.PUBLISHED]: 'Published', |
382 | [VideoState.TO_TRANSCODE]: 'To transcode', | 383 | [VideoState.TO_TRANSCODE]: 'To transcode', |
383 | [VideoState.TO_IMPORT]: 'To import' | 384 | [VideoState.TO_IMPORT]: 'To import', |
385 | [VideoState.WAITING_FOR_LIVE]: 'Waiting for livestream', | ||
386 | [VideoState.LIVE_ENDED]: 'Livestream ended' | ||
384 | } | 387 | } |
385 | 388 | ||
386 | const VIDEO_IMPORT_STATES = { | 389 | const VIDEO_IMPORT_STATES: { [ id in VideoImportState ]: string } = { |
387 | [VideoImportState.FAILED]: 'Failed', | 390 | [VideoImportState.FAILED]: 'Failed', |
388 | [VideoImportState.PENDING]: 'Pending', | 391 | [VideoImportState.PENDING]: 'Pending', |
389 | [VideoImportState.SUCCESS]: 'Success', | 392 | [VideoImportState.SUCCESS]: 'Success', |
390 | [VideoImportState.REJECTED]: 'Rejected' | 393 | [VideoImportState.REJECTED]: 'Rejected' |
391 | } | 394 | } |
392 | 395 | ||
393 | const ABUSE_STATES = { | 396 | const ABUSE_STATES: { [ id in AbuseState ]: string } = { |
394 | [AbuseState.PENDING]: 'Pending', | 397 | [AbuseState.PENDING]: 'Pending', |
395 | [AbuseState.REJECTED]: 'Rejected', | 398 | [AbuseState.REJECTED]: 'Rejected', |
396 | [AbuseState.ACCEPTED]: 'Accepted' | 399 | [AbuseState.ACCEPTED]: 'Accepted' |
397 | } | 400 | } |
398 | 401 | ||
399 | const VIDEO_PLAYLIST_PRIVACIES = { | 402 | const VIDEO_PLAYLIST_PRIVACIES: { [ id in VideoPlaylistPrivacy ]: string } = { |
400 | [VideoPlaylistPrivacy.PUBLIC]: 'Public', | 403 | [VideoPlaylistPrivacy.PUBLIC]: 'Public', |
401 | [VideoPlaylistPrivacy.UNLISTED]: 'Unlisted', | 404 | [VideoPlaylistPrivacy.UNLISTED]: 'Unlisted', |
402 | [VideoPlaylistPrivacy.PRIVATE]: 'Private' | 405 | [VideoPlaylistPrivacy.PRIVATE]: 'Private' |
403 | } | 406 | } |
404 | 407 | ||
405 | const VIDEO_PLAYLIST_TYPES = { | 408 | const VIDEO_PLAYLIST_TYPES: { [ id in VideoPlaylistType ]: string } = { |
406 | [VideoPlaylistType.REGULAR]: 'Regular', | 409 | [VideoPlaylistType.REGULAR]: 'Regular', |
407 | [VideoPlaylistType.WATCH_LATER]: 'Watch later' | 410 | [VideoPlaylistType.WATCH_LATER]: 'Watch later' |
408 | } | 411 | } |
@@ -600,6 +603,17 @@ const LRU_CACHE = { | |||
600 | const HLS_STREAMING_PLAYLIST_DIRECTORY = join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls') | 603 | const HLS_STREAMING_PLAYLIST_DIRECTORY = join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls') |
601 | const HLS_REDUNDANCY_DIRECTORY = join(CONFIG.STORAGE.REDUNDANCY_DIR, 'hls') | 604 | const HLS_REDUNDANCY_DIRECTORY = join(CONFIG.STORAGE.REDUNDANCY_DIR, 'hls') |
602 | 605 | ||
606 | const VIDEO_LIVE = { | ||
607 | EXTENSION: '.ts', | ||
608 | RTMP: { | ||
609 | CHUNK_SIZE: 60000, | ||
610 | GOP_CACHE: true, | ||
611 | PING: 60, | ||
612 | PING_TIMEOUT: 30, | ||
613 | BASE_PATH: 'live' | ||
614 | } | ||
615 | } | ||
616 | |||
603 | const MEMOIZE_TTL = { | 617 | const MEMOIZE_TTL = { |
604 | OVERVIEWS_SAMPLE: 1000 * 3600 * 4, // 4 hours | 618 | OVERVIEWS_SAMPLE: 1000 * 3600 * 4, // 4 hours |
605 | INFO_HASH_EXISTS: 1000 * 3600 * 12 // 12 hours | 619 | INFO_HASH_EXISTS: 1000 * 3600 * 12 // 12 hours |
@@ -622,7 +636,8 @@ const REDUNDANCY = { | |||
622 | const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS) | 636 | const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS) |
623 | 637 | ||
624 | const ASSETS_PATH = { | 638 | const ASSETS_PATH = { |
625 | DEFAULT_AUDIO_BACKGROUND: join(root(), 'dist', 'server', 'assets', 'default-audio-background.jpg') | 639 | DEFAULT_AUDIO_BACKGROUND: join(root(), 'dist', 'server', 'assets', 'default-audio-background.jpg'), |
640 | DEFAULT_LIVE_BACKGROUND: join(root(), 'dist', 'server', 'assets', 'default-live-background.jpg') | ||
626 | } | 641 | } |
627 | 642 | ||
628 | // --------------------------------------------------------------------------- | 643 | // --------------------------------------------------------------------------- |
@@ -688,9 +703,9 @@ if (isTestInstance() === true) { | |||
688 | STATIC_MAX_AGE.SERVER = '0' | 703 | STATIC_MAX_AGE.SERVER = '0' |
689 | 704 | ||
690 | ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE = 2 | 705 | ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE = 2 |
691 | ACTIVITY_PUB.ACTOR_REFRESH_INTERVAL = 10 * 1000 // 10 seconds | 706 | ACTIVITY_PUB.ACTOR_REFRESH_INTERVAL = 100 * 10000 // 10 seconds |
692 | ACTIVITY_PUB.VIDEO_REFRESH_INTERVAL = 10 * 1000 // 10 seconds | 707 | ACTIVITY_PUB.VIDEO_REFRESH_INTERVAL = 100 * 10000 // 10 seconds |
693 | ACTIVITY_PUB.VIDEO_PLAYLIST_REFRESH_INTERVAL = 10 * 1000 // 10 seconds | 708 | ACTIVITY_PUB.VIDEO_PLAYLIST_REFRESH_INTERVAL = 100 * 10000 // 10 seconds |
694 | 709 | ||
695 | CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max = 100 * 1024 // 100KB | 710 | CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max = 100 * 1024 // 100KB |
696 | 711 | ||
@@ -737,6 +752,7 @@ const FILES_CONTENT_HASH = { | |||
737 | export { | 752 | export { |
738 | WEBSERVER, | 753 | WEBSERVER, |
739 | API_VERSION, | 754 | API_VERSION, |
755 | VIDEO_LIVE, | ||
740 | PEERTUBE_VERSION, | 756 | PEERTUBE_VERSION, |
741 | LAZY_STATIC_PATHS, | 757 | LAZY_STATIC_PATHS, |
742 | SEARCH_INDEX, | 758 | SEARCH_INDEX, |
@@ -892,10 +908,14 @@ function buildVideoMimetypeExt () { | |||
892 | function updateWebserverUrls () { | 908 | function updateWebserverUrls () { |
893 | WEBSERVER.URL = sanitizeUrl(CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT) | 909 | WEBSERVER.URL = sanitizeUrl(CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT) |
894 | WEBSERVER.HOST = sanitizeHost(CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT, REMOTE_SCHEME.HTTP) | 910 | WEBSERVER.HOST = sanitizeHost(CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT, REMOTE_SCHEME.HTTP) |
895 | WEBSERVER.SCHEME = CONFIG.WEBSERVER.SCHEME | ||
896 | WEBSERVER.WS = CONFIG.WEBSERVER.WS | 911 | WEBSERVER.WS = CONFIG.WEBSERVER.WS |
912 | |||
913 | WEBSERVER.SCHEME = CONFIG.WEBSERVER.SCHEME | ||
897 | WEBSERVER.HOSTNAME = CONFIG.WEBSERVER.HOSTNAME | 914 | WEBSERVER.HOSTNAME = CONFIG.WEBSERVER.HOSTNAME |
898 | WEBSERVER.PORT = CONFIG.WEBSERVER.PORT | 915 | WEBSERVER.PORT = CONFIG.WEBSERVER.PORT |
916 | WEBSERVER.PORT = CONFIG.WEBSERVER.PORT | ||
917 | |||
918 | WEBSERVER.RTMP_URL = 'rtmp://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.LIVE.RTMP.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH | ||
899 | } | 919 | } |
900 | 920 | ||
901 | function updateWebserverConfig () { | 921 | function updateWebserverConfig () { |
diff --git a/server/initializers/database.ts b/server/initializers/database.ts index a20cdacc3..128ed5b75 100644 --- a/server/initializers/database.ts +++ b/server/initializers/database.ts | |||
@@ -1,11 +1,11 @@ | |||
1 | import { QueryTypes, Transaction } from 'sequelize' | 1 | import { QueryTypes, Transaction } from 'sequelize' |
2 | import { Sequelize as SequelizeTypescript } from 'sequelize-typescript' | 2 | import { Sequelize as SequelizeTypescript } from 'sequelize-typescript' |
3 | import { AbuseModel } from '@server/models/abuse/abuse' | ||
4 | import { AbuseMessageModel } from '@server/models/abuse/abuse-message' | ||
5 | import { VideoAbuseModel } from '@server/models/abuse/video-abuse' | ||
6 | import { VideoCommentAbuseModel } from '@server/models/abuse/video-comment-abuse' | ||
7 | import { isTestInstance } from '../helpers/core-utils' | 3 | import { isTestInstance } from '../helpers/core-utils' |
8 | import { logger } from '../helpers/logger' | 4 | import { logger } from '../helpers/logger' |
5 | import { AbuseModel } from '../models/abuse/abuse' | ||
6 | import { AbuseMessageModel } from '../models/abuse/abuse-message' | ||
7 | import { VideoAbuseModel } from '../models/abuse/video-abuse' | ||
8 | import { VideoCommentAbuseModel } from '../models/abuse/video-comment-abuse' | ||
9 | import { AccountModel } from '../models/account/account' | 9 | import { AccountModel } from '../models/account/account' |
10 | import { AccountBlocklistModel } from '../models/account/account-blocklist' | 10 | import { AccountBlocklistModel } from '../models/account/account-blocklist' |
11 | import { AccountVideoRateModel } from '../models/account/account-video-rate' | 11 | import { AccountVideoRateModel } from '../models/account/account-video-rate' |
@@ -34,6 +34,7 @@ import { VideoChannelModel } from '../models/video/video-channel' | |||
34 | import { VideoCommentModel } from '../models/video/video-comment' | 34 | import { VideoCommentModel } from '../models/video/video-comment' |
35 | import { VideoFileModel } from '../models/video/video-file' | 35 | import { VideoFileModel } from '../models/video/video-file' |
36 | import { VideoImportModel } from '../models/video/video-import' | 36 | import { VideoImportModel } from '../models/video/video-import' |
37 | import { VideoLiveModel } from '../models/video/video-live' | ||
37 | import { VideoPlaylistModel } from '../models/video/video-playlist' | 38 | import { VideoPlaylistModel } from '../models/video/video-playlist' |
38 | import { VideoPlaylistElementModel } from '../models/video/video-playlist-element' | 39 | import { VideoPlaylistElementModel } from '../models/video/video-playlist-element' |
39 | import { VideoShareModel } from '../models/video/video-share' | 40 | import { VideoShareModel } from '../models/video/video-share' |
@@ -118,6 +119,7 @@ async function initDatabaseModels (silent: boolean) { | |||
118 | VideoViewModel, | 119 | VideoViewModel, |
119 | VideoRedundancyModel, | 120 | VideoRedundancyModel, |
120 | UserVideoHistoryModel, | 121 | UserVideoHistoryModel, |
122 | VideoLiveModel, | ||
121 | AccountBlocklistModel, | 123 | AccountBlocklistModel, |
122 | ServerBlocklistModel, | 124 | ServerBlocklistModel, |
123 | UserNotificationModel, | 125 | UserNotificationModel, |
diff --git a/server/initializers/migrations/0535-video-live.ts b/server/initializers/migrations/0535-video-live.ts new file mode 100644 index 000000000..35523efc4 --- /dev/null +++ b/server/initializers/migrations/0535-video-live.ts | |||
@@ -0,0 +1,39 @@ | |||
1 | import * as Sequelize from 'sequelize' | ||
2 | |||
3 | async function up (utils: { | ||
4 | transaction: Sequelize.Transaction | ||
5 | queryInterface: Sequelize.QueryInterface | ||
6 | sequelize: Sequelize.Sequelize | ||
7 | }): Promise<void> { | ||
8 | { | ||
9 | const query = ` | ||
10 | CREATE TABLE IF NOT EXISTS "videoLive" ( | ||
11 | "id" SERIAL , | ||
12 | "streamKey" VARCHAR(255) NOT NULL, | ||
13 | "videoId" INTEGER NOT NULL REFERENCES "video" ("id") ON DELETE CASCADE ON UPDATE CASCADE, | ||
14 | "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, | ||
15 | "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, | ||
16 | PRIMARY KEY ("id") | ||
17 | ); | ||
18 | ` | ||
19 | |||
20 | await utils.sequelize.query(query) | ||
21 | } | ||
22 | |||
23 | { | ||
24 | await utils.queryInterface.addColumn('video', 'isLive', { | ||
25 | type: Sequelize.BOOLEAN, | ||
26 | defaultValue: false, | ||
27 | allowNull: false | ||
28 | }) | ||
29 | } | ||
30 | } | ||
31 | |||
32 | function down (options) { | ||
33 | throw new Error('Not implemented.') | ||
34 | } | ||
35 | |||
36 | export { | ||
37 | up, | ||
38 | down | ||
39 | } | ||
diff --git a/server/initializers/migrations/0540-video-file-infohash.ts b/server/initializers/migrations/0540-video-file-infohash.ts new file mode 100644 index 000000000..550178dab --- /dev/null +++ b/server/initializers/migrations/0540-video-file-infohash.ts | |||
@@ -0,0 +1,26 @@ | |||
1 | import * as Sequelize from 'sequelize' | ||
2 | |||
3 | async function up (utils: { | ||
4 | transaction: Sequelize.Transaction | ||
5 | queryInterface: Sequelize.QueryInterface | ||
6 | sequelize: Sequelize.Sequelize | ||
7 | }): Promise<void> { | ||
8 | { | ||
9 | const data = { | ||
10 | type: Sequelize.STRING, | ||
11 | defaultValue: null, | ||
12 | allowNull: true | ||
13 | } | ||
14 | |||
15 | await utils.queryInterface.changeColumn('videoFile', 'infoHash', data) | ||
16 | } | ||
17 | } | ||
18 | |||
19 | function down (options) { | ||
20 | throw new Error('Not implemented.') | ||
21 | } | ||
22 | |||
23 | export { | ||
24 | up, | ||
25 | down | ||
26 | } | ||
diff --git a/server/lib/hls.ts b/server/lib/hls.ts index 76380b1f2..e38a8788c 100644 --- a/server/lib/hls.ts +++ b/server/lib/hls.ts | |||
@@ -65,7 +65,7 @@ async function updateMasterHLSPlaylist (video: MVideoWithFile) { | |||
65 | await writeFile(masterPlaylistPath, masterPlaylists.join('\n') + '\n') | 65 | await writeFile(masterPlaylistPath, masterPlaylists.join('\n') + '\n') |
66 | } | 66 | } |
67 | 67 | ||
68 | async function updateSha256Segments (video: MVideoWithFile) { | 68 | async function updateSha256VODSegments (video: MVideoWithFile) { |
69 | const json: { [filename: string]: { [range: string]: string } } = {} | 69 | const json: { [filename: string]: { [range: string]: string } } = {} |
70 | 70 | ||
71 | const playlistDirectory = join(HLS_STREAMING_PLAYLIST_DIRECTORY, video.uuid) | 71 | const playlistDirectory = join(HLS_STREAMING_PLAYLIST_DIRECTORY, video.uuid) |
@@ -101,6 +101,11 @@ async function updateSha256Segments (video: MVideoWithFile) { | |||
101 | await outputJSON(outputPath, json) | 101 | await outputJSON(outputPath, json) |
102 | } | 102 | } |
103 | 103 | ||
104 | async function buildSha256Segment (segmentPath: string) { | ||
105 | const buf = await readFile(segmentPath) | ||
106 | return sha256(buf) | ||
107 | } | ||
108 | |||
104 | function getRangesFromPlaylist (playlistContent: string) { | 109 | function getRangesFromPlaylist (playlistContent: string) { |
105 | const ranges: { offset: number, length: number }[] = [] | 110 | const ranges: { offset: number, length: number }[] = [] |
106 | const lines = playlistContent.split('\n') | 111 | const lines = playlistContent.split('\n') |
@@ -187,7 +192,8 @@ function downloadPlaylistSegments (playlistUrl: string, destinationDir: string, | |||
187 | 192 | ||
188 | export { | 193 | export { |
189 | updateMasterHLSPlaylist, | 194 | updateMasterHLSPlaylist, |
190 | updateSha256Segments, | 195 | updateSha256VODSegments, |
196 | buildSha256Segment, | ||
191 | downloadPlaylistSegments, | 197 | downloadPlaylistSegments, |
192 | updateStreamingPlaylistsInfohashesIfNeeded | 198 | updateStreamingPlaylistsInfohashesIfNeeded |
193 | } | 199 | } |
diff --git a/server/lib/job-queue/handlers/video-transcoding.ts b/server/lib/job-queue/handlers/video-transcoding.ts index 7ebef46b4..6659ab716 100644 --- a/server/lib/job-queue/handlers/video-transcoding.ts +++ b/server/lib/job-queue/handlers/video-transcoding.ts | |||
@@ -84,7 +84,7 @@ async function onVideoFileOptimizerSuccess (videoArg: MVideoWithFile, payload: O | |||
84 | if (!videoDatabase) return undefined | 84 | if (!videoDatabase) return undefined |
85 | 85 | ||
86 | // Create transcoding jobs if there are enabled resolutions | 86 | // Create transcoding jobs if there are enabled resolutions |
87 | const resolutionsEnabled = computeResolutionsToTranscode(videoFileResolution) | 87 | const resolutionsEnabled = computeResolutionsToTranscode(videoFileResolution, 'vod') |
88 | logger.info( | 88 | logger.info( |
89 | 'Resolutions computed for video %s and origin file resolution of %d.', videoDatabase.uuid, videoFileResolution, | 89 | 'Resolutions computed for video %s and origin file resolution of %d.', videoDatabase.uuid, videoFileResolution, |
90 | { resolutions: resolutionsEnabled } | 90 | { resolutions: resolutionsEnabled } |
diff --git a/server/lib/live-manager.ts b/server/lib/live-manager.ts new file mode 100644 index 000000000..f602bfb6d --- /dev/null +++ b/server/lib/live-manager.ts | |||
@@ -0,0 +1,310 @@ | |||
1 | |||
2 | import { AsyncQueue, queue } from 'async' | ||
3 | import * as chokidar from 'chokidar' | ||
4 | import { FfmpegCommand } from 'fluent-ffmpeg' | ||
5 | import { ensureDir, readdir, remove } from 'fs-extra' | ||
6 | import { basename, join } from 'path' | ||
7 | import { computeResolutionsToTranscode, runLiveMuxing, runLiveTranscoding } from '@server/helpers/ffmpeg-utils' | ||
8 | import { logger } from '@server/helpers/logger' | ||
9 | import { CONFIG, registerConfigChangedHandler } from '@server/initializers/config' | ||
10 | import { P2P_MEDIA_LOADER_PEER_VERSION, VIDEO_LIVE, WEBSERVER } from '@server/initializers/constants' | ||
11 | import { VideoFileModel } from '@server/models/video/video-file' | ||
12 | import { VideoLiveModel } from '@server/models/video/video-live' | ||
13 | import { VideoStreamingPlaylistModel } from '@server/models/video/video-streaming-playlist' | ||
14 | import { MStreamingPlaylist, MVideo, MVideoLiveVideo } from '@server/types/models' | ||
15 | import { VideoState, VideoStreamingPlaylistType } from '@shared/models' | ||
16 | import { buildSha256Segment } from './hls' | ||
17 | import { getHLSDirectory } from './video-paths' | ||
18 | |||
19 | const NodeRtmpServer = require('node-media-server/node_rtmp_server') | ||
20 | const context = require('node-media-server/node_core_ctx') | ||
21 | const nodeMediaServerLogger = require('node-media-server/node_core_logger') | ||
22 | |||
23 | // Disable node media server logs | ||
24 | nodeMediaServerLogger.setLogType(0) | ||
25 | |||
26 | const config = { | ||
27 | rtmp: { | ||
28 | port: CONFIG.LIVE.RTMP.PORT, | ||
29 | chunk_size: VIDEO_LIVE.RTMP.CHUNK_SIZE, | ||
30 | gop_cache: VIDEO_LIVE.RTMP.GOP_CACHE, | ||
31 | ping: VIDEO_LIVE.RTMP.PING, | ||
32 | ping_timeout: VIDEO_LIVE.RTMP.PING_TIMEOUT | ||
33 | }, | ||
34 | transcoding: { | ||
35 | ffmpeg: 'ffmpeg' | ||
36 | } | ||
37 | } | ||
38 | |||
39 | type SegmentSha256QueueParam = { | ||
40 | operation: 'update' | 'delete' | ||
41 | videoUUID: string | ||
42 | segmentPath: string | ||
43 | } | ||
44 | |||
45 | class LiveManager { | ||
46 | |||
47 | private static instance: LiveManager | ||
48 | |||
49 | private readonly transSessions = new Map<string, FfmpegCommand>() | ||
50 | private readonly segmentsSha256 = new Map<string, Map<string, string>>() | ||
51 | |||
52 | private segmentsSha256Queue: AsyncQueue<SegmentSha256QueueParam> | ||
53 | private rtmpServer: any | ||
54 | |||
55 | private constructor () { | ||
56 | } | ||
57 | |||
58 | init () { | ||
59 | this.getContext().nodeEvent.on('postPublish', (sessionId: string, streamPath: string) => { | ||
60 | logger.debug('RTMP received stream', { id: sessionId, streamPath }) | ||
61 | |||
62 | const splittedPath = streamPath.split('/') | ||
63 | if (splittedPath.length !== 3 || splittedPath[1] !== VIDEO_LIVE.RTMP.BASE_PATH) { | ||
64 | logger.warn('Live path is incorrect.', { streamPath }) | ||
65 | return this.abortSession(sessionId) | ||
66 | } | ||
67 | |||
68 | this.handleSession(sessionId, streamPath, splittedPath[2]) | ||
69 | .catch(err => logger.error('Cannot handle sessions.', { err })) | ||
70 | }) | ||
71 | |||
72 | this.getContext().nodeEvent.on('donePublish', sessionId => { | ||
73 | this.abortSession(sessionId) | ||
74 | }) | ||
75 | |||
76 | this.segmentsSha256Queue = queue<SegmentSha256QueueParam, Error>((options, cb) => { | ||
77 | const promise = options.operation === 'update' | ||
78 | ? this.addSegmentSha(options) | ||
79 | : Promise.resolve(this.removeSegmentSha(options)) | ||
80 | |||
81 | promise.then(() => cb()) | ||
82 | .catch(err => { | ||
83 | logger.error('Cannot update/remove sha segment %s.', options.segmentPath, { err }) | ||
84 | cb() | ||
85 | }) | ||
86 | }) | ||
87 | |||
88 | registerConfigChangedHandler(() => { | ||
89 | if (!this.rtmpServer && CONFIG.LIVE.ENABLED === true) { | ||
90 | this.run() | ||
91 | return | ||
92 | } | ||
93 | |||
94 | if (this.rtmpServer && CONFIG.LIVE.ENABLED === false) { | ||
95 | this.stop() | ||
96 | } | ||
97 | }) | ||
98 | } | ||
99 | |||
100 | run () { | ||
101 | logger.info('Running RTMP server.') | ||
102 | |||
103 | this.rtmpServer = new NodeRtmpServer(config) | ||
104 | this.rtmpServer.run() | ||
105 | } | ||
106 | |||
107 | stop () { | ||
108 | logger.info('Stopping RTMP server.') | ||
109 | |||
110 | this.rtmpServer.stop() | ||
111 | this.rtmpServer = undefined | ||
112 | } | ||
113 | |||
114 | getSegmentsSha256 (videoUUID: string) { | ||
115 | return this.segmentsSha256.get(videoUUID) | ||
116 | } | ||
117 | |||
118 | private getContext () { | ||
119 | return context | ||
120 | } | ||
121 | |||
122 | private abortSession (id: string) { | ||
123 | const session = this.getContext().sessions.get(id) | ||
124 | if (session) session.stop() | ||
125 | |||
126 | const transSession = this.transSessions.get(id) | ||
127 | if (transSession) transSession.kill('SIGKILL') | ||
128 | } | ||
129 | |||
130 | private async handleSession (sessionId: string, streamPath: string, streamKey: string) { | ||
131 | const videoLive = await VideoLiveModel.loadByStreamKey(streamKey) | ||
132 | if (!videoLive) { | ||
133 | logger.warn('Unknown live video with stream key %s.', streamKey) | ||
134 | return this.abortSession(sessionId) | ||
135 | } | ||
136 | |||
137 | const video = videoLive.Video | ||
138 | const playlistUrl = WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsMasterPlaylistStaticPath(video.uuid) | ||
139 | |||
140 | const session = this.getContext().sessions.get(sessionId) | ||
141 | const resolutionsEnabled = CONFIG.LIVE.TRANSCODING.ENABLED | ||
142 | ? computeResolutionsToTranscode(session.videoHeight, 'live') | ||
143 | : [] | ||
144 | |||
145 | logger.info('Will mux/transcode live video of original resolution %d.', session.videoHeight, { resolutionsEnabled }) | ||
146 | |||
147 | const [ videoStreamingPlaylist ] = await VideoStreamingPlaylistModel.upsert({ | ||
148 | videoId: video.id, | ||
149 | playlistUrl, | ||
150 | segmentsSha256Url: WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsSha256SegmentsStaticPath(video.uuid, video.isLive), | ||
151 | p2pMediaLoaderInfohashes: VideoStreamingPlaylistModel.buildP2PMediaLoaderInfoHashes(playlistUrl, resolutionsEnabled), | ||
152 | p2pMediaLoaderPeerVersion: P2P_MEDIA_LOADER_PEER_VERSION, | ||
153 | |||
154 | type: VideoStreamingPlaylistType.HLS | ||
155 | }, { returning: true }) as [ MStreamingPlaylist, boolean ] | ||
156 | |||
157 | video.state = VideoState.PUBLISHED | ||
158 | await video.save() | ||
159 | |||
160 | // FIXME: federation? | ||
161 | |||
162 | return this.runMuxing({ | ||
163 | sessionId, | ||
164 | videoLive, | ||
165 | playlist: videoStreamingPlaylist, | ||
166 | streamPath, | ||
167 | originalResolution: session.videoHeight, | ||
168 | resolutionsEnabled | ||
169 | }) | ||
170 | } | ||
171 | |||
172 | private async runMuxing (options: { | ||
173 | sessionId: string | ||
174 | videoLive: MVideoLiveVideo | ||
175 | playlist: MStreamingPlaylist | ||
176 | streamPath: string | ||
177 | resolutionsEnabled: number[] | ||
178 | originalResolution: number | ||
179 | }) { | ||
180 | const { sessionId, videoLive, playlist, streamPath, resolutionsEnabled, originalResolution } = options | ||
181 | const allResolutions = resolutionsEnabled.concat([ originalResolution ]) | ||
182 | |||
183 | for (let i = 0; i < allResolutions.length; i++) { | ||
184 | const resolution = allResolutions[i] | ||
185 | |||
186 | VideoFileModel.upsert({ | ||
187 | resolution, | ||
188 | size: -1, | ||
189 | extname: '.ts', | ||
190 | infoHash: null, | ||
191 | fps: -1, | ||
192 | videoStreamingPlaylistId: playlist.id | ||
193 | }).catch(err => { | ||
194 | logger.error('Cannot create file for live streaming.', { err }) | ||
195 | }) | ||
196 | } | ||
197 | |||
198 | const outPath = getHLSDirectory(videoLive.Video) | ||
199 | await ensureDir(outPath) | ||
200 | |||
201 | const rtmpUrl = 'rtmp://127.0.0.1:' + config.rtmp.port + streamPath | ||
202 | const ffmpegExec = CONFIG.LIVE.TRANSCODING.ENABLED | ||
203 | ? runLiveTranscoding(rtmpUrl, outPath, allResolutions) | ||
204 | : runLiveMuxing(rtmpUrl, outPath) | ||
205 | |||
206 | logger.info('Running live muxing/transcoding.') | ||
207 | |||
208 | this.transSessions.set(sessionId, ffmpegExec) | ||
209 | |||
210 | const onFFmpegEnded = () => { | ||
211 | watcher.close() | ||
212 | .catch(err => logger.error('Cannot close watcher of %s.', outPath, { err })) | ||
213 | |||
214 | this.onEndTransmuxing(videoLive.Video, playlist, streamPath, outPath) | ||
215 | .catch(err => logger.error('Error in closed transmuxing.', { err })) | ||
216 | } | ||
217 | |||
218 | ffmpegExec.on('error', (err, stdout, stderr) => { | ||
219 | onFFmpegEnded() | ||
220 | |||
221 | // Don't care that we killed the ffmpeg process | ||
222 | if (err?.message?.includes('SIGKILL')) return | ||
223 | |||
224 | logger.error('Live transcoding error.', { err, stdout, stderr }) | ||
225 | }) | ||
226 | |||
227 | ffmpegExec.on('end', () => onFFmpegEnded()) | ||
228 | |||
229 | const videoUUID = videoLive.Video.uuid | ||
230 | const watcher = chokidar.watch(outPath + '/*.ts') | ||
231 | |||
232 | const updateHandler = segmentPath => this.segmentsSha256Queue.push({ operation: 'update', segmentPath, videoUUID }) | ||
233 | const deleteHandler = segmentPath => this.segmentsSha256Queue.push({ operation: 'delete', segmentPath, videoUUID }) | ||
234 | |||
235 | watcher.on('add', p => updateHandler(p)) | ||
236 | watcher.on('change', p => updateHandler(p)) | ||
237 | watcher.on('unlink', p => deleteHandler(p)) | ||
238 | } | ||
239 | |||
240 | private async onEndTransmuxing (video: MVideo, playlist: MStreamingPlaylist, streamPath: string, outPath: string) { | ||
241 | logger.info('RTMP transmuxing for %s ended.', streamPath) | ||
242 | |||
243 | const files = await readdir(outPath) | ||
244 | |||
245 | for (const filename of files) { | ||
246 | if ( | ||
247 | filename.endsWith('.ts') || | ||
248 | filename.endsWith('.m3u8') || | ||
249 | filename.endsWith('.mpd') || | ||
250 | filename.endsWith('.m4s') || | ||
251 | filename.endsWith('.tmp') | ||
252 | ) { | ||
253 | const p = join(outPath, filename) | ||
254 | |||
255 | remove(p) | ||
256 | .catch(err => logger.error('Cannot remove %s.', p, { err })) | ||
257 | } | ||
258 | } | ||
259 | |||
260 | playlist.destroy() | ||
261 | .catch(err => logger.error('Cannot remove live streaming playlist.', { err })) | ||
262 | |||
263 | video.state = VideoState.LIVE_ENDED | ||
264 | video.save() | ||
265 | .catch(err => logger.error('Cannot save new video state of live streaming.', { err })) | ||
266 | } | ||
267 | |||
268 | private async addSegmentSha (options: SegmentSha256QueueParam) { | ||
269 | const segmentName = basename(options.segmentPath) | ||
270 | logger.debug('Updating live sha segment %s.', options.segmentPath) | ||
271 | |||
272 | const shaResult = await buildSha256Segment(options.segmentPath) | ||
273 | |||
274 | if (!this.segmentsSha256.has(options.videoUUID)) { | ||
275 | this.segmentsSha256.set(options.videoUUID, new Map()) | ||
276 | } | ||
277 | |||
278 | const filesMap = this.segmentsSha256.get(options.videoUUID) | ||
279 | filesMap.set(segmentName, shaResult) | ||
280 | } | ||
281 | |||
282 | private removeSegmentSha (options: SegmentSha256QueueParam) { | ||
283 | const segmentName = basename(options.segmentPath) | ||
284 | |||
285 | logger.debug('Removing live sha segment %s.', options.segmentPath) | ||
286 | |||
287 | const filesMap = this.segmentsSha256.get(options.videoUUID) | ||
288 | if (!filesMap) { | ||
289 | logger.warn('Unknown files map to remove sha for %s.', options.videoUUID) | ||
290 | return | ||
291 | } | ||
292 | |||
293 | if (!filesMap.has(segmentName)) { | ||
294 | logger.warn('Unknown segment in files map for video %s and segment %s.', options.videoUUID, options.segmentPath) | ||
295 | return | ||
296 | } | ||
297 | |||
298 | filesMap.delete(segmentName) | ||
299 | } | ||
300 | |||
301 | static get Instance () { | ||
302 | return this.instance || (this.instance = new this()) | ||
303 | } | ||
304 | } | ||
305 | |||
306 | // --------------------------------------------------------------------------- | ||
307 | |||
308 | export { | ||
309 | LiveManager | ||
310 | } | ||
diff --git a/server/lib/video-paths.ts b/server/lib/video-paths.ts index a35661f02..b6cb39d25 100644 --- a/server/lib/video-paths.ts +++ b/server/lib/video-paths.ts | |||
@@ -27,7 +27,8 @@ function generateWebTorrentVideoName (uuid: string, resolution: number, extname: | |||
27 | function getVideoFilePath (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile, isRedundancy = false) { | 27 | function getVideoFilePath (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile, isRedundancy = false) { |
28 | if (isStreamingPlaylist(videoOrPlaylist)) { | 28 | if (isStreamingPlaylist(videoOrPlaylist)) { |
29 | const video = extractVideo(videoOrPlaylist) | 29 | const video = extractVideo(videoOrPlaylist) |
30 | return join(HLS_STREAMING_PLAYLIST_DIRECTORY, video.uuid, getVideoFilename(videoOrPlaylist, videoFile)) | 30 | |
31 | return join(getHLSDirectory(video), getVideoFilename(videoOrPlaylist, videoFile)) | ||
31 | } | 32 | } |
32 | 33 | ||
33 | const baseDir = isRedundancy ? CONFIG.STORAGE.REDUNDANCY_DIR : CONFIG.STORAGE.VIDEOS_DIR | 34 | const baseDir = isRedundancy ? CONFIG.STORAGE.REDUNDANCY_DIR : CONFIG.STORAGE.VIDEOS_DIR |
diff --git a/server/lib/video-transcoding.ts b/server/lib/video-transcoding.ts index 5a2dbc9f7..a7b73a30d 100644 --- a/server/lib/video-transcoding.ts +++ b/server/lib/video-transcoding.ts | |||
@@ -13,13 +13,14 @@ import { copyFile, ensureDir, move, remove, stat } from 'fs-extra' | |||
13 | import { logger } from '../helpers/logger' | 13 | import { logger } from '../helpers/logger' |
14 | import { VideoResolution } from '../../shared/models/videos' | 14 | import { VideoResolution } from '../../shared/models/videos' |
15 | import { VideoFileModel } from '../models/video/video-file' | 15 | import { VideoFileModel } from '../models/video/video-file' |
16 | import { updateMasterHLSPlaylist, updateSha256Segments } from './hls' | 16 | import { updateMasterHLSPlaylist, updateSha256VODSegments } from './hls' |
17 | import { VideoStreamingPlaylistModel } from '../models/video/video-streaming-playlist' | 17 | import { VideoStreamingPlaylistModel } from '../models/video/video-streaming-playlist' |
18 | import { VideoStreamingPlaylistType } from '../../shared/models/videos/video-streaming-playlist.type' | 18 | import { VideoStreamingPlaylistType } from '../../shared/models/videos/video-streaming-playlist.type' |
19 | import { CONFIG } from '../initializers/config' | 19 | import { CONFIG } from '../initializers/config' |
20 | import { MStreamingPlaylistFilesVideo, MVideoFile, MVideoWithAllFiles, MVideoWithFile } from '@server/types/models' | 20 | import { MStreamingPlaylistFilesVideo, MVideoFile, MVideoWithAllFiles, MVideoWithFile } from '@server/types/models' |
21 | import { createTorrentAndSetInfoHash } from '@server/helpers/webtorrent' | 21 | import { createTorrentAndSetInfoHash } from '@server/helpers/webtorrent' |
22 | import { generateVideoStreamingPlaylistName, getVideoFilename, getVideoFilePath } from './video-paths' | 22 | import { generateVideoStreamingPlaylistName, getVideoFilename, getVideoFilePath } from './video-paths' |
23 | import { spawn } from 'child_process' | ||
23 | 24 | ||
24 | /** | 25 | /** |
25 | * Optimize the original video file and replace it. The resolution is not changed. | 26 | * Optimize the original video file and replace it. The resolution is not changed. |
@@ -182,7 +183,7 @@ async function generateHlsPlaylist (video: MVideoWithFile, resolution: VideoReso | |||
182 | const [ videoStreamingPlaylist ] = await VideoStreamingPlaylistModel.upsert({ | 183 | const [ videoStreamingPlaylist ] = await VideoStreamingPlaylistModel.upsert({ |
183 | videoId: video.id, | 184 | videoId: video.id, |
184 | playlistUrl, | 185 | playlistUrl, |
185 | segmentsSha256Url: WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsSha256SegmentsStaticPath(video.uuid), | 186 | segmentsSha256Url: WEBSERVER.URL + VideoStreamingPlaylistModel.getHlsSha256SegmentsStaticPath(video.uuid, video.isLive), |
186 | p2pMediaLoaderInfohashes: VideoStreamingPlaylistModel.buildP2PMediaLoaderInfoHashes(playlistUrl, video.VideoFiles), | 187 | p2pMediaLoaderInfohashes: VideoStreamingPlaylistModel.buildP2PMediaLoaderInfoHashes(playlistUrl, video.VideoFiles), |
187 | p2pMediaLoaderPeerVersion: P2P_MEDIA_LOADER_PEER_VERSION, | 188 | p2pMediaLoaderPeerVersion: P2P_MEDIA_LOADER_PEER_VERSION, |
188 | 189 | ||
@@ -213,7 +214,7 @@ async function generateHlsPlaylist (video: MVideoWithFile, resolution: VideoReso | |||
213 | video.setHLSPlaylist(videoStreamingPlaylist) | 214 | video.setHLSPlaylist(videoStreamingPlaylist) |
214 | 215 | ||
215 | await updateMasterHLSPlaylist(video) | 216 | await updateMasterHLSPlaylist(video) |
216 | await updateSha256Segments(video) | 217 | await updateSha256VODSegments(video) |
217 | 218 | ||
218 | return video | 219 | return video |
219 | } | 220 | } |
diff --git a/server/lib/video.ts b/server/lib/video.ts new file mode 100644 index 000000000..a28f31529 --- /dev/null +++ b/server/lib/video.ts | |||
@@ -0,0 +1,31 @@ | |||
1 | |||
2 | import { VideoModel } from '@server/models/video/video' | ||
3 | import { FilteredModelAttributes } from '@server/types' | ||
4 | import { VideoCreate, VideoPrivacy, VideoState } from '@shared/models' | ||
5 | |||
6 | function buildLocalVideoFromCreate (videoInfo: VideoCreate, channelId: number): FilteredModelAttributes<VideoModel> { | ||
7 | return { | ||
8 | name: videoInfo.name, | ||
9 | remote: false, | ||
10 | category: videoInfo.category, | ||
11 | licence: videoInfo.licence, | ||
12 | language: videoInfo.language, | ||
13 | commentsEnabled: videoInfo.commentsEnabled !== false, // If the value is not "false", the default is "true" | ||
14 | downloadEnabled: videoInfo.downloadEnabled !== false, | ||
15 | waitTranscoding: videoInfo.waitTranscoding || false, | ||
16 | state: VideoState.WAITING_FOR_LIVE, | ||
17 | nsfw: videoInfo.nsfw || false, | ||
18 | description: videoInfo.description, | ||
19 | support: videoInfo.support, | ||
20 | privacy: videoInfo.privacy || VideoPrivacy.PRIVATE, | ||
21 | duration: 0, | ||
22 | channelId: channelId, | ||
23 | originallyPublishedAt: videoInfo.originallyPublishedAt | ||
24 | } | ||
25 | } | ||
26 | |||
27 | // --------------------------------------------------------------------------- | ||
28 | |||
29 | export { | ||
30 | buildLocalVideoFromCreate | ||
31 | } | ||
diff --git a/server/middlewares/validators/videos/video-live.ts b/server/middlewares/validators/videos/video-live.ts new file mode 100644 index 000000000..a4c364976 --- /dev/null +++ b/server/middlewares/validators/videos/video-live.ts | |||
@@ -0,0 +1,66 @@ | |||
1 | import * as express from 'express' | ||
2 | import { body, param } from 'express-validator' | ||
3 | import { checkUserCanManageVideo, doesVideoChannelOfAccountExist, doesVideoExist } from '@server/helpers/middlewares/videos' | ||
4 | import { UserRight } from '@shared/models' | ||
5 | import { isIdOrUUIDValid, isIdValid, toIntOrNull } from '../../../helpers/custom-validators/misc' | ||
6 | import { isVideoNameValid } from '../../../helpers/custom-validators/videos' | ||
7 | import { cleanUpReqFiles } from '../../../helpers/express-utils' | ||
8 | import { logger } from '../../../helpers/logger' | ||
9 | import { CONFIG } from '../../../initializers/config' | ||
10 | import { areValidationErrors } from '../utils' | ||
11 | import { getCommonVideoEditAttributes } from './videos' | ||
12 | import { VideoLiveModel } from '@server/models/video/video-live' | ||
13 | |||
14 | const videoLiveGetValidator = [ | ||
15 | param('videoId').custom(isIdOrUUIDValid).not().isEmpty().withMessage('Should have a valid videoId'), | ||
16 | |||
17 | async (req: express.Request, res: express.Response, next: express.NextFunction) => { | ||
18 | logger.debug('Checking videoLiveGetValidator parameters', { parameters: req.body }) | ||
19 | |||
20 | if (areValidationErrors(req, res)) return | ||
21 | if (!await doesVideoExist(req.params.videoId, res, 'all')) return | ||
22 | |||
23 | // Check if the user who did the request is able to update the video | ||
24 | const user = res.locals.oauth.token.User | ||
25 | if (!checkUserCanManageVideo(user, res.locals.videoAll, UserRight.UPDATE_ANY_VIDEO, res)) return | ||
26 | |||
27 | const videoLive = await VideoLiveModel.loadByVideoId(res.locals.videoAll.id) | ||
28 | if (!videoLive) return res.sendStatus(404) | ||
29 | |||
30 | res.locals.videoLive = videoLive | ||
31 | |||
32 | return next() | ||
33 | } | ||
34 | ] | ||
35 | |||
36 | const videoLiveAddValidator = getCommonVideoEditAttributes().concat([ | ||
37 | body('channelId') | ||
38 | .customSanitizer(toIntOrNull) | ||
39 | .custom(isIdValid).withMessage('Should have correct video channel id'), | ||
40 | |||
41 | body('name') | ||
42 | .custom(isVideoNameValid).withMessage('Should have a valid name'), | ||
43 | |||
44 | async (req: express.Request, res: express.Response, next: express.NextFunction) => { | ||
45 | logger.debug('Checking videoLiveAddValidator parameters', { parameters: req.body }) | ||
46 | |||
47 | if (CONFIG.LIVE.ENABLED !== true) { | ||
48 | return res.status(403) | ||
49 | .json({ error: 'Live is not enabled on this instance' }) | ||
50 | } | ||
51 | |||
52 | if (areValidationErrors(req, res)) return cleanUpReqFiles(req) | ||
53 | |||
54 | const user = res.locals.oauth.token.User | ||
55 | if (!await doesVideoChannelOfAccountExist(req.body.channelId, user, res)) return cleanUpReqFiles(req) | ||
56 | |||
57 | return next() | ||
58 | } | ||
59 | ]) | ||
60 | |||
61 | // --------------------------------------------------------------------------- | ||
62 | |||
63 | export { | ||
64 | videoLiveAddValidator, | ||
65 | videoLiveGetValidator | ||
66 | } | ||
diff --git a/server/models/video/video-file.ts b/server/models/video/video-file.ts index f95022383..6a321917c 100644 --- a/server/models/video/video-file.ts +++ b/server/models/video/video-file.ts | |||
@@ -123,8 +123,8 @@ export class VideoFileModel extends Model<VideoFileModel> { | |||
123 | @Column | 123 | @Column |
124 | extname: string | 124 | extname: string |
125 | 125 | ||
126 | @AllowNull(false) | 126 | @AllowNull(true) |
127 | @Is('VideoFileInfohash', value => throwIfNotValid(value, isVideoFileInfoHashValid, 'info hash')) | 127 | @Is('VideoFileInfohash', value => throwIfNotValid(value, isVideoFileInfoHashValid, 'info hash', true)) |
128 | @Column | 128 | @Column |
129 | infoHash: string | 129 | infoHash: string |
130 | 130 | ||
diff --git a/server/models/video/video-format-utils.ts b/server/models/video/video-format-utils.ts index ad512fc7f..0dbd92a43 100644 --- a/server/models/video/video-format-utils.ts +++ b/server/models/video/video-format-utils.ts | |||
@@ -77,6 +77,8 @@ function videoModelToFormattedJSON (video: MVideoFormattable, options?: VideoFor | |||
77 | publishedAt: video.publishedAt, | 77 | publishedAt: video.publishedAt, |
78 | originallyPublishedAt: video.originallyPublishedAt, | 78 | originallyPublishedAt: video.originallyPublishedAt, |
79 | 79 | ||
80 | isLive: video.isLive, | ||
81 | |||
80 | account: video.VideoChannel.Account.toFormattedSummaryJSON(), | 82 | account: video.VideoChannel.Account.toFormattedSummaryJSON(), |
81 | channel: video.VideoChannel.toFormattedSummaryJSON(), | 83 | channel: video.VideoChannel.toFormattedSummaryJSON(), |
82 | 84 | ||
diff --git a/server/models/video/video-live.ts b/server/models/video/video-live.ts new file mode 100644 index 000000000..6929b9688 --- /dev/null +++ b/server/models/video/video-live.ts | |||
@@ -0,0 +1,74 @@ | |||
1 | import { AllowNull, BelongsTo, Column, CreatedAt, DataType, DefaultScope, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' | ||
2 | import { WEBSERVER } from '@server/initializers/constants' | ||
3 | import { MVideoLive, MVideoLiveVideo } from '@server/types/models' | ||
4 | import { VideoLive } from '@shared/models/videos/video-live.model' | ||
5 | import { VideoModel } from './video' | ||
6 | |||
7 | @DefaultScope(() => ({ | ||
8 | include: [ | ||
9 | { | ||
10 | model: VideoModel, | ||
11 | required: true | ||
12 | } | ||
13 | ] | ||
14 | })) | ||
15 | @Table({ | ||
16 | tableName: 'videoLive', | ||
17 | indexes: [ | ||
18 | { | ||
19 | fields: [ 'videoId' ], | ||
20 | unique: true | ||
21 | } | ||
22 | ] | ||
23 | }) | ||
24 | export class VideoLiveModel extends Model<VideoLiveModel> { | ||
25 | |||
26 | @AllowNull(false) | ||
27 | @Column(DataType.STRING) | ||
28 | streamKey: string | ||
29 | |||
30 | @CreatedAt | ||
31 | createdAt: Date | ||
32 | |||
33 | @UpdatedAt | ||
34 | updatedAt: Date | ||
35 | |||
36 | @ForeignKey(() => VideoModel) | ||
37 | @Column | ||
38 | videoId: number | ||
39 | |||
40 | @BelongsTo(() => VideoModel, { | ||
41 | foreignKey: { | ||
42 | allowNull: false | ||
43 | }, | ||
44 | onDelete: 'cascade' | ||
45 | }) | ||
46 | Video: VideoModel | ||
47 | |||
48 | static loadByStreamKey (streamKey: string) { | ||
49 | const query = { | ||
50 | where: { | ||
51 | streamKey | ||
52 | } | ||
53 | } | ||
54 | |||
55 | return VideoLiveModel.findOne<MVideoLiveVideo>(query) | ||
56 | } | ||
57 | |||
58 | static loadByVideoId (videoId: number) { | ||
59 | const query = { | ||
60 | where: { | ||
61 | videoId | ||
62 | } | ||
63 | } | ||
64 | |||
65 | return VideoLiveModel.findOne<MVideoLive>(query) | ||
66 | } | ||
67 | |||
68 | toFormattedJSON (): VideoLive { | ||
69 | return { | ||
70 | rtmpUrl: WEBSERVER.RTMP_URL, | ||
71 | streamKey: this.streamKey | ||
72 | } | ||
73 | } | ||
74 | } | ||
diff --git a/server/models/video/video-streaming-playlist.ts b/server/models/video/video-streaming-playlist.ts index 021b9b063..b8dc7c450 100644 --- a/server/models/video/video-streaming-playlist.ts +++ b/server/models/video/video-streaming-playlist.ts | |||
@@ -173,7 +173,9 @@ export class VideoStreamingPlaylistModel extends Model<VideoStreamingPlaylistMod | |||
173 | return join(STATIC_PATHS.STREAMING_PLAYLISTS.HLS, videoUUID, VideoStreamingPlaylistModel.getHlsPlaylistFilename(resolution)) | 173 | return join(STATIC_PATHS.STREAMING_PLAYLISTS.HLS, videoUUID, VideoStreamingPlaylistModel.getHlsPlaylistFilename(resolution)) |
174 | } | 174 | } |
175 | 175 | ||
176 | static getHlsSha256SegmentsStaticPath (videoUUID: string) { | 176 | static getHlsSha256SegmentsStaticPath (videoUUID: string, isLive: boolean) { |
177 | if (isLive) return join('/live', 'segments-sha256', videoUUID) | ||
178 | |||
177 | return join(STATIC_PATHS.STREAMING_PLAYLISTS.HLS, videoUUID, VideoStreamingPlaylistModel.getHlsSha256SegmentsFilename()) | 179 | return join(STATIC_PATHS.STREAMING_PLAYLISTS.HLS, videoUUID, VideoStreamingPlaylistModel.getHlsSha256SegmentsFilename()) |
178 | } | 180 | } |
179 | 181 | ||
diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 410d71cb3..1037730e3 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts | |||
@@ -550,6 +550,11 @@ export class VideoModel extends Model<VideoModel> { | |||
550 | remote: boolean | 550 | remote: boolean |
551 | 551 | ||
552 | @AllowNull(false) | 552 | @AllowNull(false) |
553 | @Default(false) | ||
554 | @Column | ||
555 | isLive: boolean | ||
556 | |||
557 | @AllowNull(false) | ||
553 | @Is('VideoUrl', value => throwIfNotValid(value, isActivityPubUrlValid, 'url')) | 558 | @Is('VideoUrl', value => throwIfNotValid(value, isActivityPubUrlValid, 'url')) |
554 | @Column(DataType.STRING(CONSTRAINTS_FIELDS.VIDEOS.URL.max)) | 559 | @Column(DataType.STRING(CONSTRAINTS_FIELDS.VIDEOS.URL.max)) |
555 | url: string | 560 | url: string |
diff --git a/server/tests/api/check-params/config.ts b/server/tests/api/check-params/config.ts index 3f2708f94..35cb333ef 100644 --- a/server/tests/api/check-params/config.ts +++ b/server/tests/api/check-params/config.ts | |||
@@ -100,6 +100,22 @@ describe('Test config API validators', function () { | |||
100 | enabled: false | 100 | enabled: false |
101 | } | 101 | } |
102 | }, | 102 | }, |
103 | live: { | ||
104 | enabled: true, | ||
105 | |||
106 | transcoding: { | ||
107 | enabled: true, | ||
108 | threads: 4, | ||
109 | resolutions: { | ||
110 | '240p': true, | ||
111 | '360p': true, | ||
112 | '480p': true, | ||
113 | '720p': true, | ||
114 | '1080p': true, | ||
115 | '2160p': true | ||
116 | } | ||
117 | } | ||
118 | }, | ||
103 | import: { | 119 | import: { |
104 | videos: { | 120 | videos: { |
105 | http: { | 121 | http: { |
diff --git a/server/tests/api/server/config.ts b/server/tests/api/server/config.ts index 60efd332c..a46e179c2 100644 --- a/server/tests/api/server/config.ts +++ b/server/tests/api/server/config.ts | |||
@@ -64,6 +64,7 @@ function checkInitialConfig (server: ServerInfo, data: CustomConfig) { | |||
64 | 64 | ||
65 | expect(data.user.videoQuota).to.equal(5242880) | 65 | expect(data.user.videoQuota).to.equal(5242880) |
66 | expect(data.user.videoQuotaDaily).to.equal(-1) | 66 | expect(data.user.videoQuotaDaily).to.equal(-1) |
67 | |||
67 | expect(data.transcoding.enabled).to.be.false | 68 | expect(data.transcoding.enabled).to.be.false |
68 | expect(data.transcoding.allowAdditionalExtensions).to.be.false | 69 | expect(data.transcoding.allowAdditionalExtensions).to.be.false |
69 | expect(data.transcoding.allowAudioFiles).to.be.false | 70 | expect(data.transcoding.allowAudioFiles).to.be.false |
@@ -77,6 +78,16 @@ function checkInitialConfig (server: ServerInfo, data: CustomConfig) { | |||
77 | expect(data.transcoding.webtorrent.enabled).to.be.true | 78 | expect(data.transcoding.webtorrent.enabled).to.be.true |
78 | expect(data.transcoding.hls.enabled).to.be.true | 79 | expect(data.transcoding.hls.enabled).to.be.true |
79 | 80 | ||
81 | expect(data.live.enabled).to.be.false | ||
82 | expect(data.live.transcoding.enabled).to.be.false | ||
83 | expect(data.live.transcoding.threads).to.equal(2) | ||
84 | expect(data.live.transcoding.resolutions['240p']).to.be.false | ||
85 | expect(data.live.transcoding.resolutions['360p']).to.be.false | ||
86 | expect(data.live.transcoding.resolutions['480p']).to.be.false | ||
87 | expect(data.live.transcoding.resolutions['720p']).to.be.false | ||
88 | expect(data.live.transcoding.resolutions['1080p']).to.be.false | ||
89 | expect(data.live.transcoding.resolutions['2160p']).to.be.false | ||
90 | |||
80 | expect(data.import.videos.http.enabled).to.be.true | 91 | expect(data.import.videos.http.enabled).to.be.true |
81 | expect(data.import.videos.torrent.enabled).to.be.true | 92 | expect(data.import.videos.torrent.enabled).to.be.true |
82 | expect(data.autoBlacklist.videos.ofUsers.enabled).to.be.false | 93 | expect(data.autoBlacklist.videos.ofUsers.enabled).to.be.false |
@@ -150,6 +161,16 @@ function checkUpdatedConfig (data: CustomConfig) { | |||
150 | expect(data.transcoding.hls.enabled).to.be.false | 161 | expect(data.transcoding.hls.enabled).to.be.false |
151 | expect(data.transcoding.webtorrent.enabled).to.be.true | 162 | expect(data.transcoding.webtorrent.enabled).to.be.true |
152 | 163 | ||
164 | expect(data.live.enabled).to.be.true | ||
165 | expect(data.live.transcoding.enabled).to.be.true | ||
166 | expect(data.live.transcoding.threads).to.equal(4) | ||
167 | expect(data.live.transcoding.resolutions['240p']).to.be.true | ||
168 | expect(data.live.transcoding.resolutions['360p']).to.be.true | ||
169 | expect(data.live.transcoding.resolutions['480p']).to.be.true | ||
170 | expect(data.live.transcoding.resolutions['720p']).to.be.true | ||
171 | expect(data.live.transcoding.resolutions['1080p']).to.be.true | ||
172 | expect(data.live.transcoding.resolutions['2160p']).to.be.true | ||
173 | |||
153 | expect(data.import.videos.http.enabled).to.be.false | 174 | expect(data.import.videos.http.enabled).to.be.false |
154 | expect(data.import.videos.torrent.enabled).to.be.false | 175 | expect(data.import.videos.torrent.enabled).to.be.false |
155 | expect(data.autoBlacklist.videos.ofUsers.enabled).to.be.true | 176 | expect(data.autoBlacklist.videos.ofUsers.enabled).to.be.true |
@@ -301,6 +322,21 @@ describe('Test config', function () { | |||
301 | enabled: false | 322 | enabled: false |
302 | } | 323 | } |
303 | }, | 324 | }, |
325 | live: { | ||
326 | enabled: true, | ||
327 | transcoding: { | ||
328 | enabled: true, | ||
329 | threads: 4, | ||
330 | resolutions: { | ||
331 | '240p': true, | ||
332 | '360p': true, | ||
333 | '480p': true, | ||
334 | '720p': true, | ||
335 | '1080p': true, | ||
336 | '2160p': true | ||
337 | } | ||
338 | } | ||
339 | }, | ||
304 | import: { | 340 | import: { |
305 | videos: { | 341 | videos: { |
306 | http: { | 342 | http: { |
diff --git a/server/tests/api/videos/video-transcoder.ts b/server/tests/api/videos/video-transcoder.ts index e3fd0ec22..a1959e1a9 100644 --- a/server/tests/api/videos/video-transcoder.ts +++ b/server/tests/api/videos/video-transcoder.ts | |||
@@ -83,7 +83,7 @@ describe('Test video transcoding', function () { | |||
83 | }) | 83 | }) |
84 | 84 | ||
85 | it('Should transcode video on server 2', async function () { | 85 | it('Should transcode video on server 2', async function () { |
86 | this.timeout(60000) | 86 | this.timeout(120000) |
87 | 87 | ||
88 | const videoAttributes = { | 88 | const videoAttributes = { |
89 | name: 'my super name for server 2', | 89 | name: 'my super name for server 2', |
diff --git a/server/types/models/video/index.ts b/server/types/models/video/index.ts index 25db23898..e586a4e42 100644 --- a/server/types/models/video/index.ts +++ b/server/types/models/video/index.ts | |||
@@ -9,6 +9,7 @@ export * from './video-channels' | |||
9 | export * from './video-comment' | 9 | export * from './video-comment' |
10 | export * from './video-file' | 10 | export * from './video-file' |
11 | export * from './video-import' | 11 | export * from './video-import' |
12 | export * from './video-live' | ||
12 | export * from './video-playlist' | 13 | export * from './video-playlist' |
13 | export * from './video-playlist-element' | 14 | export * from './video-playlist-element' |
14 | export * from './video-rate' | 15 | export * from './video-rate' |
diff --git a/server/types/models/video/video-live.ts b/server/types/models/video/video-live.ts new file mode 100644 index 000000000..346052417 --- /dev/null +++ b/server/types/models/video/video-live.ts | |||
@@ -0,0 +1,15 @@ | |||
1 | import { VideoLiveModel } from '@server/models/video/video-live' | ||
2 | import { PickWith } from '@shared/core-utils' | ||
3 | import { MVideo } from './video' | ||
4 | |||
5 | type Use<K extends keyof VideoLiveModel, M> = PickWith<VideoLiveModel, K, M> | ||
6 | |||
7 | // ############################################################################ | ||
8 | |||
9 | export type MVideoLive = Omit<VideoLiveModel, 'Video'> | ||
10 | |||
11 | // ############################################################################ | ||
12 | |||
13 | export type MVideoLiveVideo = | ||
14 | MVideoLive & | ||
15 | Use<'Video', MVideo> | ||
diff --git a/server/typings/express/index.d.ts b/server/typings/express/index.d.ts index cd8e544e0..a83619a0e 100644 --- a/server/typings/express/index.d.ts +++ b/server/typings/express/index.d.ts | |||
@@ -9,7 +9,8 @@ import { | |||
9 | MVideoFile, | 9 | MVideoFile, |
10 | MVideoImmutable, | 10 | MVideoImmutable, |
11 | MVideoPlaylistFull, | 11 | MVideoPlaylistFull, |
12 | MVideoPlaylistFullSummary | 12 | MVideoPlaylistFullSummary, |
13 | MVideoLive | ||
13 | } from '@server/types/models' | 14 | } from '@server/types/models' |
14 | import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token' | 15 | import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token' |
15 | import { MPlugin, MServer, MServerBlocklist } from '@server/types/models/server' | 16 | import { MPlugin, MServer, MServerBlocklist } from '@server/types/models/server' |
@@ -68,6 +69,8 @@ declare module 'express' { | |||
68 | onlyVideoWithRights?: MVideoWithRights | 69 | onlyVideoWithRights?: MVideoWithRights |
69 | videoId?: MVideoIdThumbnail | 70 | videoId?: MVideoIdThumbnail |
70 | 71 | ||
72 | videoLive?: MVideoLive | ||
73 | |||
71 | videoShare?: MVideoShareActor | 74 | videoShare?: MVideoShareActor |
72 | 75 | ||
73 | videoFile?: MVideoFile | 76 | videoFile?: MVideoFile |
diff --git a/shared/extra-utils/server/config.ts b/shared/extra-utils/server/config.ts index 3ae1c6e67..3606976bd 100644 --- a/shared/extra-utils/server/config.ts +++ b/shared/extra-utils/server/config.ts | |||
@@ -126,6 +126,21 @@ function updateCustomSubConfig (url: string, token: string, newConfig: DeepParti | |||
126 | enabled: false | 126 | enabled: false |
127 | } | 127 | } |
128 | }, | 128 | }, |
129 | live: { | ||
130 | enabled: true, | ||
131 | transcoding: { | ||
132 | enabled: true, | ||
133 | threads: 4, | ||
134 | resolutions: { | ||
135 | '240p': true, | ||
136 | '360p': true, | ||
137 | '480p': true, | ||
138 | '720p': true, | ||
139 | '1080p': true, | ||
140 | '2160p': true | ||
141 | } | ||
142 | } | ||
143 | }, | ||
129 | import: { | 144 | import: { |
130 | videos: { | 145 | videos: { |
131 | http: { | 146 | http: { |
diff --git a/shared/models/server/custom-config.model.ts b/shared/models/server/custom-config.model.ts index 338a59341..e609d1a33 100644 --- a/shared/models/server/custom-config.model.ts +++ b/shared/models/server/custom-config.model.ts | |||
@@ -1,6 +1,15 @@ | |||
1 | import { NSFWPolicyType } from '../videos/nsfw-policy.type' | 1 | import { NSFWPolicyType } from '../videos/nsfw-policy.type' |
2 | import { BroadcastMessageLevel } from './broadcast-message-level.type' | 2 | import { BroadcastMessageLevel } from './broadcast-message-level.type' |
3 | 3 | ||
4 | export type ConfigResolutions = { | ||
5 | '240p': boolean | ||
6 | '360p': boolean | ||
7 | '480p': boolean | ||
8 | '720p': boolean | ||
9 | '1080p': boolean | ||
10 | '2160p': boolean | ||
11 | } | ||
12 | |||
4 | export interface CustomConfig { | 13 | export interface CustomConfig { |
5 | instance: { | 14 | instance: { |
6 | name: string | 15 | name: string |
@@ -75,15 +84,7 @@ export interface CustomConfig { | |||
75 | allowAudioFiles: boolean | 84 | allowAudioFiles: boolean |
76 | 85 | ||
77 | threads: number | 86 | threads: number |
78 | resolutions: { | 87 | resolutions: ConfigResolutions & { '0p': boolean } |
79 | '0p': boolean | ||
80 | '240p': boolean | ||
81 | '360p': boolean | ||
82 | '480p': boolean | ||
83 | '720p': boolean | ||
84 | '1080p': boolean | ||
85 | '2160p': boolean | ||
86 | } | ||
87 | 88 | ||
88 | webtorrent: { | 89 | webtorrent: { |
89 | enabled: boolean | 90 | enabled: boolean |
@@ -94,6 +95,16 @@ export interface CustomConfig { | |||
94 | } | 95 | } |
95 | } | 96 | } |
96 | 97 | ||
98 | live: { | ||
99 | enabled: boolean | ||
100 | |||
101 | transcoding: { | ||
102 | enabled: boolean | ||
103 | threads: number | ||
104 | resolutions: ConfigResolutions | ||
105 | } | ||
106 | } | ||
107 | |||
97 | import: { | 108 | import: { |
98 | videos: { | 109 | videos: { |
99 | http: { | 110 | http: { |
diff --git a/shared/models/server/server-config.model.ts b/shared/models/server/server-config.model.ts index a8e5dfbff..77694a627 100644 --- a/shared/models/server/server-config.model.ts +++ b/shared/models/server/server-config.model.ts | |||
@@ -98,6 +98,16 @@ export interface ServerConfig { | |||
98 | enabledResolutions: number[] | 98 | enabledResolutions: number[] |
99 | } | 99 | } |
100 | 100 | ||
101 | live: { | ||
102 | enabled: boolean | ||
103 | |||
104 | transcoding: { | ||
105 | enabled: boolean | ||
106 | |||
107 | enabledResolutions: number[] | ||
108 | } | ||
109 | } | ||
110 | |||
101 | import: { | 111 | import: { |
102 | videos: { | 112 | videos: { |
103 | http: { | 113 | http: { |
diff --git a/shared/models/videos/index.ts b/shared/models/videos/index.ts index 20b9638ab..2a032a456 100644 --- a/shared/models/videos/index.ts +++ b/shared/models/videos/index.ts | |||
@@ -19,6 +19,8 @@ export * from './video-create.model' | |||
19 | export * from './video-file-metadata' | 19 | export * from './video-file-metadata' |
20 | export * from './video-file.model' | 20 | export * from './video-file.model' |
21 | 21 | ||
22 | export * from './video-live.model' | ||
23 | |||
22 | export * from './video-privacy.enum' | 24 | export * from './video-privacy.enum' |
23 | export * from './video-query.type' | 25 | export * from './video-query.type' |
24 | export * from './video-rate.type' | 26 | export * from './video-rate.type' |
diff --git a/shared/models/videos/video-create.model.ts b/shared/models/videos/video-create.model.ts index 53631bf79..59b118567 100644 --- a/shared/models/videos/video-create.model.ts +++ b/shared/models/videos/video-create.model.ts | |||
@@ -16,5 +16,5 @@ export interface VideoCreate { | |||
16 | downloadEnabled?: boolean | 16 | downloadEnabled?: boolean |
17 | privacy: VideoPrivacy | 17 | privacy: VideoPrivacy |
18 | scheduleUpdate?: VideoScheduleUpdate | 18 | scheduleUpdate?: VideoScheduleUpdate |
19 | originallyPublishedAt: Date | string | 19 | originallyPublishedAt?: Date | string |
20 | } | 20 | } |
diff --git a/shared/models/videos/video-live.model.ts b/shared/models/videos/video-live.model.ts new file mode 100644 index 000000000..2a834dc91 --- /dev/null +++ b/shared/models/videos/video-live.model.ts | |||
@@ -0,0 +1,4 @@ | |||
1 | export interface VideoLive { | ||
2 | rtmpUrl: string | ||
3 | streamKey: string | ||
4 | } | ||
diff --git a/shared/models/videos/video-state.enum.ts b/shared/models/videos/video-state.enum.ts index 31c501932..49d997f24 100644 --- a/shared/models/videos/video-state.enum.ts +++ b/shared/models/videos/video-state.enum.ts | |||
@@ -1,5 +1,7 @@ | |||
1 | export const enum VideoState { | 1 | export const enum VideoState { |
2 | PUBLISHED = 1, | 2 | PUBLISHED = 1, |
3 | TO_TRANSCODE = 2, | 3 | TO_TRANSCODE = 2, |
4 | TO_IMPORT = 3 | 4 | TO_IMPORT = 3, |
5 | WAITING_FOR_LIVE = 4, | ||
6 | LIVE_ENDED = 5 | ||
5 | } | 7 | } |
diff --git a/shared/models/videos/video-update.model.ts b/shared/models/videos/video-update.model.ts index 86653b959..e21ccae04 100644 --- a/shared/models/videos/video-update.model.ts +++ b/shared/models/videos/video-update.model.ts | |||
@@ -1,6 +1,5 @@ | |||
1 | import { VideoPrivacy } from './video-privacy.enum' | 1 | import { VideoPrivacy } from './video-privacy.enum' |
2 | import { VideoScheduleUpdate } from './video-schedule-update.model' | 2 | import { VideoScheduleUpdate } from './video-schedule-update.model' |
3 | |||
4 | export interface VideoUpdate { | 3 | export interface VideoUpdate { |
5 | name?: string | 4 | name?: string |
6 | category?: number | 5 | category?: number |
diff --git a/shared/models/videos/video.model.ts b/shared/models/videos/video.model.ts index 158ee8f05..caefeff82 100644 --- a/shared/models/videos/video.model.ts +++ b/shared/models/videos/video.model.ts | |||
@@ -23,6 +23,8 @@ export interface Video { | |||
23 | isLocal: boolean | 23 | isLocal: boolean |
24 | name: string | 24 | name: string |
25 | 25 | ||
26 | isLive: boolean | ||
27 | |||
26 | thumbnailPath: string | 28 | thumbnailPath: string |
27 | thumbnailUrl?: string | 29 | thumbnailUrl?: string |
28 | 30 | ||
@@ -2,7 +2,7 @@ | |||
2 | # yarn lockfile v1 | 2 | # yarn lockfile v1 |
3 | 3 | ||
4 | 4 | ||
5 | "@apidevtools/json-schema-ref-parser@^9.0.5": | 5 | "@apidevtools/json-schema-ref-parser@^9.0.6": |
6 | version "9.0.6" | 6 | version "9.0.6" |
7 | resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" | 7 | resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" |
8 | integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== | 8 | integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== |
@@ -32,16 +32,15 @@ | |||
32 | integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== | 32 | integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== |
33 | 33 | ||
34 | "@apidevtools/swagger-parser@^10.0.1": | 34 | "@apidevtools/swagger-parser@^10.0.1": |
35 | version "10.0.1" | 35 | version "10.0.2" |
36 | resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.0.1.tgz#af3a02de99bcd4f76aa04d27721e56502d735c88" | 36 | resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.0.2.tgz#f4145afb7c3a3bafe0376f003b5c3bdeae17a952" |
37 | integrity sha512-P5nva6hpXCK5NByGXbIJnFxd5FhQI9LGs+If0SMgKV+/5qlZnHH/B/6GtfnSPwSViRPL+7ARSzMcYIfGwjkW5Q== | 37 | integrity sha512-JFxcEyp8RlNHgBCE98nwuTkZT6eNFPc1aosWV6wPcQph72TSEEu1k3baJD4/x1qznU+JiDdz8F5pTwabZh+Dhg== |
38 | dependencies: | 38 | dependencies: |
39 | "@apidevtools/json-schema-ref-parser" "^9.0.5" | 39 | "@apidevtools/json-schema-ref-parser" "^9.0.6" |
40 | "@apidevtools/openapi-schemas" "^2.0.4" | 40 | "@apidevtools/openapi-schemas" "^2.0.4" |
41 | "@apidevtools/swagger-methods" "^3.0.2" | 41 | "@apidevtools/swagger-methods" "^3.0.2" |
42 | "@jsdevtools/ono" "^7.1.3" | 42 | "@jsdevtools/ono" "^7.1.3" |
43 | call-me-maybe "^1.0.1" | 43 | call-me-maybe "^1.0.1" |
44 | openapi-types "^1.3.5" | ||
45 | z-schema "^4.2.3" | 44 | z-schema "^4.2.3" |
46 | 45 | ||
47 | "@babel/code-frame@^7.0.0": | 46 | "@babel/code-frame@^7.0.0": |
@@ -66,21 +65,21 @@ | |||
66 | js-tokens "^4.0.0" | 65 | js-tokens "^4.0.0" |
67 | 66 | ||
68 | "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": | 67 | "@babel/parser@^7.6.0", "@babel/parser@^7.9.6": |
69 | version "7.11.4" | 68 | version "7.12.5" |
70 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" | 69 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" |
71 | integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== | 70 | integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== |
72 | 71 | ||
73 | "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": | 72 | "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": |
74 | version "7.11.2" | 73 | version "7.12.5" |
75 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" | 74 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" |
76 | integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== | 75 | integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== |
77 | dependencies: | 76 | dependencies: |
78 | regenerator-runtime "^0.13.4" | 77 | regenerator-runtime "^0.13.4" |
79 | 78 | ||
80 | "@babel/types@^7.6.1", "@babel/types@^7.9.6": | 79 | "@babel/types@^7.6.1", "@babel/types@^7.9.6": |
81 | version "7.11.0" | 80 | version "7.12.6" |
82 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" | 81 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" |
83 | integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== | 82 | integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== |
84 | dependencies: | 83 | dependencies: |
85 | "@babel/helper-validator-identifier" "^7.10.4" | 84 | "@babel/helper-validator-identifier" "^7.10.4" |
86 | lodash "^4.17.19" | 85 | lodash "^4.17.19" |
@@ -95,6 +94,22 @@ | |||
95 | enabled "2.0.x" | 94 | enabled "2.0.x" |
96 | kuler "^2.0.0" | 95 | kuler "^2.0.0" |
97 | 96 | ||
97 | "@eslint/eslintrc@^0.2.1": | ||
98 | version "0.2.1" | ||
99 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" | ||
100 | integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== | ||
101 | dependencies: | ||
102 | ajv "^6.12.4" | ||
103 | debug "^4.1.1" | ||
104 | espree "^7.3.0" | ||
105 | globals "^12.1.0" | ||
106 | ignore "^4.0.6" | ||
107 | import-fresh "^3.2.1" | ||
108 | js-yaml "^3.13.1" | ||
109 | lodash "^4.17.19" | ||
110 | minimatch "^3.0.4" | ||
111 | strip-json-comments "^3.1.1" | ||
112 | |||
98 | "@hapi/boom@^9.1.0": | 113 | "@hapi/boom@^9.1.0": |
99 | version "9.1.0" | 114 | version "9.1.0" |
100 | resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.0.tgz#0d9517657a56ff1e0b42d0aca9da1b37706fec56" | 115 | resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.0.tgz#0d9517657a56ff1e0b42d0aca9da1b37706fec56" |
@@ -103,26 +118,26 @@ | |||
103 | "@hapi/hoek" "9.x.x" | 118 | "@hapi/hoek" "9.x.x" |
104 | 119 | ||
105 | "@hapi/hoek@9.x.x": | 120 | "@hapi/hoek@9.x.x": |
106 | version "9.0.4" | 121 | version "9.1.0" |
107 | resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010" | 122 | resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6" |
108 | integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw== | 123 | integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw== |
109 | 124 | ||
110 | "@jimp/bmp@^0.16.0": | 125 | "@jimp/bmp@^0.16.1": |
111 | version "0.16.0" | 126 | version "0.16.1" |
112 | resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.16.0.tgz#8d96854b3f2dd64ffe11d46f73fd62b54e037d40" | 127 | resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.16.1.tgz#6e2da655b2ba22e721df0795423f34e92ef13768" |
113 | integrity sha512-lc4Ecyys6mRpKHLjFefkS1irCeIBTCpDBjKvNkU/6cIeIMXrFhv290MDT0WCL4UNFjJC/oU2PPraq+M+RkAcpA== | 128 | integrity sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg== |
114 | dependencies: | 129 | dependencies: |
115 | "@babel/runtime" "^7.7.2" | 130 | "@babel/runtime" "^7.7.2" |
116 | "@jimp/utils" "^0.16.0" | 131 | "@jimp/utils" "^0.16.1" |
117 | bmp-js "^0.1.0" | 132 | bmp-js "^0.1.0" |
118 | 133 | ||
119 | "@jimp/core@^0.16.0": | 134 | "@jimp/core@^0.16.1": |
120 | version "0.16.0" | 135 | version "0.16.1" |
121 | resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.16.0.tgz#cad38113293bd711e00710c755c4d14aa977d6ff" | 136 | resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.16.1.tgz#68c4288f6ef7f31a0f6b859ba3fb28dae930d39d" |
122 | integrity sha512-7WBYr3BX84fc9tuA86EDhAKNyT9QLcbVYk4whwvshxKtODPxlF1hmZU6Xmx2shoJ62JJtiWLsPsXAHKfEuERtQ== | 137 | integrity sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g== |
123 | dependencies: | 138 | dependencies: |
124 | "@babel/runtime" "^7.7.2" | 139 | "@babel/runtime" "^7.7.2" |
125 | "@jimp/utils" "^0.16.0" | 140 | "@jimp/utils" "^0.16.1" |
126 | any-base "^1.1.0" | 141 | any-base "^1.1.0" |
127 | buffer "^5.2.0" | 142 | buffer "^5.2.0" |
128 | exif-parser "^0.1.12" | 143 | exif-parser "^0.1.12" |
@@ -133,266 +148,266 @@ | |||
133 | pixelmatch "^4.0.2" | 148 | pixelmatch "^4.0.2" |
134 | tinycolor2 "^1.4.1" | 149 | tinycolor2 "^1.4.1" |
135 | 150 | ||
136 | "@jimp/custom@^0.16.0": | 151 | "@jimp/custom@^0.16.1": |
137 | version "0.16.0" | 152 | version "0.16.1" |
138 | resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.16.0.tgz#08489092e35425c8b3964efcf6172a08d5a93556" | 153 | resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.16.1.tgz#28b659c59e20a1d75a0c46067bd3f4bd302cf9c5" |
139 | integrity sha512-xN9WHeW2RP3gLdXdehCgnzKq8l9ezMsfWpkZP0HYtGqwGDSRXx+LNGR2Da1J/tV0pB+qbt67gAXtaxkJwdQ3cA== | 154 | integrity sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A== |
140 | dependencies: | 155 | dependencies: |
141 | "@babel/runtime" "^7.7.2" | 156 | "@babel/runtime" "^7.7.2" |
142 | "@jimp/core" "^0.16.0" | 157 | "@jimp/core" "^0.16.1" |
143 | 158 | ||
144 | "@jimp/gif@^0.16.0": | 159 | "@jimp/gif@^0.16.1": |
145 | version "0.16.0" | 160 | version "0.16.1" |
146 | resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.16.0.tgz#241cb429cfaeec8843e63db0a1f3d4148c26950f" | 161 | resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.16.1.tgz#d1f7c3a58f4666482750933af8b8f4666414f3ca" |
147 | integrity sha512-thc3C6/dvGKEVTMxiX82ruRAitIx7EstThqzrd0qk7Yf2O3qbrRZuENl6KNn2PXpmkr6fjcfFLWVM39bP4MG1Q== | 162 | integrity sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw== |
148 | dependencies: | 163 | dependencies: |
149 | "@babel/runtime" "^7.7.2" | 164 | "@babel/runtime" "^7.7.2" |
150 | "@jimp/utils" "^0.16.0" | 165 | "@jimp/utils" "^0.16.1" |
151 | gifwrap "^0.9.2" | 166 | gifwrap "^0.9.2" |
152 | omggif "^1.0.9" | 167 | omggif "^1.0.9" |
153 | 168 | ||
154 | "@jimp/jpeg@^0.16.0": | 169 | "@jimp/jpeg@^0.16.1": |
155 | version "0.16.0" | 170 | version "0.16.1" |
156 | resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.16.0.tgz#fc668d4a28a16abb57531783a4a9f6ab4408ad15" | 171 | resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.16.1.tgz#3b7bb08a4173f2f6d81f3049b251df3ee2ac8175" |
157 | integrity sha512-pzlv92YZi7ySvIICNkB0eMphLztBcTAMH2kl5lxFMzF1FDv2FR2d/FI1ph6DSzBV8VYFDu4AM1lJRq3hFJurgQ== | 172 | integrity sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w== |
158 | dependencies: | 173 | dependencies: |
159 | "@babel/runtime" "^7.7.2" | 174 | "@babel/runtime" "^7.7.2" |
160 | "@jimp/utils" "^0.16.0" | 175 | "@jimp/utils" "^0.16.1" |
161 | jpeg-js "^0.4.0" | 176 | jpeg-js "0.4.2" |
162 | 177 | ||
163 | "@jimp/plugin-blit@^0.16.0": | 178 | "@jimp/plugin-blit@^0.16.1": |
164 | version "0.16.0" | 179 | version "0.16.1" |
165 | resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.16.0.tgz#215435d253710614c080082c209a030da939d140" | 180 | resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz#09ea919f9d326de3b9c2826fe4155da37dde8edb" |
166 | integrity sha512-CrakcEvr2ztOwECKpuwmwhXArbtDP2SB44WV0wrFXtuss2mkBbL/hIkUmTnLyJGpwIflj4Vww9m5yIreG5lgUQ== | 181 | integrity sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg== |
167 | dependencies: | 182 | dependencies: |
168 | "@babel/runtime" "^7.7.2" | 183 | "@babel/runtime" "^7.7.2" |
169 | "@jimp/utils" "^0.16.0" | 184 | "@jimp/utils" "^0.16.1" |
170 | 185 | ||
171 | "@jimp/plugin-blur@^0.16.0": | 186 | "@jimp/plugin-blur@^0.16.1": |
172 | version "0.16.0" | 187 | version "0.16.1" |
173 | resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.16.0.tgz#d1630b95b247069e921bf80bd288d8acdf65eed9" | 188 | resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz#e614fa002797dcd662e705d4cea376e7db968bf5" |
174 | integrity sha512-CfTrQR4JY+DGtGbdAbdZgbUpjOqtcF+kmGOoa1uh3NF16tn1glbE8/0SA9YkgvHxNTmekwuT7Lu0nRq09MKVJw== | 189 | integrity sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw== |
175 | dependencies: | 190 | dependencies: |
176 | "@babel/runtime" "^7.7.2" | 191 | "@babel/runtime" "^7.7.2" |
177 | "@jimp/utils" "^0.16.0" | 192 | "@jimp/utils" "^0.16.1" |
178 | 193 | ||
179 | "@jimp/plugin-circle@^0.16.0": | 194 | "@jimp/plugin-circle@^0.16.1": |
180 | version "0.16.0" | 195 | version "0.16.1" |
181 | resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.16.0.tgz#3b9bc2f3a93b7bec16f067e1ad03ee11c3ab43f0" | 196 | resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz#20e3194a67ca29740aba2630fd4d0a89afa27491" |
182 | integrity sha512-O79288GKwUIxpHR3qyYg0paH/Iegz+Bdo2ePIvD/M3MigEzVdj5dJ/CQXz2cUnJx87rc0k1N5cTI4floIgv0tg== | 197 | integrity sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg== |
183 | dependencies: | 198 | dependencies: |
184 | "@babel/runtime" "^7.7.2" | 199 | "@babel/runtime" "^7.7.2" |
185 | "@jimp/utils" "^0.16.0" | 200 | "@jimp/utils" "^0.16.1" |
186 | 201 | ||
187 | "@jimp/plugin-color@^0.16.0": | 202 | "@jimp/plugin-color@^0.16.1": |
188 | version "0.16.0" | 203 | version "0.16.1" |
189 | resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.16.0.tgz#9fd6e5f60c2c8451486ce3b2b96f4eefd662397a" | 204 | resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.16.1.tgz#0f298ba74dee818b663834cd80d53e56f3755233" |
190 | integrity sha512-S4CbN1r5+VjUF9OBIyWxWBTXRNutLQqAAOkq7QX//lS4HY76eOAafgWWwZR7ci9WWZT8uyyw4tfd4ePoBvoYhw== | 205 | integrity sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A== |
191 | dependencies: | 206 | dependencies: |
192 | "@babel/runtime" "^7.7.2" | 207 | "@babel/runtime" "^7.7.2" |
193 | "@jimp/utils" "^0.16.0" | 208 | "@jimp/utils" "^0.16.1" |
194 | tinycolor2 "^1.4.1" | 209 | tinycolor2 "^1.4.1" |
195 | 210 | ||
196 | "@jimp/plugin-contain@^0.16.0": | 211 | "@jimp/plugin-contain@^0.16.1": |
197 | version "0.16.0" | 212 | version "0.16.1" |
198 | resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.16.0.tgz#26116ec8c3520e0e659f460c2ab88c443445bff4" | 213 | resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz#3c5f5c495fd9bb08a970739d83694934f58123f2" |
199 | integrity sha512-ZAVe9ad0/TDLSPutIP/8Z+jXXOv638w/FZeA3avTAI5GfWV7ZBT6BB7kDI3iZTl+SHUjv/MlzHCS99WCnpc1hg== | 214 | integrity sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg== |
200 | dependencies: | 215 | dependencies: |
201 | "@babel/runtime" "^7.7.2" | 216 | "@babel/runtime" "^7.7.2" |
202 | "@jimp/utils" "^0.16.0" | 217 | "@jimp/utils" "^0.16.1" |
203 | 218 | ||
204 | "@jimp/plugin-cover@^0.16.0": | 219 | "@jimp/plugin-cover@^0.16.1": |
205 | version "0.16.0" | 220 | version "0.16.1" |
206 | resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.16.0.tgz#1cfa9327ae81c1dfa57ca91120e653ea582cfb46" | 221 | resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz#0e8caec16a40abe15b1b32e5383a603a3306dc41" |
207 | integrity sha512-gJGorvc4HOeSR0dNR29mYLLXtrWvgj8da0B/lUJSb0R2AvUrb+VgLKSfFPyf+nL/jtcm9/CJzYhAPcz13zmRKA== | 222 | integrity sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q== |
208 | dependencies: | 223 | dependencies: |
209 | "@babel/runtime" "^7.7.2" | 224 | "@babel/runtime" "^7.7.2" |
210 | "@jimp/utils" "^0.16.0" | 225 | "@jimp/utils" "^0.16.1" |
211 | 226 | ||
212 | "@jimp/plugin-crop@^0.16.0": | 227 | "@jimp/plugin-crop@^0.16.1": |
213 | version "0.16.0" | 228 | version "0.16.1" |
214 | resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.16.0.tgz#901052a0984f9259d082caab0560044fe43bcccd" | 229 | resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz#b362497c873043fe47ba881ab08604bf7226f50f" |
215 | integrity sha512-I5McmdrNodg0iU815qOsuI8CjkwiRsFRTY4/LBOsLGHZasvxhzFxGcwD3SgnohdIkhRc3tX8jfvKg2pdPbD2AA== | 230 | integrity sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew== |
216 | dependencies: | 231 | dependencies: |
217 | "@babel/runtime" "^7.7.2" | 232 | "@babel/runtime" "^7.7.2" |
218 | "@jimp/utils" "^0.16.0" | 233 | "@jimp/utils" "^0.16.1" |
219 | 234 | ||
220 | "@jimp/plugin-displace@^0.16.0": | 235 | "@jimp/plugin-displace@^0.16.1": |
221 | version "0.16.0" | 236 | version "0.16.1" |
222 | resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.16.0.tgz#7dc9e57171b579d82945abc8a0259c2dbe38f601" | 237 | resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz#4dd9db518c3e78de9d723f86a234bf98922afe8d" |
223 | integrity sha512-+c5n5jDiN/neAuAxAAy55Gpycgmyay1PwUy8qKM1fgfBE874mrF5C4u1ThFz4OiDkRirKLpncRmrUMHa9boZtA== | 238 | integrity sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw== |
224 | dependencies: | 239 | dependencies: |
225 | "@babel/runtime" "^7.7.2" | 240 | "@babel/runtime" "^7.7.2" |
226 | "@jimp/utils" "^0.16.0" | 241 | "@jimp/utils" "^0.16.1" |
227 | 242 | ||
228 | "@jimp/plugin-dither@^0.16.0": | 243 | "@jimp/plugin-dither@^0.16.1": |
229 | version "0.16.0" | 244 | version "0.16.1" |
230 | resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.16.0.tgz#753bfaf9f9d9da61954310e7e02da3cae0d929cd" | 245 | resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz#b47de2c0bb09608bed228b41c3cd01a85ec2d45b" |
231 | integrity sha512-rsLHSGnpWniQXoughYXRCbK/8KKXi+avV5z5mHIKzAKS4areXW03XlLqmy9o26q2h0g/YV5Hkxo9jwIw0v2Fpg== | 246 | integrity sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q== |
232 | dependencies: | 247 | dependencies: |
233 | "@babel/runtime" "^7.7.2" | 248 | "@babel/runtime" "^7.7.2" |
234 | "@jimp/utils" "^0.16.0" | 249 | "@jimp/utils" "^0.16.1" |
235 | 250 | ||
236 | "@jimp/plugin-fisheye@^0.16.0": | 251 | "@jimp/plugin-fisheye@^0.16.1": |
237 | version "0.16.0" | 252 | version "0.16.1" |
238 | resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.0.tgz#cd7f148751834c61da8ec2015ac12eeb4ec4a008" | 253 | resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz#f625047b6cdbe1b83b89e9030fd025ab19cdb1a4" |
239 | integrity sha512-P6KsHQHUOWyDprxKl4chPTwKIJNbXB7LGDQH6Bq/q8zZ9XwYXGnTmkHA/BwGKI6HGCj/+R2WoP3Cnhwm6XaIpg== | 254 | integrity sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A== |
240 | dependencies: | 255 | dependencies: |
241 | "@babel/runtime" "^7.7.2" | 256 | "@babel/runtime" "^7.7.2" |
242 | "@jimp/utils" "^0.16.0" | 257 | "@jimp/utils" "^0.16.1" |
243 | 258 | ||
244 | "@jimp/plugin-flip@^0.16.0": | 259 | "@jimp/plugin-flip@^0.16.1": |
245 | version "0.16.0" | 260 | version "0.16.1" |
246 | resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.16.0.tgz#43101e504082092042ea499686db2a86f168a2f7" | 261 | resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz#7a99ea22bde802641017ed0f2615870c144329bb" |
247 | integrity sha512-5MlqM1RJohk0NU0Z3ZtviI0DqHXDB0OuRk3dimUIquePz1OocFCt9Z4bBbDRIczGZFOrDrCrpHMfMxPjwm7eXw== | 262 | integrity sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w== |
248 | dependencies: | 263 | dependencies: |
249 | "@babel/runtime" "^7.7.2" | 264 | "@babel/runtime" "^7.7.2" |
250 | "@jimp/utils" "^0.16.0" | 265 | "@jimp/utils" "^0.16.1" |
251 | 266 | ||
252 | "@jimp/plugin-gaussian@^0.16.0": | 267 | "@jimp/plugin-gaussian@^0.16.1": |
253 | version "0.16.0" | 268 | version "0.16.1" |
254 | resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.0.tgz#c0b5998dec529f55a8a16d1d53ca80f9c39302a4" | 269 | resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz#0845e314085ccd52e34fad9a83949bc0d81a68e8" |
255 | integrity sha512-oP2Hg4gR4uq9id1gF+SfTvPrzqZc3fVY+t6gwxPXPgpnb9S5UVuSQbwtixY1EEBC9XRdX2XFko9eUul8dTnUpQ== | 270 | integrity sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg== |
256 | dependencies: | 271 | dependencies: |
257 | "@babel/runtime" "^7.7.2" | 272 | "@babel/runtime" "^7.7.2" |
258 | "@jimp/utils" "^0.16.0" | 273 | "@jimp/utils" "^0.16.1" |
259 | 274 | ||
260 | "@jimp/plugin-invert@^0.16.0": | 275 | "@jimp/plugin-invert@^0.16.1": |
261 | version "0.16.0" | 276 | version "0.16.1" |
262 | resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.16.0.tgz#a8a342e463b22ae44205550785e1c4e1a0acc246" | 277 | resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz#7e6f5a15707256f3778d06921675bbcf18545c97" |
263 | integrity sha512-RFsES55G7po6rv35A/3jz7IA1BOr8krX4H0zmtKUprcrhFl+El9iZojVCpJQRJ5QKQVS3iXi5H6EGN7AT1HykQ== | 278 | integrity sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w== |
264 | dependencies: | 279 | dependencies: |
265 | "@babel/runtime" "^7.7.2" | 280 | "@babel/runtime" "^7.7.2" |
266 | "@jimp/utils" "^0.16.0" | 281 | "@jimp/utils" "^0.16.1" |
267 | 282 | ||
268 | "@jimp/plugin-mask@^0.16.0": | 283 | "@jimp/plugin-mask@^0.16.1": |
269 | version "0.16.0" | 284 | version "0.16.1" |
270 | resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.16.0.tgz#188566556ff0ddb85b9b0fc987f06bf7eee19ee8" | 285 | resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz#e7f2460e05c3cda7af5e76f33ccb0579f66f90df" |
271 | integrity sha512-inJweZgTNYZQdF0m5f/or5/LCLhpz4ccSDsK9HveuFQ82ITfJcvFaUlvlo11pHRl2r+Q92Er7B5g7icMIzXHZw== | 286 | integrity sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q== |
272 | dependencies: | 287 | dependencies: |
273 | "@babel/runtime" "^7.7.2" | 288 | "@babel/runtime" "^7.7.2" |
274 | "@jimp/utils" "^0.16.0" | 289 | "@jimp/utils" "^0.16.1" |
275 | 290 | ||
276 | "@jimp/plugin-normalize@^0.16.0": | 291 | "@jimp/plugin-normalize@^0.16.1": |
277 | version "0.16.0" | 292 | version "0.16.1" |
278 | resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.16.0.tgz#668d3ac26fe77069cc1c4ed1089f271abe2784fc" | 293 | resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz#032dfd88eefbc4dedc8b1b2d243832e4f3af30c8" |
279 | integrity sha512-sfqhHDGks0ccqIaTCG/dFJ772eGi8bewxIvrQkeLw5TizzPZ3S+C4GXKwlkX2z5dyQr30cHM5Mv6+XhNNLEHWw== | 294 | integrity sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw== |
280 | dependencies: | 295 | dependencies: |
281 | "@babel/runtime" "^7.7.2" | 296 | "@babel/runtime" "^7.7.2" |
282 | "@jimp/utils" "^0.16.0" | 297 | "@jimp/utils" "^0.16.1" |
283 | 298 | ||
284 | "@jimp/plugin-print@^0.16.0": | 299 | "@jimp/plugin-print@^0.16.1": |
285 | version "0.16.0" | 300 | version "0.16.1" |
286 | resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.16.0.tgz#537b9ade9b0b21b876013f17c908cb466afd8b03" | 301 | resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.16.1.tgz#66b803563f9d109825970714466e6ab9ae639ff6" |
287 | integrity sha512-tQJfSOTf+las/PJpdUK9Aw9EdComQ50zl29TgMrAULuae1lh+e/A188ZhNQzTCpAAc/PEku8xoke+rYUU1AVig== | 302 | integrity sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q== |
288 | dependencies: | 303 | dependencies: |
289 | "@babel/runtime" "^7.7.2" | 304 | "@babel/runtime" "^7.7.2" |
290 | "@jimp/utils" "^0.16.0" | 305 | "@jimp/utils" "^0.16.1" |
291 | load-bmfont "^1.4.0" | 306 | load-bmfont "^1.4.0" |
292 | 307 | ||
293 | "@jimp/plugin-resize@^0.16.0": | 308 | "@jimp/plugin-resize@^0.16.1": |
294 | version "0.16.0" | 309 | version "0.16.1" |
295 | resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.16.0.tgz#91d16bf12e23f43a76e2698725921ba45529ac97" | 310 | resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz#65e39d848ed13ba2d6c6faf81d5d590396571d10" |
296 | integrity sha512-aI5H1Xe1fE1phBBI0EgQiVgMEXJ7cy2CXH+H7WSxnrdZJTnt9emzc4LnvKEOPBY6dCPw3P7k/BHp9SDTpUKSOQ== | 311 | integrity sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ== |
297 | dependencies: | 312 | dependencies: |
298 | "@babel/runtime" "^7.7.2" | 313 | "@babel/runtime" "^7.7.2" |
299 | "@jimp/utils" "^0.16.0" | 314 | "@jimp/utils" "^0.16.1" |
300 | 315 | ||
301 | "@jimp/plugin-rotate@^0.16.0": | 316 | "@jimp/plugin-rotate@^0.16.1": |
302 | version "0.16.0" | 317 | version "0.16.1" |
303 | resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.16.0.tgz#1c6ef9d50f935a4ec4ce72b978333bbc91338a6e" | 318 | resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz#53fb5d51a4b3d05af9c91c2a8fffe5d7a1a47c8c" |
304 | integrity sha512-YTKo4LntC2h46H6+De+3ctt8MacC+fTbIdw527BBBIKF44aWYn0uAQlAO+R+Aemnq4YqNnCnrZzPtWYZXA6nNw== | 319 | integrity sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg== |
305 | dependencies: | 320 | dependencies: |
306 | "@babel/runtime" "^7.7.2" | 321 | "@babel/runtime" "^7.7.2" |
307 | "@jimp/utils" "^0.16.0" | 322 | "@jimp/utils" "^0.16.1" |
308 | 323 | ||
309 | "@jimp/plugin-scale@^0.16.0": | 324 | "@jimp/plugin-scale@^0.16.1": |
310 | version "0.16.0" | 325 | version "0.16.1" |
311 | resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.16.0.tgz#4a4519058a390033ee5d274822e55c7565354498" | 326 | resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz#89f6ba59feed3429847ed226aebda33a240cc647" |
312 | integrity sha512-AfDnTIjBzGdvJ1K7MkUexgkGGAYDzpNzkYoCpfaRNKl/txoivaA6iKfvCiE7i1IDXq5mRCLkjQjMF43l8kwv5g== | 327 | integrity sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw== |
313 | dependencies: | 328 | dependencies: |
314 | "@babel/runtime" "^7.7.2" | 329 | "@babel/runtime" "^7.7.2" |
315 | "@jimp/utils" "^0.16.0" | 330 | "@jimp/utils" "^0.16.1" |
316 | 331 | ||
317 | "@jimp/plugin-shadow@^0.16.0": | 332 | "@jimp/plugin-shadow@^0.16.1": |
318 | version "0.16.0" | 333 | version "0.16.1" |
319 | resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.16.0.tgz#3ca117ce1dd90756dfb8fcda57f7e56e45240188" | 334 | resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz#a7af892a740febf41211e10a5467c3c5c521a04c" |
320 | integrity sha512-8O1CKwvSnrrAIuAM3BEDTwt4U5oRVB5pXxnRegYXDuFFLDPIp2N4ILQqC2NaN+PBaVvj1JuLYuxmNzja0uRQKQ== | 335 | integrity sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA== |
321 | dependencies: | 336 | dependencies: |
322 | "@babel/runtime" "^7.7.2" | 337 | "@babel/runtime" "^7.7.2" |
323 | "@jimp/utils" "^0.16.0" | 338 | "@jimp/utils" "^0.16.1" |
324 | 339 | ||
325 | "@jimp/plugin-threshold@^0.16.0": | 340 | "@jimp/plugin-threshold@^0.16.1": |
326 | version "0.16.0" | 341 | version "0.16.1" |
327 | resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.16.0.tgz#98bf41f89c0bd371cc950e222eab45035819d237" | 342 | resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz#34f3078f9965145b7ae26c53a32ad74b1195bbf5" |
328 | integrity sha512-PNrB6IIF7kDGu7A/cyNAy3pchWtXbJGdpowkW6hcEzXOR+FwBRMuo5LS+q/eedo86qQ2F1vw5dm/nWYJxNxvkg== | 343 | integrity sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA== |
329 | dependencies: | 344 | dependencies: |
330 | "@babel/runtime" "^7.7.2" | 345 | "@babel/runtime" "^7.7.2" |
331 | "@jimp/utils" "^0.16.0" | 346 | "@jimp/utils" "^0.16.1" |
332 | 347 | ||
333 | "@jimp/plugins@^0.16.0": | 348 | "@jimp/plugins@^0.16.1": |
334 | version "0.16.0" | 349 | version "0.16.1" |
335 | resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.16.0.tgz#d0d140675978110ccc3c4d0b13bb129c93b23638" | 350 | resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.16.1.tgz#9f08544c97226d6460a16ced79f57e85bec3257b" |
336 | integrity sha512-aiyn/9MrSqVJwsnBmkbHD4DWTowULdP4NEes8Vt738KxZMw1UawKbEbj3/CzHIeEIQKjDECTi+jNd5HIbDq9LQ== | 351 | integrity sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA== |
337 | dependencies: | 352 | dependencies: |
338 | "@babel/runtime" "^7.7.2" | 353 | "@babel/runtime" "^7.7.2" |
339 | "@jimp/plugin-blit" "^0.16.0" | 354 | "@jimp/plugin-blit" "^0.16.1" |
340 | "@jimp/plugin-blur" "^0.16.0" | 355 | "@jimp/plugin-blur" "^0.16.1" |
341 | "@jimp/plugin-circle" "^0.16.0" | 356 | "@jimp/plugin-circle" "^0.16.1" |
342 | "@jimp/plugin-color" "^0.16.0" | 357 | "@jimp/plugin-color" "^0.16.1" |
343 | "@jimp/plugin-contain" "^0.16.0" | 358 | "@jimp/plugin-contain" "^0.16.1" |
344 | "@jimp/plugin-cover" "^0.16.0" | 359 | "@jimp/plugin-cover" "^0.16.1" |
345 | "@jimp/plugin-crop" "^0.16.0" | 360 | "@jimp/plugin-crop" "^0.16.1" |
346 | "@jimp/plugin-displace" "^0.16.0" | 361 | "@jimp/plugin-displace" "^0.16.1" |
347 | "@jimp/plugin-dither" "^0.16.0" | 362 | "@jimp/plugin-dither" "^0.16.1" |
348 | "@jimp/plugin-fisheye" "^0.16.0" | 363 | "@jimp/plugin-fisheye" "^0.16.1" |
349 | "@jimp/plugin-flip" "^0.16.0" | 364 | "@jimp/plugin-flip" "^0.16.1" |
350 | "@jimp/plugin-gaussian" "^0.16.0" | 365 | "@jimp/plugin-gaussian" "^0.16.1" |
351 | "@jimp/plugin-invert" "^0.16.0" | 366 | "@jimp/plugin-invert" "^0.16.1" |
352 | "@jimp/plugin-mask" "^0.16.0" | 367 | "@jimp/plugin-mask" "^0.16.1" |
353 | "@jimp/plugin-normalize" "^0.16.0" | 368 | "@jimp/plugin-normalize" "^0.16.1" |
354 | "@jimp/plugin-print" "^0.16.0" | 369 | "@jimp/plugin-print" "^0.16.1" |
355 | "@jimp/plugin-resize" "^0.16.0" | 370 | "@jimp/plugin-resize" "^0.16.1" |
356 | "@jimp/plugin-rotate" "^0.16.0" | 371 | "@jimp/plugin-rotate" "^0.16.1" |
357 | "@jimp/plugin-scale" "^0.16.0" | 372 | "@jimp/plugin-scale" "^0.16.1" |
358 | "@jimp/plugin-shadow" "^0.16.0" | 373 | "@jimp/plugin-shadow" "^0.16.1" |
359 | "@jimp/plugin-threshold" "^0.16.0" | 374 | "@jimp/plugin-threshold" "^0.16.1" |
360 | timm "^1.6.1" | 375 | timm "^1.6.1" |
361 | 376 | ||
362 | "@jimp/png@^0.16.0": | 377 | "@jimp/png@^0.16.1": |
363 | version "0.16.0" | 378 | version "0.16.1" |
364 | resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.16.0.tgz#d18f16ca8037ebfabab6e1c62b516329fbd356d8" | 379 | resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.16.1.tgz#f24cfc31529900b13a2dd9d4fdb4460c1e4d814e" |
365 | integrity sha512-3uDwCeZRaHTq6Jqjav37n73IGL4vrDkoHLzkC+dAGcSdaKnUnRxD/sO4CBTK1cHttJhsf5Xk/+0dO+qaqIEvNA== | 380 | integrity sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw== |
366 | dependencies: | 381 | dependencies: |
367 | "@babel/runtime" "^7.7.2" | 382 | "@babel/runtime" "^7.7.2" |
368 | "@jimp/utils" "^0.16.0" | 383 | "@jimp/utils" "^0.16.1" |
369 | pngjs "^3.3.3" | 384 | pngjs "^3.3.3" |
370 | 385 | ||
371 | "@jimp/tiff@^0.16.0": | 386 | "@jimp/tiff@^0.16.1": |
372 | version "0.16.0" | 387 | version "0.16.1" |
373 | resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.16.0.tgz#4c549b3bb0adebbddf0a0315b1893584b5520b70" | 388 | resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.16.1.tgz#0e8756695687d7574b6bc73efab0acd4260b7a12" |
374 | integrity sha512-wiGgIKGtUwR7vUi+PHv7qzEKhlnqT/k78qtOgsF6PiGhXGevJWBIniD4LksbQaW+Ph1Jwl3ovvYEdS89Db46Bw== | 389 | integrity sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ== |
375 | dependencies: | 390 | dependencies: |
376 | "@babel/runtime" "^7.7.2" | 391 | "@babel/runtime" "^7.7.2" |
377 | utif "^2.0.1" | 392 | utif "^2.0.1" |
378 | 393 | ||
379 | "@jimp/types@^0.16.0": | 394 | "@jimp/types@^0.16.1": |
380 | version "0.16.0" | 395 | version "0.16.1" |
381 | resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.16.0.tgz#cc07b42ccc9e227a1adb6cb742befcf29d538e5e" | 396 | resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.16.1.tgz#0dbab37b3202315c91010f16c31766d35a2322cc" |
382 | integrity sha512-T0VBF1HFXZ+Ez48zQ0sxrOpcFbfSzCulaVONWeEi/CqcNv2B7UmiaA81bw9uLGZ40VIOrFYHB20ma0m1asYBvw== | 397 | integrity sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ== |
383 | dependencies: | 398 | dependencies: |
384 | "@babel/runtime" "^7.7.2" | 399 | "@babel/runtime" "^7.7.2" |
385 | "@jimp/bmp" "^0.16.0" | 400 | "@jimp/bmp" "^0.16.1" |
386 | "@jimp/gif" "^0.16.0" | 401 | "@jimp/gif" "^0.16.1" |
387 | "@jimp/jpeg" "^0.16.0" | 402 | "@jimp/jpeg" "^0.16.1" |
388 | "@jimp/png" "^0.16.0" | 403 | "@jimp/png" "^0.16.1" |
389 | "@jimp/tiff" "^0.16.0" | 404 | "@jimp/tiff" "^0.16.1" |
390 | timm "^1.6.1" | 405 | timm "^1.6.1" |
391 | 406 | ||
392 | "@jimp/utils@^0.16.0": | 407 | "@jimp/utils@^0.16.1": |
393 | version "0.16.0" | 408 | version "0.16.1" |
394 | resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.16.0.tgz#5a5f2755b468fa2afe024a81455905a038b88391" | 409 | resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.16.1.tgz#2f51e6f14ff8307c4aa83d5e1a277da14a9fe3f7" |
395 | integrity sha512-dZJd5Rq4yOjPtqN/bArNy0v03nnaiHCf/Qct2wdiqK0k4wsfDL2Lle9XmswNcPPFuoL/LNnYY2E5ruAnatF/4A== | 410 | integrity sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw== |
396 | dependencies: | 411 | dependencies: |
397 | "@babel/runtime" "^7.7.2" | 412 | "@babel/runtime" "^7.7.2" |
398 | regenerator-runtime "^0.13.3" | 413 | regenerator-runtime "^0.13.3" |
@@ -402,37 +417,38 @@ | |||
402 | resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" | 417 | resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" |
403 | integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== | 418 | integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== |
404 | 419 | ||
405 | "@ladjs/i18n@^3.0.10": | 420 | "@ladjs/i18n@^6.0.5": |
406 | version "3.0.13" | 421 | version "6.0.5" |
407 | resolved "https://registry.yarnpkg.com/@ladjs/i18n/-/i18n-3.0.13.tgz#62ec19c94bccef91aaf3f064e0ed9913e35a4ac9" | 422 | resolved "https://registry.yarnpkg.com/@ladjs/i18n/-/i18n-6.0.5.tgz#a0598310c569cf26bdf8eb3a474cc1c3d7e49e0b" |
408 | integrity sha512-V4Y2xw/u7lQrOXqnmBUKTFRAuA6Hw6eJheddhbHvjGUav0XD57gUH6gNzuzqaHeZvyFll08YENVjcV7MuO4zOQ== | 423 | integrity sha512-l9Bkdo67dKcrWDyCkoEVpLEPMa8hdJbwe1gv0VWwD0fHIlvEAiNIAmka0ELF7H0ccNLqbKZx4vWKvkp0ufYFvw== |
409 | dependencies: | 424 | dependencies: |
410 | "@hapi/boom" "^9.1.0" | 425 | "@hapi/boom" "^9.1.0" |
411 | boolean "3.0.1" | 426 | boolean "3.0.1" |
412 | country-language "^0.1.7" | 427 | country-language "^0.1.7" |
413 | debug "^4.1.1" | 428 | debug "^4.2.0" |
414 | i18n "^0.9.1" | 429 | i18n "^0.13.2" |
415 | i18n-locales "^0.0.4" | 430 | i18n-locales "^0.0.4" |
416 | lodash "^4.17.15" | 431 | lodash "^4.17.20" |
417 | moment "^2.25.3" | 432 | multimatch "^5.0.0" |
418 | multimatch "^4.0.0" | 433 | punycode "^2.1.1" |
419 | qs "^6.9.4" | 434 | qs "^6.9.4" |
420 | titleize "^2.1.0" | 435 | titleize "^2.1.0" |
436 | tlds "^1.212.0" | ||
421 | 437 | ||
422 | "@openapitools/openapi-generator-cli@^1.0.15-4.3.1": | 438 | "@openapitools/openapi-generator-cli@^1.0.15-4.3.1": |
423 | version "1.0.15-4.3.1" | 439 | version "1.0.15-5.0.0-beta" |
424 | resolved "https://registry.yarnpkg.com/@openapitools/openapi-generator-cli/-/openapi-generator-cli-1.0.15-4.3.1.tgz#25ef943eba3c82e82379b30f858bb05ed97dae0b" | 440 | resolved "https://registry.yarnpkg.com/@openapitools/openapi-generator-cli/-/openapi-generator-cli-1.0.15-5.0.0-beta.tgz#01b4805308d10762655158f446ebc54032ca33cc" |
425 | integrity sha512-U+sanspDmeBElVNjYHQ4U7BbSEJUQzjNKmiTzXpcEw/r93sgxmzS2Sew5t+Zj6kyN1YTvjhRjJikNcW9/bmTKA== | 441 | integrity sha512-4Sbl/o2XbArryKnvsAtrK4UwXe0nTGnHErkYlMuIZYWBIZdEq8EeHHHHcVLlH1K3LZVP+uu18If51DcLtqVW4A== |
426 | 442 | ||
427 | "@sindresorhus/is@^0.14.0": | 443 | "@sindresorhus/is@^0.14.0": |
428 | version "0.14.0" | 444 | version "0.14.0" |
429 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" | 445 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" |
430 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== | 446 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== |
431 | 447 | ||
432 | "@sindresorhus/is@^2.1.1": | 448 | "@sindresorhus/is@^4.0.0": |
433 | version "2.1.1" | 449 | version "4.0.0" |
434 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-2.1.1.tgz#ceff6a28a5b4867c2dd4a1ba513de278ccbe8bb1" | 450 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" |
435 | integrity sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg== | 451 | integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== |
436 | 452 | ||
437 | "@szmarczak/http-timer@^1.1.2": | 453 | "@szmarczak/http-timer@^1.1.2": |
438 | version "1.1.2" | 454 | version "1.1.2" |
@@ -459,9 +475,9 @@ | |||
459 | integrity sha512-deXFjLZc1h6SOh3hicVgD+S2EAkhSBGX/vdlD4nTzCjjOFQ+bfNiXocQ21xJjFAUwqaCeyvOQMgrnbg4QEV63A== | 475 | integrity sha512-deXFjLZc1h6SOh3hicVgD+S2EAkhSBGX/vdlD4nTzCjjOFQ+bfNiXocQ21xJjFAUwqaCeyvOQMgrnbg4QEV63A== |
460 | 476 | ||
461 | "@types/babel-types@*", "@types/babel-types@^7.0.0": | 477 | "@types/babel-types@*", "@types/babel-types@^7.0.0": |
462 | version "7.0.8" | 478 | version "7.0.9" |
463 | resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.8.tgz#267f405bda841ffae731e7714166b88254cc3e19" | 479 | resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.9.tgz#01d7b86949f455402a94c788883fe4ba574cad41" |
464 | integrity sha512-jvu8g4LR7+p6ao30RhTREnEhHxmP4/R9D9/rOR/Kq14FztORty9SKgtOZUNZNMB9CXLxZ54EWu4dArUE8WdTsw== | 480 | integrity sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA== |
465 | 481 | ||
466 | "@types/babylon@^6.16.2": | 482 | "@types/babylon@^6.16.2": |
467 | version "6.16.5" | 483 | version "6.16.5" |
@@ -527,14 +543,9 @@ | |||
527 | "@types/chai" "*" | 543 | "@types/chai" "*" |
528 | 544 | ||
529 | "@types/chai@*", "@types/chai@^4.0.4": | 545 | "@types/chai@*", "@types/chai@^4.0.4": |
530 | version "4.2.12" | 546 | version "4.2.14" |
531 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201" | 547 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.14.tgz#44d2dd0b5de6185089375d976b4ec5caf6861193" |
532 | integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ== | 548 | integrity sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ== |
533 | |||
534 | "@types/color-name@^1.1.1": | ||
535 | version "1.1.1" | ||
536 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" | ||
537 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== | ||
538 | 549 | ||
539 | "@types/config@^0.0.36": | 550 | "@types/config@^0.0.36": |
540 | version "0.0.36" | 551 | version "0.0.36" |
@@ -549,9 +560,9 @@ | |||
549 | "@types/node" "*" | 560 | "@types/node" "*" |
550 | 561 | ||
551 | "@types/cookiejar@*": | 562 | "@types/cookiejar@*": |
552 | version "2.1.1" | 563 | version "2.1.2" |
553 | resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" | 564 | resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" |
554 | integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== | 565 | integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== |
555 | 566 | ||
556 | "@types/engine.io@*": | 567 | "@types/engine.io@*": |
557 | version "3.1.4" | 568 | version "3.1.4" |
@@ -573,18 +584,18 @@ | |||
573 | "@types/express" "*" | 584 | "@types/express" "*" |
574 | 585 | ||
575 | "@types/express-serve-static-core@*": | 586 | "@types/express-serve-static-core@*": |
576 | version "4.17.9" | 587 | version "4.17.13" |
577 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1" | 588 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz#d9af025e925fc8b089be37423b8d1eac781be084" |
578 | integrity sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA== | 589 | integrity sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA== |
579 | dependencies: | 590 | dependencies: |
580 | "@types/node" "*" | 591 | "@types/node" "*" |
581 | "@types/qs" "*" | 592 | "@types/qs" "*" |
582 | "@types/range-parser" "*" | 593 | "@types/range-parser" "*" |
583 | 594 | ||
584 | "@types/express@*", "@types/express@^4.0.35": | 595 | "@types/express@*", "@types/express@^4.0.35": |
585 | version "4.17.7" | 596 | version "4.17.8" |
586 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.7.tgz#42045be6475636d9801369cd4418ef65cdb0dd59" | 597 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.8.tgz#3df4293293317e61c60137d273a2e96cd8d5f27a" |
587 | integrity sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ== | 598 | integrity sha512-wLhcKh3PMlyA2cNAB9sjM1BntnhPMiM0JOBwPBqttjHev2428MLEB4AYVN+d8s2iyCVZac+o41Pflm/ZH5vLXQ== |
588 | dependencies: | 599 | dependencies: |
589 | "@types/body-parser" "*" | 600 | "@types/body-parser" "*" |
590 | "@types/express-serve-static-core" "*" | 601 | "@types/express-serve-static-core" "*" |
@@ -599,23 +610,23 @@ | |||
599 | "@types/node" "*" | 610 | "@types/node" "*" |
600 | 611 | ||
601 | "@types/fs-extra@^9.0.1": | 612 | "@types/fs-extra@^9.0.1": |
602 | version "9.0.1" | 613 | version "9.0.3" |
603 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.1.tgz#91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918" | 614 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.3.tgz#9996e5cce993508c32325380b429f04a1327523e" |
604 | integrity sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg== | 615 | integrity sha512-NKdGoXLTFTRED3ENcfCsH8+ekV4gbsysanx2OPbstXVV6fZMgUCqTxubs6I9r7pbOJbFgVq1rpFtLURjKCZWUw== |
605 | dependencies: | 616 | dependencies: |
606 | "@types/node" "*" | 617 | "@types/node" "*" |
607 | 618 | ||
608 | "@types/ioredis@*": | 619 | "@types/ioredis@*": |
609 | version "4.17.3" | 620 | version "4.17.7" |
610 | resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.17.3.tgz#65ba8b9344576ecb229c57ec1db92be3fe830ee9" | 621 | resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.17.7.tgz#5007a56380fd387315efabc6c777c050feabb121" |
611 | integrity sha512-G0pN/WZb7OBMFksZOBcqATBUeBII00IZ7C9OW0bm7VG3XMXBI75stTXWLBxm6iNLQxdjFZgzThRbc3gBXBhZGw== | 622 | integrity sha512-M8/KDSGmNYhPFMn+CxDDpIEHP27b2muEHgnK1UgIQIMEO2KXH9mznHx3epeRlD+AjF94HFh3dy2/9zqO+pPDqQ== |
612 | dependencies: | 623 | dependencies: |
613 | "@types/node" "*" | 624 | "@types/node" "*" |
614 | 625 | ||
615 | "@types/json-schema@^7.0.3": | 626 | "@types/json-schema@^7.0.3": |
616 | version "7.0.5" | 627 | version "7.0.6" |
617 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" | 628 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" |
618 | integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== | 629 | integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== |
619 | 630 | ||
620 | "@types/json5@^0.0.29": | 631 | "@types/json5@^0.0.29": |
621 | version "0.0.29" | 632 | version "0.0.29" |
@@ -630,9 +641,9 @@ | |||
630 | "@types/node" "*" | 641 | "@types/node" "*" |
631 | 642 | ||
632 | "@types/lodash@^4.14.64": | 643 | "@types/lodash@^4.14.64": |
633 | version "4.14.160" | 644 | version "4.14.165" |
634 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.160.tgz#2f1bba6500bc3cb9a732c6d66a083378fb0b0b29" | 645 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.165.tgz#74d55d947452e2de0742bad65270433b63a8c30f" |
635 | integrity sha512-aP03BShJoO+WVndoVj/WNcB/YBPt+CIU1mvaao2GRAHy2yg4pT/XS4XnVHEQBjPJGycWf/9seKEO9vopTJGkvA== | 646 | integrity sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg== |
636 | 647 | ||
637 | "@types/lru-cache@^5.1.0": | 648 | "@types/lru-cache@^5.1.0": |
638 | version "5.1.0" | 649 | version "5.1.0" |
@@ -654,9 +665,9 @@ | |||
654 | "@types/node" "*" | 665 | "@types/node" "*" |
655 | 666 | ||
656 | "@types/memoizee@^0.4.2": | 667 | "@types/memoizee@^0.4.2": |
657 | version "0.4.4" | 668 | version "0.4.5" |
658 | resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.4.tgz#a8a5e917ef70c79523b8b8d57f529e49616a760c" | 669 | resolved "https://registry.yarnpkg.com/@types/memoizee/-/memoizee-0.4.5.tgz#cb4e7031decf698c52c4f57c348180b0385aa7da" |
659 | integrity sha512-c9+1g6+6vEqcw5UuM0RbfQV0mssmZcoG9+hNC5ptDCsv4G+XJW1Z4pE13wV5zbc9e0+YrDydALBTiD3nWG1a3g== | 670 | integrity sha512-+ZzZZ3+0a7/ajBPeAAD4+LxrBsCat0EFZQtO3o0rwpIeLmDmSaM8KF/oYPuFxeUFAMiHIHFcGucFnY/8S4Hszg== |
660 | 671 | ||
661 | "@types/mime@*": | 672 | "@types/mime@*": |
662 | version "2.0.3" | 673 | version "2.0.3" |
@@ -681,9 +692,9 @@ | |||
681 | integrity sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg== | 692 | integrity sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg== |
682 | 693 | ||
683 | "@types/morgan@^1.7.32": | 694 | "@types/morgan@^1.7.32": |
684 | version "1.9.1" | 695 | version "1.9.2" |
685 | resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.1.tgz#6457872df95647c1dbc6b3741e8146b71ece74bf" | 696 | resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.2.tgz#450f958a4d3fb0694a3ba012b09c8106f9a2885e" |
686 | integrity sha512-2j5IKrgJpEP6xw/uiVb2Xfga0W0sSVD9JP9t7EZLvpBENdB0OKgcnoKS8IsjNeNnZ/86robdZ61Orl0QCFGOXg== | 697 | integrity sha512-edtGMEdit146JwwIeyQeHHg9yID4WSolQPxpEorHmN3KuytuCHyn2ELNr5Uxy8SerniFbbkmgKMrGM933am5BQ== |
687 | dependencies: | 698 | dependencies: |
688 | "@types/node" "*" | 699 | "@types/node" "*" |
689 | 700 | ||
@@ -694,10 +705,10 @@ | |||
694 | dependencies: | 705 | dependencies: |
695 | "@types/express" "*" | 706 | "@types/express" "*" |
696 | 707 | ||
697 | "@types/node@*", "@types/node@^14.0.13", "@types/node@^14.0.18": | 708 | "@types/node@*", "@types/node@^14.0.13", "@types/node@^14.14.6": |
698 | version "14.6.0" | 709 | version "14.14.6" |
699 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" | 710 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f" |
700 | integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== | 711 | integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw== |
701 | 712 | ||
702 | "@types/nodemailer@^6.2.0": | 713 | "@types/nodemailer@^6.2.0": |
703 | version "6.4.0" | 714 | version "6.4.0" |
@@ -737,9 +748,9 @@ | |||
737 | "@types/node" "*" | 748 | "@types/node" "*" |
738 | 749 | ||
739 | "@types/qs@*": | 750 | "@types/qs@*": |
740 | version "6.9.4" | 751 | version "6.9.5" |
741 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a" | 752 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" |
742 | integrity sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ== | 753 | integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== |
743 | 754 | ||
744 | "@types/range-parser@*": | 755 | "@types/range-parser@*": |
745 | version "1.2.3" | 756 | version "1.2.3" |
@@ -747,9 +758,9 @@ | |||
747 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== | 758 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== |
748 | 759 | ||
749 | "@types/redis@*", "@types/redis@^2.8.5": | 760 | "@types/redis@*", "@types/redis@^2.8.5": |
750 | version "2.8.26" | 761 | version "2.8.28" |
751 | resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.26.tgz#c7e773cc59b7b8b887fa3e1bc45b5abee2326480" | 762 | resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.28.tgz#5862b2b64aa7f7cbc76dafd7e6f06992b52c55e3" |
752 | integrity sha512-/Sot3oAGnrHQ9C3HRFXDApzBEugoYFyh4Pd8y1d9x4yCoOejFLbrD5gWQrsdANPpSj8VbucEJrNMJv1nzMptIA== | 763 | integrity sha512-8l2gr2OQ969ypa7hFOeKqtFoY70XkHxISV0pAwmQ2nm6CSPb1brmTmqJCGGrekCo+pAZyWlNXr+Kvo6L/1wijA== |
753 | dependencies: | 764 | dependencies: |
754 | "@types/node" "*" | 765 | "@types/node" "*" |
755 | 766 | ||
@@ -771,17 +782,17 @@ | |||
771 | "@types/node" "*" | 782 | "@types/node" "*" |
772 | 783 | ||
773 | "@types/serve-static@*": | 784 | "@types/serve-static@*": |
774 | version "1.13.5" | 785 | version "1.13.6" |
775 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.5.tgz#3d25d941a18415d3ab092def846e135a08bbcf53" | 786 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.6.tgz#866b1b8dec41c36e28c7be40ac725b88be43c5c1" |
776 | integrity sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ== | 787 | integrity sha512-nuRJmv7jW7VmCVTn+IgYDkkbbDGyIINOeu/G0d74X3lm6E5KfMeQPJhxIt1ayQeQB3cSxvYs1RA/wipYoFB4EA== |
777 | dependencies: | 788 | dependencies: |
778 | "@types/express-serve-static-core" "*" | ||
779 | "@types/mime" "*" | 789 | "@types/mime" "*" |
790 | "@types/node" "*" | ||
780 | 791 | ||
781 | "@types/simple-peer@*": | 792 | "@types/simple-peer@*": |
782 | version "9.6.0" | 793 | version "9.6.1" |
783 | resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-9.6.0.tgz#b5828d835b7f42dde27db584ba127e7a9f9072f4" | 794 | resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-9.6.1.tgz#461ff4159cfaca861cb2fe695de6e557881a98c8" |
784 | integrity sha512-X2y6s+vE/3j03hkI90oqld2JH2J/m1L7yFCYYPyFV/whrOK1h4neYvJL3GIE+UcACJacXZqzdmDKudwec18RbA== | 795 | integrity sha512-WdXxmHW+m0NaD5XPGlp5AB7raq+NUWX/+/aQvDcoOx0qiP78QmDdk015W29uoyvGhyiJCb9dZJuI2Oi39zGRfg== |
785 | dependencies: | 796 | dependencies: |
786 | "@types/node" "*" | 797 | "@types/node" "*" |
787 | 798 | ||
@@ -794,9 +805,9 @@ | |||
794 | "@types/node" "*" | 805 | "@types/node" "*" |
795 | 806 | ||
796 | "@types/superagent@*": | 807 | "@types/superagent@*": |
797 | version "4.1.9" | 808 | version "4.1.10" |
798 | resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.9.tgz#d899d3bc90b17eb298cac18b7aa22f7c3ec88c13" | 809 | resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.10.tgz#5e2cc721edf58f64fe9b819f326ee74803adee86" |
799 | integrity sha512-gpIC0p49YHT4VYDbdl0fKjOMWBurJFfYtKUIxOHzOwBtu5VT29FyldFI2vbmZ1K2iH2vS6MVcJZMjHM+652l4Q== | 810 | integrity sha512-xAgkb2CMWUMCyVc/3+7iQfOEBE75NvuZeezvmixbUw3nmENf2tCnQkW5yQLTYqvXUQ+R6EXxdqKKbal2zM5V/g== |
800 | dependencies: | 811 | dependencies: |
801 | "@types/cookiejar" "*" | 812 | "@types/cookiejar" "*" |
802 | "@types/node" "*" | 813 | "@types/node" "*" |
@@ -834,58 +845,58 @@ | |||
834 | "@types/simple-peer" "*" | 845 | "@types/simple-peer" "*" |
835 | 846 | ||
836 | "@types/ws@^7.2.1": | 847 | "@types/ws@^7.2.1": |
837 | version "7.2.6" | 848 | version "7.2.9" |
838 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.6.tgz#516cbfb818310f87b43940460e065eb912a4178d" | 849 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.9.tgz#cadfac473acfab192678a487c3ecbb13a503547f" |
839 | integrity sha512-Q07IrQUSNpr+cXU4E4LtkSIBPie5GLZyyMC1QtQYRLWz701+XcoVygGUZgvLqElq1nU4ICldMYPnexlBsg3dqQ== | 850 | integrity sha512-gmXYAXr7G4BrRMnkGQGkGonc3ArVro9VZd//C1uns/qqsJyl2dxaJdlPMhZbcq5MTxFFC+ttFWtHSfVW5+hlRA== |
840 | dependencies: | 851 | dependencies: |
841 | "@types/node" "*" | 852 | "@types/node" "*" |
842 | 853 | ||
843 | "@typescript-eslint/eslint-plugin@^3.3.0": | 854 | "@typescript-eslint/eslint-plugin@^3.3.0": |
844 | version "3.10.0" | 855 | version "3.10.1" |
845 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.0.tgz#40fd53e81639c0d1a515b44e5fdf4c03dfd3cd39" | 856 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" |
846 | integrity sha512-Bbeg9JAnSzZ85Y0gpInZscSpifA6SbEgRryaKdP5ZlUjhTKsvZS4GUIE6xAZCjhNTrf4zXXsySo83ZdHL7it0w== | 857 | integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== |
847 | dependencies: | 858 | dependencies: |
848 | "@typescript-eslint/experimental-utils" "3.10.0" | 859 | "@typescript-eslint/experimental-utils" "3.10.1" |
849 | debug "^4.1.1" | 860 | debug "^4.1.1" |
850 | functional-red-black-tree "^1.0.1" | 861 | functional-red-black-tree "^1.0.1" |
851 | regexpp "^3.0.0" | 862 | regexpp "^3.0.0" |
852 | semver "^7.3.2" | 863 | semver "^7.3.2" |
853 | tsutils "^3.17.1" | 864 | tsutils "^3.17.1" |
854 | 865 | ||
855 | "@typescript-eslint/experimental-utils@3.10.0": | 866 | "@typescript-eslint/experimental-utils@3.10.1": |
856 | version "3.10.0" | 867 | version "3.10.1" |
857 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.0.tgz#f97a669a84a78319ab324cd51169d0c52853a360" | 868 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" |
858 | integrity sha512-e5ZLSTuXgqC/Gq3QzK2orjlhTZVXzwxDujQmTBOM1NIVBZgW3wiIZjaXuVutk9R4UltFlwC9UD2+bdxsA7yyNg== | 869 | integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== |
859 | dependencies: | 870 | dependencies: |
860 | "@types/json-schema" "^7.0.3" | 871 | "@types/json-schema" "^7.0.3" |
861 | "@typescript-eslint/types" "3.10.0" | 872 | "@typescript-eslint/types" "3.10.1" |
862 | "@typescript-eslint/typescript-estree" "3.10.0" | 873 | "@typescript-eslint/typescript-estree" "3.10.1" |
863 | eslint-scope "^5.0.0" | 874 | eslint-scope "^5.0.0" |
864 | eslint-utils "^2.0.0" | 875 | eslint-utils "^2.0.0" |
865 | 876 | ||
866 | "@typescript-eslint/parser@^3.0.1": | 877 | "@typescript-eslint/parser@^3.0.1": |
867 | version "3.10.0" | 878 | version "3.10.1" |
868 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.0.tgz#820322d990a82265a78f4c1fc9aae03ce95b76ac" | 879 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" |
869 | integrity sha512-iJyf3f2HVwscvJR7ySGMXw2DJgIAPKEz8TeU17XVKzgJRV4/VgCeDFcqLzueRe7iFI2gv+Tln4AV88ZOnsCNXg== | 880 | integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== |
870 | dependencies: | 881 | dependencies: |
871 | "@types/eslint-visitor-keys" "^1.0.0" | 882 | "@types/eslint-visitor-keys" "^1.0.0" |
872 | "@typescript-eslint/experimental-utils" "3.10.0" | 883 | "@typescript-eslint/experimental-utils" "3.10.1" |
873 | "@typescript-eslint/types" "3.10.0" | 884 | "@typescript-eslint/types" "3.10.1" |
874 | "@typescript-eslint/typescript-estree" "3.10.0" | 885 | "@typescript-eslint/typescript-estree" "3.10.1" |
875 | eslint-visitor-keys "^1.1.0" | 886 | eslint-visitor-keys "^1.1.0" |
876 | 887 | ||
877 | "@typescript-eslint/types@3.10.0": | 888 | "@typescript-eslint/types@3.10.1": |
878 | version "3.10.0" | 889 | version "3.10.1" |
879 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.0.tgz#b81906674eca94a884345ba0bc1aaf6cd4da912a" | 890 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" |
880 | integrity sha512-ktUWSa75heQNwH85GRM7qP/UUrXqx9d6yIdw0iLO9/uE1LILW+i+3+B64dUodUS2WFWLzKTlwfi9giqrODibWg== | 891 | integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== |
881 | 892 | ||
882 | "@typescript-eslint/typescript-estree@3.10.0": | 893 | "@typescript-eslint/typescript-estree@3.10.1": |
883 | version "3.10.0" | 894 | version "3.10.1" |
884 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.0.tgz#65df13579a5e53c12afb4f1c5309589e3855a5de" | 895 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" |
885 | integrity sha512-yjuY6rmVHRhcUKgXaSPNVloRueGWpFNhxR5EQLzxXfiFSl1U/+FBqHhbaGwtPPEgCSt61QNhZgiFjWT27bgAyw== | 896 | integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== |
886 | dependencies: | 897 | dependencies: |
887 | "@typescript-eslint/types" "3.10.0" | 898 | "@typescript-eslint/types" "3.10.1" |
888 | "@typescript-eslint/visitor-keys" "3.10.0" | 899 | "@typescript-eslint/visitor-keys" "3.10.1" |
889 | debug "^4.1.1" | 900 | debug "^4.1.1" |
890 | glob "^7.1.6" | 901 | glob "^7.1.6" |
891 | is-glob "^4.0.1" | 902 | is-glob "^4.0.1" |
@@ -893,13 +904,18 @@ | |||
893 | semver "^7.3.2" | 904 | semver "^7.3.2" |
894 | tsutils "^3.17.1" | 905 | tsutils "^3.17.1" |
895 | 906 | ||
896 | "@typescript-eslint/visitor-keys@3.10.0": | 907 | "@typescript-eslint/visitor-keys@3.10.1": |
897 | version "3.10.0" | 908 | version "3.10.1" |
898 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.0.tgz#6c0cac867e705a42e2c71b359bf6a10a88a28985" | 909 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" |
899 | integrity sha512-g4qftk8lWb/rHZe9uEp8oZSvsJhUvR2cfp7F7qE6DyUD2SsovEs8JDQTRP1xHzsD+pERsEpYNqkDgQXW6+ob5A== | 910 | integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== |
900 | dependencies: | 911 | dependencies: |
901 | eslint-visitor-keys "^1.1.0" | 912 | eslint-visitor-keys "^1.1.0" |
902 | 913 | ||
914 | "@ungap/promise-all-settled@1.1.2": | ||
915 | version "1.1.2" | ||
916 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" | ||
917 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== | ||
918 | |||
903 | abbrev@1: | 919 | abbrev@1: |
904 | version "1.1.1" | 920 | version "1.1.1" |
905 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" | 921 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" |
@@ -921,9 +937,9 @@ acorn-globals@^3.0.0: | |||
921 | acorn "^4.0.4" | 937 | acorn "^4.0.4" |
922 | 938 | ||
923 | acorn-jsx@^5.2.0: | 939 | acorn-jsx@^5.2.0: |
924 | version "5.2.0" | 940 | version "5.3.1" |
925 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" | 941 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" |
926 | integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== | 942 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== |
927 | 943 | ||
928 | acorn@^3.1.0: | 944 | acorn@^3.1.0: |
929 | version "3.3.0" | 945 | version "3.3.0" |
@@ -936,9 +952,9 @@ acorn@^4.0.4, acorn@~4.0.2: | |||
936 | integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= | 952 | integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= |
937 | 953 | ||
938 | acorn@^7.1.1, acorn@^7.4.0: | 954 | acorn@^7.1.1, acorn@^7.4.0: |
939 | version "7.4.0" | 955 | version "7.4.1" |
940 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" | 956 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" |
941 | integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== | 957 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== |
942 | 958 | ||
943 | addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.5.1: | 959 | addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.5.1: |
944 | version "1.5.1" | 960 | version "1.5.1" |
@@ -955,10 +971,10 @@ after@0.8.2: | |||
955 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" | 971 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" |
956 | integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= | 972 | integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= |
957 | 973 | ||
958 | ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3: | 974 | ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: |
959 | version "6.12.4" | 975 | version "6.12.6" |
960 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" | 976 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" |
961 | integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== | 977 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== |
962 | dependencies: | 978 | dependencies: |
963 | fast-deep-equal "^3.1.1" | 979 | fast-deep-equal "^3.1.1" |
964 | fast-json-stable-stringify "^2.0.0" | 980 | fast-json-stable-stringify "^2.0.0" |
@@ -1014,11 +1030,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: | |||
1014 | color-convert "^1.9.0" | 1030 | color-convert "^1.9.0" |
1015 | 1031 | ||
1016 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: | 1032 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: |
1017 | version "4.2.1" | 1033 | version "4.3.0" |
1018 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" | 1034 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" |
1019 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== | 1035 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== |
1020 | dependencies: | 1036 | dependencies: |
1021 | "@types/color-name" "^1.1.1" | ||
1022 | color-convert "^2.0.1" | 1037 | color-convert "^2.0.1" |
1023 | 1038 | ||
1024 | any-base@^1.1.0: | 1039 | any-base@^1.1.0: |
@@ -1106,16 +1121,6 @@ array.prototype.flat@^1.2.3: | |||
1106 | define-properties "^1.1.3" | 1121 | define-properties "^1.1.3" |
1107 | es-abstract "^1.17.0-next.1" | 1122 | es-abstract "^1.17.0-next.1" |
1108 | 1123 | ||
1109 | array.prototype.map@^1.0.1: | ||
1110 | version "1.0.2" | ||
1111 | resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" | ||
1112 | integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== | ||
1113 | dependencies: | ||
1114 | define-properties "^1.1.3" | ||
1115 | es-abstract "^1.17.0-next.1" | ||
1116 | es-array-method-boxes-properly "^1.0.0" | ||
1117 | is-string "^1.0.4" | ||
1118 | |||
1119 | arraybuffer.slice@~0.0.7: | 1124 | arraybuffer.slice@~0.0.7: |
1120 | version "0.0.7" | 1125 | version "0.0.7" |
1121 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" | 1126 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" |
@@ -1213,9 +1218,9 @@ aws-sign2@~0.7.0: | |||
1213 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= | 1218 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= |
1214 | 1219 | ||
1215 | aws4@^1.8.0: | 1220 | aws4@^1.8.0: |
1216 | version "1.10.1" | 1221 | version "1.11.0" |
1217 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" | 1222 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" |
1218 | integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== | 1223 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== |
1219 | 1224 | ||
1220 | babel-runtime@^6.26.0: | 1225 | babel-runtime@^6.26.0: |
1221 | version "6.26.0" | 1226 | version "6.26.0" |
@@ -1262,12 +1267,17 @@ base32.js@0.1.0: | |||
1262 | resolved "https://registry.yarnpkg.com/base32.js/-/base32.js-0.1.0.tgz#b582dec693c2f11e893cf064ee6ac5b6131a2202" | 1267 | resolved "https://registry.yarnpkg.com/base32.js/-/base32.js-0.1.0.tgz#b582dec693c2f11e893cf064ee6ac5b6131a2202" |
1263 | integrity sha1-tYLexpPC8R6JPPBk7mrFthMaIgI= | 1268 | integrity sha1-tYLexpPC8R6JPPBk7mrFthMaIgI= |
1264 | 1269 | ||
1270 | base64-arraybuffer@0.1.4: | ||
1271 | version "0.1.4" | ||
1272 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" | ||
1273 | integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= | ||
1274 | |||
1265 | base64-arraybuffer@0.1.5: | 1275 | base64-arraybuffer@0.1.5: |
1266 | version "0.1.5" | 1276 | version "0.1.5" |
1267 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" | 1277 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" |
1268 | integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= | 1278 | integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= |
1269 | 1279 | ||
1270 | base64-js@^1.0.2: | 1280 | base64-js@^1.3.1: |
1271 | version "1.3.1" | 1281 | version "1.3.1" |
1272 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" | 1282 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" |
1273 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== | 1283 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== |
@@ -1282,6 +1292,11 @@ base64id@2.0.0: | |||
1282 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" | 1292 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" |
1283 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== | 1293 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== |
1284 | 1294 | ||
1295 | basic-auth-connect@^1.0.0: | ||
1296 | version "1.0.0" | ||
1297 | resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122" | ||
1298 | integrity sha1-/bC0OWLKe0BFanwrtI/hc9otISI= | ||
1299 | |||
1285 | basic-auth@^2.0.0, basic-auth@~2.0.1: | 1300 | basic-auth@^2.0.0, basic-auth@~2.0.1: |
1286 | version "2.0.1" | 1301 | version "2.0.1" |
1287 | resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" | 1302 | resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" |
@@ -1311,6 +1326,11 @@ bencode@^2.0.0, bencode@^2.0.1: | |||
1311 | dependencies: | 1326 | dependencies: |
1312 | safe-buffer "^5.1.1" | 1327 | safe-buffer "^5.1.1" |
1313 | 1328 | ||
1329 | bep53-range@^1.0.0: | ||
1330 | version "1.0.0" | ||
1331 | resolved "https://registry.yarnpkg.com/bep53-range/-/bep53-range-1.0.0.tgz#c776736b4669d7762d096f2b9cab735b6f8c7dcd" | ||
1332 | integrity sha512-CNsnREjxe2/wD559wzFXMycUnbmUDA9C2Bs6Z2tm++amSma7JowAAxAnaZJMuDq3cWSx9HSIbV04H06QQ11zTA== | ||
1333 | |||
1314 | better-assert@~1.0.0: | 1334 | better-assert@~1.0.0: |
1315 | version "1.0.2" | 1335 | version "1.0.2" |
1316 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" | 1336 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" |
@@ -1338,6 +1358,11 @@ bitfield@^3.0.0: | |||
1338 | resolved "https://registry.yarnpkg.com/bitfield/-/bitfield-3.0.0.tgz#b2d32c707866d42f016ae9bd8469999a9f51b59c" | 1358 | resolved "https://registry.yarnpkg.com/bitfield/-/bitfield-3.0.0.tgz#b2d32c707866d42f016ae9bd8469999a9f51b59c" |
1339 | integrity sha512-hJmWKucJQfdSkQPDPBKmWogM9s8+NOSzDT9QVbJbjinXaQ0bJKPu/cn98qRWy3PDNWtKw4XaoUP3XruGRIKEgg== | 1359 | integrity sha512-hJmWKucJQfdSkQPDPBKmWogM9s8+NOSzDT9QVbJbjinXaQ0bJKPu/cn98qRWy3PDNWtKw4XaoUP3XruGRIKEgg== |
1340 | 1360 | ||
1361 | bitfield@^4.0.0: | ||
1362 | version "4.0.0" | ||
1363 | resolved "https://registry.yarnpkg.com/bitfield/-/bitfield-4.0.0.tgz#3094123c870030dc6198a283d779639bd2a8e256" | ||
1364 | integrity sha512-jtuSG9CQr5yoHFuvhgf50+DH8Aezl3C/mMSfqdG4DqP7Kqe34uBUtCEHPN9oWaldTm96/i7y5e778SnM5ES4rw== | ||
1365 | |||
1341 | bittorrent-dht@^10.0.0: | 1366 | bittorrent-dht@^10.0.0: |
1342 | version "10.0.0" | 1367 | version "10.0.0" |
1343 | resolved "https://registry.yarnpkg.com/bittorrent-dht/-/bittorrent-dht-10.0.0.tgz#01de59bb03ed86a8847cb533134925d236d7f565" | 1368 | resolved "https://registry.yarnpkg.com/bittorrent-dht/-/bittorrent-dht-10.0.0.tgz#01de59bb03ed86a8847cb533134925d236d7f565" |
@@ -1353,22 +1378,29 @@ bittorrent-dht@^10.0.0: | |||
1353 | record-cache "^1.0.2" | 1378 | record-cache "^1.0.2" |
1354 | simple-sha1 "^3.0.0" | 1379 | simple-sha1 "^3.0.0" |
1355 | 1380 | ||
1381 | bittorrent-lsd@^1.0.0: | ||
1382 | version "1.0.0" | ||
1383 | resolved "https://registry.yarnpkg.com/bittorrent-lsd/-/bittorrent-lsd-1.0.0.tgz#4fe979a4d04a1536d819bf6c438640b9dde21602" | ||
1384 | integrity sha512-rM3ECQrtEiE1ef5TTdQbWJgbpd4NQur3bxrNs0r5VPcYfnFhXT85m75+whkyV5NIwNsndS7M/D+Uf/Mi/BUrWg== | ||
1385 | dependencies: | ||
1386 | debug "^4.2.0" | ||
1387 | |||
1356 | bittorrent-peerid@^1.3.2: | 1388 | bittorrent-peerid@^1.3.2: |
1357 | version "1.3.3" | 1389 | version "1.3.3" |
1358 | resolved "https://registry.yarnpkg.com/bittorrent-peerid/-/bittorrent-peerid-1.3.3.tgz#b8dc79e421f8136d2ffd0b163a18e9d70da09949" | 1390 | resolved "https://registry.yarnpkg.com/bittorrent-peerid/-/bittorrent-peerid-1.3.3.tgz#b8dc79e421f8136d2ffd0b163a18e9d70da09949" |
1359 | integrity sha512-tSh9HdQgwyEAfo1jzoGEis6o/zs4CcdRTchG93XVl5jct+DCAN90M5MVUV76k2vJ9Xg3GAzLB5NLsY/vnVTh6w== | 1391 | integrity sha512-tSh9HdQgwyEAfo1jzoGEis6o/zs4CcdRTchG93XVl5jct+DCAN90M5MVUV76k2vJ9Xg3GAzLB5NLsY/vnVTh6w== |
1360 | 1392 | ||
1361 | bittorrent-protocol@^3.1.1: | 1393 | bittorrent-protocol@^3.1.1: |
1362 | version "3.1.1" | 1394 | version "3.2.0" |
1363 | resolved "https://registry.yarnpkg.com/bittorrent-protocol/-/bittorrent-protocol-3.1.1.tgz#2d5a615a5de471bf22934a2bf3f423ad760b8932" | 1395 | resolved "https://registry.yarnpkg.com/bittorrent-protocol/-/bittorrent-protocol-3.2.0.tgz#fe423e31b4752def5da0ffaf321102a7b163268b" |
1364 | integrity sha512-kthSXghQ9DRQ4Lrjr1ceyIeEMeL5x9WiaSrQyR+5Nrr3g9QY6MvDeq+KLQz17R6094iDmT/LgFbQYAPj09/oUA== | 1396 | integrity sha512-8xgCgK8xUg7MXZBxhqJapZy9hexHwN2TCD+b8m4yWg56/ZFfdkULxhxQkzuhpXyUfvKIKxeRzGmLT43li7FDKg== |
1365 | dependencies: | 1397 | dependencies: |
1366 | bencode "^2.0.0" | 1398 | bencode "^2.0.1" |
1367 | bitfield "^3.0.0" | 1399 | bitfield "^4.0.0" |
1368 | debug "^4.1.1" | 1400 | debug "^4.2.0" |
1369 | randombytes "^2.0.5" | 1401 | randombytes "^2.1.0" |
1370 | readable-stream "^3.0.0" | 1402 | readable-stream "^3.6.0" |
1371 | speedometer "^1.0.0" | 1403 | speedometer "^1.1.0" |
1372 | unordered-array-remove "^1.0.2" | 1404 | unordered-array-remove "^1.0.2" |
1373 | 1405 | ||
1374 | bittorrent-tracker@^9.0.0: | 1406 | bittorrent-tracker@^9.0.0: |
@@ -1401,9 +1433,9 @@ bittorrent-tracker@^9.0.0: | |||
1401 | utf-8-validate "^5.0.2" | 1433 | utf-8-validate "^5.0.2" |
1402 | 1434 | ||
1403 | blob-to-buffer@^1.2.6: | 1435 | blob-to-buffer@^1.2.6: |
1404 | version "1.2.8" | 1436 | version "1.2.9" |
1405 | resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.8.tgz#78eeeb332f1280ed0ca6fb2b60693a8c6d36903a" | 1437 | resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz#a17fd6c1c564011408f8971e451544245daaa84a" |
1406 | integrity sha512-re0AIxakF504MgeMtIyJkVcZ8T5aUxtp/QmTMlmjyb3P44E1BEv5x3LATBGApWAJATyXHtkXRD+gWTmeyYLiQA== | 1438 | integrity sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA== |
1407 | 1439 | ||
1408 | blob@0.0.5: | 1440 | blob@0.0.5: |
1409 | version "0.0.5" | 1441 | version "0.0.5" |
@@ -1422,7 +1454,7 @@ bluebird@^2.10.0: | |||
1422 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" | 1454 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" |
1423 | integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= | 1455 | integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= |
1424 | 1456 | ||
1425 | bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.1: | 1457 | bluebird@^3.0.5, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.7.2: |
1426 | version "3.7.2" | 1458 | version "3.7.2" |
1427 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" | 1459 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" |
1428 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== | 1460 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== |
@@ -1536,24 +1568,24 @@ buffer-writer@2.0.0: | |||
1536 | integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== | 1568 | integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== |
1537 | 1569 | ||
1538 | buffer@^5.2.0: | 1570 | buffer@^5.2.0: |
1539 | version "5.6.0" | 1571 | version "5.7.1" |
1540 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" | 1572 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" |
1541 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== | 1573 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== |
1542 | dependencies: | 1574 | dependencies: |
1543 | base64-js "^1.0.2" | 1575 | base64-js "^1.3.1" |
1544 | ieee754 "^1.1.4" | 1576 | ieee754 "^1.1.13" |
1545 | 1577 | ||
1546 | bufferutil@^4.0.1: | 1578 | bufferutil@^4.0.1: |
1547 | version "4.0.1" | 1579 | version "4.0.2" |
1548 | resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7" | 1580 | resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" |
1549 | integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA== | 1581 | integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== |
1550 | dependencies: | 1582 | dependencies: |
1551 | node-gyp-build "~3.7.0" | 1583 | node-gyp-build "^4.2.0" |
1552 | 1584 | ||
1553 | bull@^3.4.2: | 1585 | bull@^3.4.2: |
1554 | version "3.18.0" | 1586 | version "3.18.1" |
1555 | resolved "https://registry.yarnpkg.com/bull/-/bull-3.18.0.tgz#7d7730c8ab0975ea9ee4e74f6f85bd731c3526cb" | 1587 | resolved "https://registry.yarnpkg.com/bull/-/bull-3.18.1.tgz#49eb8fd9844a3dc0a12a851b132e508890763a31" |
1556 | integrity sha512-nE/BKlg1dnJ/AcOy5D1nzthcmpAKqpUVXzQ43mJfnVC8ZM7mi4ZzP3spN7745UuikzmGGsbTe9px2TbEKhR+DQ== | 1588 | integrity sha512-g3gHFZ0qMo0wpecoNmd2W+F1Gj48l6phVCTdsQPKxDk1bB7kzD0nY5FAFnBFiaWxNmh5lb5X9TMB64uNXFKFDg== |
1557 | dependencies: | 1589 | dependencies: |
1558 | cron-parser "^2.13.0" | 1590 | cron-parser "^2.13.0" |
1559 | debuglog "^1.0.0" | 1591 | debuglog "^1.0.0" |
@@ -1592,6 +1624,14 @@ cacheable-request@^6.0.0: | |||
1592 | normalize-url "^4.1.0" | 1624 | normalize-url "^4.1.0" |
1593 | responselike "^1.0.2" | 1625 | responselike "^1.0.2" |
1594 | 1626 | ||
1627 | call-bind@^1.0.0: | ||
1628 | version "1.0.0" | ||
1629 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" | ||
1630 | integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== | ||
1631 | dependencies: | ||
1632 | function-bind "^1.1.1" | ||
1633 | get-intrinsic "^1.0.0" | ||
1634 | |||
1595 | call-me-maybe@^1.0.1: | 1635 | call-me-maybe@^1.0.1: |
1596 | version "1.0.1" | 1636 | version "1.0.1" |
1597 | resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" | 1637 | resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" |
@@ -1617,6 +1657,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: | |||
1617 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" | 1657 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" |
1618 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== | 1658 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== |
1619 | 1659 | ||
1660 | camelcase@^6.0.0: | ||
1661 | version "6.2.0" | ||
1662 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" | ||
1663 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== | ||
1664 | |||
1620 | canonicalize@^1.0.1: | 1665 | canonicalize@^1.0.1: |
1621 | version "1.0.3" | 1666 | version "1.0.3" |
1622 | resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.3.tgz#7c65d89eaf4f8f78a589e3ae23eabb1ce941c563" | 1667 | resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.3.tgz#7c65d89eaf4f8f78a589e3ae23eabb1ce941c563" |
@@ -1718,47 +1763,22 @@ check-error@^1.0.2: | |||
1718 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" | 1763 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" |
1719 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= | 1764 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= |
1720 | 1765 | ||
1721 | cheerio@^0.22.0: | 1766 | cheerio@^1.0.0-rc.3: |
1722 | version "0.22.0" | 1767 | version "1.0.0-rc.3" |
1723 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" | 1768 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" |
1724 | integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= | 1769 | integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== |
1725 | dependencies: | 1770 | dependencies: |
1726 | css-select "~1.2.0" | 1771 | css-select "~1.2.0" |
1727 | dom-serializer "~0.1.0" | 1772 | dom-serializer "~0.1.1" |
1728 | entities "~1.1.1" | 1773 | entities "~1.1.1" |
1729 | htmlparser2 "^3.9.1" | 1774 | htmlparser2 "^3.9.1" |
1730 | lodash.assignin "^4.0.9" | 1775 | lodash "^4.15.0" |
1731 | lodash.bind "^4.1.4" | 1776 | parse5 "^3.0.1" |
1732 | lodash.defaults "^4.0.1" | ||
1733 | lodash.filter "^4.4.0" | ||
1734 | lodash.flatten "^4.2.0" | ||
1735 | lodash.foreach "^4.3.0" | ||
1736 | lodash.map "^4.4.0" | ||
1737 | lodash.merge "^4.4.0" | ||
1738 | lodash.pick "^4.2.1" | ||
1739 | lodash.reduce "^4.4.0" | ||
1740 | lodash.reject "^4.4.0" | ||
1741 | lodash.some "^4.4.0" | ||
1742 | |||
1743 | chokidar@3.3.1: | ||
1744 | version "3.3.1" | ||
1745 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" | ||
1746 | integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== | ||
1747 | dependencies: | ||
1748 | anymatch "~3.1.1" | ||
1749 | braces "~3.0.2" | ||
1750 | glob-parent "~5.1.0" | ||
1751 | is-binary-path "~2.1.0" | ||
1752 | is-glob "~4.0.1" | ||
1753 | normalize-path "~3.0.0" | ||
1754 | readdirp "~3.3.0" | ||
1755 | optionalDependencies: | ||
1756 | fsevents "~2.1.2" | ||
1757 | 1777 | ||
1758 | chokidar@^3.2.2: | 1778 | chokidar@3.4.3, chokidar@^3.2.2, chokidar@^3.4.2: |
1759 | version "3.4.2" | 1779 | version "3.4.3" |
1760 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" | 1780 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" |
1761 | integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== | 1781 | integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== |
1762 | dependencies: | 1782 | dependencies: |
1763 | anymatch "~3.1.1" | 1783 | anymatch "~3.1.1" |
1764 | braces "~3.0.2" | 1784 | braces "~3.0.2" |
@@ -1766,7 +1786,7 @@ chokidar@^3.2.2: | |||
1766 | is-binary-path "~2.1.0" | 1786 | is-binary-path "~2.1.0" |
1767 | is-glob "~4.0.1" | 1787 | is-glob "~4.0.1" |
1768 | normalize-path "~3.0.0" | 1788 | normalize-path "~3.0.0" |
1769 | readdirp "~3.4.0" | 1789 | readdirp "~3.5.0" |
1770 | optionalDependencies: | 1790 | optionalDependencies: |
1771 | fsevents "~2.1.2" | 1791 | fsevents "~2.1.2" |
1772 | 1792 | ||
@@ -1776,12 +1796,12 @@ chownr@^1.1.1: | |||
1776 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== | 1796 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== |
1777 | 1797 | ||
1778 | chrome-dgram@^3.0.2, chrome-dgram@^3.0.4: | 1798 | chrome-dgram@^3.0.2, chrome-dgram@^3.0.4: |
1779 | version "3.0.5" | 1799 | version "3.0.6" |
1780 | resolved "https://registry.yarnpkg.com/chrome-dgram/-/chrome-dgram-3.0.5.tgz#7cf0d2567706e413eb9133da584aa9cb9d10da6a" | 1800 | resolved "https://registry.yarnpkg.com/chrome-dgram/-/chrome-dgram-3.0.6.tgz#2288b5c7471f66f073691206d36319dda713cf55" |
1781 | integrity sha512-RcCR5Kpn+F7VGmtL3ex78ltB+cuuSTZdGBa4j3fQwUqz/90uOKd5t+WmnJp+QNv017oaHzn5GoMv1mCoRTmehQ== | 1801 | integrity sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA== |
1782 | dependencies: | 1802 | dependencies: |
1783 | inherits "^2.0.1" | 1803 | inherits "^2.0.4" |
1784 | run-series "^1.1.2" | 1804 | run-series "^1.1.9" |
1785 | 1805 | ||
1786 | chrome-dns@^1.0.0: | 1806 | chrome-dns@^1.0.0: |
1787 | version "1.0.1" | 1807 | version "1.0.1" |
@@ -1810,10 +1830,10 @@ ci-info@^2.0.0: | |||
1810 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" | 1830 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" |
1811 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== | 1831 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== |
1812 | 1832 | ||
1813 | cidr-regex@^3.0.0: | 1833 | cidr-regex@^3.1.1: |
1814 | version "3.0.0" | 1834 | version "3.1.1" |
1815 | resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-3.0.0.tgz#3e6771a98ec2535c4ccc6f1591808e5ee01bcbbf" | 1835 | resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-3.1.1.tgz#ba1972c57c66f61875f18fd7dd487469770b571d" |
1816 | integrity sha512-HjIwpv3Lc/bkn7jQfgDUfs8o3ksRx6uManpALGZ1zqHjxo3CjLrXvNZ7P2EmftJAp3es+mGI6tEaAWECngEwwA== | 1836 | integrity sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw== |
1817 | dependencies: | 1837 | dependencies: |
1818 | ip-regex "^4.1.0" | 1838 | ip-regex "^4.1.0" |
1819 | 1839 | ||
@@ -1825,9 +1845,9 @@ clean-css@^4.1.11: | |||
1825 | source-map "~0.6.0" | 1845 | source-map "~0.6.0" |
1826 | 1846 | ||
1827 | cli-boxes@^2.2.0: | 1847 | cli-boxes@^2.2.0: |
1828 | version "2.2.0" | 1848 | version "2.2.1" |
1829 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" | 1849 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" |
1830 | integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== | 1850 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== |
1831 | 1851 | ||
1832 | cliui@^2.1.0: | 1852 | cliui@^2.1.0: |
1833 | version "2.1.0" | 1853 | version "2.1.0" |
@@ -1919,9 +1939,9 @@ color-name@^1.0.0, color-name@~1.1.4: | |||
1919 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== | 1939 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== |
1920 | 1940 | ||
1921 | color-string@^1.5.2: | 1941 | color-string@^1.5.2: |
1922 | version "1.5.3" | 1942 | version "1.5.4" |
1923 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" | 1943 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" |
1924 | integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== | 1944 | integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== |
1925 | dependencies: | 1945 | dependencies: |
1926 | color-name "^1.0.0" | 1946 | color-name "^1.0.0" |
1927 | simple-swizzle "^0.2.2" | 1947 | simple-swizzle "^0.2.2" |
@@ -1964,15 +1984,20 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: | |||
1964 | dependencies: | 1984 | dependencies: |
1965 | delayed-stream "~1.0.0" | 1985 | delayed-stream "~1.0.0" |
1966 | 1986 | ||
1967 | commander@^2.15.1, commander@^2.20.0, commander@^2.7.1: | 1987 | commander@^2.20.0, commander@^2.7.1: |
1968 | version "2.20.3" | 1988 | version "2.20.3" |
1969 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" | 1989 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" |
1970 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== | 1990 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== |
1971 | 1991 | ||
1992 | commander@^5.1.0: | ||
1993 | version "5.1.0" | ||
1994 | resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" | ||
1995 | integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== | ||
1996 | |||
1972 | commander@^6.0.0: | 1997 | commander@^6.0.0: |
1973 | version "6.0.0" | 1998 | version "6.2.0" |
1974 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.0.0.tgz#2b270da94f8fb9014455312f829a1129dbf8887e" | 1999 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" |
1975 | integrity sha512-s7EA+hDtTYNhuXkTlhqew4txMZVdszBmKWSPEMxGr8ru8JXR7bLUFIAtPhcSuFdJQ0ILMxnJi8GkQL0yvDy/YA== | 2000 | integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== |
1976 | 2001 | ||
1977 | compact2string@^1.2.0, compact2string@^1.4.1: | 2002 | compact2string@^1.2.0, compact2string@^1.4.1: |
1978 | version "1.4.1" | 2003 | version "1.4.1" |
@@ -2032,9 +2057,9 @@ concurrently@^5.0.0: | |||
2032 | yargs "^13.3.0" | 2057 | yargs "^13.3.0" |
2033 | 2058 | ||
2034 | config@^3.0.0: | 2059 | config@^3.0.0: |
2035 | version "3.3.1" | 2060 | version "3.3.2" |
2036 | resolved "https://registry.yarnpkg.com/config/-/config-3.3.1.tgz#b6a70e2908a43b98ed20be7e367edf0cc8ed5a19" | 2061 | resolved "https://registry.yarnpkg.com/config/-/config-3.3.2.tgz#35be3846054340f0f79778b2445afffbc11867c7" |
2037 | integrity sha512-+2/KaaaAzdwUBE3jgZON11L1ggLLhpf2FsGrfqYFHZW22ySGv/HqYIXrBwKKvn+XZh1UBUjHwAcrfsSkSygT+Q== | 2062 | integrity sha512-NlGfBn2565YA44Irn7GV5KHlIGC3KJbf0062/zW5ddP9VXIuRj0m7HVyFAWvMZvaHPEglyGfwmevGz3KosIpCg== |
2038 | dependencies: | 2063 | dependencies: |
2039 | json5 "^2.1.1" | 2064 | json5 "^2.1.1" |
2040 | 2065 | ||
@@ -2055,12 +2080,12 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: | |||
2055 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" | 2080 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" |
2056 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= | 2081 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= |
2057 | 2082 | ||
2058 | consolidate@^0.15.1: | 2083 | consolidate@^0.16.0: |
2059 | version "0.15.1" | 2084 | version "0.16.0" |
2060 | resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" | 2085 | resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" |
2061 | integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== | 2086 | integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ== |
2062 | dependencies: | 2087 | dependencies: |
2063 | bluebird "^3.1.1" | 2088 | bluebird "^3.7.2" |
2064 | 2089 | ||
2065 | constantinople@^3.0.1, constantinople@^3.1.2: | 2090 | constantinople@^3.0.1, constantinople@^3.1.2: |
2066 | version "3.1.2" | 2091 | version "3.1.2" |
@@ -2170,24 +2195,13 @@ create-torrent@^4.0.0, create-torrent@^4.4.2: | |||
2170 | simple-sha1 "^3.0.0" | 2195 | simple-sha1 "^3.0.0" |
2171 | 2196 | ||
2172 | cron-parser@^2.13.0: | 2197 | cron-parser@^2.13.0: |
2173 | version "2.16.3" | 2198 | version "2.17.0" |
2174 | resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.16.3.tgz#acb8e405eed1733aac542fdf604cb7c1daf0204a" | 2199 | resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.17.0.tgz#5707421a7e0a73ee74675d1c032a2f14123f2cf8" |
2175 | integrity sha512-XNJBD1QLFeAMUkZtZQuncAAOgJFWNhBdIbwgD22hZxrcWOImBFMKgPC66GzaXpyoJs7UvYLLgPH/8BRk/7gbZg== | 2200 | integrity sha512-oTmzVEwlurRe51HqTm4afshVr8Rkxy9kFiWxh5e6SmrY2o9NDYU4S6SduanBZYXLgkLy0skA98y7/tztW/DmjQ== |
2176 | dependencies: | 2201 | dependencies: |
2177 | is-nan "^1.3.0" | 2202 | is-nan "^1.3.0" |
2178 | moment-timezone "^0.5.31" | 2203 | moment-timezone "^0.5.31" |
2179 | 2204 | ||
2180 | cross-spawn@^6.0.5: | ||
2181 | version "6.0.5" | ||
2182 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" | ||
2183 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== | ||
2184 | dependencies: | ||
2185 | nice-try "^1.0.4" | ||
2186 | path-key "^2.0.1" | ||
2187 | semver "^5.5.0" | ||
2188 | shebang-command "^1.2.0" | ||
2189 | which "^1.2.9" | ||
2190 | |||
2191 | cross-spawn@^7.0.0, cross-spawn@^7.0.2: | 2205 | cross-spawn@^7.0.0, cross-spawn@^7.0.2: |
2192 | version "7.0.3" | 2206 | version "7.0.3" |
2193 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" | 2207 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" |
@@ -2242,30 +2256,20 @@ dashdash@^1.12.0: | |||
2242 | dependencies: | 2256 | dependencies: |
2243 | assert-plus "^1.0.0" | 2257 | assert-plus "^1.0.0" |
2244 | 2258 | ||
2245 | datauri@^2.0.0: | ||
2246 | version "2.0.0" | ||
2247 | resolved "https://registry.yarnpkg.com/datauri/-/datauri-2.0.0.tgz#ff0ee23729935a6bcc81f301621bed3e692bf3c7" | ||
2248 | integrity sha512-zS2HSf9pI5XPlNZgIqJg/wCJpecgU/HA6E/uv2EfaWnW1EiTGLfy/EexTIsC9c99yoCOTXlqeeWk4FkCSuO3/g== | ||
2249 | dependencies: | ||
2250 | image-size "^0.7.3" | ||
2251 | mimer "^1.0.0" | ||
2252 | |||
2253 | date-fns@^2.0.1: | 2259 | date-fns@^2.0.1: |
2254 | version "2.15.0" | 2260 | version "2.16.1" |
2255 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f" | 2261 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" |
2256 | integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ== | 2262 | integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== |
2257 | 2263 | ||
2258 | dayjs@^1.8.16: | 2264 | dateformat@^3.0.3: |
2259 | version "1.8.34" | 2265 | version "3.0.3" |
2260 | resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.34.tgz#d3ad33cc43d6b0f24cb8686b90aad2c653708069" | 2266 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" |
2261 | integrity sha512-Olb+E6EoMvdPmAMq2QoucuyZycKHjTlBXmRx8Ada+wGtq4SIXuDCdtoaX4KkK0yjf1fJLnwXQURr8gQKWKaybw== | 2267 | integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== |
2262 | 2268 | ||
2263 | debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.1, debug@~4.1.0, debug@~4.1.1: | 2269 | dayjs@^1.8.16: |
2264 | version "4.1.1" | 2270 | version "1.9.5" |
2265 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" | 2271 | resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.5.tgz#fd49994ebe71639d2ce9575e97186642dfce9808" |
2266 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== | 2272 | integrity sha512-WULIw7UpW/E0y6VywewpbXAMH3d5cZijEhoHLwM+OMVbk/NtchKS/W+57H/0P1rqU7gHrAArjiRLHCUhgMQl6w== |
2267 | dependencies: | ||
2268 | ms "^2.1.1" | ||
2269 | 2273 | ||
2270 | debug@2.6.9, debug@^2.2.0, debug@^2.6.9: | 2274 | debug@2.6.9, debug@^2.2.0, debug@^2.6.9: |
2271 | version "2.6.9" | 2275 | version "2.6.9" |
@@ -2274,7 +2278,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.9: | |||
2274 | dependencies: | 2278 | dependencies: |
2275 | ms "2.0.0" | 2279 | ms "2.0.0" |
2276 | 2280 | ||
2277 | debug@3.2.6, debug@^3.1.0, debug@^3.2.6: | 2281 | debug@4.2.0, debug@^4.0.0, debug@^4.0.1, debug@^4.1.1, debug@^4.2.0: |
2282 | version "4.2.0" | ||
2283 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" | ||
2284 | integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== | ||
2285 | dependencies: | ||
2286 | ms "2.1.2" | ||
2287 | |||
2288 | debug@^3.1.0, debug@^3.2.6: | ||
2278 | version "3.2.6" | 2289 | version "3.2.6" |
2279 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" | 2290 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" |
2280 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== | 2291 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== |
@@ -2288,6 +2299,13 @@ debug@~3.1.0: | |||
2288 | dependencies: | 2299 | dependencies: |
2289 | ms "2.0.0" | 2300 | ms "2.0.0" |
2290 | 2301 | ||
2302 | debug@~4.1.0, debug@~4.1.1: | ||
2303 | version "4.1.1" | ||
2304 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" | ||
2305 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== | ||
2306 | dependencies: | ||
2307 | ms "^2.1.1" | ||
2308 | |||
2291 | debuglog@^1.0.0: | 2309 | debuglog@^1.0.0: |
2292 | version "1.0.1" | 2310 | version "1.0.1" |
2293 | resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" | 2311 | resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" |
@@ -2298,6 +2316,11 @@ decamelize@^1.0.0, decamelize@^1.2.0: | |||
2298 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" | 2316 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" |
2299 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= | 2317 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= |
2300 | 2318 | ||
2319 | decamelize@^4.0.0: | ||
2320 | version "4.0.0" | ||
2321 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" | ||
2322 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== | ||
2323 | |||
2301 | decompress-response@^3.3.0: | 2324 | decompress-response@^3.3.0: |
2302 | version "3.3.0" | 2325 | version "3.3.0" |
2303 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" | 2326 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" |
@@ -2363,7 +2386,7 @@ defer-to-connect@^1.0.1: | |||
2363 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" | 2386 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" |
2364 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== | 2387 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== |
2365 | 2388 | ||
2366 | define-properties@^1.1.2, define-properties@^1.1.3: | 2389 | define-properties@^1.1.3: |
2367 | version "1.1.3" | 2390 | version "1.1.3" |
2368 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" | 2391 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" |
2369 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== | 2392 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== |
@@ -2455,7 +2478,7 @@ dom-serializer@^1.0.1: | |||
2455 | domhandler "^3.0.0" | 2478 | domhandler "^3.0.0" |
2456 | entities "^2.0.0" | 2479 | entities "^2.0.0" |
2457 | 2480 | ||
2458 | dom-serializer@~0.1.0: | 2481 | dom-serializer@~0.1.1: |
2459 | version "0.1.1" | 2482 | version "0.1.1" |
2460 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" | 2483 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" |
2461 | integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== | 2484 | integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== |
@@ -2518,9 +2541,9 @@ domutils@^2.0.0: | |||
2518 | domhandler "^3.3.0" | 2541 | domhandler "^3.3.0" |
2519 | 2542 | ||
2520 | dot-prop@^5.2.0: | 2543 | dot-prop@^5.2.0: |
2521 | version "5.2.0" | 2544 | version "5.3.0" |
2522 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" | 2545 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" |
2523 | integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== | 2546 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== |
2524 | dependencies: | 2547 | dependencies: |
2525 | is-obj "^2.0.0" | 2548 | is-obj "^2.0.0" |
2526 | 2549 | ||
@@ -2558,21 +2581,21 @@ ee-first@1.1.1: | |||
2558 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= | 2581 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= |
2559 | 2582 | ||
2560 | email-templates@^7.0.4: | 2583 | email-templates@^7.0.4: |
2561 | version "7.1.0" | 2584 | version "7.1.2" |
2562 | resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-7.1.0.tgz#d10dad8ae673e06eaf1bdff2c179ae39dc31ae82" | 2585 | resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-7.1.2.tgz#c8b0435d182cea08c1d3c289c9a9574da7efe4a6" |
2563 | integrity sha512-cO+6RgrFk1CPqm1y8UbSRyjZ4mrtk3FleT7IR7l82EbXfwnP2qSo94KDIeacklR4+oFktep2Z6ulkUp5Cf+UNw== | 2586 | integrity sha512-+tp0oUj16WwkR+qo9dbrZN0H64g+ya6NrzqHi2PtJQNVrPQU1oSiERKfOQdmK52VBvpzpaawI2tHDuknvb7Czw== |
2564 | dependencies: | 2587 | dependencies: |
2565 | "@ladjs/i18n" "^3.0.10" | 2588 | "@ladjs/i18n" "^6.0.5" |
2566 | "@sindresorhus/is" "^2.1.1" | 2589 | "@sindresorhus/is" "^4.0.0" |
2567 | consolidate "^0.15.1" | 2590 | consolidate "^0.16.0" |
2568 | debug "^4.1.1" | 2591 | debug "^4.2.0" |
2569 | get-paths "^0.0.7" | 2592 | get-paths "^0.0.7" |
2570 | html-to-text "^5.1.1" | 2593 | html-to-text "^5.1.1" |
2571 | juice "^6.0.0" | 2594 | juice "^7.0.0" |
2572 | lodash "^4.17.15" | 2595 | lodash "^4.17.20" |
2573 | nodemailer "^6.4.6" | 2596 | nodemailer "^6.4.14" |
2574 | pify "^5.0.0" | 2597 | pify "^5.0.0" |
2575 | preview-email "^2.0.1" | 2598 | preview-email "^2.0.2" |
2576 | 2599 | ||
2577 | emoji-regex@^7.0.1: | 2600 | emoji-regex@^7.0.1: |
2578 | version "7.0.3" | 2601 | version "7.0.3" |
@@ -2631,18 +2654,18 @@ engine.io-client@~3.3.1: | |||
2631 | yeast "0.1.2" | 2654 | yeast "0.1.2" |
2632 | 2655 | ||
2633 | engine.io-client@~3.4.0: | 2656 | engine.io-client@~3.4.0: |
2634 | version "3.4.3" | 2657 | version "3.4.4" |
2635 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.3.tgz#192d09865403e3097e3575ebfeb3861c4d01a66c" | 2658 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" |
2636 | integrity sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw== | 2659 | integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== |
2637 | dependencies: | 2660 | dependencies: |
2638 | component-emitter "~1.3.0" | 2661 | component-emitter "~1.3.0" |
2639 | component-inherit "0.0.3" | 2662 | component-inherit "0.0.3" |
2640 | debug "~4.1.0" | 2663 | debug "~3.1.0" |
2641 | engine.io-parser "~2.2.0" | 2664 | engine.io-parser "~2.2.0" |
2642 | has-cors "1.1.0" | 2665 | has-cors "1.1.0" |
2643 | indexof "0.0.1" | 2666 | indexof "0.0.1" |
2644 | parseqs "0.0.5" | 2667 | parseqs "0.0.6" |
2645 | parseuri "0.0.5" | 2668 | parseuri "0.0.6" |
2646 | ws "~6.1.0" | 2669 | ws "~6.1.0" |
2647 | xmlhttprequest-ssl "~1.5.4" | 2670 | xmlhttprequest-ssl "~1.5.4" |
2648 | yeast "0.1.2" | 2671 | yeast "0.1.2" |
@@ -2659,13 +2682,13 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: | |||
2659 | has-binary2 "~1.0.2" | 2682 | has-binary2 "~1.0.2" |
2660 | 2683 | ||
2661 | engine.io-parser@~2.2.0: | 2684 | engine.io-parser@~2.2.0: |
2662 | version "2.2.0" | 2685 | version "2.2.1" |
2663 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" | 2686 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" |
2664 | integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== | 2687 | integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== |
2665 | dependencies: | 2688 | dependencies: |
2666 | after "0.8.2" | 2689 | after "0.8.2" |
2667 | arraybuffer.slice "~0.0.7" | 2690 | arraybuffer.slice "~0.0.7" |
2668 | base64-arraybuffer "0.1.5" | 2691 | base64-arraybuffer "0.1.4" |
2669 | blob "0.0.5" | 2692 | blob "0.0.5" |
2670 | has-binary2 "~1.0.2" | 2693 | has-binary2 "~1.0.2" |
2671 | 2694 | ||
@@ -2715,6 +2738,11 @@ entities@~2.0.0: | |||
2715 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" | 2738 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" |
2716 | integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== | 2739 | integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== |
2717 | 2740 | ||
2741 | err-code@^2.0.3: | ||
2742 | version "2.0.3" | ||
2743 | resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" | ||
2744 | integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== | ||
2745 | |||
2718 | error-ex@^1.2.0, error-ex@^1.3.1: | 2746 | error-ex@^1.2.0, error-ex@^1.3.1: |
2719 | version "1.3.2" | 2747 | version "1.3.2" |
2720 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" | 2748 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" |
@@ -2722,40 +2750,40 @@ error-ex@^1.2.0, error-ex@^1.3.1: | |||
2722 | dependencies: | 2750 | dependencies: |
2723 | is-arrayish "^0.2.1" | 2751 | is-arrayish "^0.2.1" |
2724 | 2752 | ||
2725 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: | 2753 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: |
2726 | version "1.17.6" | 2754 | version "1.17.7" |
2727 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" | 2755 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" |
2728 | integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== | 2756 | integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== |
2729 | dependencies: | 2757 | dependencies: |
2730 | es-to-primitive "^1.2.1" | 2758 | es-to-primitive "^1.2.1" |
2731 | function-bind "^1.1.1" | 2759 | function-bind "^1.1.1" |
2732 | has "^1.0.3" | 2760 | has "^1.0.3" |
2733 | has-symbols "^1.0.1" | 2761 | has-symbols "^1.0.1" |
2734 | is-callable "^1.2.0" | 2762 | is-callable "^1.2.2" |
2735 | is-regex "^1.1.0" | 2763 | is-regex "^1.1.1" |
2736 | object-inspect "^1.7.0" | 2764 | object-inspect "^1.8.0" |
2737 | object-keys "^1.1.1" | 2765 | object-keys "^1.1.1" |
2738 | object.assign "^4.1.0" | 2766 | object.assign "^4.1.1" |
2739 | string.prototype.trimend "^1.0.1" | 2767 | string.prototype.trimend "^1.0.1" |
2740 | string.prototype.trimstart "^1.0.1" | 2768 | string.prototype.trimstart "^1.0.1" |
2741 | 2769 | ||
2742 | es-array-method-boxes-properly@^1.0.0: | 2770 | es-abstract@^1.18.0-next.1: |
2743 | version "1.0.0" | 2771 | version "1.18.0-next.1" |
2744 | resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" | 2772 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" |
2745 | integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== | 2773 | integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== |
2746 | |||
2747 | es-get-iterator@^1.0.2: | ||
2748 | version "1.1.0" | ||
2749 | resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" | ||
2750 | integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== | ||
2751 | dependencies: | 2774 | dependencies: |
2752 | es-abstract "^1.17.4" | 2775 | es-to-primitive "^1.2.1" |
2776 | function-bind "^1.1.1" | ||
2777 | has "^1.0.3" | ||
2753 | has-symbols "^1.0.1" | 2778 | has-symbols "^1.0.1" |
2754 | is-arguments "^1.0.4" | 2779 | is-callable "^1.2.2" |
2755 | is-map "^2.0.1" | 2780 | is-negative-zero "^2.0.0" |
2756 | is-set "^2.0.1" | 2781 | is-regex "^1.1.1" |
2757 | is-string "^1.0.5" | 2782 | object-inspect "^1.8.0" |
2758 | isarray "^2.0.5" | 2783 | object-keys "^1.1.1" |
2784 | object.assign "^4.1.1" | ||
2785 | string.prototype.trimend "^1.0.1" | ||
2786 | string.prototype.trimstart "^1.0.1" | ||
2759 | 2787 | ||
2760 | es-to-primitive@^1.2.1: | 2788 | es-to-primitive@^1.2.1: |
2761 | version "1.2.1" | 2789 | version "1.2.1" |
@@ -2812,21 +2840,26 @@ escape-goat@^2.0.0: | |||
2812 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" | 2840 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" |
2813 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== | 2841 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== |
2814 | 2842 | ||
2843 | escape-goat@^3.0.0: | ||
2844 | version "3.0.0" | ||
2845 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" | ||
2846 | integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== | ||
2847 | |||
2815 | escape-html@^1.0.3, escape-html@~1.0.3: | 2848 | escape-html@^1.0.3, escape-html@~1.0.3: |
2816 | version "1.0.3" | 2849 | version "1.0.3" |
2817 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" | 2850 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" |
2818 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= | 2851 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= |
2819 | 2852 | ||
2820 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: | 2853 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: |
2821 | version "1.0.5" | ||
2822 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" | ||
2823 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= | ||
2824 | |||
2825 | escape-string-regexp@^4.0.0: | ||
2826 | version "4.0.0" | 2854 | version "4.0.0" |
2827 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" | 2855 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" |
2828 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== | 2856 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== |
2829 | 2857 | ||
2858 | escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: | ||
2859 | version "1.0.5" | ||
2860 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" | ||
2861 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= | ||
2862 | |||
2830 | eslint-config-standard-with-typescript@^18.0.2: | 2863 | eslint-config-standard-with-typescript@^18.0.2: |
2831 | version "18.0.2" | 2864 | version "18.0.2" |
2832 | resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-18.0.2.tgz#eb02d5358b17fe083c6f993ff829492c8f96b18f" | 2865 | resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-18.0.2.tgz#eb02d5358b17fe083c6f993ff829492c8f96b18f" |
@@ -2840,7 +2873,7 @@ eslint-config-standard@^14.1.1: | |||
2840 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" | 2873 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" |
2841 | integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== | 2874 | integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== |
2842 | 2875 | ||
2843 | eslint-import-resolver-node@^0.3.3: | 2876 | eslint-import-resolver-node@^0.3.4: |
2844 | version "0.3.4" | 2877 | version "0.3.4" |
2845 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" | 2878 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" |
2846 | integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== | 2879 | integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== |
@@ -2865,16 +2898,16 @@ eslint-plugin-es@^3.0.0: | |||
2865 | regexpp "^3.0.0" | 2898 | regexpp "^3.0.0" |
2866 | 2899 | ||
2867 | eslint-plugin-import@^2.20.1: | 2900 | eslint-plugin-import@^2.20.1: |
2868 | version "2.22.0" | 2901 | version "2.22.1" |
2869 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" | 2902 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" |
2870 | integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== | 2903 | integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== |
2871 | dependencies: | 2904 | dependencies: |
2872 | array-includes "^3.1.1" | 2905 | array-includes "^3.1.1" |
2873 | array.prototype.flat "^1.2.3" | 2906 | array.prototype.flat "^1.2.3" |
2874 | contains-path "^0.1.0" | 2907 | contains-path "^0.1.0" |
2875 | debug "^2.6.9" | 2908 | debug "^2.6.9" |
2876 | doctrine "1.5.0" | 2909 | doctrine "1.5.0" |
2877 | eslint-import-resolver-node "^0.3.3" | 2910 | eslint-import-resolver-node "^0.3.4" |
2878 | eslint-module-utils "^2.6.0" | 2911 | eslint-module-utils "^2.6.0" |
2879 | has "^1.0.3" | 2912 | has "^1.0.3" |
2880 | minimatch "^3.0.4" | 2913 | minimatch "^3.0.4" |
@@ -2901,16 +2934,16 @@ eslint-plugin-promise@^4.2.1: | |||
2901 | integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== | 2934 | integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== |
2902 | 2935 | ||
2903 | eslint-plugin-standard@^4.0.1: | 2936 | eslint-plugin-standard@^4.0.1: |
2904 | version "4.0.1" | 2937 | version "4.0.2" |
2905 | resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" | 2938 | resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz#021211a9f077e63a6847e7bb9ab4247327ac8e0c" |
2906 | integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== | 2939 | integrity sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA== |
2907 | 2940 | ||
2908 | eslint-scope@^5.0.0, eslint-scope@^5.1.0: | 2941 | eslint-scope@^5.0.0, eslint-scope@^5.1.1: |
2909 | version "5.1.0" | 2942 | version "5.1.1" |
2910 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" | 2943 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" |
2911 | integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== | 2944 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== |
2912 | dependencies: | 2945 | dependencies: |
2913 | esrecurse "^4.1.0" | 2946 | esrecurse "^4.3.0" |
2914 | estraverse "^4.1.1" | 2947 | estraverse "^4.1.1" |
2915 | 2948 | ||
2916 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: | 2949 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: |
@@ -2925,22 +2958,28 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: | |||
2925 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" | 2958 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" |
2926 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== | 2959 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== |
2927 | 2960 | ||
2961 | eslint-visitor-keys@^2.0.0: | ||
2962 | version "2.0.0" | ||
2963 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" | ||
2964 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== | ||
2965 | |||
2928 | eslint@^7.2.0: | 2966 | eslint@^7.2.0: |
2929 | version "7.7.0" | 2967 | version "7.13.0" |
2930 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.7.0.tgz#18beba51411927c4b64da0a8ceadefe4030d6073" | 2968 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.13.0.tgz#7f180126c0dcdef327bfb54b211d7802decc08da" |
2931 | integrity sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg== | 2969 | integrity sha512-uCORMuOO8tUzJmsdRtrvcGq5qposf7Rw0LwkTJkoDbOycVQtQjmnhZSuLQnozLE4TmAzlMVV45eCHmQ1OpDKUQ== |
2932 | dependencies: | 2970 | dependencies: |
2933 | "@babel/code-frame" "^7.0.0" | 2971 | "@babel/code-frame" "^7.0.0" |
2972 | "@eslint/eslintrc" "^0.2.1" | ||
2934 | ajv "^6.10.0" | 2973 | ajv "^6.10.0" |
2935 | chalk "^4.0.0" | 2974 | chalk "^4.0.0" |
2936 | cross-spawn "^7.0.2" | 2975 | cross-spawn "^7.0.2" |
2937 | debug "^4.0.1" | 2976 | debug "^4.0.1" |
2938 | doctrine "^3.0.0" | 2977 | doctrine "^3.0.0" |
2939 | enquirer "^2.3.5" | 2978 | enquirer "^2.3.5" |
2940 | eslint-scope "^5.1.0" | 2979 | eslint-scope "^5.1.1" |
2941 | eslint-utils "^2.1.0" | 2980 | eslint-utils "^2.1.0" |
2942 | eslint-visitor-keys "^1.3.0" | 2981 | eslint-visitor-keys "^2.0.0" |
2943 | espree "^7.2.0" | 2982 | espree "^7.3.0" |
2944 | esquery "^1.2.0" | 2983 | esquery "^1.2.0" |
2945 | esutils "^2.0.2" | 2984 | esutils "^2.0.2" |
2946 | file-entry-cache "^5.0.1" | 2985 | file-entry-cache "^5.0.1" |
@@ -2967,7 +3006,7 @@ eslint@^7.2.0: | |||
2967 | text-table "^0.2.0" | 3006 | text-table "^0.2.0" |
2968 | v8-compile-cache "^2.0.3" | 3007 | v8-compile-cache "^2.0.3" |
2969 | 3008 | ||
2970 | espree@^7.2.0: | 3009 | espree@^7.3.0: |
2971 | version "7.3.0" | 3010 | version "7.3.0" |
2972 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" | 3011 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" |
2973 | integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== | 3012 | integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== |
@@ -2988,19 +3027,19 @@ esquery@^1.2.0: | |||
2988 | dependencies: | 3027 | dependencies: |
2989 | estraverse "^5.1.0" | 3028 | estraverse "^5.1.0" |
2990 | 3029 | ||
2991 | esrecurse@^4.1.0: | 3030 | esrecurse@^4.3.0: |
2992 | version "4.2.1" | 3031 | version "4.3.0" |
2993 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" | 3032 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" |
2994 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== | 3033 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== |
2995 | dependencies: | 3034 | dependencies: |
2996 | estraverse "^4.1.0" | 3035 | estraverse "^5.2.0" |
2997 | 3036 | ||
2998 | estraverse@^4.1.0, estraverse@^4.1.1: | 3037 | estraverse@^4.1.1: |
2999 | version "4.3.0" | 3038 | version "4.3.0" |
3000 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" | 3039 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" |
3001 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== | 3040 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== |
3002 | 3041 | ||
3003 | estraverse@^5.1.0: | 3042 | estraverse@^5.1.0, estraverse@^5.2.0: |
3004 | version "5.2.0" | 3043 | version "5.2.0" |
3005 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" | 3044 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" |
3006 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== | 3045 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== |
@@ -3066,7 +3105,7 @@ express-validator@^6.4.0: | |||
3066 | lodash "^4.17.19" | 3105 | lodash "^4.17.19" |
3067 | validator "^13.1.1" | 3106 | validator "^13.1.1" |
3068 | 3107 | ||
3069 | express@^4.12.4, express@^4.13.3, express@^4.17.1: | 3108 | express@^4.12.4, express@^4.13.3, express@^4.16.4, express@^4.17.1: |
3070 | version "4.17.1" | 3109 | version "4.17.1" |
3071 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" | 3110 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" |
3072 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== | 3111 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== |
@@ -3194,12 +3233,12 @@ finalhandler@~1.1.2: | |||
3194 | statuses "~1.5.0" | 3233 | statuses "~1.5.0" |
3195 | unpipe "~1.0.0" | 3234 | unpipe "~1.0.0" |
3196 | 3235 | ||
3197 | find-up@4.1.0, find-up@^4.1.0: | 3236 | find-up@5.0.0: |
3198 | version "4.1.0" | 3237 | version "5.0.0" |
3199 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" | 3238 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" |
3200 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== | 3239 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== |
3201 | dependencies: | 3240 | dependencies: |
3202 | locate-path "^5.0.0" | 3241 | locate-path "^6.0.0" |
3203 | path-exists "^4.0.0" | 3242 | path-exists "^4.0.0" |
3204 | 3243 | ||
3205 | find-up@^2.0.0, find-up@^2.1.0: | 3244 | find-up@^2.0.0, find-up@^2.1.0: |
@@ -3216,6 +3255,14 @@ find-up@^3.0.0: | |||
3216 | dependencies: | 3255 | dependencies: |
3217 | locate-path "^3.0.0" | 3256 | locate-path "^3.0.0" |
3218 | 3257 | ||
3258 | find-up@^4.1.0: | ||
3259 | version "4.1.0" | ||
3260 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" | ||
3261 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== | ||
3262 | dependencies: | ||
3263 | locate-path "^5.0.0" | ||
3264 | path-exists "^4.0.0" | ||
3265 | |||
3219 | flat-cache@^2.0.1: | 3266 | flat-cache@^2.0.1: |
3220 | version "2.0.1" | 3267 | version "2.0.1" |
3221 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" | 3268 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" |
@@ -3225,14 +3272,7 @@ flat-cache@^2.0.1: | |||
3225 | rimraf "2.6.3" | 3272 | rimraf "2.6.3" |
3226 | write "1.0.3" | 3273 | write "1.0.3" |
3227 | 3274 | ||
3228 | flat@^4.1.0: | 3275 | flat@^5.0.0, flat@^5.0.2: |
3229 | version "4.1.0" | ||
3230 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" | ||
3231 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== | ||
3232 | dependencies: | ||
3233 | is-buffer "~2.0.3" | ||
3234 | |||
3235 | flat@^5.0.0: | ||
3236 | version "5.0.2" | 3276 | version "5.0.2" |
3237 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" | 3277 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" |
3238 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== | 3278 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== |
@@ -3360,7 +3400,7 @@ gauge@~2.7.3: | |||
3360 | strip-ansi "^3.0.1" | 3400 | strip-ansi "^3.0.1" |
3361 | wide-align "^1.1.0" | 3401 | wide-align "^1.1.0" |
3362 | 3402 | ||
3363 | get-browser-rtc@^1.0.0: | 3403 | get-browser-rtc@^1.0.2: |
3364 | version "1.0.2" | 3404 | version "1.0.2" |
3365 | resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" | 3405 | resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz#bbcd40c8451a7ed4ef5c373b8169a409dd1d11d9" |
3366 | integrity sha1-u81AyEUaftTvXDc7gWmkCd0dEdk= | 3406 | integrity sha1-u81AyEUaftTvXDc7gWmkCd0dEdk= |
@@ -3375,6 +3415,15 @@ get-func-name@^2.0.0: | |||
3375 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" | 3415 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" |
3376 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= | 3416 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= |
3377 | 3417 | ||
3418 | get-intrinsic@^1.0.0: | ||
3419 | version "1.0.1" | ||
3420 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" | ||
3421 | integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== | ||
3422 | dependencies: | ||
3423 | function-bind "^1.1.1" | ||
3424 | has "^1.0.3" | ||
3425 | has-symbols "^1.0.1" | ||
3426 | |||
3378 | get-paths@^0.0.7: | 3427 | get-paths@^0.0.7: |
3379 | version "0.0.7" | 3428 | version "0.0.7" |
3380 | resolved "https://registry.yarnpkg.com/get-paths/-/get-paths-0.0.7.tgz#15331086752077cf130166ccd233a1cdbeefcf38" | 3429 | resolved "https://registry.yarnpkg.com/get-paths/-/get-paths-0.0.7.tgz#15331086752077cf130166ccd233a1cdbeefcf38" |
@@ -3536,7 +3585,7 @@ has-flag@^4.0.0: | |||
3536 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" | 3585 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" |
3537 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== | 3586 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== |
3538 | 3587 | ||
3539 | has-symbols@^1.0.0, has-symbols@^1.0.1: | 3588 | has-symbols@^1.0.1: |
3540 | version "1.0.1" | 3589 | version "1.0.1" |
3541 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" | 3590 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" |
3542 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== | 3591 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== |
@@ -3571,9 +3620,9 @@ he@1.2.0, he@^1.2.0: | |||
3571 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== | 3620 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== |
3572 | 3621 | ||
3573 | helmet@^4.1.0: | 3622 | helmet@^4.1.0: |
3574 | version "4.1.0" | 3623 | version "4.2.0" |
3575 | resolved "https://registry.yarnpkg.com/helmet/-/helmet-4.1.0.tgz#6f3a34e8f18502d6e52518428b23aa4ddaf84b38" | 3624 | resolved "https://registry.yarnpkg.com/helmet/-/helmet-4.2.0.tgz#e81f5613cc1c90402af581794dc9878ad078b237" |
3576 | integrity sha512-KWy75fYN8hOG2Rhl8e5B3WhOzb0by1boQum85TiddIE9iu6gV+TXbUjVC17wfej0o/ZUpqB9kxM0NFCZRMzf+Q== | 3625 | integrity sha512-aoiSxXMd0ks1ojYpSCFoCRzgv4rY/uB9jKStaw8PkXwsdLYa/Gq+Nc5l0soH0cwBIsLAlujPnx4HLQs+LaXCrQ== |
3577 | 3626 | ||
3578 | hh-mm-ss@~1.2.0: | 3627 | hh-mm-ss@~1.2.0: |
3579 | version "1.2.0" | 3628 | version "1.2.0" |
@@ -3680,13 +3729,13 @@ i18n-locales@^0.0.4: | |||
3680 | dependencies: | 3729 | dependencies: |
3681 | country-language "^0.1.7" | 3730 | country-language "^0.1.7" |
3682 | 3731 | ||
3683 | i18n@^0.9.1: | 3732 | i18n@^0.13.2: |
3684 | version "0.9.1" | 3733 | version "0.13.2" |
3685 | resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.9.1.tgz#a9dda09e582286c81a584374ac9f2aaef7ec37fb" | 3734 | resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.13.2.tgz#3886678fe7cbbed45bac2ce53b8144c788a1c1b5" |
3686 | integrity sha512-ERo9WloOP2inRsJzAlzn4JDm3jvX7FW1+KB/JGXTzUVzi9Bsf4LNLXUQTMgM/aze4LNW/kvmxQX6bzg5UzqMJw== | 3735 | integrity sha512-PB65bHhQESMBIl/xVNChEAzoxZ5W6FrZ1H9Ma/YcPeSfE7VS9b0sqwBPusa0CfzSKUPSl+uMhRIgyv3jkE7XNw== |
3687 | dependencies: | 3736 | dependencies: |
3688 | debug "*" | 3737 | debug "^4.1.1" |
3689 | make-plural "^6.2.1" | 3738 | make-plural "^6.2.2" |
3690 | math-interval-parser "^2.0.1" | 3739 | math-interval-parser "^2.0.1" |
3691 | messageformat "^2.3.0" | 3740 | messageformat "^2.3.0" |
3692 | mustache "^4.0.1" | 3741 | mustache "^4.0.1" |
@@ -3718,10 +3767,10 @@ iconv-lite@0.6.2: | |||
3718 | dependencies: | 3767 | dependencies: |
3719 | safer-buffer ">= 2.1.2 < 3.0.0" | 3768 | safer-buffer ">= 2.1.2 < 3.0.0" |
3720 | 3769 | ||
3721 | ieee754@^1.1.4: | 3770 | ieee754@^1.1.13: |
3722 | version "1.1.13" | 3771 | version "1.2.1" |
3723 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" | 3772 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" |
3724 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== | 3773 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== |
3725 | 3774 | ||
3726 | ignore-by-default@^1.0.1: | 3775 | ignore-by-default@^1.0.1: |
3727 | version "1.0.1" | 3776 | version "1.0.1" |
@@ -3750,22 +3799,17 @@ image-q@^1.1.1: | |||
3750 | resolved "https://registry.yarnpkg.com/image-q/-/image-q-1.1.1.tgz#fc84099664460b90ca862d9300b6bfbbbfbf8056" | 3799 | resolved "https://registry.yarnpkg.com/image-q/-/image-q-1.1.1.tgz#fc84099664460b90ca862d9300b6bfbbbfbf8056" |
3751 | integrity sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY= | 3800 | integrity sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY= |
3752 | 3801 | ||
3753 | image-size@^0.7.3: | ||
3754 | version "0.7.5" | ||
3755 | resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" | ||
3756 | integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== | ||
3757 | |||
3758 | immediate-chunk-store@^2.1.0: | 3802 | immediate-chunk-store@^2.1.0: |
3759 | version "2.1.0" | 3803 | version "2.1.1" |
3760 | resolved "https://registry.yarnpkg.com/immediate-chunk-store/-/immediate-chunk-store-2.1.0.tgz#3dbd3b5cc77182526188a8da47e38488a6627336" | 3804 | resolved "https://registry.yarnpkg.com/immediate-chunk-store/-/immediate-chunk-store-2.1.1.tgz#4b9f001beaab38d62e4aae630ec7ffb98be805ce" |
3761 | integrity sha512-QshP0SFpsy/bHQBjYMgzCcnLoqTj6PHFg8ZkPi2WbTw1qddNy0puuPDaFlXyrsZAdWMT3QziPDMzfj+mzCVMYg== | 3805 | integrity sha512-y5AxkxqpPTj2dkaAEkDnrMuSX4JNicXHD6yTpLfFnflVejL6yJpzf27obrnlf2PSSQiWUf3735Y9tJEjxvqnoA== |
3762 | dependencies: | 3806 | dependencies: |
3763 | queue-microtask "^1.1.2" | 3807 | queue-microtask "^1.2.0" |
3764 | 3808 | ||
3765 | import-fresh@^3.0.0: | 3809 | import-fresh@^3.0.0, import-fresh@^3.2.1: |
3766 | version "3.2.1" | 3810 | version "3.2.2" |
3767 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" | 3811 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" |
3768 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== | 3812 | integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== |
3769 | dependencies: | 3813 | dependencies: |
3770 | parent-module "^1.0.0" | 3814 | parent-module "^1.0.0" |
3771 | resolve-from "^4.0.0" | 3815 | resolve-from "^4.0.0" |
@@ -3798,7 +3842,7 @@ inflight@^1.0.4: | |||
3798 | once "^1.3.0" | 3842 | once "^1.3.0" |
3799 | wrappy "1" | 3843 | wrappy "1" |
3800 | 3844 | ||
3801 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: | 3845 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: |
3802 | version "2.0.4" | 3846 | version "2.0.4" |
3803 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | 3847 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" |
3804 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | 3848 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== |
@@ -3814,16 +3858,17 @@ ini@^1.3.5, ini@~1.3.0: | |||
3814 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== | 3858 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== |
3815 | 3859 | ||
3816 | ioredis@^4.14.1: | 3860 | ioredis@^4.14.1: |
3817 | version "4.17.3" | 3861 | version "4.19.2" |
3818 | resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.17.3.tgz#9938c60e4ca685f75326337177bdc2e73ae9c9dc" | 3862 | resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.19.2.tgz#e3eab394c653cea5aea07c0c784d8c772dce8801" |
3819 | integrity sha512-iRvq4BOYzNFkDnSyhx7cmJNOi1x/HWYe+A4VXHBu4qpwJaGT1Mp+D2bVGJntH9K/Z/GeOM/Nprb8gB3bmitz1Q== | 3863 | integrity sha512-SZSIwMrbd96b7rJvJwyTWSP6XQ0m1kAIIqBnwglJKrIJ6na7TeY4F2EV2vDY0xm/fLrUY8cEg81dR7kVFt2sKA== |
3820 | dependencies: | 3864 | dependencies: |
3821 | cluster-key-slot "^1.1.0" | 3865 | cluster-key-slot "^1.1.0" |
3822 | debug "^4.1.1" | 3866 | debug "^4.1.1" |
3823 | denque "^1.1.0" | 3867 | denque "^1.1.0" |
3824 | lodash.defaults "^4.2.0" | 3868 | lodash.defaults "^4.2.0" |
3825 | lodash.flatten "^4.4.0" | 3869 | lodash.flatten "^4.4.0" |
3826 | redis-commands "1.5.0" | 3870 | p-map "^2.1.0" |
3871 | redis-commands "1.6.0" | ||
3827 | redis-errors "^1.2.0" | 3872 | redis-errors "^1.2.0" |
3828 | redis-parser "^3.0.0" | 3873 | redis-parser "^3.0.0" |
3829 | standard-as-callback "^2.0.1" | 3874 | standard-as-callback "^2.0.1" |
@@ -3834,11 +3879,11 @@ ip-anonymize@^0.1.0: | |||
3834 | integrity sha512-cZJu+N5JKKFGMK0eEQWNaQMn2EhCysciVM6eotCJwfqotj16BTfVchKsJCH6mQAT9N0GC7oWRcsZ6Lb8dDiwTA== | 3879 | integrity sha512-cZJu+N5JKKFGMK0eEQWNaQMn2EhCysciVM6eotCJwfqotj16BTfVchKsJCH6mQAT9N0GC7oWRcsZ6Lb8dDiwTA== |
3835 | 3880 | ||
3836 | ip-regex@^4.1.0: | 3881 | ip-regex@^4.1.0: |
3837 | version "4.1.0" | 3882 | version "4.2.0" |
3838 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" | 3883 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.2.0.tgz#a03f5eb661d9a154e3973a03de8b23dd0ad6892e" |
3839 | integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== | 3884 | integrity sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A== |
3840 | 3885 | ||
3841 | ip-set@^1.0.0: | 3886 | ip-set@^1.0.2: |
3842 | version "1.0.2" | 3887 | version "1.0.2" |
3843 | resolved "https://registry.yarnpkg.com/ip-set/-/ip-set-1.0.2.tgz#be4f119f82c124836455993dfcd554639c7007de" | 3888 | resolved "https://registry.yarnpkg.com/ip-set/-/ip-set-1.0.2.tgz#be4f119f82c124836455993dfcd554639c7007de" |
3844 | integrity sha512-Mb6kv78bTi4RNAIIWL8Bbre7hXOR2pNUi3j8FaQkLaitf/ZWxkq3/iIwXNYk2ACO3IMfdVdQrOkUtwZblO7uBA== | 3889 | integrity sha512-Mb6kv78bTi4RNAIIWL8Bbre7hXOR2pNUi3j8FaQkLaitf/ZWxkq3/iIwXNYk2ACO3IMfdVdQrOkUtwZblO7uBA== |
@@ -3865,11 +3910,6 @@ ipv6-normalize@1.0.1: | |||
3865 | resolved "https://registry.yarnpkg.com/ipv6-normalize/-/ipv6-normalize-1.0.1.tgz#1b3258290d365fa83239e89907dde4592e7620a8" | 3910 | resolved "https://registry.yarnpkg.com/ipv6-normalize/-/ipv6-normalize-1.0.1.tgz#1b3258290d365fa83239e89907dde4592e7620a8" |
3866 | integrity sha1-GzJYKQ02X6gyOeiZB93kWS52IKg= | 3911 | integrity sha1-GzJYKQ02X6gyOeiZB93kWS52IKg= |
3867 | 3912 | ||
3868 | is-arguments@^1.0.4: | ||
3869 | version "1.0.4" | ||
3870 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" | ||
3871 | integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== | ||
3872 | |||
3873 | is-arrayish@^0.2.1: | 3913 | is-arrayish@^0.2.1: |
3874 | version "0.2.1" | 3914 | version "0.2.1" |
3875 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" | 3915 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" |
@@ -3902,15 +3942,10 @@ is-buffer@^1.1.5, is-buffer@~1.1.6: | |||
3902 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" | 3942 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" |
3903 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== | 3943 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== |
3904 | 3944 | ||
3905 | is-buffer@~2.0.3: | 3945 | is-callable@^1.1.4, is-callable@^1.2.2: |
3906 | version "2.0.4" | 3946 | version "1.2.2" |
3907 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" | 3947 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" |
3908 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== | 3948 | integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== |
3909 | |||
3910 | is-callable@^1.1.4, is-callable@^1.2.0: | ||
3911 | version "1.2.0" | ||
3912 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" | ||
3913 | integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== | ||
3914 | 3949 | ||
3915 | is-ci@^2.0.0: | 3950 | is-ci@^2.0.0: |
3916 | version "2.0.0" | 3951 | version "2.0.0" |
@@ -3920,11 +3955,18 @@ is-ci@^2.0.0: | |||
3920 | ci-info "^2.0.0" | 3955 | ci-info "^2.0.0" |
3921 | 3956 | ||
3922 | is-cidr@^4.0.0: | 3957 | is-cidr@^4.0.0: |
3923 | version "4.0.0" | 3958 | version "4.0.2" |
3924 | resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.0.tgz#9f293f96922675391054519a4f0de222e0c7fca0" | 3959 | resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-4.0.2.tgz#94c7585e4c6c77ceabf920f8cde51b8c0fda8814" |
3925 | integrity sha512-rVgPH0PryXL0qLSFIfR+Gg/QwsgtDN2/AYrFFUTb1n+Ijl8N/ouyihiHXFRoIkohI+FkHloeH7nMHXryKK81UQ== | 3960 | integrity sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA== |
3961 | dependencies: | ||
3962 | cidr-regex "^3.1.1" | ||
3963 | |||
3964 | is-core-module@^2.0.0: | ||
3965 | version "2.1.0" | ||
3966 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" | ||
3967 | integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== | ||
3926 | dependencies: | 3968 | dependencies: |
3927 | cidr-regex "^3.0.0" | 3969 | has "^1.0.3" |
3928 | 3970 | ||
3929 | is-date-object@^1.0.1: | 3971 | is-date-object@^1.0.1: |
3930 | version "1.0.2" | 3972 | version "1.0.2" |
@@ -3999,11 +4041,6 @@ is-installed-globally@^0.3.1: | |||
3999 | global-dirs "^2.0.1" | 4041 | global-dirs "^2.0.1" |
4000 | is-path-inside "^3.0.1" | 4042 | is-path-inside "^3.0.1" |
4001 | 4043 | ||
4002 | is-map@^2.0.1: | ||
4003 | version "2.0.1" | ||
4004 | resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" | ||
4005 | integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== | ||
4006 | |||
4007 | is-nan@^1.3.0: | 4044 | is-nan@^1.3.0: |
4008 | version "1.3.0" | 4045 | version "1.3.0" |
4009 | resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03" | 4046 | resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03" |
@@ -4011,6 +4048,11 @@ is-nan@^1.3.0: | |||
4011 | dependencies: | 4048 | dependencies: |
4012 | define-properties "^1.1.3" | 4049 | define-properties "^1.1.3" |
4013 | 4050 | ||
4051 | is-negative-zero@^2.0.0: | ||
4052 | version "2.0.0" | ||
4053 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" | ||
4054 | integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= | ||
4055 | |||
4014 | is-npm@^4.0.0: | 4056 | is-npm@^4.0.0: |
4015 | version "4.0.0" | 4057 | version "4.0.0" |
4016 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" | 4058 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" |
@@ -4031,10 +4073,10 @@ is-path-inside@^3.0.1: | |||
4031 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" | 4073 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" |
4032 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== | 4074 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== |
4033 | 4075 | ||
4034 | is-plain-obj@^1.1.0: | 4076 | is-plain-obj@^2.1.0: |
4035 | version "1.1.0" | 4077 | version "2.1.0" |
4036 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" | 4078 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" |
4037 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= | 4079 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== |
4038 | 4080 | ||
4039 | is-plain-object@^5.0.0: | 4081 | is-plain-object@^5.0.0: |
4040 | version "5.0.0" | 4082 | version "5.0.0" |
@@ -4046,24 +4088,19 @@ is-promise@^2.0.0, is-promise@^2.1: | |||
4046 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" | 4088 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" |
4047 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== | 4089 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== |
4048 | 4090 | ||
4049 | is-regex@^1.0.3, is-regex@^1.1.0: | 4091 | is-regex@^1.0.3, is-regex@^1.1.1: |
4050 | version "1.1.1" | 4092 | version "1.1.1" |
4051 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" | 4093 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" |
4052 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== | 4094 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== |
4053 | dependencies: | 4095 | dependencies: |
4054 | has-symbols "^1.0.1" | 4096 | has-symbols "^1.0.1" |
4055 | 4097 | ||
4056 | is-set@^2.0.1: | ||
4057 | version "2.0.1" | ||
4058 | resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" | ||
4059 | integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== | ||
4060 | |||
4061 | is-stream@^2.0.0: | 4098 | is-stream@^2.0.0: |
4062 | version "2.0.0" | 4099 | version "2.0.0" |
4063 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" | 4100 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" |
4064 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== | 4101 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== |
4065 | 4102 | ||
4066 | is-string@^1.0.4, is-string@^1.0.5: | 4103 | is-string@^1.0.5: |
4067 | version "1.0.5" | 4104 | version "1.0.5" |
4068 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" | 4105 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" |
4069 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== | 4106 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== |
@@ -4105,20 +4142,15 @@ isarray@2.0.1: | |||
4105 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" | 4142 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" |
4106 | integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= | 4143 | integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= |
4107 | 4144 | ||
4108 | isarray@^2.0.5: | ||
4109 | version "2.0.5" | ||
4110 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" | ||
4111 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== | ||
4112 | |||
4113 | isexe@^2.0.0: | 4145 | isexe@^2.0.0: |
4114 | version "2.0.0" | 4146 | version "2.0.0" |
4115 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" | 4147 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" |
4116 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= | 4148 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= |
4117 | 4149 | ||
4118 | iso-639-3@^2.0.0: | 4150 | iso-639-3@^2.0.0: |
4119 | version "2.1.0" | 4151 | version "2.2.0" |
4120 | resolved "https://registry.yarnpkg.com/iso-639-3/-/iso-639-3-2.1.0.tgz#f3733c7f2754c1bde34a8960b2a17146a4b41053" | 4152 | resolved "https://registry.yarnpkg.com/iso-639-3/-/iso-639-3-2.2.0.tgz#eb01d7734d61396efec934979e8b0806550837f1" |
4121 | integrity sha512-NYcq+YfrCFVGw/xWhRB9mhCSWxlOxYv3eK3WzWzc86P8huEZ7UDQq8Bu0zKqpZFOdq221Gy8VWWLr1aaYc+FJA== | 4153 | integrity sha512-v9w/U4XDSfXCrXxf4E6ertGC/lTRX8MLLv7XC1j6N5oL3ympe38jp77zgeyMsn3MbufuAAoGeVzDJbOXnPTMhQ== |
4122 | 4154 | ||
4123 | isobject@^2.0.0: | 4155 | isobject@^2.0.0: |
4124 | version "2.1.0" | 4156 | version "2.1.0" |
@@ -4132,31 +4164,18 @@ isstream@0.1.x, isstream@~0.1.2: | |||
4132 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" | 4164 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" |
4133 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= | 4165 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= |
4134 | 4166 | ||
4135 | iterate-iterator@^1.0.1: | ||
4136 | version "1.0.1" | ||
4137 | resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" | ||
4138 | integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== | ||
4139 | |||
4140 | iterate-value@^1.0.0: | ||
4141 | version "1.0.2" | ||
4142 | resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" | ||
4143 | integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== | ||
4144 | dependencies: | ||
4145 | es-get-iterator "^1.0.2" | ||
4146 | iterate-iterator "^1.0.1" | ||
4147 | |||
4148 | jimp@^0.16.0: | 4167 | jimp@^0.16.0: |
4149 | version "0.16.0" | 4168 | version "0.16.1" |
4150 | resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.16.0.tgz#d01a1709634c22aa113df02076dbe4db7ca55acc" | 4169 | resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.16.1.tgz#192f851a30e5ca11112a3d0aa53137659a78ca7a" |
4151 | integrity sha512-WRfGlXB6/0xY3mSoskfVhWVNSegVZCgmvunJDc41QthTWi5oRG2FeL7eOcX0zz/Z+dYRu6Q0ibO2yltC+EIptA== | 4170 | integrity sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw== |
4152 | dependencies: | 4171 | dependencies: |
4153 | "@babel/runtime" "^7.7.2" | 4172 | "@babel/runtime" "^7.7.2" |
4154 | "@jimp/custom" "^0.16.0" | 4173 | "@jimp/custom" "^0.16.1" |
4155 | "@jimp/plugins" "^0.16.0" | 4174 | "@jimp/plugins" "^0.16.1" |
4156 | "@jimp/types" "^0.16.0" | 4175 | "@jimp/types" "^0.16.1" |
4157 | regenerator-runtime "^0.13.3" | 4176 | regenerator-runtime "^0.13.3" |
4158 | 4177 | ||
4159 | jpeg-js@^0.4.0: | 4178 | jpeg-js@0.4.2: |
4160 | version "0.4.2" | 4179 | version "0.4.2" |
4161 | resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.2.tgz#8b345b1ae4abde64c2da2fe67ea216a114ac279d" | 4180 | resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.2.tgz#8b345b1ae4abde64c2da2fe67ea216a114ac279d" |
4162 | integrity sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw== | 4181 | integrity sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw== |
@@ -4171,15 +4190,7 @@ js-tokens@^4.0.0: | |||
4171 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" | 4190 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" |
4172 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== | 4191 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== |
4173 | 4192 | ||
4174 | js-yaml@3.13.1: | 4193 | js-yaml@3.14.0, js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.5.4: |
4175 | version "3.13.1" | ||
4176 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" | ||
4177 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== | ||
4178 | dependencies: | ||
4179 | argparse "^1.0.7" | ||
4180 | esprima "^4.0.0" | ||
4181 | |||
4182 | js-yaml@^3.13.1, js-yaml@^3.14.0, js-yaml@^3.5.4: | ||
4183 | version "3.14.0" | 4194 | version "3.14.0" |
4184 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" | 4195 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" |
4185 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== | 4196 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== |
@@ -4237,11 +4248,11 @@ json5@^2.1.1: | |||
4237 | minimist "^1.2.5" | 4248 | minimist "^1.2.5" |
4238 | 4249 | ||
4239 | jsonfile@^6.0.1: | 4250 | jsonfile@^6.0.1: |
4240 | version "6.0.1" | 4251 | version "6.1.0" |
4241 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" | 4252 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" |
4242 | integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== | 4253 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== |
4243 | dependencies: | 4254 | dependencies: |
4244 | universalify "^1.0.0" | 4255 | universalify "^2.0.0" |
4245 | optionalDependencies: | 4256 | optionalDependencies: |
4246 | graceful-fs "^4.1.6" | 4257 | graceful-fs "^4.1.6" |
4247 | 4258 | ||
@@ -4281,18 +4292,16 @@ jstransformer@1.0.0: | |||
4281 | is-promise "^2.0.0" | 4292 | is-promise "^2.0.0" |
4282 | promise "^7.0.1" | 4293 | promise "^7.0.1" |
4283 | 4294 | ||
4284 | juice@^6.0.0: | 4295 | juice@^7.0.0: |
4285 | version "6.0.0" | 4296 | version "7.0.0" |
4286 | resolved "https://registry.yarnpkg.com/juice/-/juice-6.0.0.tgz#cd8f8fe5210ef129d186fe2c41c0ec169f7b07b6" | 4297 | resolved "https://registry.yarnpkg.com/juice/-/juice-7.0.0.tgz#509bed6adbb6e4bbaa7fbfadac4e2e83e8c89ba3" |
4287 | integrity sha512-5T3JPgXYiw6A6axsb9E09Gzq46WbfJeDirY6nMrqY55iAdqEoPDxSr1GpXqYfoyndx4ujpBPXGLzBRzbiqOOaw== | 4298 | integrity sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q== |
4288 | dependencies: | 4299 | dependencies: |
4289 | cheerio "^0.22.0" | 4300 | cheerio "^1.0.0-rc.3" |
4290 | commander "^2.15.1" | 4301 | commander "^5.1.0" |
4291 | cross-spawn "^6.0.5" | ||
4292 | deep-extend "^0.6.0" | ||
4293 | mensch "^0.3.4" | 4302 | mensch "^0.3.4" |
4294 | slick "^1.12.2" | 4303 | slick "^1.12.2" |
4295 | web-resource-inliner "^4.3.3" | 4304 | web-resource-inliner "^5.0.0" |
4296 | 4305 | ||
4297 | junk@^3.1.0: | 4306 | junk@^3.1.0: |
4298 | version "3.1.0" | 4307 | version "3.1.0" |
@@ -4443,15 +4452,15 @@ load-bmfont@^1.3.1, load-bmfont@^1.4.0: | |||
4443 | xtend "^4.0.0" | 4452 | xtend "^4.0.0" |
4444 | 4453 | ||
4445 | load-ip-set@^2.1.0: | 4454 | load-ip-set@^2.1.0: |
4446 | version "2.1.0" | 4455 | version "2.1.1" |
4447 | resolved "https://registry.yarnpkg.com/load-ip-set/-/load-ip-set-2.1.0.tgz#2d50b737cae41de4e413d213991d4083a3e1784b" | 4456 | resolved "https://registry.yarnpkg.com/load-ip-set/-/load-ip-set-2.1.1.tgz#8c4f709cf41bd8d806432492b18ef3703a3a1ba8" |
4448 | integrity sha512-taz7U6B+F7Zq90dfIKwqsB1CrFKelSEmMGC68OUqem8Cgd1QZygQBYb2Fk9i6muBSfH4xwF/Pjt4KKlAdOyWZw== | 4457 | integrity sha512-LC7BWnATJOrKZa94qKNU8I/cWvVCgHPGSEMZ9hNCd3C5Th+XIUuU5lws6KhCK9QYeSD2xADnLUzkUbzYaRJ/lQ== |
4449 | dependencies: | 4458 | dependencies: |
4450 | ip-set "^1.0.0" | 4459 | ip-set "^1.0.2" |
4451 | netmask "^1.0.6" | 4460 | netmask "^1.0.6" |
4452 | once "^1.3.0" | 4461 | once "^1.4.0" |
4453 | simple-get "^3.0.0" | 4462 | simple-get "^4.0.0" |
4454 | split "^1.0.0" | 4463 | split "^1.0.1" |
4455 | 4464 | ||
4456 | load-json-file@^2.0.0: | 4465 | load-json-file@^2.0.0: |
4457 | version "2.0.0" | 4466 | version "2.0.0" |
@@ -4486,36 +4495,23 @@ locate-path@^5.0.0: | |||
4486 | dependencies: | 4495 | dependencies: |
4487 | p-locate "^4.1.0" | 4496 | p-locate "^4.1.0" |
4488 | 4497 | ||
4489 | lodash.assignin@^4.0.9: | 4498 | locate-path@^6.0.0: |
4490 | version "4.2.0" | 4499 | version "6.0.0" |
4491 | resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" | 4500 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" |
4492 | integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= | 4501 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== |
4493 | 4502 | dependencies: | |
4494 | lodash.bind@^4.1.4: | 4503 | p-locate "^5.0.0" |
4495 | version "4.2.1" | ||
4496 | resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" | ||
4497 | integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= | ||
4498 | 4504 | ||
4499 | lodash.defaults@^4.0.1, lodash.defaults@^4.2.0: | 4505 | lodash.defaults@^4.2.0: |
4500 | version "4.2.0" | 4506 | version "4.2.0" |
4501 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" | 4507 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" |
4502 | integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= | 4508 | integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= |
4503 | 4509 | ||
4504 | lodash.filter@^4.4.0: | 4510 | lodash.flatten@^4.4.0: |
4505 | version "4.6.0" | ||
4506 | resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" | ||
4507 | integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= | ||
4508 | |||
4509 | lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: | ||
4510 | version "4.4.0" | 4511 | version "4.4.0" |
4511 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" | 4512 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" |
4512 | integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= | 4513 | integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= |
4513 | 4514 | ||
4514 | lodash.foreach@^4.3.0: | ||
4515 | version "4.5.0" | ||
4516 | resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" | ||
4517 | integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= | ||
4518 | |||
4519 | lodash.get@^4.4.2: | 4515 | lodash.get@^4.4.2: |
4520 | version "4.4.2" | 4516 | version "4.4.2" |
4521 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" | 4517 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" |
@@ -4526,52 +4522,17 @@ lodash.isequal@^4.5.0: | |||
4526 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" | 4522 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" |
4527 | integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= | 4523 | integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= |
4528 | 4524 | ||
4529 | lodash.map@^4.4.0: | 4525 | lodash@>=4.17.13, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: |
4530 | version "4.6.0" | ||
4531 | resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" | ||
4532 | integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= | ||
4533 | |||
4534 | lodash.merge@^4.4.0: | ||
4535 | version "4.6.2" | ||
4536 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" | ||
4537 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== | ||
4538 | |||
4539 | lodash.pick@^4.2.1: | ||
4540 | version "4.4.0" | ||
4541 | resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" | ||
4542 | integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= | ||
4543 | |||
4544 | lodash.reduce@^4.4.0: | ||
4545 | version "4.6.0" | ||
4546 | resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" | ||
4547 | integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= | ||
4548 | |||
4549 | lodash.reject@^4.4.0: | ||
4550 | version "4.6.0" | ||
4551 | resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" | ||
4552 | integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= | ||
4553 | |||
4554 | lodash.some@^4.4.0: | ||
4555 | version "4.6.0" | ||
4556 | resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" | ||
4557 | integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= | ||
4558 | |||
4559 | lodash.unescape@^4.0.1: | ||
4560 | version "4.0.1" | ||
4561 | resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" | ||
4562 | integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= | ||
4563 | |||
4564 | lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: | ||
4565 | version "4.17.20" | 4526 | version "4.17.20" |
4566 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" | 4527 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" |
4567 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== | 4528 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== |
4568 | 4529 | ||
4569 | log-symbols@3.0.0: | 4530 | log-symbols@4.0.0: |
4570 | version "3.0.0" | 4531 | version "4.0.0" |
4571 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" | 4532 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" |
4572 | integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== | 4533 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== |
4573 | dependencies: | 4534 | dependencies: |
4574 | chalk "^2.4.2" | 4535 | chalk "^4.0.0" |
4575 | 4536 | ||
4576 | logform@^2.2.0: | 4537 | logform@^2.2.0: |
4577 | version "2.2.0" | 4538 | version "2.2.0" |
@@ -4636,10 +4597,11 @@ lru@^3.1.0: | |||
4636 | inherits "^2.0.1" | 4597 | inherits "^2.0.1" |
4637 | 4598 | ||
4638 | magnet-uri@^5.1.3, magnet-uri@^5.1.4: | 4599 | magnet-uri@^5.1.3, magnet-uri@^5.1.4: |
4639 | version "5.3.0" | 4600 | version "5.4.0" |
4640 | resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-5.3.0.tgz#5dd2efbfcf44c41ce54fe309030bce4ee120b79b" | 4601 | resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-5.4.0.tgz#5c64d3b8853eafb2f31840df09fbfc90c00f0e1d" |
4641 | integrity sha512-8GuTc9mXYfaKrXz687kzx2YTEhMR/X1Qgt6tkTNwPlb2fUy3QfU+O9zuoB5DKAa/IyVdLGxe9xSFUtaA+ZG5tQ== | 4602 | integrity sha512-ZpqciThlbvE6KkyT5oxAup/6CwjePw1hdtR8NU5+vq2hn9Sp5b7w3bRiJRvo9fMHUj2dWSuVCdkqt9p4ed1V9Q== |
4642 | dependencies: | 4603 | dependencies: |
4604 | bep53-range "^1.0.0" | ||
4643 | thirty-two "^1.0.2" | 4605 | thirty-two "^1.0.2" |
4644 | 4606 | ||
4645 | maildev@^1.0.0-rc3: | 4607 | maildev@^1.0.0-rc3: |
@@ -4712,7 +4674,7 @@ make-plural@^4.3.0: | |||
4712 | optionalDependencies: | 4674 | optionalDependencies: |
4713 | minimist "^1.2.0" | 4675 | minimist "^1.2.0" |
4714 | 4676 | ||
4715 | make-plural@^6.2.1: | 4677 | make-plural@^6.2.2: |
4716 | version "6.2.2" | 4678 | version "6.2.2" |
4717 | resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-6.2.2.tgz#beb5fd751355e72660eeb2218bb98eec92853c6c" | 4679 | resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-6.2.2.tgz#beb5fd751355e72660eeb2218bb98eec92853c6c" |
4718 | integrity sha512-8iTuFioatnTTmb/YJjywkVIHLjcwkFD9Ms0JpxjEm9Mo8eQYkh1z+55dwv4yc1jQ8ftVBxWQbihvZL1DfzGGWA== | 4680 | integrity sha512-8iTuFioatnTTmb/YJjywkVIHLjcwkFD9Ms0JpxjEm9Mo8eQYkh1z+55dwv4yc1jQ8ftVBxWQbihvZL1DfzGGWA== |
@@ -4739,9 +4701,9 @@ marked-man@^0.7.0: | |||
4739 | integrity sha512-zxK5E4jbuARALc+fIUAanM2njVGnrd9YvKrqoDHUg2XwNLJijo39EzMIg59LecHBHsIHNtPqepqnJp4SmL/EVg== | 4701 | integrity sha512-zxK5E4jbuARALc+fIUAanM2njVGnrd9YvKrqoDHUg2XwNLJijo39EzMIg59LecHBHsIHNtPqepqnJp4SmL/EVg== |
4740 | 4702 | ||
4741 | marked@^1.1.0: | 4703 | marked@^1.1.0: |
4742 | version "1.1.1" | 4704 | version "1.2.3" |
4743 | resolved "https://registry.yarnpkg.com/marked/-/marked-1.1.1.tgz#e5d61b69842210d5df57b05856e0c91572703e6a" | 4705 | resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.3.tgz#58817ba348a7c9398cb94d40d12e0d08df83af57" |
4744 | integrity sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw== | 4706 | integrity sha512-RQuL2i6I6Gn+9n81IDNGbL0VHnta4a+8ZhqvryXEniTb/hQNtf3i26hi1XWUhzb9BgVyWHKR3UO8MaHtKoYibw== |
4745 | 4707 | ||
4746 | math-interval-parser@^2.0.1: | 4708 | math-interval-parser@^2.0.1: |
4747 | version "2.0.1" | 4709 | version "2.0.1" |
@@ -4768,12 +4730,12 @@ media-typer@0.3.0: | |||
4768 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= | 4730 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= |
4769 | 4731 | ||
4770 | mediasource@^2.2.2, mediasource@^2.3.0: | 4732 | mediasource@^2.2.2, mediasource@^2.3.0: |
4771 | version "2.3.0" | 4733 | version "2.4.0" |
4772 | resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.3.0.tgz#4c7b49e7ea4fb88f1cc181d8fcf0d94649271dc6" | 4734 | resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.4.0.tgz#7b03378054c41400374e9bade50aa0d7a758c39b" |
4773 | integrity sha512-fqm86UwHvAnneIv40Uy1sDQaFtAByq/k0SQ3uCtbnEeSQNT1s5TDHCZOD1VmYCHwfY1jL2NjoZVwzZKYqy3L7A== | 4735 | integrity sha512-SKUMrbFMHgiCUZFOWZcL0aiF/KgHx9SPIKzxrl6+7nMUMDK/ZnOmJdY/9wKzYeM0g3mybt3ueg+W+/mrYfmeFQ== |
4774 | dependencies: | 4736 | dependencies: |
4775 | inherits "^2.0.1" | 4737 | inherits "^2.0.4" |
4776 | readable-stream "^3.0.0" | 4738 | readable-stream "^3.6.0" |
4777 | to-arraybuffer "^1.0.1" | 4739 | to-arraybuffer "^1.0.1" |
4778 | 4740 | ||
4779 | memoizee@^0.4.14: | 4741 | memoizee@^0.4.14: |
@@ -4856,11 +4818,6 @@ mime@^2.4.6: | |||
4856 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" | 4818 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" |
4857 | integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== | 4819 | integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== |
4858 | 4820 | ||
4859 | mimer@^1.0.0: | ||
4860 | version "1.1.0" | ||
4861 | resolved "https://registry.yarnpkg.com/mimer/-/mimer-1.1.0.tgz#2cb67f7093998e772a0e62c090f77daa1b8a2dbe" | ||
4862 | integrity sha512-y9dVfy2uiycQvDNiAYW6zp49ZhFlXDMr5wfdOiMbdzGM/0N5LNR6HTUn3un+WUQcM0koaw8FMTG1bt5EnHJdvQ== | ||
4863 | |||
4864 | mimic-fn@^2.1.0: | 4821 | mimic-fn@^2.1.0: |
4865 | version "2.1.0" | 4822 | version "2.1.0" |
4866 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" | 4823 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" |
@@ -4927,36 +4884,41 @@ mkdirp@0.x.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: | |||
4927 | dependencies: | 4884 | dependencies: |
4928 | minimist "^1.2.5" | 4885 | minimist "^1.2.5" |
4929 | 4886 | ||
4887 | mkdirp@1.0.3: | ||
4888 | version "1.0.3" | ||
4889 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea" | ||
4890 | integrity sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g== | ||
4891 | |||
4930 | mocha@^8.0.1: | 4892 | mocha@^8.0.1: |
4931 | version "8.1.1" | 4893 | version "8.2.1" |
4932 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.1.tgz#1de1ba4e9a2c955d96b84e469d7540848223592d" | 4894 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.1.tgz#f2fa68817ed0e53343d989df65ccd358bc3a4b39" |
4933 | integrity sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ== | 4895 | integrity sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w== |
4934 | dependencies: | 4896 | dependencies: |
4897 | "@ungap/promise-all-settled" "1.1.2" | ||
4935 | ansi-colors "4.1.1" | 4898 | ansi-colors "4.1.1" |
4936 | browser-stdout "1.3.1" | 4899 | browser-stdout "1.3.1" |
4937 | chokidar "3.3.1" | 4900 | chokidar "3.4.3" |
4938 | debug "3.2.6" | 4901 | debug "4.2.0" |
4939 | diff "4.0.2" | 4902 | diff "4.0.2" |
4940 | escape-string-regexp "1.0.5" | 4903 | escape-string-regexp "4.0.0" |
4941 | find-up "4.1.0" | 4904 | find-up "5.0.0" |
4942 | glob "7.1.6" | 4905 | glob "7.1.6" |
4943 | growl "1.10.5" | 4906 | growl "1.10.5" |
4944 | he "1.2.0" | 4907 | he "1.2.0" |
4945 | js-yaml "3.13.1" | 4908 | js-yaml "3.14.0" |
4946 | log-symbols "3.0.0" | 4909 | log-symbols "4.0.0" |
4947 | minimatch "3.0.4" | 4910 | minimatch "3.0.4" |
4948 | ms "2.1.2" | 4911 | ms "2.1.2" |
4949 | object.assign "4.1.0" | 4912 | nanoid "3.1.12" |
4950 | promise.allsettled "1.0.2" | 4913 | serialize-javascript "5.0.1" |
4951 | serialize-javascript "4.0.0" | 4914 | strip-json-comments "3.1.1" |
4952 | strip-json-comments "3.0.1" | 4915 | supports-color "7.2.0" |
4953 | supports-color "7.1.0" | ||
4954 | which "2.0.2" | 4916 | which "2.0.2" |
4955 | wide-align "1.1.3" | 4917 | wide-align "1.1.3" |
4956 | workerpool "6.0.0" | 4918 | workerpool "6.0.2" |
4957 | yargs "13.3.2" | 4919 | yargs "13.3.2" |
4958 | yargs-parser "13.1.2" | 4920 | yargs-parser "13.1.2" |
4959 | yargs-unparser "1.6.1" | 4921 | yargs-unparser "2.0.0" |
4960 | 4922 | ||
4961 | moment-timezone@^0.5.21, moment-timezone@^0.5.31: | 4923 | moment-timezone@^0.5.21, moment-timezone@^0.5.31: |
4962 | version "0.5.31" | 4924 | version "0.5.31" |
@@ -4965,10 +4927,10 @@ moment-timezone@^0.5.21, moment-timezone@^0.5.31: | |||
4965 | dependencies: | 4927 | dependencies: |
4966 | moment ">= 2.9.0" | 4928 | moment ">= 2.9.0" |
4967 | 4929 | ||
4968 | "moment@>= 2.9.0", moment@^2.24.0, moment@^2.25.3: | 4930 | "moment@>= 2.9.0", moment@^2.24.0: |
4969 | version "2.27.0" | 4931 | version "2.29.1" |
4970 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" | 4932 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" |
4971 | integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== | 4933 | integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== |
4972 | 4934 | ||
4973 | morgan@^1.5.3: | 4935 | morgan@^1.5.3: |
4974 | version "1.10.0" | 4936 | version "1.10.0" |
@@ -5026,10 +4988,10 @@ multer@^1.1.0: | |||
5026 | type-is "^1.6.4" | 4988 | type-is "^1.6.4" |
5027 | xtend "^4.0.0" | 4989 | xtend "^4.0.0" |
5028 | 4990 | ||
5029 | multimatch@^4.0.0: | 4991 | multimatch@^5.0.0: |
5030 | version "4.0.0" | 4992 | version "5.0.0" |
5031 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" | 4993 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" |
5032 | integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== | 4994 | integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== |
5033 | dependencies: | 4995 | dependencies: |
5034 | "@types/minimatch" "^3.0.3" | 4996 | "@types/minimatch" "^3.0.3" |
5035 | array-differ "^3.0.0" | 4997 | array-differ "^3.0.0" |
@@ -5038,11 +5000,11 @@ multimatch@^4.0.0: | |||
5038 | minimatch "^3.0.4" | 5000 | minimatch "^3.0.4" |
5039 | 5001 | ||
5040 | multistream@^4.0.0: | 5002 | multistream@^4.0.0: |
5041 | version "4.0.0" | 5003 | version "4.0.1" |
5042 | resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.0.0.tgz#c771b6d17d169138b6abcb15f0061170e3c09cea" | 5004 | resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.0.1.tgz#6c188a40b66ab0205c9e9f560a5348f13fe1f82a" |
5043 | integrity sha512-t0C8MAtH/d3Y+5nooEtUMWli92lVw9Jhx4uOhRl5GAwS5vc+YTmp/VXNJNsCBAMeEyK/6zhbk6x9JE3AiCvo4g== | 5005 | integrity sha512-LNPIR/LD0JUw2beGlSv4sgTSnGbZp16d/PG2rnIrYjkeCaepNmBTobuiaNQATCPiYgn+BBuQTm70UlvwRfLZ3Q== |
5044 | dependencies: | 5006 | dependencies: |
5045 | readable-stream "^3.4.0" | 5007 | readable-stream "^3.6.0" |
5046 | 5008 | ||
5047 | mustache@^4.0.1: | 5009 | mustache@^4.0.1: |
5048 | version "4.0.1" | 5010 | version "4.0.1" |
@@ -5055,9 +5017,14 @@ mute-stream@~0.0.4: | |||
5055 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== | 5017 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== |
5056 | 5018 | ||
5057 | nan@~2.14.0: | 5019 | nan@~2.14.0: |
5058 | version "2.14.1" | 5020 | version "2.14.2" |
5059 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" | 5021 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" |
5060 | integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== | 5022 | integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== |
5023 | |||
5024 | nanoid@3.1.12: | ||
5025 | version "3.1.12" | ||
5026 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" | ||
5027 | integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== | ||
5061 | 5028 | ||
5062 | nanoid@^3.1.16: | 5029 | nanoid@^3.1.16: |
5063 | version "3.1.16" | 5030 | version "3.1.16" |
@@ -5075,9 +5042,9 @@ ncp@1.0.x: | |||
5075 | integrity sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY= | 5042 | integrity sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY= |
5076 | 5043 | ||
5077 | needle@^2.2.1, needle@^2.5.0: | 5044 | needle@^2.2.1, needle@^2.5.0: |
5078 | version "2.5.0" | 5045 | version "2.5.2" |
5079 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.0.tgz#e6fc4b3cc6c25caed7554bd613a5cf0bac8c31c0" | 5046 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.2.tgz#cf1a8fce382b5a280108bba90a14993c00e4010a" |
5080 | integrity sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA== | 5047 | integrity sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ== |
5081 | dependencies: | 5048 | dependencies: |
5082 | debug "^3.2.6" | 5049 | debug "^3.2.6" |
5083 | iconv-lite "^0.4.4" | 5050 | iconv-lite "^0.4.4" |
@@ -5108,25 +5075,38 @@ next-tick@~1.0.0: | |||
5108 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" | 5075 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" |
5109 | integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= | 5076 | integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= |
5110 | 5077 | ||
5111 | nice-try@^1.0.4: | ||
5112 | version "1.0.5" | ||
5113 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" | ||
5114 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== | ||
5115 | |||
5116 | node-addon-api@^3.0.0: | 5078 | node-addon-api@^3.0.0: |
5117 | version "3.0.0" | 5079 | version "3.0.2" |
5118 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247" | 5080 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" |
5119 | integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg== | 5081 | integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg== |
5120 | 5082 | ||
5121 | node-forge@^0.9.1: | 5083 | node-fetch@^2.6.0: |
5122 | version "0.9.1" | 5084 | version "2.6.1" |
5123 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" | 5085 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" |
5124 | integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== | 5086 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== |
5125 | 5087 | ||
5126 | node-gyp-build@~3.7.0: | 5088 | node-forge@^0.10.0: |
5127 | version "3.7.0" | 5089 | version "0.10.0" |
5128 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" | 5090 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" |
5129 | integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w== | 5091 | integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== |
5092 | |||
5093 | node-gyp-build@^4.2.0: | ||
5094 | version "4.2.3" | ||
5095 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" | ||
5096 | integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== | ||
5097 | |||
5098 | node-media-server@^2.1.4: | ||
5099 | version "2.2.4" | ||
5100 | resolved "https://registry.yarnpkg.com/node-media-server/-/node-media-server-2.2.4.tgz#1f751aee0121d32fc1eaecb03ad43f82b25a44d8" | ||
5101 | integrity sha512-2Y5hZ+BI2YxM5+PiEXM9isAZUPSJoENTb0xXVzg8MzP9nFtVVv+X7+iGnFeyXB0BWaCsdBFD5A/rTL4dfaCw+Q== | ||
5102 | dependencies: | ||
5103 | basic-auth-connect "^1.0.0" | ||
5104 | chalk "^2.4.2" | ||
5105 | dateformat "^3.0.3" | ||
5106 | express "^4.16.4" | ||
5107 | lodash ">=4.17.13" | ||
5108 | mkdirp "1.0.3" | ||
5109 | ws "^5.2.2" | ||
5130 | 5110 | ||
5131 | node-pre-gyp@0.15.0: | 5111 | node-pre-gyp@0.15.0: |
5132 | version "0.15.0" | 5112 | version "0.15.0" |
@@ -5165,7 +5145,7 @@ nodemailer@5.0.0: | |||
5165 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-5.0.0.tgz#bcb409eca613114e85de42646d0ce7f1fa70b716" | 5145 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-5.0.0.tgz#bcb409eca613114e85de42646d0ce7f1fa70b716" |
5166 | integrity sha512-XI4PI5L7GYcJyHkPcHlvPyRrYohNYBNRNbt1tU8PXNU3E1ADJC84a13V0vbL9AM431OP+ETacaGXAF8fGn1JvA== | 5146 | integrity sha512-XI4PI5L7GYcJyHkPcHlvPyRrYohNYBNRNbt1tU8PXNU3E1ADJC84a13V0vbL9AM431OP+ETacaGXAF8fGn1JvA== |
5167 | 5147 | ||
5168 | nodemailer@6.4.11, nodemailer@^6.0.0, nodemailer@^6.3.1, nodemailer@^6.4.6: | 5148 | nodemailer@6.4.11: |
5169 | version "6.4.11" | 5149 | version "6.4.11" |
5170 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.11.tgz#1f00b4ffd106403f17c03f3d43d5945b2677046c" | 5150 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.11.tgz#1f00b4ffd106403f17c03f3d43d5945b2677046c" |
5171 | integrity sha512-BVZBDi+aJV4O38rxsUh164Dk1NCqgh6Cm0rQSb9SK/DHGll/DrCMnycVDD7msJgZCnmVa8ASo8EZzR7jsgTukQ== | 5151 | integrity sha512-BVZBDi+aJV4O38rxsUh164Dk1NCqgh6Cm0rQSb9SK/DHGll/DrCMnycVDD7msJgZCnmVa8ASo8EZzR7jsgTukQ== |
@@ -5175,10 +5155,15 @@ nodemailer@^3.1.1: | |||
5175 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-3.1.8.tgz#febfaccb4bd273678473a309c6cb4b4a2f3c48e3" | 5155 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-3.1.8.tgz#febfaccb4bd273678473a309c6cb4b4a2f3c48e3" |
5176 | integrity sha1-/r+sy0vSc2eEc6MJxstLSi88SOM= | 5156 | integrity sha1-/r+sy0vSc2eEc6MJxstLSi88SOM= |
5177 | 5157 | ||
5158 | nodemailer@^6.0.0, nodemailer@^6.3.1, nodemailer@^6.4.14: | ||
5159 | version "6.4.15" | ||
5160 | resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.4.15.tgz#da5dbb78b8376e34c232c6aa3d2d65cfe17440e9" | ||
5161 | integrity sha512-2/z13dBTWdgTRlxVMAK6C13dCI22GEShET4+jFLlQsxpblxYhojnucfcTZO1QBu5CsHvABsBj2JCGO3vl0HSQA== | ||
5162 | |||
5178 | nodemon@^2.0.1: | 5163 | nodemon@^2.0.1: |
5179 | version "2.0.4" | 5164 | version "2.0.6" |
5180 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416" | 5165 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.6.tgz#1abe1937b463aaf62f0d52e2b7eaadf28cc2240d" |
5181 | integrity sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ== | 5166 | integrity sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ== |
5182 | dependencies: | 5167 | dependencies: |
5183 | chokidar "^3.2.2" | 5168 | chokidar "^3.2.2" |
5184 | debug "^3.2.6" | 5169 | debug "^3.2.6" |
@@ -5188,8 +5173,8 @@ nodemon@^2.0.1: | |||
5188 | semver "^5.7.1" | 5173 | semver "^5.7.1" |
5189 | supports-color "^5.5.0" | 5174 | supports-color "^5.5.0" |
5190 | touch "^3.1.0" | 5175 | touch "^3.1.0" |
5191 | undefsafe "^2.0.2" | 5176 | undefsafe "^2.0.3" |
5192 | update-notifier "^4.0.0" | 5177 | update-notifier "^4.1.0" |
5193 | 5178 | ||
5194 | nopt@^4.0.1: | 5179 | nopt@^4.0.1: |
5195 | version "4.0.3" | 5180 | version "4.0.3" |
@@ -5303,25 +5288,25 @@ object-component@0.0.3: | |||
5303 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" | 5288 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" |
5304 | integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= | 5289 | integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= |
5305 | 5290 | ||
5306 | object-inspect@^1.7.0: | 5291 | object-inspect@^1.8.0: |
5307 | version "1.8.0" | 5292 | version "1.8.0" |
5308 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" | 5293 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" |
5309 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== | 5294 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== |
5310 | 5295 | ||
5311 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: | 5296 | object-keys@^1.0.12, object-keys@^1.1.1: |
5312 | version "1.1.1" | 5297 | version "1.1.1" |
5313 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" | 5298 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" |
5314 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== | 5299 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== |
5315 | 5300 | ||
5316 | object.assign@4.1.0, object.assign@^4.1.0: | 5301 | object.assign@^4.1.1: |
5317 | version "4.1.0" | 5302 | version "4.1.2" |
5318 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" | 5303 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" |
5319 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== | 5304 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== |
5320 | dependencies: | 5305 | dependencies: |
5321 | define-properties "^1.1.2" | 5306 | call-bind "^1.0.0" |
5322 | function-bind "^1.1.1" | 5307 | define-properties "^1.1.3" |
5323 | has-symbols "^1.0.0" | 5308 | has-symbols "^1.0.1" |
5324 | object-keys "^1.0.11" | 5309 | object-keys "^1.1.1" |
5325 | 5310 | ||
5326 | object.fromentries@^2.0.2: | 5311 | object.fromentries@^2.0.2: |
5327 | version "2.0.2" | 5312 | version "2.0.2" |
@@ -5396,11 +5381,6 @@ open@^6.4.0: | |||
5396 | dependencies: | 5381 | dependencies: |
5397 | is-wsl "^1.1.0" | 5382 | is-wsl "^1.1.0" |
5398 | 5383 | ||
5399 | openapi-types@^1.3.5: | ||
5400 | version "1.3.5" | ||
5401 | resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-1.3.5.tgz#6718cfbc857fe6c6f1471f65b32bdebb9c10ce40" | ||
5402 | integrity sha512-11oi4zYorsgvg5yBarZplAqbpev5HkuVNPlZaPTknPDzAynq+lnJdXAmruGWP0s+dNYZS7bjM+xrTpJw7184Fg== | ||
5403 | |||
5404 | opn@^6.0.0: | 5384 | opn@^6.0.0: |
5405 | version "6.0.0" | 5385 | version "6.0.0" |
5406 | resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" | 5386 | resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" |
@@ -5467,6 +5447,13 @@ p-limit@^2.0.0, p-limit@^2.2.0: | |||
5467 | dependencies: | 5447 | dependencies: |
5468 | p-try "^2.0.0" | 5448 | p-try "^2.0.0" |
5469 | 5449 | ||
5450 | p-limit@^3.0.2: | ||
5451 | version "3.0.2" | ||
5452 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" | ||
5453 | integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== | ||
5454 | dependencies: | ||
5455 | p-try "^2.0.0" | ||
5456 | |||
5470 | p-locate@^2.0.0: | 5457 | p-locate@^2.0.0: |
5471 | version "2.0.0" | 5458 | version "2.0.0" |
5472 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" | 5459 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" |
@@ -5488,6 +5475,18 @@ p-locate@^4.1.0: | |||
5488 | dependencies: | 5475 | dependencies: |
5489 | p-limit "^2.2.0" | 5476 | p-limit "^2.2.0" |
5490 | 5477 | ||
5478 | p-locate@^5.0.0: | ||
5479 | version "5.0.0" | ||
5480 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" | ||
5481 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== | ||
5482 | dependencies: | ||
5483 | p-limit "^3.0.2" | ||
5484 | |||
5485 | p-map@^2.1.0: | ||
5486 | version "2.1.0" | ||
5487 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" | ||
5488 | integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== | ||
5489 | |||
5491 | p-timeout@^3.2.0: | 5490 | p-timeout@^3.2.0: |
5492 | version "3.2.0" | 5491 | version "3.2.0" |
5493 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" | 5492 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" |
@@ -5599,6 +5598,13 @@ parse-torrent@^7.0.0, parse-torrent@^7.1.3: | |||
5599 | simple-get "^3.0.1" | 5598 | simple-get "^3.0.1" |
5600 | simple-sha1 "^3.0.0" | 5599 | simple-sha1 "^3.0.0" |
5601 | 5600 | ||
5601 | parse5@^3.0.1: | ||
5602 | version "3.0.3" | ||
5603 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" | ||
5604 | integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== | ||
5605 | dependencies: | ||
5606 | "@types/node" "*" | ||
5607 | |||
5602 | parseqs@0.0.5: | 5608 | parseqs@0.0.5: |
5603 | version "0.0.5" | 5609 | version "0.0.5" |
5604 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" | 5610 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" |
@@ -5606,6 +5612,11 @@ parseqs@0.0.5: | |||
5606 | dependencies: | 5612 | dependencies: |
5607 | better-assert "~1.0.0" | 5613 | better-assert "~1.0.0" |
5608 | 5614 | ||
5615 | parseqs@0.0.6: | ||
5616 | version "0.0.6" | ||
5617 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" | ||
5618 | integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== | ||
5619 | |||
5609 | parseuri@0.0.5: | 5620 | parseuri@0.0.5: |
5610 | version "0.0.5" | 5621 | version "0.0.5" |
5611 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" | 5622 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" |
@@ -5613,6 +5624,11 @@ parseuri@0.0.5: | |||
5613 | dependencies: | 5624 | dependencies: |
5614 | better-assert "~1.0.0" | 5625 | better-assert "~1.0.0" |
5615 | 5626 | ||
5627 | parseuri@0.0.6: | ||
5628 | version "0.0.6" | ||
5629 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" | ||
5630 | integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== | ||
5631 | |||
5616 | parseurl@~1.3.3: | 5632 | parseurl@~1.3.3: |
5617 | version "1.3.3" | 5633 | version "1.3.3" |
5618 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" | 5634 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" |
@@ -5638,11 +5654,6 @@ path-is-absolute@^1.0.0: | |||
5638 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" | 5654 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" |
5639 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= | 5655 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= |
5640 | 5656 | ||
5641 | path-key@^2.0.1: | ||
5642 | version "2.0.1" | ||
5643 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" | ||
5644 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= | ||
5645 | |||
5646 | path-key@^3.0.0, path-key@^3.1.0: | 5657 | path-key@^3.0.0, path-key@^3.1.0: |
5647 | version "3.1.1" | 5658 | version "3.1.1" |
5648 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" | 5659 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" |
@@ -5702,25 +5713,25 @@ pfeed@1.1.11: | |||
5702 | lodash "^4.17.15" | 5713 | lodash "^4.17.15" |
5703 | xml "^1.0.1" | 5714 | xml "^1.0.1" |
5704 | 5715 | ||
5705 | pg-connection-string@^2.3.0: | 5716 | pg-connection-string@^2.4.0: |
5706 | version "2.3.0" | 5717 | version "2.4.0" |
5707 | resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.3.0.tgz#c13fcb84c298d0bfa9ba12b40dd6c23d946f55d6" | 5718 | resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.4.0.tgz#c979922eb47832999a204da5dbe1ebf2341b6a10" |
5708 | integrity sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w== | 5719 | integrity sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ== |
5709 | 5720 | ||
5710 | pg-int8@1.0.1: | 5721 | pg-int8@1.0.1: |
5711 | version "1.0.1" | 5722 | version "1.0.1" |
5712 | resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" | 5723 | resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" |
5713 | integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== | 5724 | integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== |
5714 | 5725 | ||
5715 | pg-pool@^3.2.1: | 5726 | pg-pool@^3.2.2: |
5716 | version "3.2.1" | 5727 | version "3.2.2" |
5717 | resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0" | 5728 | resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.2.tgz#a560e433443ed4ad946b84d774b3f22452694dff" |
5718 | integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA== | 5729 | integrity sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA== |
5719 | 5730 | ||
5720 | pg-protocol@^1.2.5: | 5731 | pg-protocol@^1.3.0: |
5721 | version "1.2.5" | 5732 | version "1.3.0" |
5722 | resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.2.5.tgz#28a1492cde11646ff2d2d06bdee42a3ba05f126c" | 5733 | resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.3.0.tgz#3c8fb7ca34dbbfcc42776ce34ac5f537d6e34770" |
5723 | integrity sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg== | 5734 | integrity sha512-64/bYByMrhWULUaCd+6/72c9PMWhiVFs3EVxl9Ct6a3v/U8+rKgqP2w+kKg/BIGgMJyB+Bk/eNivT32Al+Jghw== |
5724 | 5735 | ||
5725 | pg-types@^2.1.0: | 5736 | pg-types@^2.1.0: |
5726 | version "2.2.0" | 5737 | version "2.2.0" |
@@ -5734,32 +5745,31 @@ pg-types@^2.1.0: | |||
5734 | postgres-interval "^1.1.0" | 5745 | postgres-interval "^1.1.0" |
5735 | 5746 | ||
5736 | pg@^8.2.1: | 5747 | pg@^8.2.1: |
5737 | version "8.3.2" | 5748 | version "8.4.2" |
5738 | resolved "https://registry.yarnpkg.com/pg/-/pg-8.3.2.tgz#52766e41302f5b878fe1efa10d4cdd486f6dff50" | 5749 | resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.2.tgz#2aa58166a23391e91d56a7ea57c6d99931c0642a" |
5739 | integrity sha512-hOoRCTriXS+VWwyXHchRjWb9yv3Koq8irlwwXniqhdgK0AbfWvEnybGS2HIUE+UdCSTuYAM4WGPujFpPg9Vcaw== | 5750 | integrity sha512-E9FlUrrc7w3+sbRmL1CSw99vifACzB2TjhMM9J5w9D1LIg+6un0jKkpHS1EQf2CWhKhec2bhrBLVMmUBDbjPRQ== |
5740 | dependencies: | 5751 | dependencies: |
5741 | buffer-writer "2.0.0" | 5752 | buffer-writer "2.0.0" |
5742 | packet-reader "1.0.0" | 5753 | packet-reader "1.0.0" |
5743 | pg-connection-string "^2.3.0" | 5754 | pg-connection-string "^2.4.0" |
5744 | pg-pool "^3.2.1" | 5755 | pg-pool "^3.2.2" |
5745 | pg-protocol "^1.2.5" | 5756 | pg-protocol "^1.3.0" |
5746 | pg-types "^2.1.0" | 5757 | pg-types "^2.1.0" |
5747 | pgpass "1.x" | 5758 | pgpass "1.x" |
5748 | semver "4.3.2" | ||
5749 | 5759 | ||
5750 | pgpass@1.x: | 5760 | pgpass@1.x: |
5751 | version "1.0.2" | 5761 | version "1.0.4" |
5752 | resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" | 5762 | resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.4.tgz#85eb93a83800b20f8057a2b029bf05abaf94ea9c" |
5753 | integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= | 5763 | integrity sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w== |
5754 | dependencies: | 5764 | dependencies: |
5755 | split "^1.0.0" | 5765 | split2 "^3.1.1" |
5756 | 5766 | ||
5757 | phin@^2.9.1: | 5767 | phin@^2.9.1: |
5758 | version "2.9.3" | 5768 | version "2.9.3" |
5759 | resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" | 5769 | resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" |
5760 | integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== | 5770 | integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== |
5761 | 5771 | ||
5762 | picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.1: | 5772 | picomatch@^2.0.4, picomatch@^2.2.1: |
5763 | version "2.2.2" | 5773 | version "2.2.2" |
5764 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" | 5774 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" |
5765 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== | 5775 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== |
@@ -5839,9 +5849,9 @@ postgres-bytea@~1.0.0: | |||
5839 | integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= | 5849 | integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= |
5840 | 5850 | ||
5841 | postgres-date@~1.0.4: | 5851 | postgres-date@~1.0.4: |
5842 | version "1.0.6" | 5852 | version "1.0.7" |
5843 | resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.6.tgz#4925e8085b30c2ba1a06ac91b9a3473954a2ce2d" | 5853 | resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" |
5844 | integrity sha512-o2a4gxeFcox+CgB3Ig/kNHBP23PiEXHCXx7pcIIsvzoNz4qv+lKTyiSkjOXIMNUl12MO/mOYl2K6wR9X5K6Plg== | 5854 | integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== |
5845 | 5855 | ||
5846 | postgres-interval@^1.1.0: | 5856 | postgres-interval@^1.1.0: |
5847 | version "1.2.0" | 5857 | version "1.2.0" |
@@ -5860,7 +5870,7 @@ prepend-http@^2.0.0: | |||
5860 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" | 5870 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" |
5861 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= | 5871 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= |
5862 | 5872 | ||
5863 | preview-email@^2.0.1: | 5873 | preview-email@^2.0.2: |
5864 | version "2.0.2" | 5874 | version "2.0.2" |
5865 | resolved "https://registry.yarnpkg.com/preview-email/-/preview-email-2.0.2.tgz#6cecec27ec91eb1ec1b0b67581d2f44f15c27b69" | 5875 | resolved "https://registry.yarnpkg.com/preview-email/-/preview-email-2.0.2.tgz#6cecec27ec91eb1ec1b0b67581d2f44f15c27b69" |
5866 | integrity sha512-FADpJ1p5VX0F/V57gcxc8IoxX63JuyDOOMN4Y7tJwil8K1/lvN0HtO7mZHIP2kgwhMMehjYTxqnjFtSGg1/LXw== | 5876 | integrity sha512-FADpJ1p5VX0F/V57gcxc8IoxX63JuyDOOMN4Y7tJwil8K1/lvN0HtO7mZHIP2kgwhMMehjYTxqnjFtSGg1/LXw== |
@@ -5890,17 +5900,6 @@ progress@^2.0.0: | |||
5890 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" | 5900 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" |
5891 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== | 5901 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== |
5892 | 5902 | ||
5893 | promise.allsettled@1.0.2: | ||
5894 | version "1.0.2" | ||
5895 | resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" | ||
5896 | integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== | ||
5897 | dependencies: | ||
5898 | array.prototype.map "^1.0.1" | ||
5899 | define-properties "^1.1.3" | ||
5900 | es-abstract "^1.17.0-next.1" | ||
5901 | function-bind "^1.1.1" | ||
5902 | iterate-value "^1.0.0" | ||
5903 | |||
5904 | promise.prototype.finally@^3.1.2: | 5903 | promise.prototype.finally@^3.1.2: |
5905 | version "3.1.2" | 5904 | version "3.1.2" |
5906 | resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" | 5905 | resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" |
@@ -6200,9 +6199,9 @@ punycode@^2.1.0, punycode@^2.1.1: | |||
6200 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== | 6199 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== |
6201 | 6200 | ||
6202 | pupa@^2.0.1: | 6201 | pupa@^2.0.1: |
6203 | version "2.0.1" | 6202 | version "2.1.1" |
6204 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" | 6203 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" |
6205 | integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== | 6204 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== |
6206 | dependencies: | 6205 | dependencies: |
6207 | escape-goat "^2.0.0" | 6206 | escape-goat "^2.0.0" |
6208 | 6207 | ||
@@ -6221,10 +6220,10 @@ qs@~6.5.2: | |||
6221 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" | 6220 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" |
6222 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== | 6221 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== |
6223 | 6222 | ||
6224 | queue-microtask@^1.1.0, queue-microtask@^1.1.2: | 6223 | queue-microtask@^1.1.0, queue-microtask@^1.1.2, queue-microtask@^1.2.0: |
6225 | version "1.1.4" | 6224 | version "1.2.0" |
6226 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.1.4.tgz#40841ace4356b48b35b5ea61a2e1fe0a23c59ce1" | 6225 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.0.tgz#f27d002cbfac741072afa0e9af3a119b0e8724a3" |
6227 | integrity sha512-eY/4Obve9cE5FK8YvC1cJsm5cr7XvAurul8UtBDJ2PR1p5NmAwHtvAt5ftcLtwYRCUKNhxCneZZlxmUDFoSeKA== | 6226 | integrity sha512-J95OVUiS4b8qqmpqhCodN8yPpHG2mpZUPQ8tDGyIY0VhM+kBHszOuvsMJVGNQ1OH2BnTFbqz45i+2jGpDw9H0w== |
6228 | 6227 | ||
6229 | random-access-file@^2.0.1: | 6228 | random-access-file@^2.0.1: |
6230 | version "2.1.4" | 6229 | version "2.1.4" |
@@ -6286,11 +6285,11 @@ rc@^1.2.7, rc@^1.2.8: | |||
6286 | strip-json-comments "~2.0.1" | 6285 | strip-json-comments "~2.0.1" |
6287 | 6286 | ||
6288 | rdf-canonize@^1.0.2: | 6287 | rdf-canonize@^1.0.2: |
6289 | version "1.1.0" | 6288 | version "1.2.0" |
6290 | resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-1.1.0.tgz#61d1609bbdb3234b8f38c9c34ad889bf670e089d" | 6289 | resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-1.2.0.tgz#9872b2cc6ed92a9969e834f9f042addaf0d4f7f9" |
6291 | integrity sha512-DV06OnhVfl2zcZJQCt+YvU+hoZVgpyQpNFLeAmghq8RJybUxD3B4LRzlBquYS5k+LLd8/c3g5Gnhkqjw5qRMvg== | 6290 | integrity sha512-MQdcRDz4+82nUrEb3hNQangBDpmep15uMmnWclGi/1KS0bNVc8oHpoNI0PFLHZsvwgwRzH31bO1JAScqUAstvw== |
6292 | dependencies: | 6291 | dependencies: |
6293 | node-forge "^0.9.1" | 6292 | node-forge "^0.10.0" |
6294 | semver "^6.3.0" | 6293 | semver "^6.3.0" |
6295 | 6294 | ||
6296 | read-pkg-up@^2.0.0: | 6295 | read-pkg-up@^2.0.0: |
@@ -6375,17 +6374,10 @@ readable-wrap@^1.0.0: | |||
6375 | dependencies: | 6374 | dependencies: |
6376 | readable-stream "^1.1.13-1" | 6375 | readable-stream "^1.1.13-1" |
6377 | 6376 | ||
6378 | readdirp@~3.3.0: | 6377 | readdirp@~3.5.0: |
6379 | version "3.3.0" | 6378 | version "3.5.0" |
6380 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" | 6379 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" |
6381 | integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== | 6380 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== |
6382 | dependencies: | ||
6383 | picomatch "^2.0.7" | ||
6384 | |||
6385 | readdirp@~3.4.0: | ||
6386 | version "3.4.0" | ||
6387 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" | ||
6388 | integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== | ||
6389 | dependencies: | 6381 | dependencies: |
6390 | picomatch "^2.2.1" | 6382 | picomatch "^2.2.1" |
6391 | 6383 | ||
@@ -6394,12 +6386,7 @@ record-cache@^1.0.2: | |||
6394 | resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.0.tgz#f8a467a691a469584b26e88d36b18afdb3932037" | 6386 | resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.0.tgz#f8a467a691a469584b26e88d36b18afdb3932037" |
6395 | integrity sha512-u8rbtLEJV7HRacl/ZYwSBFD8NFyB3PfTTfGLP37IW3hftQCwu6z4Q2RLyxo1YJUNRTEzJfpLpGwVuEYdaIkG9Q== | 6387 | integrity sha512-u8rbtLEJV7HRacl/ZYwSBFD8NFyB3PfTTfGLP37IW3hftQCwu6z4Q2RLyxo1YJUNRTEzJfpLpGwVuEYdaIkG9Q== |
6396 | 6388 | ||
6397 | redis-commands@1.5.0: | 6389 | redis-commands@1.6.0, redis-commands@^1.5.0: |
6398 | version "1.5.0" | ||
6399 | resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785" | ||
6400 | integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg== | ||
6401 | |||
6402 | redis-commands@^1.5.0: | ||
6403 | version "1.6.0" | 6390 | version "1.6.0" |
6404 | resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.6.0.tgz#36d4ca42ae9ed29815cdb30ad9f97982eba1ce23" | 6391 | resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.6.0.tgz#36d4ca42ae9ed29815cdb30ad9f97982eba1ce23" |
6405 | integrity sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ== | 6392 | integrity sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ== |
@@ -6530,10 +6517,11 @@ resolve-pkg@^1.0.0: | |||
6530 | resolve-from "^2.0.0" | 6517 | resolve-from "^2.0.0" |
6531 | 6518 | ||
6532 | resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0: | 6519 | resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.17.0: |
6533 | version "1.17.0" | 6520 | version "1.18.1" |
6534 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" | 6521 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" |
6535 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== | 6522 | integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== |
6536 | dependencies: | 6523 | dependencies: |
6524 | is-core-module "^2.0.0" | ||
6537 | path-parse "^1.0.6" | 6525 | path-parse "^1.0.6" |
6538 | 6526 | ||
6539 | responselike@^1.0.2: | 6527 | responselike@^1.0.2: |
@@ -6584,19 +6572,19 @@ rimraf@^3.0.0: | |||
6584 | glob "^7.1.3" | 6572 | glob "^7.1.3" |
6585 | 6573 | ||
6586 | run-parallel-limit@^1.0.5: | 6574 | run-parallel-limit@^1.0.5: |
6587 | version "1.0.5" | 6575 | version "1.0.6" |
6588 | resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.0.5.tgz#c29a4fd17b4df358cb52a8a697811a63c984f1b7" | 6576 | resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.0.6.tgz#0982a893d825b050cbaff1a35414832b195541b6" |
6589 | integrity sha512-NsY+oDngvrvMxKB3G8ijBzIema6aYbQMD2bHOamvN52BysbIGTnEY2xsNyfrcr9GhY995/t/0nQN3R3oZvaDlg== | 6577 | integrity sha512-yFFs4Q2kECi5mWXyyZj3UlAZ5OFq5E07opABC+EmhZdjEkrxXaUwFqOaaNF4tbayMnBxrsbujpeCYTVjGufZGQ== |
6590 | 6578 | ||
6591 | run-parallel@^1.0.0, run-parallel@^1.1.2, run-parallel@^1.1.9: | 6579 | run-parallel@^1.0.0, run-parallel@^1.1.2, run-parallel@^1.1.9: |
6592 | version "1.1.9" | 6580 | version "1.1.10" |
6593 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" | 6581 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" |
6594 | integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== | 6582 | integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== |
6595 | 6583 | ||
6596 | run-series@^1.1.2, run-series@^1.1.8: | 6584 | run-series@^1.1.8, run-series@^1.1.9: |
6597 | version "1.1.8" | 6585 | version "1.1.9" |
6598 | resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.8.tgz#2c4558f49221e01cd6371ff4e0a1e203e460fc36" | 6586 | resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.9.tgz#15ba9cb90e6a6c054e67c98e1dc063df0ecc113a" |
6599 | integrity sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg== | 6587 | integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g== |
6600 | 6588 | ||
6601 | rusha@^0.8.1: | 6589 | rusha@^0.8.1: |
6602 | version "0.8.13" | 6590 | version "0.8.13" |
@@ -6604,9 +6592,9 @@ rusha@^0.8.1: | |||
6604 | integrity sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo= | 6592 | integrity sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo= |
6605 | 6593 | ||
6606 | rxjs@^6.5.2: | 6594 | rxjs@^6.5.2: |
6607 | version "6.6.2" | 6595 | version "6.6.3" |
6608 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" | 6596 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" |
6609 | integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== | 6597 | integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== |
6610 | dependencies: | 6598 | dependencies: |
6611 | tslib "^1.9.0" | 6599 | tslib "^1.9.0" |
6612 | 6600 | ||
@@ -6620,7 +6608,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, | |||
6620 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" | 6608 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" |
6621 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== | 6609 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== |
6622 | 6610 | ||
6623 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: | 6611 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: |
6624 | version "2.1.2" | 6612 | version "2.1.2" |
6625 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" | 6613 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" |
6626 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== | 6614 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== |
@@ -6660,16 +6648,11 @@ semver-diff@^3.1.1: | |||
6660 | dependencies: | 6648 | dependencies: |
6661 | semver "^6.3.0" | 6649 | semver "^6.3.0" |
6662 | 6650 | ||
6663 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.7.1: | 6651 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.7.1: |
6664 | version "5.7.1" | 6652 | version "5.7.1" |
6665 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" | 6653 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" |
6666 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== | 6654 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== |
6667 | 6655 | ||
6668 | semver@4.3.2: | ||
6669 | version "4.3.2" | ||
6670 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" | ||
6671 | integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= | ||
6672 | |||
6673 | semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0: | 6656 | semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0: |
6674 | version "6.3.0" | 6657 | version "6.3.0" |
6675 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" | 6658 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" |
@@ -6732,10 +6715,10 @@ sequelize@5.21.13: | |||
6732 | validator "^10.11.0" | 6715 | validator "^10.11.0" |
6733 | wkx "^0.4.8" | 6716 | wkx "^0.4.8" |
6734 | 6717 | ||
6735 | serialize-javascript@4.0.0: | 6718 | serialize-javascript@5.0.1: |
6736 | version "4.0.0" | 6719 | version "5.0.1" |
6737 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" | 6720 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" |
6738 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== | 6721 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== |
6739 | dependencies: | 6722 | dependencies: |
6740 | randombytes "^2.1.0" | 6723 | randombytes "^2.1.0" |
6741 | 6724 | ||
@@ -6759,13 +6742,6 @@ setprototypeof@1.1.1: | |||
6759 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" | 6742 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" |
6760 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== | 6743 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== |
6761 | 6744 | ||
6762 | shebang-command@^1.2.0: | ||
6763 | version "1.2.0" | ||
6764 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" | ||
6765 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= | ||
6766 | dependencies: | ||
6767 | shebang-regex "^1.0.0" | ||
6768 | |||
6769 | shebang-command@^2.0.0: | 6745 | shebang-command@^2.0.0: |
6770 | version "2.0.0" | 6746 | version "2.0.0" |
6771 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" | 6747 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" |
@@ -6773,11 +6749,6 @@ shebang-command@^2.0.0: | |||
6773 | dependencies: | 6749 | dependencies: |
6774 | shebang-regex "^3.0.0" | 6750 | shebang-regex "^3.0.0" |
6775 | 6751 | ||
6776 | shebang-regex@^1.0.0: | ||
6777 | version "1.0.0" | ||
6778 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" | ||
6779 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= | ||
6780 | |||
6781 | shebang-regex@^3.0.0: | 6752 | shebang-regex@^3.0.0: |
6782 | version "3.0.0" | 6753 | version "3.0.0" |
6783 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" | 6754 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" |
@@ -6798,7 +6769,7 @@ simple-concat@^1.0.0: | |||
6798 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" | 6769 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" |
6799 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== | 6770 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== |
6800 | 6771 | ||
6801 | simple-get@^3.0.0, simple-get@^3.0.1: | 6772 | simple-get@^3.0.1: |
6802 | version "3.1.0" | 6773 | version "3.1.0" |
6803 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" | 6774 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" |
6804 | integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== | 6775 | integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== |
@@ -6817,15 +6788,16 @@ simple-get@^4.0.0: | |||
6817 | simple-concat "^1.0.0" | 6788 | simple-concat "^1.0.0" |
6818 | 6789 | ||
6819 | simple-peer@^9.7.1, simple-peer@^9.7.2: | 6790 | simple-peer@^9.7.1, simple-peer@^9.7.2: |
6820 | version "9.7.2" | 6791 | version "9.8.0" |
6821 | resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.7.2.tgz#8cd9cb156bf456ad9c3d379119f0c39dfb3b20f7" | 6792 | resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.8.0.tgz#e84a6af664b0eb42dd1cb2349a69c7ad20051d1d" |
6822 | integrity sha512-xeMyxa9B4V0eA6mf17fVr8nm2QhAYFu+ZZv8zkSFFTjJETGF227CshwobrIYZuspJglMD63egcevQXGOrTIsuA== | 6793 | integrity sha512-GK1KhJvEwtZILr6zWvQR3AnBNpLrxwr6b5wcduFxOrQNGLg9Hn92eFsHD7RYPnnWsapxGXFMJcBjNuicqBDRIQ== |
6823 | dependencies: | 6794 | dependencies: |
6824 | debug "^4.0.1" | 6795 | debug "^4.2.0" |
6825 | get-browser-rtc "^1.0.0" | 6796 | err-code "^2.0.3" |
6826 | queue-microtask "^1.1.0" | 6797 | get-browser-rtc "^1.0.2" |
6827 | randombytes "^2.0.3" | 6798 | queue-microtask "^1.2.0" |
6828 | readable-stream "^3.4.0" | 6799 | randombytes "^2.1.0" |
6800 | readable-stream "^3.6.0" | ||
6829 | 6801 | ||
6830 | simple-sha1@^3.0.0, simple-sha1@^3.0.1: | 6802 | simple-sha1@^3.0.0, simple-sha1@^3.0.1: |
6831 | version "3.0.1" | 6803 | version "3.0.1" |
@@ -6854,11 +6826,11 @@ simple-websocket@^8.1.1: | |||
6854 | ws "^7.0.0" | 6826 | ws "^7.0.0" |
6855 | 6827 | ||
6856 | sitemap@^6.1.0: | 6828 | sitemap@^6.1.0: |
6857 | version "6.2.0" | 6829 | version "6.3.3" |
6858 | resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-6.2.0.tgz#06c8b4f39025389a167e0b6d04347919bf62197f" | 6830 | resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-6.3.3.tgz#4ab93745b98930771fa239ed717d15a778cf4485" |
6859 | integrity sha512-ta9BLo/ZLUNgfGVhknA2IHWuIXfcFPxMvMCY3Xhf141rEZoW8G5nIVCDR0/zeXJCAvWk+UzqxyLBtRBH1OOq6w== | 6831 | integrity sha512-hcdtDJG8wNoogsvwohd0/BbGXEH4E2Dj2E0RCcXUGhEojTiZrqib4w689/q+kwabzD8HcGgstBDSbtJThzLuJA== |
6860 | dependencies: | 6832 | dependencies: |
6861 | "@types/node" "^14.0.18" | 6833 | "@types/node" "^14.14.6" |
6862 | "@types/sax" "^1.2.1" | 6834 | "@types/sax" "^1.2.1" |
6863 | arg "^4.1.3" | 6835 | arg "^4.1.3" |
6864 | sax "^1.2.4" | 6836 | sax "^1.2.4" |
@@ -6939,11 +6911,11 @@ socket.io-client@2.3.0: | |||
6939 | to-array "0.1.4" | 6911 | to-array "0.1.4" |
6940 | 6912 | ||
6941 | socket.io-parser@~3.3.0: | 6913 | socket.io-parser@~3.3.0: |
6942 | version "3.3.0" | 6914 | version "3.3.1" |
6943 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" | 6915 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" |
6944 | integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== | 6916 | integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== |
6945 | dependencies: | 6917 | dependencies: |
6946 | component-emitter "1.2.1" | 6918 | component-emitter "~1.3.0" |
6947 | debug "~3.1.0" | 6919 | debug "~3.1.0" |
6948 | isarray "2.0.1" | 6920 | isarray "2.0.1" |
6949 | 6921 | ||
@@ -7025,11 +6997,11 @@ spdx-expression-parse@^3.0.0: | |||
7025 | spdx-license-ids "^3.0.0" | 6997 | spdx-license-ids "^3.0.0" |
7026 | 6998 | ||
7027 | spdx-license-ids@^3.0.0: | 6999 | spdx-license-ids@^3.0.0: |
7028 | version "3.0.5" | 7000 | version "3.0.6" |
7029 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" | 7001 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" |
7030 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== | 7002 | integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== |
7031 | 7003 | ||
7032 | speedometer@^1.0.0, speedometer@^1.1.0: | 7004 | speedometer@^1.1.0: |
7033 | version "1.1.0" | 7005 | version "1.1.0" |
7034 | resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934" | 7006 | resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934" |
7035 | integrity sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ== | 7007 | integrity sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ== |
@@ -7041,7 +7013,14 @@ split2@^0.2.1: | |||
7041 | dependencies: | 7013 | dependencies: |
7042 | through2 "~0.6.1" | 7014 | through2 "~0.6.1" |
7043 | 7015 | ||
7044 | split@^1.0.0: | 7016 | split2@^3.1.1: |
7017 | version "3.2.2" | ||
7018 | resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" | ||
7019 | integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== | ||
7020 | dependencies: | ||
7021 | readable-stream "^3.0.0" | ||
7022 | |||
7023 | split@^1.0.1: | ||
7045 | version "1.0.1" | 7024 | version "1.0.1" |
7046 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" | 7025 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" |
7047 | integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== | 7026 | integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== |
@@ -7184,20 +7163,20 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: | |||
7184 | strip-ansi "^6.0.0" | 7163 | strip-ansi "^6.0.0" |
7185 | 7164 | ||
7186 | string.prototype.trimend@^1.0.1: | 7165 | string.prototype.trimend@^1.0.1: |
7187 | version "1.0.1" | 7166 | version "1.0.2" |
7188 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" | 7167 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" |
7189 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== | 7168 | integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== |
7190 | dependencies: | 7169 | dependencies: |
7191 | define-properties "^1.1.3" | 7170 | define-properties "^1.1.3" |
7192 | es-abstract "^1.17.5" | 7171 | es-abstract "^1.18.0-next.1" |
7193 | 7172 | ||
7194 | string.prototype.trimstart@^1.0.1: | 7173 | string.prototype.trimstart@^1.0.1: |
7195 | version "1.0.1" | 7174 | version "1.0.2" |
7196 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" | 7175 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" |
7197 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== | 7176 | integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== |
7198 | dependencies: | 7177 | dependencies: |
7199 | define-properties "^1.1.3" | 7178 | define-properties "^1.1.3" |
7200 | es-abstract "^1.17.5" | 7179 | es-abstract "^1.18.0-next.1" |
7201 | 7180 | ||
7202 | string2compact@^1.2.5, string2compact@^1.3.0: | 7181 | string2compact@^1.2.5, string2compact@^1.3.0: |
7203 | version "1.3.0" | 7182 | version "1.3.0" |
@@ -7264,12 +7243,7 @@ strip-final-newline@^2.0.0: | |||
7264 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" | 7243 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" |
7265 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== | 7244 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== |
7266 | 7245 | ||
7267 | strip-json-comments@3.0.1: | 7246 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: |
7268 | version "3.0.1" | ||
7269 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" | ||
7270 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== | ||
7271 | |||
7272 | strip-json-comments@^3.1.0: | ||
7273 | version "3.1.1" | 7247 | version "3.1.1" |
7274 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" | 7248 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" |
7275 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== | 7249 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== |
@@ -7303,10 +7277,10 @@ supertest@^4.0.2: | |||
7303 | methods "^1.1.2" | 7277 | methods "^1.1.2" |
7304 | superagent "^3.8.3" | 7278 | superagent "^3.8.3" |
7305 | 7279 | ||
7306 | supports-color@7.1.0, supports-color@^7.1.0: | 7280 | supports-color@7.2.0, supports-color@^7.1.0: |
7307 | version "7.1.0" | 7281 | version "7.2.0" |
7308 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" | 7282 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" |
7309 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== | 7283 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== |
7310 | dependencies: | 7284 | dependencies: |
7311 | has-flag "^4.0.0" | 7285 | has-flag "^4.0.0" |
7312 | 7286 | ||
@@ -7355,9 +7329,9 @@ tar@^4, tar@^4.4.2: | |||
7355 | yallist "^3.0.3" | 7329 | yallist "^3.0.3" |
7356 | 7330 | ||
7357 | term-size@^2.1.0: | 7331 | term-size@^2.1.0: |
7358 | version "2.2.0" | 7332 | version "2.2.1" |
7359 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" | 7333 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" |
7360 | integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== | 7334 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== |
7361 | 7335 | ||
7362 | text-hex@1.0.x: | 7336 | text-hex@1.0.x: |
7363 | version "1.0.0" | 7337 | version "1.0.0" |
@@ -7417,14 +7391,14 @@ timers-ext@^0.1.5: | |||
7417 | next-tick "1" | 7391 | next-tick "1" |
7418 | 7392 | ||
7419 | timm@^1.6.1: | 7393 | timm@^1.6.1: |
7420 | version "1.6.2" | 7394 | version "1.7.1" |
7421 | resolved "https://registry.yarnpkg.com/timm/-/timm-1.6.2.tgz#dfd8c6719f7ba1fcfc6295a32670a1c6d166c0bd" | 7395 | resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" |
7422 | integrity sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw== | 7396 | integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== |
7423 | 7397 | ||
7424 | tinycolor2@^1.4.1: | 7398 | tinycolor2@^1.4.1: |
7425 | version "1.4.1" | 7399 | version "1.4.2" |
7426 | resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" | 7400 | resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" |
7427 | integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= | 7401 | integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== |
7428 | 7402 | ||
7429 | titleize@^2.1.0: | 7403 | titleize@^2.1.0: |
7430 | version "2.1.0" | 7404 | version "2.1.0" |
@@ -7436,6 +7410,11 @@ tlds@1.208.0: | |||
7436 | resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.208.0.tgz#f9a85c272aa500e56c92e7d342fbfdfbddaa9757" | 7410 | resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.208.0.tgz#f9a85c272aa500e56c92e7d342fbfdfbddaa9757" |
7437 | integrity sha512-6kbY7GJpRQXwBddSOAbVUZXjObbCGFXliWWN+kOSEoRWIOyRWLB6zdeKC/Tguwwenl/KsUx016XR50EdHYsxZw== | 7411 | integrity sha512-6kbY7GJpRQXwBddSOAbVUZXjObbCGFXliWWN+kOSEoRWIOyRWLB6zdeKC/Tguwwenl/KsUx016XR50EdHYsxZw== |
7438 | 7412 | ||
7413 | tlds@^1.212.0: | ||
7414 | version "1.212.0" | ||
7415 | resolved "https://registry.yarnpkg.com/tlds/-/tlds-1.212.0.tgz#f3f29bd5d10d0fd9a6f171a5f9d57d58b71eccf7" | ||
7416 | integrity sha512-03rYYO1rGhOYpdYB+wlLY2d0xza6hdN/S67ol2ZpaH+CtFedMVAVhj8ft0rwxEkr90zatou8opBv7Xp6X4cK6g== | ||
7417 | |||
7439 | tmp@0.0.x: | 7418 | tmp@0.0.x: |
7440 | version "0.0.33" | 7419 | version "0.0.33" |
7441 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" | 7420 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" |
@@ -7507,11 +7486,12 @@ toposort-class@^1.0.1: | |||
7507 | integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= | 7486 | integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= |
7508 | 7487 | ||
7509 | torrent-discovery@^9.3.0: | 7488 | torrent-discovery@^9.3.0: |
7510 | version "9.3.0" | 7489 | version "9.4.0" |
7511 | resolved "https://registry.yarnpkg.com/torrent-discovery/-/torrent-discovery-9.3.0.tgz#a3ed527c0b454d0d78db8692dad48c6ffb6e9695" | 7490 | resolved "https://registry.yarnpkg.com/torrent-discovery/-/torrent-discovery-9.4.0.tgz#e6b5f8244e6ea0c48efbcfc88792e033d15e6f56" |
7512 | integrity sha512-rdOfm+o6d+E+nRjeYiCzXGrM9ou7spkZpxu9xhnfKoTJgtWpSYEHXO4BT9hwVF1uoUpm+hOwNnwgkSfBZNMh7g== | 7491 | integrity sha512-+YW9JGbO5bCuDw9YYW//p4iVLV0aP4C+AYrNQjL/+dSNPUtD1ufK1V8UZERt6rIoeNGhutkSVyeO4Fid9Tjxjg== |
7513 | dependencies: | 7492 | dependencies: |
7514 | bittorrent-dht "^10.0.0" | 7493 | bittorrent-dht "^10.0.0" |
7494 | bittorrent-lsd "^1.0.0" | ||
7515 | bittorrent-tracker "^9.0.0" | 7495 | bittorrent-tracker "^9.0.0" |
7516 | debug "^4.0.0" | 7496 | debug "^4.0.0" |
7517 | run-parallel "^1.1.2" | 7497 | run-parallel "^1.1.2" |
@@ -7573,14 +7553,14 @@ tsconfig-paths@^3.9.0: | |||
7573 | strip-bom "^3.0.0" | 7553 | strip-bom "^3.0.0" |
7574 | 7554 | ||
7575 | tslib@^1.8.1, tslib@^1.9.0: | 7555 | tslib@^1.8.1, tslib@^1.9.0: |
7576 | version "1.13.0" | 7556 | version "1.14.1" |
7577 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" | 7557 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" |
7578 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== | 7558 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== |
7579 | 7559 | ||
7580 | tslib@^2.0.0: | 7560 | tslib@^2.0.0: |
7581 | version "2.0.1" | 7561 | version "2.0.3" |
7582 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" | 7562 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" |
7583 | integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== | 7563 | integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== |
7584 | 7564 | ||
7585 | tsutils@^3.17.1: | 7565 | tsutils@^3.17.1: |
7586 | version "3.17.1" | 7566 | version "3.17.1" |
@@ -7690,7 +7670,7 @@ uint64be@^2.0.2: | |||
7690 | dependencies: | 7670 | dependencies: |
7691 | buffer-alloc "^1.1.0" | 7671 | buffer-alloc "^1.1.0" |
7692 | 7672 | ||
7693 | undefsafe@^2.0.2: | 7673 | undefsafe@^2.0.3: |
7694 | version "2.0.3" | 7674 | version "2.0.3" |
7695 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" | 7675 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" |
7696 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== | 7676 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== |
@@ -7719,6 +7699,11 @@ universalify@^1.0.0: | |||
7719 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" | 7699 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" |
7720 | integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== | 7700 | integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== |
7721 | 7701 | ||
7702 | universalify@^2.0.0: | ||
7703 | version "2.0.0" | ||
7704 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" | ||
7705 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== | ||
7706 | |||
7722 | universalify@~0.1.2: | 7707 | universalify@~0.1.2: |
7723 | version "0.1.2" | 7708 | version "0.1.2" |
7724 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" | 7709 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" |
@@ -7734,10 +7719,10 @@ unpipe@1.0.0, unpipe@~1.0.0: | |||
7734 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" | 7719 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" |
7735 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= | 7720 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= |
7736 | 7721 | ||
7737 | update-notifier@^4.0.0: | 7722 | update-notifier@^4.1.0: |
7738 | version "4.1.1" | 7723 | version "4.1.3" |
7739 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746" | 7724 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" |
7740 | integrity sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg== | 7725 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== |
7741 | dependencies: | 7726 | dependencies: |
7742 | boxen "^4.2.0" | 7727 | boxen "^4.2.0" |
7743 | chalk "^3.0.0" | 7728 | chalk "^3.0.0" |
@@ -7754,9 +7739,9 @@ update-notifier@^4.0.0: | |||
7754 | xdg-basedir "^4.0.0" | 7739 | xdg-basedir "^4.0.0" |
7755 | 7740 | ||
7756 | uri-js@^4.2.2: | 7741 | uri-js@^4.2.2: |
7757 | version "4.2.2" | 7742 | version "4.4.0" |
7758 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" | 7743 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" |
7759 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== | 7744 | integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== |
7760 | dependencies: | 7745 | dependencies: |
7761 | punycode "^2.1.0" | 7746 | punycode "^2.1.0" |
7762 | 7747 | ||
@@ -7776,30 +7761,30 @@ useragent@^2.3.0: | |||
7776 | tmp "0.0.x" | 7761 | tmp "0.0.x" |
7777 | 7762 | ||
7778 | ut_metadata@^3.5.0: | 7763 | ut_metadata@^3.5.0: |
7779 | version "3.5.1" | 7764 | version "3.5.2" |
7780 | resolved "https://registry.yarnpkg.com/ut_metadata/-/ut_metadata-3.5.1.tgz#ed135f0d4e08dae582864fcaea288da10e0339a8" | 7765 | resolved "https://registry.yarnpkg.com/ut_metadata/-/ut_metadata-3.5.2.tgz#2351c9348759e929978fa6a08d56ef6f584749e7" |
7781 | integrity sha512-D98YM9dKGHzNFUuqLHLV1vXqbHNfyvTx/rADtvF9P6D1HYV/0JuArlpnQIHhOuWXQGUVyR5XJGRVLKbeNu0o5A== | 7766 | integrity sha512-3XZZuJSeoIUyMYSuDbTbVtP4KAVGHPfU8nmHFkr8LJc+THCaUXwnu/2AV+LCSLarET/hL9IlbNfYTGrt6fOVuQ== |
7782 | dependencies: | 7767 | dependencies: |
7783 | bencode "^2.0.1" | 7768 | bencode "^2.0.1" |
7784 | bitfield "^3.0.0" | 7769 | bitfield "^4.0.0" |
7785 | debug "^4.1.1" | 7770 | debug "^4.2.0" |
7786 | simple-sha1 "^3.0.1" | 7771 | simple-sha1 "^3.0.1" |
7787 | 7772 | ||
7788 | ut_pex@^2.0.0: | 7773 | ut_pex@^2.0.0: |
7789 | version "2.0.0" | 7774 | version "2.0.1" |
7790 | resolved "https://registry.yarnpkg.com/ut_pex/-/ut_pex-2.0.0.tgz#d0c6f2d3d5ee98f38ee004ee852b390d1e7c9ac8" | 7775 | resolved "https://registry.yarnpkg.com/ut_pex/-/ut_pex-2.0.1.tgz#30d3cc19ee32f9513b06ed2b03851ba508566da1" |
7791 | integrity sha512-Uc0IxXGlES1DfeG+ITUISAvCF4Uldj7tt/n7s3TBt0KyXqDViOO26X5WfwXtUpEwn8fyZyerzf/YOK4rIZ2S3Q== | 7776 | integrity sha512-kI1/y1IhbuTqjyVqekSZCd3afPQTpdIRCrON1WXc9jGdcIAaze3FAoZ1ssYJmGBuJbdg7LQO42daJGCaoRXl+A== |
7792 | dependencies: | 7777 | dependencies: |
7793 | bencode "^2.0.0" | 7778 | bencode "^2.0.0" |
7794 | compact2string "^1.2.0" | 7779 | compact2string "^1.2.0" |
7795 | string2compact "^1.2.5" | 7780 | string2compact "^1.2.5" |
7796 | 7781 | ||
7797 | utf-8-validate@^5.0.2: | 7782 | utf-8-validate@^5.0.2: |
7798 | version "5.0.2" | 7783 | version "5.0.3" |
7799 | resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3" | 7784 | resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" |
7800 | integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw== | 7785 | integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== |
7801 | dependencies: | 7786 | dependencies: |
7802 | node-gyp-build "~3.7.0" | 7787 | node-gyp-build "^4.2.0" |
7803 | 7788 | ||
7804 | utif@^2.0.1: | 7789 | utif@^2.0.1: |
7805 | version "2.0.1" | 7790 | version "2.0.1" |
@@ -7854,19 +7839,19 @@ uuid@^3.3.2, uuid@^3.3.3: | |||
7854 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== | 7839 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== |
7855 | 7840 | ||
7856 | uuid@^8.1.0, uuid@^8.3.0: | 7841 | uuid@^8.1.0, uuid@^8.3.0: |
7857 | version "8.3.0" | 7842 | version "8.3.1" |
7858 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" | 7843 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" |
7859 | integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== | 7844 | integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== |
7860 | 7845 | ||
7861 | v8-compile-cache@^2.0.3: | 7846 | v8-compile-cache@^2.0.3: |
7862 | version "2.1.1" | 7847 | version "2.2.0" |
7863 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" | 7848 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" |
7864 | integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== | 7849 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== |
7865 | 7850 | ||
7866 | valid-data-url@^2.0.0: | 7851 | valid-data-url@^3.0.0: |
7867 | version "2.0.0" | 7852 | version "3.0.1" |
7868 | resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-2.0.0.tgz#2220fa9f8d4e761ebd3f3bb02770f1212b810537" | 7853 | resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" |
7869 | integrity sha512-dyCZnv3aCey7yfTgIqdZanKl7xWAEEKCbgmR7SKqyK6QT/Z07ROactrgD1eA37C69ODRj7rNOjzKWVPh0EUjBA== | 7854 | integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA== |
7870 | 7855 | ||
7871 | validate-npm-package-license@^3.0.1: | 7856 | validate-npm-package-license@^3.0.1: |
7872 | version "3.0.4" | 7857 | version "3.0.4" |
@@ -7887,9 +7872,9 @@ validator@^12.0.0: | |||
7887 | integrity sha512-jJfE/DW6tIK1Ek8nCfNFqt8Wb3nzMoAbocBF6/Icgg1ZFSBpObdnwVY2jQj6qUqzhx5jc71fpvBWyLGO7Xl+nQ== | 7872 | integrity sha512-jJfE/DW6tIK1Ek8nCfNFqt8Wb3nzMoAbocBF6/Icgg1ZFSBpObdnwVY2jQj6qUqzhx5jc71fpvBWyLGO7Xl+nQ== |
7888 | 7873 | ||
7889 | validator@^13.0.0, validator@^13.1.1: | 7874 | validator@^13.0.0, validator@^13.1.1: |
7890 | version "13.1.1" | 7875 | version "13.1.17" |
7891 | resolved "https://registry.yarnpkg.com/validator/-/validator-13.1.1.tgz#f8811368473d2173a9d8611572b58c5783f223bf" | 7876 | resolved "https://registry.yarnpkg.com/validator/-/validator-13.1.17.tgz#ad677736950adddd3c37209484a6b2e0966579ad" |
7892 | integrity sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw== | 7877 | integrity sha512-zL5QBoemJ3jYFb2/j38y7ljhwYGXVLUp8H6W1nVxadnAOvUOytec+L7BHh1oBQ82/TzWXHd+GSaxUWp4lROkLg== |
7893 | 7878 | ||
7894 | vary@^1, vary@~1.1.2: | 7879 | vary@^1, vary@~1.1.2: |
7895 | version "1.1.2" | 7880 | version "1.1.2" |
@@ -7927,20 +7912,17 @@ void-elements@^3.1.0: | |||
7927 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" | 7912 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" |
7928 | integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= | 7913 | integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk= |
7929 | 7914 | ||
7930 | web-resource-inliner@^4.3.3: | 7915 | web-resource-inliner@^5.0.0: |
7931 | version "4.3.4" | 7916 | version "5.0.0" |
7932 | resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-4.3.4.tgz#07e1b4bcbcbee1021251b018e902bac5713f1be0" | 7917 | resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-5.0.0.tgz#ac30db8096931f20a7c1b3ade54ff444e2e20f7b" |
7933 | integrity sha512-agVAgRhOOi4GVlvKK34oM23tDgH8390HfLnZY2HZl8OFBwKNvUJkH7t89AT2iluQP8w9VHAAKX6Z8EN7/9tqKA== | 7918 | integrity sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A== |
7934 | dependencies: | 7919 | dependencies: |
7935 | async "^3.1.0" | 7920 | ansi-colors "^4.1.1" |
7936 | chalk "^2.4.2" | 7921 | escape-goat "^3.0.0" |
7937 | datauri "^2.0.0" | ||
7938 | htmlparser2 "^4.0.0" | 7922 | htmlparser2 "^4.0.0" |
7939 | lodash.unescape "^4.0.1" | 7923 | mime "^2.4.6" |
7940 | request "^2.88.0" | 7924 | node-fetch "^2.6.0" |
7941 | safer-buffer "^2.1.2" | 7925 | valid-data-url "^3.0.0" |
7942 | valid-data-url "^2.0.0" | ||
7943 | xtend "^4.0.2" | ||
7944 | 7926 | ||
7945 | webfinger.js@^2.6.6: | 7927 | webfinger.js@^2.6.6: |
7946 | version "2.7.0" | 7928 | version "2.7.0" |
@@ -8008,7 +7990,7 @@ which@2.0.2, which@^2.0.1, which@^2.0.2: | |||
8008 | dependencies: | 7990 | dependencies: |
8009 | isexe "^2.0.0" | 7991 | isexe "^2.0.0" |
8010 | 7992 | ||
8011 | which@^1.1.1, which@^1.2.9: | 7993 | which@^1.1.1: |
8012 | version "1.3.1" | 7994 | version "1.3.1" |
8013 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" | 7995 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" |
8014 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== | 7996 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== |
@@ -8110,10 +8092,10 @@ wordwrap@0.0.2: | |||
8110 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" | 8092 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" |
8111 | integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= | 8093 | integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= |
8112 | 8094 | ||
8113 | workerpool@6.0.0: | 8095 | workerpool@6.0.2: |
8114 | version "6.0.0" | 8096 | version "6.0.2" |
8115 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" | 8097 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" |
8116 | integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== | 8098 | integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== |
8117 | 8099 | ||
8118 | wrap-ansi@^5.1.0: | 8100 | wrap-ansi@^5.1.0: |
8119 | version "5.1.0" | 8101 | version "5.1.0" |
@@ -8155,10 +8137,17 @@ write@1.0.3: | |||
8155 | dependencies: | 8137 | dependencies: |
8156 | mkdirp "^0.5.1" | 8138 | mkdirp "^0.5.1" |
8157 | 8139 | ||
8140 | ws@^5.2.2: | ||
8141 | version "5.2.2" | ||
8142 | resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" | ||
8143 | integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== | ||
8144 | dependencies: | ||
8145 | async-limiter "~1.0.0" | ||
8146 | |||
8158 | ws@^7.0.0, ws@^7.1.2, ws@^7.3.0: | 8147 | ws@^7.0.0, ws@^7.1.2, ws@^7.3.0: |
8159 | version "7.3.1" | 8148 | version "7.4.0" |
8160 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" | 8149 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" |
8161 | integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== | 8150 | integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== |
8162 | 8151 | ||
8163 | ws@~6.1.0: | 8152 | ws@~6.1.0: |
8164 | version "6.1.4" | 8153 | version "6.1.4" |
@@ -8220,7 +8209,7 @@ xmlhttprequest-ssl@~1.5.4: | |||
8220 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" | 8209 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" |
8221 | integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= | 8210 | integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= |
8222 | 8211 | ||
8223 | "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: | 8212 | "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: |
8224 | version "4.0.2" | 8213 | version "4.0.2" |
8225 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" | 8214 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" |
8226 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== | 8215 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== |
@@ -8253,14 +8242,6 @@ yargs-parser@13.1.2, yargs-parser@^13.1.2: | |||
8253 | camelcase "^5.0.0" | 8242 | camelcase "^5.0.0" |
8254 | decamelize "^1.2.0" | 8243 | decamelize "^1.2.0" |
8255 | 8244 | ||
8256 | yargs-parser@^15.0.1: | ||
8257 | version "15.0.1" | ||
8258 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" | ||
8259 | integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== | ||
8260 | dependencies: | ||
8261 | camelcase "^5.0.0" | ||
8262 | decamelize "^1.2.0" | ||
8263 | |||
8264 | yargs-parser@^18.1.2: | 8245 | yargs-parser@^18.1.2: |
8265 | version "18.1.3" | 8246 | version "18.1.3" |
8266 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" | 8247 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" |
@@ -8269,16 +8250,15 @@ yargs-parser@^18.1.2: | |||
8269 | camelcase "^5.0.0" | 8250 | camelcase "^5.0.0" |
8270 | decamelize "^1.2.0" | 8251 | decamelize "^1.2.0" |
8271 | 8252 | ||
8272 | yargs-unparser@1.6.1: | 8253 | yargs-unparser@2.0.0: |
8273 | version "1.6.1" | 8254 | version "2.0.0" |
8274 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" | 8255 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" |
8275 | integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== | 8256 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== |
8276 | dependencies: | 8257 | dependencies: |
8277 | camelcase "^5.3.1" | 8258 | camelcase "^6.0.0" |
8278 | decamelize "^1.2.0" | 8259 | decamelize "^4.0.0" |
8279 | flat "^4.1.0" | 8260 | flat "^5.0.2" |
8280 | is-plain-obj "^1.1.0" | 8261 | is-plain-obj "^2.1.0" |
8281 | yargs "^14.2.3" | ||
8282 | 8262 | ||
8283 | yargs@13.3.2, yargs@^13.3.0: | 8263 | yargs@13.3.2, yargs@^13.3.0: |
8284 | version "13.3.2" | 8264 | version "13.3.2" |
@@ -8296,23 +8276,6 @@ yargs@13.3.2, yargs@^13.3.0: | |||
8296 | y18n "^4.0.0" | 8276 | y18n "^4.0.0" |
8297 | yargs-parser "^13.1.2" | 8277 | yargs-parser "^13.1.2" |
8298 | 8278 | ||
8299 | yargs@^14.2.3: | ||
8300 | version "14.2.3" | ||
8301 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" | ||
8302 | integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== | ||
8303 | dependencies: | ||
8304 | cliui "^5.0.0" | ||
8305 | decamelize "^1.2.0" | ||
8306 | find-up "^3.0.0" | ||
8307 | get-caller-file "^2.0.1" | ||
8308 | require-directory "^2.1.1" | ||
8309 | require-main-filename "^2.0.0" | ||
8310 | set-blocking "^2.0.0" | ||
8311 | string-width "^3.0.0" | ||
8312 | which-module "^2.0.0" | ||
8313 | y18n "^4.0.0" | ||
8314 | yargs-parser "^15.0.1" | ||
8315 | |||
8316 | yargs@^15.4.1: | 8279 | yargs@^15.4.1: |
8317 | version "15.4.1" | 8280 | version "15.4.1" |
8318 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" | 8281 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" |