diff options
author | Chocobozzz <me@florianbigard.com> | 2021-10-11 09:37:30 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2021-10-11 09:37:30 +0200 |
commit | d00e9c54f341547f0874015953f203da90846fa7 (patch) | |
tree | 40d6f8dda05ac192bfba2859e34ba443e8428d33 | |
parent | eecd7ac359178698142717d96a086e511f3363e5 (diff) | |
parent | 89ac282e0437ae839e3d71566f25321f9b9384e9 (diff) | |
download | PeerTube-d00e9c54f341547f0874015953f203da90846fa7.tar.gz PeerTube-d00e9c54f341547f0874015953f203da90846fa7.tar.zst PeerTube-d00e9c54f341547f0874015953f203da90846fa7.zip |
Merge branch 'next' into develop
25 files changed, 244 insertions, 2880 deletions
diff --git a/client/package.json b/client/package.json index ffe7df4cd..afa0efe13 100644 --- a/client/package.json +++ b/client/package.json | |||
@@ -128,7 +128,6 @@ | |||
128 | "typescript": "~4.3.4", | 128 | "typescript": "~4.3.4", |
129 | "video.js": "^7", | 129 | "video.js": "^7", |
130 | "videojs-contextmenu-pt": "^5.4.1", | 130 | "videojs-contextmenu-pt": "^5.4.1", |
131 | "videojs-contrib-quality-levels": "^2.0.9", | ||
132 | "videojs-dock": "^2.0.2", | 131 | "videojs-dock": "^2.0.2", |
133 | "videojs-hotkeys": "^0.2.27", | 132 | "videojs-hotkeys": "^0.2.27", |
134 | "videostream": "~3.2.1", | 133 | "videostream": "~3.2.1", |
diff --git a/client/src/assets/player/p2p-media-loader/hls-plugin.ts b/client/src/assets/player/p2p-media-loader/hls-plugin.ts index a1b07aea6..17b9aba97 100644 --- a/client/src/assets/player/p2p-media-loader/hls-plugin.ts +++ b/client/src/assets/player/p2p-media-loader/hls-plugin.ts | |||
@@ -1,9 +1,9 @@ | |||
1 | // Thanks https://github.com/streamroot/videojs-hlsjs-plugin | 1 | // Thanks https://github.com/streamroot/videojs-hlsjs-plugin |
2 | // We duplicated this plugin to choose the hls.js version we want, because streamroot only provide a bundled file | 2 | // We duplicated this plugin to choose the hls.js version we want, because streamroot only provide a bundled file |
3 | 3 | ||
4 | import Hlsjs, { ErrorData, HlsConfig, Level, ManifestLoadedData } from 'hls.js' | 4 | import Hlsjs, { ErrorData, HlsConfig, Level, LevelSwitchingData, ManifestParsedData } from 'hls.js' |
5 | import videojs from 'video.js' | 5 | import videojs from 'video.js' |
6 | import { HlsjsConfigHandlerOptions, QualityLevelRepresentation, QualityLevels, VideoJSTechHLS } from '../peertube-videojs-typings' | 6 | import { HlsjsConfigHandlerOptions, PeerTubeResolution, VideoJSTechHLS } from '../peertube-videojs-typings' |
7 | 7 | ||
8 | type ErrorCounts = { | 8 | type ErrorCounts = { |
9 | [ type: string ]: number | 9 | [ type: string ]: number |
@@ -102,15 +102,10 @@ class Html5Hlsjs { | |||
102 | private dvrDuration: number = null | 102 | private dvrDuration: number = null |
103 | private edgeMargin: number = null | 103 | private edgeMargin: number = null |
104 | 104 | ||
105 | private handlers: { [ id in 'play' | 'playing' | 'textTracksChange' | 'audioTracksChange' ]: EventListener } = { | 105 | private handlers: { [ id in 'play' ]: EventListener } = { |
106 | play: null, | 106 | play: null |
107 | playing: null, | ||
108 | textTracksChange: null, | ||
109 | audioTracksChange: null | ||
110 | } | 107 | } |
111 | 108 | ||
112 | private uiTextTrackHandled = false | ||
113 | |||
114 | constructor (vjs: typeof videojs, source: videojs.Tech.SourceObject, tech: videojs.Tech) { | 109 | constructor (vjs: typeof videojs, source: videojs.Tech.SourceObject, tech: videojs.Tech) { |
115 | this.vjs = vjs | 110 | this.vjs = vjs |
116 | this.source = source | 111 | this.source = source |
@@ -177,10 +172,6 @@ class Html5Hlsjs { | |||
177 | // See comment for `initialize` method. | 172 | // See comment for `initialize` method. |
178 | dispose () { | 173 | dispose () { |
179 | this.videoElement.removeEventListener('play', this.handlers.play) | 174 | this.videoElement.removeEventListener('play', this.handlers.play) |
180 | this.videoElement.removeEventListener('playing', this.handlers.playing) | ||
181 | |||
182 | this.player.textTracks().removeEventListener('change', this.handlers.textTracksChange) | ||
183 | this.uiTextTrackHandled = false | ||
184 | 175 | ||
185 | this.hls.destroy() | 176 | this.hls.destroy() |
186 | } | 177 | } |
@@ -281,11 +272,7 @@ class Html5Hlsjs { | |||
281 | } | 272 | } |
282 | } | 273 | } |
283 | 274 | ||
284 | private switchQuality (qualityId: number) { | 275 | private buildLevelLabel (level: Level) { |
285 | this.hls.currentLevel = qualityId | ||
286 | } | ||
287 | |||
288 | private _levelLabel (level: Level) { | ||
289 | if (this.player.srOptions_.levelLabelHandler) { | 276 | if (this.player.srOptions_.levelLabelHandler) { |
290 | return this.player.srOptions_.levelLabelHandler(level as any) | 277 | return this.player.srOptions_.levelLabelHandler(level as any) |
291 | } | 278 | } |
@@ -294,167 +281,37 @@ class Html5Hlsjs { | |||
294 | if (level.width) return Math.round(level.width * 9 / 16) + 'p' | 281 | if (level.width) return Math.round(level.width * 9 / 16) + 'p' |
295 | if (level.bitrate) return (level.bitrate / 1000) + 'kbps' | 282 | if (level.bitrate) return (level.bitrate / 1000) + 'kbps' |
296 | 283 | ||
297 | return 0 | 284 | return '0' |
298 | } | ||
299 | |||
300 | private _relayQualityChange (qualityLevels: QualityLevels) { | ||
301 | // Determine if it is "Auto" (all tracks enabled) | ||
302 | let isAuto = true | ||
303 | |||
304 | for (let i = 0; i < qualityLevels.length; i++) { | ||
305 | if (!qualityLevels[i]._enabled) { | ||
306 | isAuto = false | ||
307 | break | ||
308 | } | ||
309 | } | ||
310 | |||
311 | // Interact with ME | ||
312 | if (isAuto) { | ||
313 | this.hls.currentLevel = -1 | ||
314 | return | ||
315 | } | ||
316 | |||
317 | // Find ID of highest enabled track | ||
318 | let selectedTrack: number | ||
319 | |||
320 | for (selectedTrack = qualityLevels.length - 1; selectedTrack >= 0; selectedTrack--) { | ||
321 | if (qualityLevels[selectedTrack]._enabled) { | ||
322 | break | ||
323 | } | ||
324 | } | ||
325 | |||
326 | this.hls.currentLevel = selectedTrack | ||
327 | } | ||
328 | |||
329 | private _handleQualityLevels () { | ||
330 | if (!this.metadata) return | ||
331 | |||
332 | const qualityLevels = this.player.qualityLevels?.() | ||
333 | if (!qualityLevels) return | ||
334 | |||
335 | for (let i = 0; i < this.metadata.levels.length; i++) { | ||
336 | const details = this.metadata.levels[i] | ||
337 | const representation: QualityLevelRepresentation = { | ||
338 | id: i, | ||
339 | width: details.width, | ||
340 | height: details.height, | ||
341 | bandwidth: details.bitrate, | ||
342 | bitrate: details.bitrate, | ||
343 | _enabled: true | ||
344 | } | ||
345 | |||
346 | const self = this | ||
347 | representation.enabled = function (this: QualityLevels, level: number, toggle?: boolean) { | ||
348 | // Brightcove switcher works TextTracks-style (enable tracks that it wants to ABR on) | ||
349 | if (typeof toggle === 'boolean') { | ||
350 | this[level]._enabled = toggle | ||
351 | self._relayQualityChange(this) | ||
352 | } | ||
353 | |||
354 | return this[level]._enabled | ||
355 | } | ||
356 | |||
357 | qualityLevels.addQualityLevel(representation) | ||
358 | } | ||
359 | } | 285 | } |
360 | 286 | ||
361 | private _notifyVideoQualities () { | 287 | private _notifyVideoQualities () { |
362 | if (!this.metadata) return | 288 | if (!this.metadata) return |
363 | const cleanTracklist = [] | ||
364 | 289 | ||
365 | if (this.metadata.levels.length > 1) { | 290 | const resolutions: PeerTubeResolution[] = [] |
366 | const autoLevel = { | ||
367 | id: -1, | ||
368 | label: 'auto', | ||
369 | selected: this.hls.manualLevel === -1 | ||
370 | } | ||
371 | cleanTracklist.push(autoLevel) | ||
372 | } | ||
373 | 291 | ||
374 | this.metadata.levels.forEach((level, index) => { | 292 | this.metadata.levels.forEach((level, index) => { |
375 | // Don't write in level (shared reference with Hls.js) | 293 | resolutions.push({ |
376 | const quality = { | ||
377 | id: index, | 294 | id: index, |
378 | selected: index === this.hls.manualLevel, | 295 | height: level.height, |
379 | label: this._levelLabel(level) | 296 | width: level.width, |
380 | } | 297 | bitrate: level.bitrate, |
381 | 298 | label: this.buildLevelLabel(level), | |
382 | cleanTracklist.push(quality) | 299 | selected: level.id === this.hls.manualLevel, |
300 | |||
301 | selectCallback: () => { | ||
302 | this.hls.currentLevel = index | ||
303 | } | ||
304 | }) | ||
383 | }) | 305 | }) |
384 | 306 | ||
385 | const payload = { | 307 | resolutions.push({ |
386 | qualityData: { video: cleanTracklist }, | 308 | id: -1, |
387 | qualitySwitchCallback: this.switchQuality.bind(this) | 309 | label: this.player.localize('Auto'), |
388 | } | 310 | selected: true, |
389 | 311 | selectCallback: () => this.hls.currentLevel = -1 | |
390 | this.tech.trigger('loadedqualitydata', payload) | 312 | }) |
391 | |||
392 | // Self-de-register so we don't raise the payload multiple times | ||
393 | this.videoElement.removeEventListener('playing', this.handlers.playing) | ||
394 | } | ||
395 | |||
396 | private _updateSelectedAudioTrack () { | ||
397 | const playerAudioTracks = this.tech.audioTracks() | ||
398 | for (let j = 0; j < playerAudioTracks.length; j++) { | ||
399 | // FIXME: typings | ||
400 | if ((playerAudioTracks[j] as any).enabled) { | ||
401 | this.hls.audioTrack = j | ||
402 | break | ||
403 | } | ||
404 | } | ||
405 | } | ||
406 | |||
407 | private _onAudioTracks () { | ||
408 | const hlsAudioTracks = this.hls.audioTracks | ||
409 | const playerAudioTracks = this.tech.audioTracks() | ||
410 | |||
411 | if (hlsAudioTracks.length > 1 && playerAudioTracks.length === 0) { | ||
412 | // Add Hls.js audio tracks if not added yet | ||
413 | for (let i = 0; i < hlsAudioTracks.length; i++) { | ||
414 | playerAudioTracks.addTrack(new this.vjs.AudioTrack({ | ||
415 | id: i.toString(), | ||
416 | kind: 'alternative', | ||
417 | label: hlsAudioTracks[i].name || hlsAudioTracks[i].lang, | ||
418 | language: hlsAudioTracks[i].lang, | ||
419 | enabled: i === this.hls.audioTrack | ||
420 | })) | ||
421 | } | ||
422 | |||
423 | // Handle audio track change event | ||
424 | this.handlers.audioTracksChange = this._updateSelectedAudioTrack.bind(this) | ||
425 | playerAudioTracks.addEventListener('change', this.handlers.audioTracksChange) | ||
426 | } | ||
427 | } | ||
428 | |||
429 | private _getTextTrackLabel (textTrack: TextTrack) { | ||
430 | // Label here is readable label and is optional (used in the UI so if it is there it should be different) | ||
431 | return textTrack.label ? textTrack.label : textTrack.language | ||
432 | } | ||
433 | |||
434 | private _isSameTextTrack (track1: TextTrack, track2: TextTrack) { | ||
435 | return this._getTextTrackLabel(track1) === this._getTextTrackLabel(track2) && | ||
436 | track1.kind === track2.kind | ||
437 | } | ||
438 | |||
439 | private _updateSelectedTextTrack () { | ||
440 | const playerTextTracks = this.player.textTracks() | ||
441 | let activeTrack: TextTrack = null | ||
442 | |||
443 | for (let j = 0; j < playerTextTracks.length; j++) { | ||
444 | if (playerTextTracks[j].mode === 'showing') { | ||
445 | activeTrack = playerTextTracks[j] | ||
446 | break | ||
447 | } | ||
448 | } | ||
449 | 313 | ||
450 | const hlsjsTracks = this.videoElement.textTracks | 314 | this.player.peertubeResolutions().add(resolutions) |
451 | for (let k = 0; k < hlsjsTracks.length; k++) { | ||
452 | if (hlsjsTracks[k].kind === 'subtitles' || hlsjsTracks[k].kind === 'captions') { | ||
453 | hlsjsTracks[k].mode = activeTrack && this._isSameTextTrack(hlsjsTracks[k], activeTrack) | ||
454 | ? 'showing' | ||
455 | : 'disabled' | ||
456 | } | ||
457 | } | ||
458 | } | 315 | } |
459 | 316 | ||
460 | private _startLoad () { | 317 | private _startLoad () { |
@@ -472,97 +329,10 @@ class Html5Hlsjs { | |||
472 | return result | 329 | return result |
473 | } | 330 | } |
474 | 331 | ||
475 | private _filterDisplayableTextTracks (textTracks: TextTrackList) { | 332 | private _onMetaData (_event: any, data: ManifestParsedData) { |
476 | const displayableTracks = [] | ||
477 | |||
478 | // Filter out tracks that is displayable (captions or subtitles) | ||
479 | for (let idx = 0; idx < textTracks.length; idx++) { | ||
480 | if (textTracks[idx].kind === 'subtitles' || textTracks[idx].kind === 'captions') { | ||
481 | displayableTracks.push(textTracks[idx]) | ||
482 | } | ||
483 | } | ||
484 | |||
485 | return displayableTracks | ||
486 | } | ||
487 | |||
488 | private _updateTextTrackList () { | ||
489 | const displayableTracks = this._filterDisplayableTextTracks(this.videoElement.textTracks) | ||
490 | const playerTextTracks = this.player.textTracks() | ||
491 | |||
492 | // Add stubs to make the caption switcher shows up | ||
493 | // Adding the Hls.js text track in will make us have double captions | ||
494 | for (let idx = 0; idx < displayableTracks.length; idx++) { | ||
495 | let isAdded = false | ||
496 | |||
497 | for (let jdx = 0; jdx < playerTextTracks.length; jdx++) { | ||
498 | if (this._isSameTextTrack(displayableTracks[idx], playerTextTracks[jdx])) { | ||
499 | isAdded = true | ||
500 | break | ||
501 | } | ||
502 | } | ||
503 | |||
504 | if (!isAdded) { | ||
505 | const hlsjsTextTrack = displayableTracks[idx] | ||
506 | this.player.addRemoteTextTrack({ | ||
507 | kind: hlsjsTextTrack.kind as videojs.TextTrack.Kind, | ||
508 | label: this._getTextTrackLabel(hlsjsTextTrack), | ||
509 | language: hlsjsTextTrack.language, | ||
510 | srclang: hlsjsTextTrack.language | ||
511 | }, false) | ||
512 | } | ||
513 | } | ||
514 | |||
515 | // Handle UI switching | ||
516 | this._updateSelectedTextTrack() | ||
517 | |||
518 | if (!this.uiTextTrackHandled) { | ||
519 | this.handlers.textTracksChange = this._updateSelectedTextTrack.bind(this) | ||
520 | playerTextTracks.addEventListener('change', this.handlers.textTracksChange) | ||
521 | |||
522 | this.uiTextTrackHandled = true | ||
523 | } | ||
524 | } | ||
525 | |||
526 | private _onMetaData (_event: any, data: ManifestLoadedData) { | ||
527 | // This could arrive before 'loadedqualitydata' handlers is registered, remember it so we can raise it later | 333 | // This could arrive before 'loadedqualitydata' handlers is registered, remember it so we can raise it later |
528 | this.metadata = data as any | 334 | this.metadata = data |
529 | this._handleQualityLevels() | 335 | this._notifyVideoQualities() |
530 | } | ||
531 | |||
532 | private _createCueHandler (captionConfig: any) { | ||
533 | return { | ||
534 | newCue: (track: any, startTime: number, endTime: number, captionScreen: { rows: any[] }) => { | ||
535 | let row: any | ||
536 | let cue: VTTCue | ||
537 | let text: string | ||
538 | const VTTCue = (window as any).VTTCue || (window as any).TextTrackCue | ||
539 | |||
540 | for (let r = 0; r < captionScreen.rows.length; r++) { | ||
541 | row = captionScreen.rows[r] | ||
542 | text = '' | ||
543 | |||
544 | if (!row.isEmpty()) { | ||
545 | for (let c = 0; c < row.chars.length; c++) { | ||
546 | text += row.chars[c].ucharj | ||
547 | } | ||
548 | |||
549 | cue = new VTTCue(startTime, endTime, text.trim()) | ||
550 | |||
551 | // typeof null === 'object' | ||
552 | if (captionConfig != null && typeof captionConfig === 'object') { | ||
553 | // Copy client overridden property into the cue object | ||
554 | const configKeys = Object.keys(captionConfig) | ||
555 | |||
556 | for (let k = 0; k < configKeys.length; k++) { | ||
557 | cue[configKeys[k]] = captionConfig[configKeys[k]] | ||
558 | } | ||
559 | } | ||
560 | track.addCue(cue) | ||
561 | if (endTime === startTime) track.addCue(new VTTCue(endTime + 5, '')) | ||
562 | } | ||
563 | } | ||
564 | } | ||
565 | } | ||
566 | } | 336 | } |
567 | 337 | ||
568 | private _initHlsjs () { | 338 | private _initHlsjs () { |
@@ -577,11 +347,6 @@ class Html5Hlsjs { | |||
577 | this.hlsjsConfig.autoStartLoad = false | 347 | this.hlsjsConfig.autoStartLoad = false |
578 | } | 348 | } |
579 | 349 | ||
580 | const captionConfig = srOptions_?.captionConfig || techOptions.captionConfig | ||
581 | if (captionConfig) { | ||
582 | this.hlsjsConfig.cueHandler = this._createCueHandler(captionConfig) | ||
583 | } | ||
584 | |||
585 | // If the user explicitly sets autoStartLoad to false, we're not going to enter the if block above | 350 | // If the user explicitly sets autoStartLoad to false, we're not going to enter the if block above |
586 | // That's why we have a separate if block here to set the 'play' listener | 351 | // That's why we have a separate if block here to set the 'play' listener |
587 | if (this.hlsjsConfig.autoStartLoad === false) { | 352 | if (this.hlsjsConfig.autoStartLoad === false) { |
@@ -589,17 +354,12 @@ class Html5Hlsjs { | |||
589 | this.videoElement.addEventListener('play', this.handlers.play) | 354 | this.videoElement.addEventListener('play', this.handlers.play) |
590 | } | 355 | } |
591 | 356 | ||
592 | // _notifyVideoQualities sometimes runs before the quality picker event handler is registered -> no video switcher | ||
593 | this.handlers.playing = this._notifyVideoQualities.bind(this) | ||
594 | this.videoElement.addEventListener('playing', this.handlers.playing) | ||
595 | |||
596 | this.hls = new Hlsjs(this.hlsjsConfig) | 357 | this.hls = new Hlsjs(this.hlsjsConfig) |
597 | 358 | ||
598 | this._executeHooksFor('beforeinitialize') | 359 | this._executeHooksFor('beforeinitialize') |
599 | 360 | ||
600 | this.hls.on(Hlsjs.Events.ERROR, (event, data) => this._onError(event, data)) | 361 | this.hls.on(Hlsjs.Events.ERROR, (event, data) => this._onError(event, data)) |
601 | this.hls.on(Hlsjs.Events.AUDIO_TRACKS_UPDATED, () => this._onAudioTracks()) | 362 | this.hls.on(Hlsjs.Events.MANIFEST_PARSED, (event, data) => this._onMetaData(event, data)) |
602 | this.hls.on(Hlsjs.Events.MANIFEST_PARSED, (event, data) => this._onMetaData(event, data as any)) // FIXME: typings | ||
603 | this.hls.on(Hlsjs.Events.LEVEL_LOADED, (event, data) => { | 363 | this.hls.on(Hlsjs.Events.LEVEL_LOADED, (event, data) => { |
604 | // The DVR plugin will auto seek to "live edge" on start up | 364 | // The DVR plugin will auto seek to "live edge" on start up |
605 | if (this.hlsjsConfig.liveSyncDuration) { | 365 | if (this.hlsjsConfig.liveSyncDuration) { |
@@ -612,12 +372,25 @@ class Html5Hlsjs { | |||
612 | this.dvrDuration = data.details.totalduration | 372 | this.dvrDuration = data.details.totalduration |
613 | this._duration = this.isLive ? Infinity : data.details.totalduration | 373 | this._duration = this.isLive ? Infinity : data.details.totalduration |
614 | }) | 374 | }) |
375 | |||
615 | this.hls.once(Hlsjs.Events.FRAG_LOADED, () => { | 376 | this.hls.once(Hlsjs.Events.FRAG_LOADED, () => { |
616 | // Emit custom 'loadedmetadata' event for parity with `videojs-contrib-hls` | 377 | // Emit custom 'loadedmetadata' event for parity with `videojs-contrib-hls` |
617 | // Ref: https://github.com/videojs/videojs-contrib-hls#loadedmetadata | 378 | // Ref: https://github.com/videojs/videojs-contrib-hls#loadedmetadata |
618 | this.tech.trigger('loadedmetadata') | 379 | this.tech.trigger('loadedmetadata') |
619 | }) | 380 | }) |
620 | 381 | ||
382 | this.hls.on(Hlsjs.Events.LEVEL_SWITCHING, (_e, data: LevelSwitchingData) => { | ||
383 | const resolutionId = this.hls.autoLevelEnabled | ||
384 | ? -1 | ||
385 | : data.level | ||
386 | |||
387 | const autoResolutionChosenId = this.hls.autoLevelEnabled | ||
388 | ? data.level | ||
389 | : -1 | ||
390 | |||
391 | this.player.peertubeResolutions().select({ id: resolutionId, autoResolutionChosenId, byEngine: true }) | ||
392 | }) | ||
393 | |||
621 | this.hls.attachMedia(this.videoElement) | 394 | this.hls.attachMedia(this.videoElement) |
622 | 395 | ||
623 | this.hls.loadSource(this.source.src) | 396 | this.hls.loadSource(this.source.src) |
diff --git a/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts b/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts index acd40636e..d917fda03 100644 --- a/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts +++ b/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts | |||
@@ -116,14 +116,6 @@ class P2pMediaLoaderPlugin extends Plugin { | |||
116 | const options = this.player.tech(true).options_ as any | 116 | const options = this.player.tech(true).options_ as any |
117 | this.p2pEngine = options.hlsjsConfig.loader.getEngine() | 117 | this.p2pEngine = options.hlsjsConfig.loader.getEngine() |
118 | 118 | ||
119 | this.hlsjs.on(Hlsjs.Events.LEVEL_SWITCHING, (_: any, data: any) => { | ||
120 | this.trigger('resolutionChange', { auto: this.hlsjs.autoLevelEnabled, resolutionId: data.height }) | ||
121 | }) | ||
122 | |||
123 | this.hlsjs.on(Hlsjs.Events.MANIFEST_LOADED, (_: any, data: any) => { | ||
124 | this.trigger('resolutionsLoaded') | ||
125 | }) | ||
126 | |||
127 | this.p2pEngine.on(Events.SegmentError, (segment: Segment, err) => { | 119 | this.p2pEngine.on(Events.SegmentError, (segment: Segment, err) => { |
128 | console.error('Segment error.', segment, err) | 120 | console.error('Segment error.', segment, err) |
129 | 121 | ||
diff --git a/client/src/assets/player/peertube-player-manager.ts b/client/src/assets/player/peertube-player-manager.ts index f3c21fc4c..230d6298b 100644 --- a/client/src/assets/player/peertube-player-manager.ts +++ b/client/src/assets/player/peertube-player-manager.ts | |||
@@ -1,13 +1,13 @@ | |||
1 | import 'videojs-hotkeys/videojs.hotkeys' | 1 | import 'videojs-hotkeys/videojs.hotkeys' |
2 | import 'videojs-dock' | 2 | import 'videojs-dock' |
3 | import 'videojs-contextmenu-pt' | 3 | import 'videojs-contextmenu-pt' |
4 | import 'videojs-contrib-quality-levels' | ||
5 | import './upnext/end-card' | 4 | import './upnext/end-card' |
6 | import './upnext/upnext-plugin' | 5 | import './upnext/upnext-plugin' |
7 | import './stats/stats-card' | 6 | import './stats/stats-card' |
8 | import './stats/stats-plugin' | 7 | import './stats/stats-plugin' |
9 | import './bezels/bezels-plugin' | 8 | import './bezels/bezels-plugin' |
10 | import './peertube-plugin' | 9 | import './peertube-plugin' |
10 | import './peertube-resolutions-plugin' | ||
11 | import './videojs-components/next-previous-video-button' | 11 | import './videojs-components/next-previous-video-button' |
12 | import './videojs-components/p2p-info-button' | 12 | import './videojs-components/p2p-info-button' |
13 | import './videojs-components/peertube-link-button' | 13 | import './videojs-components/peertube-link-button' |
diff --git a/client/src/assets/player/peertube-plugin.ts b/client/src/assets/player/peertube-plugin.ts index b4841b235..9b4dc9bd5 100644 --- a/client/src/assets/player/peertube-plugin.ts +++ b/client/src/assets/player/peertube-plugin.ts | |||
@@ -1,4 +1,3 @@ | |||
1 | import './videojs-components/settings-menu-button' | ||
2 | import videojs from 'video.js' | 1 | import videojs from 'video.js' |
3 | import { timeToInt } from '@shared/core-utils' | 2 | import { timeToInt } from '@shared/core-utils' |
4 | import { | 3 | import { |
@@ -10,7 +9,7 @@ import { | |||
10 | saveVideoWatchHistory, | 9 | saveVideoWatchHistory, |
11 | saveVolumeInStore | 10 | saveVolumeInStore |
12 | } from './peertube-player-local-storage' | 11 | } from './peertube-player-local-storage' |
13 | import { PeerTubePluginOptions, ResolutionUpdateData, UserWatching, VideoJSCaption } from './peertube-videojs-typings' | 12 | import { PeerTubePluginOptions, UserWatching, VideoJSCaption } from './peertube-videojs-typings' |
14 | import { isMobile } from './utils' | 13 | import { isMobile } from './utils' |
15 | 14 | ||
16 | const Plugin = videojs.getPlugin('plugin') | 15 | const Plugin = videojs.getPlugin('plugin') |
@@ -27,7 +26,6 @@ class PeerTubePlugin extends Plugin { | |||
27 | 26 | ||
28 | private videoViewInterval: any | 27 | private videoViewInterval: any |
29 | private userWatchingVideoInterval: any | 28 | private userWatchingVideoInterval: any |
30 | private lastResolutionChange: ResolutionUpdateData | ||
31 | 29 | ||
32 | private isLive: boolean | 30 | private isLive: boolean |
33 | 31 | ||
@@ -54,22 +52,6 @@ class PeerTubePlugin extends Plugin { | |||
54 | this.player.ready(() => { | 52 | this.player.ready(() => { |
55 | const playerOptions = this.player.options_ | 53 | const playerOptions = this.player.options_ |
56 | 54 | ||
57 | if (options.mode === 'webtorrent') { | ||
58 | this.player.webtorrent().on('resolutionChange', (_: any, d: any) => this.handleResolutionChange(d)) | ||
59 | this.player.webtorrent().on('autoResolutionChange', (_: any, d: any) => this.trigger('autoResolutionChange', d)) | ||
60 | } | ||
61 | |||
62 | if (options.mode === 'p2p-media-loader') { | ||
63 | this.player.p2pMediaLoader().on('resolutionChange', (_: any, d: any) => this.handleResolutionChange(d)) | ||
64 | } | ||
65 | |||
66 | this.player.tech(true).on('loadedqualitydata', () => { | ||
67 | setTimeout(() => { | ||
68 | // Replay a resolution change, now we loaded all quality data | ||
69 | if (this.lastResolutionChange) this.handleResolutionChange(this.lastResolutionChange) | ||
70 | }, 0) | ||
71 | }) | ||
72 | |||
73 | const volume = getStoredVolume() | 55 | const volume = getStoredVolume() |
74 | if (volume !== undefined) this.player.volume(volume) | 56 | if (volume !== undefined) this.player.volume(volume) |
75 | 57 | ||
@@ -97,7 +79,7 @@ class PeerTubePlugin extends Plugin { | |||
97 | }) | 79 | }) |
98 | } | 80 | } |
99 | 81 | ||
100 | this.player.textTracks().on('change', () => { | 82 | this.player.textTracks().addEventListener('change', () => { |
101 | const showing = this.player.textTracks().tracks_.find(t => { | 83 | const showing = this.player.textTracks().tracks_.find(t => { |
102 | return t.kind === 'captions' && t.mode === 'showing' | 84 | return t.kind === 'captions' && t.mode === 'showing' |
103 | }) | 85 | }) |
@@ -216,22 +198,6 @@ class PeerTubePlugin extends Plugin { | |||
216 | return fetch(url, { method: 'PUT', body, headers }) | 198 | return fetch(url, { method: 'PUT', body, headers }) |
217 | } | 199 | } |
218 | 200 | ||
219 | private handleResolutionChange (data: ResolutionUpdateData) { | ||
220 | this.lastResolutionChange = data | ||
221 | |||
222 | const qualityLevels = this.player.qualityLevels() | ||
223 | |||
224 | for (let i = 0; i < qualityLevels.length; i++) { | ||
225 | if (qualityLevels[i].height === data.resolutionId) { | ||
226 | data.id = qualityLevels[i].id | ||
227 | break | ||
228 | } | ||
229 | } | ||
230 | |||
231 | console.log('Resolution changed.', data) | ||
232 | this.trigger('resolutionChange', data) | ||
233 | } | ||
234 | |||
235 | private listenControlBarMouse () { | 201 | private listenControlBarMouse () { |
236 | this.player.controlBar.on('mouseenter', () => { | 202 | this.player.controlBar.on('mouseenter', () => { |
237 | this.mouseInControlBar = true | 203 | this.mouseInControlBar = true |
diff --git a/client/src/assets/player/peertube-resolutions-plugin.ts b/client/src/assets/player/peertube-resolutions-plugin.ts new file mode 100644 index 000000000..cc36f18f3 --- /dev/null +++ b/client/src/assets/player/peertube-resolutions-plugin.ts | |||
@@ -0,0 +1,88 @@ | |||
1 | import videojs from 'video.js' | ||
2 | import { PeerTubeResolution } from './peertube-videojs-typings' | ||
3 | |||
4 | const Plugin = videojs.getPlugin('plugin') | ||
5 | |||
6 | class PeerTubeResolutionsPlugin extends Plugin { | ||
7 | private currentSelection: PeerTubeResolution | ||
8 | private resolutions: PeerTubeResolution[] = [] | ||
9 | |||
10 | private autoResolutionChosenId: number | ||
11 | private autoResolutionEnabled = true | ||
12 | |||
13 | add (resolutions: PeerTubeResolution[]) { | ||
14 | for (const r of resolutions) { | ||
15 | this.resolutions.push(r) | ||
16 | } | ||
17 | |||
18 | this.currentSelection = this.getSelected() | ||
19 | |||
20 | this.sort() | ||
21 | this.trigger('resolutionsAdded') | ||
22 | } | ||
23 | |||
24 | getResolutions () { | ||
25 | return this.resolutions | ||
26 | } | ||
27 | |||
28 | getSelected () { | ||
29 | return this.resolutions.find(r => r.selected) | ||
30 | } | ||
31 | |||
32 | getAutoResolutionChosen () { | ||
33 | return this.resolutions.find(r => r.id === this.autoResolutionChosenId) | ||
34 | } | ||
35 | |||
36 | select (options: { | ||
37 | id: number | ||
38 | byEngine: boolean | ||
39 | autoResolutionChosenId?: number | ||
40 | }) { | ||
41 | const { id, autoResolutionChosenId, byEngine } = options | ||
42 | |||
43 | if (this.currentSelection?.id === id && this.autoResolutionChosenId === autoResolutionChosenId) return | ||
44 | |||
45 | this.autoResolutionChosenId = autoResolutionChosenId | ||
46 | |||
47 | for (const r of this.resolutions) { | ||
48 | r.selected = r.id === id | ||
49 | |||
50 | if (r.selected) { | ||
51 | this.currentSelection = r | ||
52 | |||
53 | if (!byEngine) r.selectCallback() | ||
54 | } | ||
55 | } | ||
56 | |||
57 | this.trigger('resolutionChanged') | ||
58 | } | ||
59 | |||
60 | disableAutoResolution () { | ||
61 | this.autoResolutionEnabled = false | ||
62 | this.trigger('autoResolutionEnabledChanged') | ||
63 | } | ||
64 | |||
65 | enabledAutoResolution () { | ||
66 | this.autoResolutionEnabled = true | ||
67 | this.trigger('autoResolutionEnabledChanged') | ||
68 | } | ||
69 | |||
70 | isAutoResolutionEnabeld () { | ||
71 | return this.autoResolutionEnabled | ||
72 | } | ||
73 | |||
74 | private sort () { | ||
75 | this.resolutions.sort((a, b) => { | ||
76 | if (a.id === -1) return 1 | ||
77 | if (b.id === -1) return -1 | ||
78 | |||
79 | if (a.height > b.height) return -1 | ||
80 | if (a.height === b.height) return 0 | ||
81 | return 1 | ||
82 | }) | ||
83 | } | ||
84 | |||
85 | } | ||
86 | |||
87 | videojs.registerPlugin('peertubeResolutions', PeerTubeResolutionsPlugin) | ||
88 | export { PeerTubeResolutionsPlugin } | ||
diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts index 97828c802..bd6db4ffc 100644 --- a/client/src/assets/player/peertube-videojs-typings.ts +++ b/client/src/assets/player/peertube-videojs-typings.ts | |||
@@ -1,6 +1,3 @@ | |||
1 | // FIXME: lint | ||
2 | /* eslint-disable @typescript-eslint/ban-types */ | ||
3 | |||
4 | import { HlsConfig, Level } from 'hls.js' | 1 | import { HlsConfig, Level } from 'hls.js' |
5 | import videojs from 'video.js' | 2 | import videojs from 'video.js' |
6 | import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models' | 3 | import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models' |
@@ -8,11 +5,12 @@ import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin | |||
8 | import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager' | 5 | import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager' |
9 | import { PlayerMode } from './peertube-player-manager' | 6 | import { PlayerMode } from './peertube-player-manager' |
10 | import { PeerTubePlugin } from './peertube-plugin' | 7 | import { PeerTubePlugin } from './peertube-plugin' |
8 | import { PeerTubeResolutionsPlugin } from './peertube-resolutions-plugin' | ||
11 | import { PlaylistPlugin } from './playlist/playlist-plugin' | 9 | import { PlaylistPlugin } from './playlist/playlist-plugin' |
12 | import { EndCardOptions } from './upnext/end-card' | ||
13 | import { StatsCardOptions } from './stats/stats-card' | 10 | import { StatsCardOptions } from './stats/stats-card' |
14 | import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' | ||
15 | import { StatsForNerdsPlugin } from './stats/stats-plugin' | 11 | import { StatsForNerdsPlugin } from './stats/stats-plugin' |
12 | import { EndCardOptions } from './upnext/end-card' | ||
13 | import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin' | ||
16 | 14 | ||
17 | declare module 'video.js' { | 15 | declare module 'video.js' { |
18 | 16 | ||
@@ -37,16 +35,15 @@ declare module 'video.js' { | |||
37 | 35 | ||
38 | p2pMediaLoader (): P2pMediaLoaderPlugin | 36 | p2pMediaLoader (): P2pMediaLoaderPlugin |
39 | 37 | ||
38 | peertubeResolutions (): PeerTubeResolutionsPlugin | ||
39 | |||
40 | contextmenuUI (options: any): any | 40 | contextmenuUI (options: any): any |
41 | 41 | ||
42 | bezels (): void | 42 | bezels (): void |
43 | 43 | ||
44 | stats (options?: StatsCardOptions): StatsForNerdsPlugin | 44 | stats (options?: StatsCardOptions): StatsForNerdsPlugin |
45 | 45 | ||
46 | qualityLevels (): QualityLevels | ||
47 | |||
48 | textTracks (): TextTrackList & { | 46 | textTracks (): TextTrackList & { |
49 | on: Function | ||
50 | tracks_: (TextTrack & { id: string, label: string, src: string })[] | 47 | tracks_: (TextTrack & { id: string, label: string, src: string })[] |
51 | } | 48 | } |
52 | 49 | ||
@@ -69,24 +66,16 @@ export interface HlsjsConfigHandlerOptions { | |||
69 | levelLabelHandler?: (level: Level) => string | 66 | levelLabelHandler?: (level: Level) => string |
70 | } | 67 | } |
71 | 68 | ||
72 | type QualityLevelRepresentation = { | 69 | type PeerTubeResolution = { |
73 | id: number | 70 | id: number |
74 | height: number | ||
75 | 71 | ||
72 | height?: number | ||
76 | label?: string | 73 | label?: string |
77 | width?: number | 74 | width?: number |
78 | bandwidth?: number | ||
79 | bitrate?: number | 75 | bitrate?: number |
80 | 76 | ||
81 | enabled?: Function | 77 | selected: boolean |
82 | _enabled: boolean | 78 | selectCallback: () => void |
83 | } | ||
84 | |||
85 | type QualityLevels = QualityLevelRepresentation[] & { | ||
86 | selectedIndex: number | ||
87 | selectedIndex_: number | ||
88 | |||
89 | addQualityLevel (representation: QualityLevelRepresentation): void | ||
90 | } | 79 | } |
91 | 80 | ||
92 | type VideoJSCaption = { | 81 | type VideoJSCaption = { |
@@ -131,7 +120,7 @@ type PlaylistPluginOptions = { | |||
131 | 120 | ||
132 | type NextPreviousVideoButtonOptions = { | 121 | type NextPreviousVideoButtonOptions = { |
133 | type: 'next' | 'previous' | 122 | type: 'next' | 'previous' |
134 | handler: Function | 123 | handler: () => void |
135 | isDisabled: () => boolean | 124 | isDisabled: () => boolean |
136 | } | 125 | } |
137 | 126 | ||
@@ -214,7 +203,7 @@ type PlayerNetworkInfo = { | |||
214 | type PlaylistItemOptions = { | 203 | type PlaylistItemOptions = { |
215 | element: VideoPlaylistElement | 204 | element: VideoPlaylistElement |
216 | 205 | ||
217 | onClicked: Function | 206 | onClicked: () => void |
218 | } | 207 | } |
219 | 208 | ||
220 | export { | 209 | export { |
@@ -229,9 +218,8 @@ export { | |||
229 | PeerTubePluginOptions, | 218 | PeerTubePluginOptions, |
230 | WebtorrentPluginOptions, | 219 | WebtorrentPluginOptions, |
231 | P2PMediaLoaderPluginOptions, | 220 | P2PMediaLoaderPluginOptions, |
221 | PeerTubeResolution, | ||
232 | VideoJSPluginOptions, | 222 | VideoJSPluginOptions, |
233 | LoadedQualityData, | 223 | LoadedQualityData, |
234 | QualityLevelRepresentation, | 224 | PeerTubeLinkButtonOptions |
235 | PeerTubeLinkButtonOptions, | ||
236 | QualityLevels | ||
237 | } | 225 | } |
diff --git a/client/src/assets/player/videojs-components/resolution-menu-button.ts b/client/src/assets/player/videojs-components/resolution-menu-button.ts index 98e7f56fc..8bd5b4f03 100644 --- a/client/src/assets/player/videojs-components/resolution-menu-button.ts +++ b/client/src/assets/player/videojs-components/resolution-menu-button.ts | |||
@@ -1,6 +1,4 @@ | |||
1 | import videojs from 'video.js' | 1 | import videojs from 'video.js' |
2 | |||
3 | import { LoadedQualityData } from '../peertube-videojs-typings' | ||
4 | import { ResolutionMenuItem } from './resolution-menu-item' | 2 | import { ResolutionMenuItem } from './resolution-menu-item' |
5 | 3 | ||
6 | const Menu = videojs.getComponent('Menu') | 4 | const Menu = videojs.getComponent('Menu') |
@@ -13,9 +11,12 @@ class ResolutionMenuButton extends MenuButton { | |||
13 | 11 | ||
14 | this.controlText('Quality') | 12 | this.controlText('Quality') |
15 | 13 | ||
16 | player.tech(true).on('loadedqualitydata', (e: any, data: any) => this.buildQualities(data)) | 14 | player.peertubeResolutions().on('resolutionsAdded', () => this.buildQualities()) |
17 | 15 | ||
18 | player.peertube().on('resolutionChange', () => setTimeout(() => this.trigger('updateLabel'), 0)) | 16 | // For parent |
17 | player.peertubeResolutions().on('resolutionChanged', () => { | ||
18 | setTimeout(() => this.trigger('labelUpdated')) | ||
19 | }) | ||
19 | } | 20 | } |
20 | 21 | ||
21 | createEl () { | 22 | createEl () { |
@@ -58,20 +59,8 @@ class ResolutionMenuButton extends MenuButton { | |||
58 | }) | 59 | }) |
59 | } | 60 | } |
60 | 61 | ||
61 | private buildQualities (data: LoadedQualityData) { | 62 | private buildQualities () { |
62 | // The automatic resolution item will need other labels | 63 | for (const d of this.player().peertubeResolutions().getResolutions()) { |
63 | const labels: { [ id: number ]: string } = {} | ||
64 | |||
65 | data.qualityData.video.sort((a, b) => { | ||
66 | if (a.id > b.id) return -1 | ||
67 | if (a.id === b.id) return 0 | ||
68 | return 1 | ||
69 | }) | ||
70 | |||
71 | for (const d of data.qualityData.video) { | ||
72 | // Skip auto resolution, we'll add it ourselves | ||
73 | if (d.id === -1) continue | ||
74 | |||
75 | const label = d.label === '0p' | 64 | const label = d.label === '0p' |
76 | ? this.player().localize('Audio-only') | 65 | ? this.player().localize('Audio-only') |
77 | : d.label | 66 | : d.label |
@@ -81,25 +70,11 @@ class ResolutionMenuButton extends MenuButton { | |||
81 | { | 70 | { |
82 | id: d.id, | 71 | id: d.id, |
83 | label, | 72 | label, |
84 | selected: d.selected, | 73 | selected: d.selected |
85 | callback: data.qualitySwitchCallback | ||
86 | }) | 74 | }) |
87 | ) | 75 | ) |
88 | |||
89 | labels[d.id] = d.label | ||
90 | } | 76 | } |
91 | 77 | ||
92 | this.menu.addChild(new ResolutionMenuItem( | ||
93 | this.player_, | ||
94 | { | ||
95 | id: -1, | ||
96 | label: this.player_.localize('Auto'), | ||
97 | labels, | ||
98 | callback: data.qualitySwitchCallback, | ||
99 | selected: true // By default, in auto mode | ||
100 | } | ||
101 | )) | ||
102 | |||
103 | for (const m of this.menu.children()) { | 78 | for (const m of this.menu.children()) { |
104 | this.addClickListener(m) | 79 | this.addClickListener(m) |
105 | } | 80 | } |
diff --git a/client/src/assets/player/videojs-components/resolution-menu-item.ts b/client/src/assets/player/videojs-components/resolution-menu-item.ts index c1f502600..6047f52f7 100644 --- a/client/src/assets/player/videojs-components/resolution-menu-item.ts +++ b/client/src/assets/player/videojs-components/resolution-menu-item.ts | |||
@@ -1,82 +1,72 @@ | |||
1 | import videojs from 'video.js' | 1 | import videojs from 'video.js' |
2 | import { AutoResolutionUpdateData, ResolutionUpdateData } from '../peertube-videojs-typings' | ||
3 | 2 | ||
4 | const MenuItem = videojs.getComponent('MenuItem') | 3 | const MenuItem = videojs.getComponent('MenuItem') |
5 | 4 | ||
6 | export interface ResolutionMenuItemOptions extends videojs.MenuItemOptions { | 5 | export interface ResolutionMenuItemOptions extends videojs.MenuItemOptions { |
7 | labels?: { [id: number]: string } | ||
8 | id: number | 6 | id: number |
9 | callback: (resolutionId: number, type: 'video') => void | ||
10 | } | 7 | } |
11 | 8 | ||
12 | class ResolutionMenuItem extends MenuItem { | 9 | class ResolutionMenuItem extends MenuItem { |
13 | private readonly resolutionId: number | 10 | private readonly resolutionId: number |
14 | private readonly label: string | 11 | private readonly label: string |
15 | // Only used for the automatic item | ||
16 | private readonly labels: { [id: number]: string } | ||
17 | private readonly callback: (resolutionId: number, type: 'video') => void | ||
18 | 12 | ||
19 | private autoResolutionPossible: boolean | 13 | private autoResolutionEnabled: boolean |
20 | private currentResolutionLabel: string | 14 | private autoResolutionChosen: string |
21 | 15 | ||
22 | constructor (player: videojs.Player, options?: ResolutionMenuItemOptions) { | 16 | constructor (player: videojs.Player, options?: ResolutionMenuItemOptions) { |
23 | options.selectable = true | 17 | options.selectable = true |
24 | 18 | ||
25 | super(player, options) | 19 | super(player, options) |
26 | 20 | ||
27 | this.autoResolutionPossible = true | 21 | this.autoResolutionEnabled = true |
28 | this.currentResolutionLabel = '' | 22 | this.autoResolutionChosen = '' |
29 | 23 | ||
30 | this.resolutionId = options.id | 24 | this.resolutionId = options.id |
31 | this.label = options.label | 25 | this.label = options.label |
32 | this.labels = options.labels | ||
33 | this.callback = options.callback | ||
34 | 26 | ||
35 | player.peertube().on('resolutionChange', (_: any, data: ResolutionUpdateData) => this.updateSelection(data)) | 27 | player.peertubeResolutions().on('resolutionChanged', () => this.updateSelection()) |
36 | 28 | ||
37 | // We only want to disable the "Auto" item | 29 | // We only want to disable the "Auto" item |
38 | if (this.resolutionId === -1) { | 30 | if (this.resolutionId === -1) { |
39 | player.peertube().on('autoResolutionChange', (_: any, data: AutoResolutionUpdateData) => this.updateAutoResolution(data)) | 31 | player.peertubeResolutions().on('autoResolutionEnabledChanged', () => this.updateAutoResolution()) |
40 | } | 32 | } |
41 | } | 33 | } |
42 | 34 | ||
43 | handleClick (event: any) { | 35 | handleClick (event: any) { |
44 | // Auto button disabled? | 36 | // Auto button disabled? |
45 | if (this.autoResolutionPossible === false && this.resolutionId === -1) return | 37 | if (this.autoResolutionEnabled === false && this.resolutionId === -1) return |
46 | 38 | ||
47 | super.handleClick(event) | 39 | super.handleClick(event) |
48 | 40 | ||
49 | this.callback(this.resolutionId, 'video') | 41 | this.player().peertubeResolutions().select({ id: this.resolutionId, byEngine: false }) |
50 | } | 42 | } |
51 | 43 | ||
52 | updateSelection (data: ResolutionUpdateData) { | 44 | updateSelection () { |
53 | if (this.resolutionId === -1) { | 45 | const selectedResolution = this.player().peertubeResolutions().getSelected() |
54 | this.currentResolutionLabel = this.labels[data.id] | ||
55 | } | ||
56 | 46 | ||
57 | // Automatic resolution only | 47 | if (this.resolutionId === -1) { |
58 | if (data.auto === true) { | 48 | this.autoResolutionChosen = this.player().peertubeResolutions().getAutoResolutionChosen()?.label |
59 | this.selected(this.resolutionId === -1) | ||
60 | return | ||
61 | } | 49 | } |
62 | 50 | ||
63 | this.selected(this.resolutionId === data.id) | 51 | this.selected(this.resolutionId === selectedResolution.id) |
64 | } | 52 | } |
65 | 53 | ||
66 | updateAutoResolution (data: AutoResolutionUpdateData) { | 54 | updateAutoResolution () { |
55 | const enabled = this.player().peertubeResolutions().isAutoResolutionEnabeld() | ||
56 | |||
67 | // Check if the auto resolution is enabled or not | 57 | // Check if the auto resolution is enabled or not |
68 | if (data.possible === false) { | 58 | if (enabled === false) { |
69 | this.addClass('disabled') | 59 | this.addClass('disabled') |
70 | } else { | 60 | } else { |
71 | this.removeClass('disabled') | 61 | this.removeClass('disabled') |
72 | } | 62 | } |
73 | 63 | ||
74 | this.autoResolutionPossible = data.possible | 64 | this.autoResolutionEnabled = enabled |
75 | } | 65 | } |
76 | 66 | ||
77 | getLabel () { | 67 | getLabel () { |
78 | if (this.resolutionId === -1) { | 68 | if (this.resolutionId === -1) { |
79 | return this.label + ' <small>' + this.currentResolutionLabel + '</small>' | 69 | return this.label + ' <small>' + this.autoResolutionChosen + '</small>' |
80 | } | 70 | } |
81 | 71 | ||
82 | return this.label | 72 | return this.label |
diff --git a/client/src/assets/player/videojs-components/settings-menu-item.ts b/client/src/assets/player/videojs-components/settings-menu-item.ts index 1871d41f8..48fed0fd9 100644 --- a/client/src/assets/player/videojs-components/settings-menu-item.ts +++ b/client/src/assets/player/videojs-components/settings-menu-item.ts | |||
@@ -248,7 +248,7 @@ class SettingsMenuItem extends MenuItem { | |||
248 | } | 248 | } |
249 | 249 | ||
250 | build () { | 250 | build () { |
251 | this.subMenu.on('updateLabel', () => { | 251 | this.subMenu.on('labelUpdated', () => { |
252 | this.update() | 252 | this.update() |
253 | }) | 253 | }) |
254 | this.subMenu.on('menuChanged', () => { | 254 | this.subMenu.on('menuChanged', () => { |
diff --git a/client/src/assets/player/webtorrent/webtorrent-plugin.ts b/client/src/assets/player/webtorrent/webtorrent-plugin.ts index 0587ddee6..1a1cd7f1a 100644 --- a/client/src/assets/player/webtorrent/webtorrent-plugin.ts +++ b/client/src/assets/player/webtorrent/webtorrent-plugin.ts | |||
@@ -9,7 +9,7 @@ import { | |||
9 | getStoredVolume, | 9 | getStoredVolume, |
10 | saveAverageBandwidth | 10 | saveAverageBandwidth |
11 | } from '../peertube-player-local-storage' | 11 | } from '../peertube-player-local-storage' |
12 | import { LoadedQualityData, PlayerNetworkInfo, WebtorrentPluginOptions } from '../peertube-videojs-typings' | 12 | import { PeerTubeResolution, PlayerNetworkInfo, WebtorrentPluginOptions } from '../peertube-videojs-typings' |
13 | import { getRtcConfig, isIOS, videoFileMaxByResolution, videoFileMinByResolution } from '../utils' | 13 | import { getRtcConfig, isIOS, videoFileMaxByResolution, videoFileMinByResolution } from '../utils' |
14 | import { PeertubeChunkStore } from './peertube-chunk-store' | 14 | import { PeertubeChunkStore } from './peertube-chunk-store' |
15 | import { renderVideo } from './video-renderer' | 15 | import { renderVideo } from './video-renderer' |
@@ -175,11 +175,10 @@ class WebTorrentPlugin extends Plugin { | |||
175 | return done() | 175 | return done() |
176 | }) | 176 | }) |
177 | 177 | ||
178 | this.changeQuality() | 178 | this.selectAppropriateResolution(true) |
179 | this.trigger('resolutionChange', { auto: this.autoResolution, resolutionId: this.currentVideoFile.resolution.id }) | ||
180 | } | 179 | } |
181 | 180 | ||
182 | updateResolution (resolutionId: number, delay = 0) { | 181 | updateEngineResolution (resolutionId: number, delay = 0) { |
183 | // Remember player state | 182 | // Remember player state |
184 | const currentTime = this.player.currentTime() | 183 | const currentTime = this.player.currentTime() |
185 | const isPaused = this.player.paused() | 184 | const isPaused = this.player.paused() |
@@ -219,17 +218,10 @@ class WebTorrentPlugin extends Plugin { | |||
219 | } | 218 | } |
220 | } | 219 | } |
221 | 220 | ||
222 | enableAutoResolution () { | 221 | disableAutoResolution () { |
223 | this.autoResolution = true | ||
224 | this.trigger('resolutionChange', { auto: this.autoResolution, resolutionId: this.getCurrentResolutionId() }) | ||
225 | } | ||
226 | |||
227 | disableAutoResolution (forbid = false) { | ||
228 | if (forbid === true) this.autoResolutionPossible = false | ||
229 | |||
230 | this.autoResolution = false | 222 | this.autoResolution = false |
231 | this.trigger('autoResolutionChange', { possible: this.autoResolutionPossible }) | 223 | this.autoResolutionPossible = false |
232 | this.trigger('resolutionChange', { auto: this.autoResolution, resolutionId: this.getCurrentResolutionId() }) | 224 | this.player.peertubeResolutions().disableAutoResolution() |
233 | } | 225 | } |
234 | 226 | ||
235 | isAutoResolutionPossible () { | 227 | isAutoResolutionPossible () { |
@@ -244,6 +236,22 @@ class WebTorrentPlugin extends Plugin { | |||
244 | return this.currentVideoFile | 236 | return this.currentVideoFile |
245 | } | 237 | } |
246 | 238 | ||
239 | changeQuality (id: number) { | ||
240 | if (id === -1) { | ||
241 | if (this.autoResolutionPossible === true) { | ||
242 | this.autoResolution = true | ||
243 | |||
244 | this.selectAppropriateResolution(false) | ||
245 | } | ||
246 | |||
247 | return | ||
248 | } | ||
249 | |||
250 | this.autoResolution = false | ||
251 | this.updateEngineResolution(id) | ||
252 | this.selectAppropriateResolution(false) | ||
253 | } | ||
254 | |||
247 | private addTorrent ( | 255 | private addTorrent ( |
248 | magnetOrTorrentUrl: string, | 256 | magnetOrTorrentUrl: string, |
249 | previousVideoFile: VideoFile, | 257 | previousVideoFile: VideoFile, |
@@ -466,7 +474,7 @@ class WebTorrentPlugin extends Plugin { | |||
466 | } | 474 | } |
467 | 475 | ||
468 | if (changeResolution === true) { | 476 | if (changeResolution === true) { |
469 | this.updateResolution(file.resolution.id, changeResolutionDelay) | 477 | this.updateEngineResolution(file.resolution.id, changeResolutionDelay) |
470 | 478 | ||
471 | // Wait some seconds in observation of our new resolution | 479 | // Wait some seconds in observation of our new resolution |
472 | this.isAutoResolutionObservation = true | 480 | this.isAutoResolutionObservation = true |
@@ -516,7 +524,7 @@ class WebTorrentPlugin extends Plugin { | |||
516 | private fallbackToHttp (options: PlayOptions, done?: (err?: Error) => void) { | 524 | private fallbackToHttp (options: PlayOptions, done?: (err?: Error) => void) { |
517 | const paused = this.player.paused() | 525 | const paused = this.player.paused() |
518 | 526 | ||
519 | this.disableAutoResolution(true) | 527 | this.disableAutoResolution() |
520 | 528 | ||
521 | this.flushVideoFile(this.currentVideoFile, true) | 529 | this.flushVideoFile(this.currentVideoFile, true) |
522 | this.torrent = null | 530 | this.torrent = null |
@@ -528,7 +536,7 @@ class WebTorrentPlugin extends Plugin { | |||
528 | this.player.src = this.savePlayerSrcFunction | 536 | this.player.src = this.savePlayerSrcFunction |
529 | this.player.src(httpUrl) | 537 | this.player.src(httpUrl) |
530 | 538 | ||
531 | this.changeQuality() | 539 | this.selectAppropriateResolution(true) |
532 | 540 | ||
533 | // We changed the source, so reinit captions | 541 | // We changed the source, so reinit captions |
534 | this.player.trigger('sourcechange') | 542 | this.player.trigger('sourcechange') |
@@ -601,32 +609,22 @@ class WebTorrentPlugin extends Plugin { | |||
601 | } | 609 | } |
602 | 610 | ||
603 | private buildQualities () { | 611 | private buildQualities () { |
604 | const qualityLevelsPayload = [] | 612 | const resolutions: PeerTubeResolution[] = this.videoFiles.map(file => ({ |
605 | 613 | id: file.resolution.id, | |
606 | for (const file of this.videoFiles) { | 614 | label: this.buildQualityLabel(file), |
607 | const representation = { | 615 | height: file.resolution.id, |
608 | id: file.resolution.id, | 616 | selected: false, |
609 | label: this.buildQualityLabel(file), | 617 | selectCallback: () => this.changeQuality(file.resolution.id) |
610 | height: file.resolution.id, | 618 | })) |
611 | _enabled: true | 619 | |
612 | } | 620 | resolutions.push({ |
613 | 621 | id: -1, | |
614 | this.player.qualityLevels().addQualityLevel(representation) | 622 | label: this.player.localize('Auto'), |
615 | 623 | selected: true, | |
616 | qualityLevelsPayload.push({ | 624 | selectCallback: () => this.changeQuality(-1) |
617 | id: representation.id, | 625 | }) |
618 | label: representation.label, | ||
619 | selected: false | ||
620 | }) | ||
621 | } | ||
622 | 626 | ||
623 | const payload: LoadedQualityData = { | 627 | this.player.peertubeResolutions().add(resolutions) |
624 | qualitySwitchCallback: (d: any) => this.qualitySwitchCallback(d), | ||
625 | qualityData: { | ||
626 | video: qualityLevelsPayload | ||
627 | } | ||
628 | } | ||
629 | this.player.tech(true).trigger('loadedqualitydata', payload) | ||
630 | } | 628 | } |
631 | 629 | ||
632 | private buildQualityLabel (file: VideoFile) { | 630 | private buildQualityLabel (file: VideoFile) { |
@@ -639,29 +637,16 @@ class WebTorrentPlugin extends Plugin { | |||
639 | return label | 637 | return label |
640 | } | 638 | } |
641 | 639 | ||
642 | private qualitySwitchCallback (id: number) { | 640 | private selectAppropriateResolution (byEngine: boolean) { |
643 | if (id === -1) { | 641 | const resolution = this.autoResolution |
644 | if (this.autoResolutionPossible === true) this.enableAutoResolution() | 642 | ? -1 |
645 | return | 643 | : this.getCurrentResolutionId() |
646 | } | ||
647 | |||
648 | this.disableAutoResolution() | ||
649 | this.updateResolution(id) | ||
650 | } | ||
651 | |||
652 | private changeQuality () { | ||
653 | const resolutionId = this.currentVideoFile.resolution.id as number | ||
654 | const qualityLevels = this.player.qualityLevels() | ||
655 | 644 | ||
656 | if (resolutionId === -1) { | 645 | const autoResolutionChosen = this.autoResolution |
657 | qualityLevels.selectedIndex = -1 | 646 | ? this.getCurrentResolutionId() |
658 | return | 647 | : undefined |
659 | } | ||
660 | 648 | ||
661 | for (let i = 0; i < qualityLevels.length; i++) { | 649 | this.player.peertubeResolutions().select({ id: resolution, autoResolutionChosenId: autoResolutionChosen, byEngine }) |
662 | const q = qualityLevels[i] | ||
663 | if (q.height === resolutionId) qualityLevels.selectedIndex_ = i | ||
664 | } | ||
665 | } | 650 | } |
666 | } | 651 | } |
667 | 652 | ||
diff --git a/client/src/standalone/videos/embed-api.ts b/client/src/standalone/videos/embed-api.ts index b5c9da431..a28aeeaef 100644 --- a/client/src/standalone/videos/embed-api.ts +++ b/client/src/standalone/videos/embed-api.ts | |||
@@ -64,19 +64,12 @@ export class PeerTubeEmbedApi { | |||
64 | if (this.isWebtorrent()) { | 64 | if (this.isWebtorrent()) { |
65 | if (resolutionId === -1 && this.embed.player.webtorrent().isAutoResolutionPossible() === false) return | 65 | if (resolutionId === -1 && this.embed.player.webtorrent().isAutoResolutionPossible() === false) return |
66 | 66 | ||
67 | // Auto resolution | 67 | this.embed.player.webtorrent().changeQuality(resolutionId) |
68 | if (resolutionId === -1) { | ||
69 | this.embed.player.webtorrent().enableAutoResolution() | ||
70 | return | ||
71 | } | ||
72 | |||
73 | this.embed.player.webtorrent().disableAutoResolution() | ||
74 | this.embed.player.webtorrent().updateResolution(resolutionId) | ||
75 | 68 | ||
76 | return | 69 | return |
77 | } | 70 | } |
78 | 71 | ||
79 | this.embed.player.p2pMediaLoader().getHLSJS().nextLevel = resolutionId | 72 | this.embed.player.p2pMediaLoader().getHLSJS().currentLevel = resolutionId |
80 | } | 73 | } |
81 | 74 | ||
82 | private getCaptions (): PeerTubeTextTrack[] { | 75 | private getCaptions (): PeerTubeTextTrack[] { |
@@ -139,15 +132,10 @@ export class PeerTubeEmbedApi { | |||
139 | }) | 132 | }) |
140 | 133 | ||
141 | // PeerTube specific capabilities | 134 | // PeerTube specific capabilities |
142 | if (this.isWebtorrent()) { | 135 | this.embed.player.peertubeResolutions().on('resolutionsAdded', () => this.loadResolutions()) |
143 | this.embed.player.webtorrent().on('autoResolutionUpdate', () => this.loadWebTorrentResolutions()) | 136 | this.embed.player.peertubeResolutions().on('resolutionChanged', () => this.loadResolutions()) |
144 | this.embed.player.webtorrent().on('videoFileUpdate', () => this.loadWebTorrentResolutions()) | ||
145 | 137 | ||
146 | this.loadWebTorrentResolutions() | 138 | this.loadResolutions() |
147 | } else { | ||
148 | this.embed.player.p2pMediaLoader().on('resolutionChange', () => this.loadP2PMediaLoaderResolutions()) | ||
149 | this.embed.player.p2pMediaLoader().on('resolutionsLoaded', () => this.loadP2PMediaLoaderResolutions()) | ||
150 | } | ||
151 | 139 | ||
152 | this.embed.player.on('volumechange', () => { | 140 | this.embed.player.on('volumechange', () => { |
153 | this.channel.notify({ | 141 | this.channel.notify({ |
@@ -157,49 +145,15 @@ export class PeerTubeEmbedApi { | |||
157 | }) | 145 | }) |
158 | } | 146 | } |
159 | 147 | ||
160 | private loadWebTorrentResolutions () { | 148 | private loadResolutions () { |
161 | this.resolutions = [] | 149 | this.resolutions = this.embed.player.peertubeResolutions().getResolutions() |
162 | 150 | .map(r => ({ | |
163 | const currentResolutionId = this.embed.player.webtorrent().getCurrentResolutionId() | 151 | id: r.id, |
164 | 152 | label: r.label, | |
165 | for (const videoFile of this.embed.player.webtorrent().videoFiles) { | 153 | active: r.selected, |
166 | let label = videoFile.resolution.label | 154 | width: r.width, |
167 | if (videoFile.fps && videoFile.fps >= 50) { | 155 | height: r.height |
168 | label += videoFile.fps | 156 | })) |
169 | } | ||
170 | |||
171 | this.resolutions.push({ | ||
172 | id: videoFile.resolution.id, | ||
173 | label, | ||
174 | src: videoFile.magnetUri, | ||
175 | active: videoFile.resolution.id === currentResolutionId, | ||
176 | height: videoFile.resolution.id | ||
177 | }) | ||
178 | } | ||
179 | |||
180 | this.channel.notify({ | ||
181 | method: 'resolutionUpdate', | ||
182 | params: this.resolutions | ||
183 | }) | ||
184 | } | ||
185 | |||
186 | private loadP2PMediaLoaderResolutions () { | ||
187 | this.resolutions = [] | ||
188 | |||
189 | const qualityLevels = this.embed.player.qualityLevels() | ||
190 | const currentResolutionId = this.embed.player.qualityLevels().selectedIndex | ||
191 | |||
192 | for (let i = 0; i < qualityLevels.length; i++) { | ||
193 | const level = qualityLevels[i] | ||
194 | |||
195 | this.resolutions.push({ | ||
196 | id: level.id, | ||
197 | label: level.height + 'p', | ||
198 | active: level.id === currentResolutionId, | ||
199 | width: level.width, | ||
200 | height: level.height | ||
201 | }) | ||
202 | } | ||
203 | 157 | ||
204 | this.channel.notify({ | 158 | this.channel.notify({ |
205 | method: 'resolutionUpdate', | 159 | method: 'resolutionUpdate', |
diff --git a/client/src/standalone/videos/test-embed.ts b/client/src/standalone/videos/test-embed.ts index a28a83cc1..18c338a2d 100644 --- a/client/src/standalone/videos/test-embed.ts +++ b/client/src/standalone/videos/test-embed.ts | |||
@@ -86,8 +86,6 @@ window.addEventListener('load', async () => { | |||
86 | captionEl.innerHTML = '' | 86 | captionEl.innerHTML = '' |
87 | 87 | ||
88 | captions.forEach(c => { | 88 | captions.forEach(c => { |
89 | console.log(c) | ||
90 | |||
91 | if (c.mode === 'showing') { | 89 | if (c.mode === 'showing') { |
92 | const itemEl = document.createElement('strong') | 90 | const itemEl = document.createElement('strong') |
93 | itemEl.innerText = `${c.label} (active)` | 91 | itemEl.innerText = `${c.label} (active)` |
diff --git a/client/yarn.lock b/client/yarn.lock index 8f41b3102..508b8ad28 100644 --- a/client/yarn.lock +++ b/client/yarn.lock | |||
@@ -12618,14 +12618,6 @@ videojs-contextmenu-pt@^5.4.1: | |||
12618 | global "^4.4.0" | 12618 | global "^4.4.0" |
12619 | video.js "^7.6.0" | 12619 | video.js "^7.6.0" |
12620 | 12620 | ||
12621 | videojs-contrib-quality-levels@^2.0.9: | ||
12622 | version "2.1.0" | ||
12623 | resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.1.0.tgz#046e9e21ed01043f512b83a1916001d552457083" | ||
12624 | integrity sha512-dqGQGbL9AFhucxki7Zh0c3kIhH0PAPcHEh6jUdRyaFCVeOuqnJrOYs/3wNtsokDdBdRf2Du2annpu4Z2XaSZRg== | ||
12625 | dependencies: | ||
12626 | global "^4.3.2" | ||
12627 | video.js "^6 || ^7" | ||
12628 | |||
12629 | videojs-dock@^2.0.2: | 12621 | videojs-dock@^2.0.2: |
12630 | version "2.2.0" | 12622 | version "2.2.0" |
12631 | resolved "https://registry.yarnpkg.com/videojs-dock/-/videojs-dock-2.2.0.tgz#57e4f942da1b8e930c4387fed85942473bc40829" | 12623 | resolved "https://registry.yarnpkg.com/videojs-dock/-/videojs-dock-2.2.0.tgz#57e4f942da1b8e930c4387fed85942473bc40829" |
diff --git a/package.json b/package.json index ef22e2961..91b2be0da 100644 --- a/package.json +++ b/package.json | |||
@@ -198,8 +198,6 @@ | |||
198 | "eslint-plugin-standard": "^5.0.0", | 198 | "eslint-plugin-standard": "^5.0.0", |
199 | "fast-xml-parser": "^3.19.0", | 199 | "fast-xml-parser": "^3.19.0", |
200 | "maildev": "^1.0.0-rc3", | 200 | "maildev": "^1.0.0-rc3", |
201 | "marked": "^3.0.2", | ||
202 | "marked-man": "^0.7.0", | ||
203 | "mocha": "^9.0.0", | 201 | "mocha": "^9.0.0", |
204 | "nodemon": "^2.0.1", | 202 | "nodemon": "^2.0.1", |
205 | "proxy": "^1.0.2", | 203 | "proxy": "^1.0.2", |
diff --git a/scripts/generate-cli-doc.sh b/scripts/generate-cli-doc.sh deleted file mode 100755 index 0d00f183b..000000000 --- a/scripts/generate-cli-doc.sh +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | set -eu | ||
4 | |||
5 | node_modules/marked-man/bin/marked-man server/tools/README.md > dist/server/tools/peertube.8 | ||
diff --git a/server/tools/README.md b/server/tools/README.md index e86df3bfc..449c57ce1 100644 --- a/server/tools/README.md +++ b/server/tools/README.md | |||
@@ -1,82 +1,3 @@ | |||
1 | peertube(8) -- companion CLI for PeerTube | 1 | # PeerTube CLI |
2 | ========================================= | ||
3 | 2 | ||
4 | SYNOPSIS | 3 | See https://docs.joinpeertube.org/maintain-tools?id=remote-tools |
5 | -------- | ||
6 | |||
7 | ``` | ||
8 | peertube [command] [options] | ||
9 | ``` | ||
10 | |||
11 | DESCRIPTION | ||
12 | ----------- | ||
13 | |||
14 | `peertube` wraps various utilities around PeerTube that are used either on a running local, running remote, or cold local instance. | ||
15 | |||
16 | COMMANDS | ||
17 | -------- | ||
18 | |||
19 | Unless otherwise specified, every command can be queried for its own help or manual by passing its name to the `help` command, or by using the `--help` option. | ||
20 | |||
21 | `auth [action]`: stores credentials for your accounts on remote instances, so that you don't need to pass them at every command | ||
22 | |||
23 | `upload|up`: upload a video to a remote instance | ||
24 | |||
25 | $ peertube upload \ | ||
26 | -u "PEERTUBE_URL" \ | ||
27 | -U "PEERTUBE_USER" \ | ||
28 | --password "PEERTUBE_PASSWORD" | ||
29 | |||
30 | `import-videos|import`: import a video from a streaming platform to a remote instance | ||
31 | |||
32 | $ peertube import \ | ||
33 | -u "PEERTUBE_URL" \ | ||
34 | -U "PEERTUBE_USER" \ | ||
35 | --password "PEERTUBE_PASSWORD" \ | ||
36 | -t "TARGET_URL" | ||
37 | |||
38 | The target URL can be directly the video file, or any of the supported sites of youtube-dl. The video is downloaded locally and then uploaded. Already downloaded videos will not be uploaded twice, so you can run and re-run the script in case of crash, disconnection… | ||
39 | |||
40 | `watch|w`: watch a video in the terminal ✩°。⋆ | ||
41 | |||
42 | -g, --gui <player> player type (default: ascii) | ||
43 | -i, --invert invert colors (ascii player only) | ||
44 | -r, --resolution <res> video resolution (default: 720) | ||
45 | |||
46 | It provides support for different players: | ||
47 | |||
48 | - ascii (default ; plays in ascii art in your terminal!) | ||
49 | - mpv | ||
50 | - mplayer | ||
51 | - vlc | ||
52 | - stdout | ||
53 | - xbmc | ||
54 | - airplay | ||
55 | - chromecast | ||
56 | |||
57 | `repl`: interact with the application libraries and objects even when PeerTube is not running | ||
58 | |||
59 | Type .help to see the repl-only functions, or to see the available PeerTube core functions: | ||
60 | |||
61 | repl> lodash.keys(context) | ||
62 | |||
63 | `help [cmd]`: display help for [cmd] | ||
64 | |||
65 | EXAMPLES | ||
66 | -------- | ||
67 | |||
68 | $ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD" | ||
69 | $ peertube up <videoFile> | ||
70 | $ peertube watch https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10 | ||
71 | |||
72 | SEE ALSO | ||
73 | -------- | ||
74 | |||
75 | [PeerTube Tools Documentation](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/tools.md) | ||
76 | |||
77 | [PeerTube Admin Documentation](https://docs.joinpeertube.org/lang/en/docs/) | ||
78 | |||
79 | REPORTING BUGS | ||
80 | -------------- | ||
81 | |||
82 | See [PeerTube repository](https://github.com/Chocobozzz/PeerTube). | ||
diff --git a/server/tools/package.json b/server/tools/package.json index e3899f3b2..b20f38244 100644 --- a/server/tools/package.json +++ b/server/tools/package.json | |||
@@ -5,8 +5,7 @@ | |||
5 | "dependencies": { | 5 | "dependencies": { |
6 | "application-config": "^2.0.0", | 6 | "application-config": "^2.0.0", |
7 | "cli-table3": "^0.6.0", | 7 | "cli-table3": "^0.6.0", |
8 | "netrc-parser": "^3.1.6", | 8 | "netrc-parser": "^3.1.6" |
9 | "webtorrent-hybrid": "^4.0.3" | ||
10 | }, | 9 | }, |
11 | "devDependencies": {} | 10 | "devDependencies": {} |
12 | } | 11 | } |
diff --git a/server/tools/peertube-repl.ts b/server/tools/peertube-repl.ts deleted file mode 100644 index eb0a776b8..000000000 --- a/server/tools/peertube-repl.ts +++ /dev/null | |||
@@ -1,83 +0,0 @@ | |||
1 | import { registerTSPaths } from '../helpers/register-ts-paths' | ||
2 | registerTSPaths() | ||
3 | |||
4 | import * as repl from 'repl' | ||
5 | import * as path from 'path' | ||
6 | import * as _ from 'lodash' | ||
7 | import * as Sequelize from 'sequelize' | ||
8 | import * as YoutubeDL from 'youtube-dl' | ||
9 | import { initDatabaseModels, sequelizeTypescript } from '../initializers/database' | ||
10 | import * as cli from '../tools/cli' | ||
11 | import { logger } from '../helpers/logger' | ||
12 | import * as constants from '../initializers/constants' | ||
13 | import * as modelsUtils from '../models/utils' | ||
14 | import * as coreUtils from '../helpers/core-utils' | ||
15 | import * as ffmpegUtils from '../helpers/ffmpeg-utils' | ||
16 | import * as peertubeCryptoUtils from '../helpers/peertube-crypto' | ||
17 | import * as utils from '../helpers/utils' | ||
18 | import * as YoutubeDLUtils from '../helpers/youtube-dl' | ||
19 | |||
20 | const start = async () => { | ||
21 | await initDatabaseModels(true) | ||
22 | |||
23 | const versionCommitHash = await utils.getServerCommit() | ||
24 | |||
25 | const initContext = (replServer) => { | ||
26 | return (context) => { | ||
27 | const properties = { | ||
28 | context, | ||
29 | repl: replServer, | ||
30 | env: process.env, | ||
31 | lodash: _, | ||
32 | path, | ||
33 | cli, | ||
34 | logger, | ||
35 | constants, | ||
36 | Sequelize, | ||
37 | sequelizeTypescript, | ||
38 | modelsUtils, | ||
39 | models: sequelizeTypescript.models, | ||
40 | transaction: sequelizeTypescript.transaction, | ||
41 | query: sequelizeTypescript.query, | ||
42 | queryInterface: sequelizeTypescript.getQueryInterface(), | ||
43 | YoutubeDL, | ||
44 | coreUtils, | ||
45 | ffmpegUtils, | ||
46 | peertubeCryptoUtils, | ||
47 | utils, | ||
48 | YoutubeDLUtils | ||
49 | } | ||
50 | |||
51 | for (const prop in properties) { | ||
52 | Object.defineProperty(context, prop, { | ||
53 | configurable: false, | ||
54 | enumerable: true, | ||
55 | value: properties[prop] | ||
56 | }) | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | |||
61 | const replServer = repl.start({ | ||
62 | prompt: `PeerTube [${cli.version}] (${versionCommitHash})> ` | ||
63 | }) | ||
64 | |||
65 | initContext(replServer)(replServer.context) | ||
66 | replServer.on('reset', initContext(replServer)) | ||
67 | replServer.on('exit', () => process.exit()) | ||
68 | |||
69 | const resetCommand = { | ||
70 | help: 'Reset REPL', | ||
71 | action () { | ||
72 | this.write('.clear\n') | ||
73 | this.displayPrompt() | ||
74 | } | ||
75 | } | ||
76 | replServer.defineCommand('reset', resetCommand) | ||
77 | replServer.defineCommand('r', resetCommand) | ||
78 | } | ||
79 | |||
80 | start() | ||
81 | .catch((err) => { | ||
82 | console.error(err) | ||
83 | }) | ||
diff --git a/server/tools/peertube-watch.ts b/server/tools/peertube-watch.ts deleted file mode 100644 index 892c9e7a6..000000000 --- a/server/tools/peertube-watch.ts +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | import { registerTSPaths } from '../helpers/register-ts-paths' | ||
2 | registerTSPaths() | ||
3 | |||
4 | import { program, Option, OptionValues } from 'commander' | ||
5 | import { join } from 'path' | ||
6 | import { execSync } from 'child_process' | ||
7 | |||
8 | program | ||
9 | .name('watch') | ||
10 | .arguments('<url>') | ||
11 | .addOption( | ||
12 | new Option('-g, --gui <player>', 'player type') | ||
13 | .default('vlc') | ||
14 | .choices([ 'airplay', 'stdout', 'chromecast', 'mpv', 'vlc', 'mplayer', 'xbmc' ]) | ||
15 | ) | ||
16 | .option('-r, --resolution <res>', 'video resolution', '480') | ||
17 | .addHelpText('after', '\n\n Examples:\n\n' + | ||
18 | ' $ peertube watch -g mpv https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10\n' + | ||
19 | ' $ peertube watch --gui stdout https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10\n' + | ||
20 | ' $ peertube watch https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10\n' | ||
21 | ) | ||
22 | .action((url, options) => run(url, options)) | ||
23 | .parse(process.argv) | ||
24 | |||
25 | function run (url: string, options: OptionValues) { | ||
26 | if (!url) { | ||
27 | console.error('<url> positional argument is required.') | ||
28 | process.exit(-1) | ||
29 | } | ||
30 | |||
31 | const cmd = 'node ' + join(__dirname, 'node_modules', 'webtorrent-hybrid', 'bin', 'cmd.js') | ||
32 | const args = ` --${options.gui} ` + | ||
33 | url.replace(/(\/videos\/watch\/)|\/w\//, '/download/torrents/') + | ||
34 | `-${options.resolution}.torrent` | ||
35 | |||
36 | try { | ||
37 | execSync(cmd + args) | ||
38 | } catch (err) { | ||
39 | console.error('Cannto exec command.', err) | ||
40 | process.exit(-1) | ||
41 | } | ||
42 | } | ||
diff --git a/server/tools/peertube.ts b/server/tools/peertube.ts index a40c1332e..9e07640f0 100644 --- a/server/tools/peertube.ts +++ b/server/tools/peertube.ts | |||
@@ -1,7 +1,5 @@ | |||
1 | #!/usr/bin/env node | 1 | #!/usr/bin/env node |
2 | 2 | ||
3 | /* eslint-disable no-useless-escape */ | ||
4 | |||
5 | import { registerTSPaths } from '../helpers/register-ts-paths' | 3 | import { registerTSPaths } from '../helpers/register-ts-paths' |
6 | registerTSPaths() | 4 | registerTSPaths() |
7 | 5 | ||
@@ -18,8 +16,6 @@ program | |||
18 | .command('upload', 'upload a video').alias('up') | 16 | .command('upload', 'upload a video').alias('up') |
19 | .command('import-videos', 'import a video from a streaming platform').alias('import') | 17 | .command('import-videos', 'import a video from a streaming platform').alias('import') |
20 | .command('get-access-token', 'get a peertube access token', { noHelp: true }).alias('token') | 18 | .command('get-access-token', 'get a peertube access token', { noHelp: true }).alias('token') |
21 | .command('watch', 'watch a video in the terminal ✩°。⋆').alias('w') | ||
22 | .command('repl', 'initiate a REPL to access internals') | ||
23 | .command('plugins [action]', 'manage instance plugins/themes').alias('p') | 19 | .command('plugins [action]', 'manage instance plugins/themes').alias('p') |
24 | .command('redundancy [action]', 'manage instance redundancies').alias('r') | 20 | .command('redundancy [action]', 'manage instance redundancies').alias('r') |
25 | 21 | ||
@@ -47,7 +43,7 @@ if (!process.argv.slice(2).length) { | |||
47 | / / -" _/"/ | 43 | / / -" _/"/ |
48 | / | ._\\\\ |\\ |_.".-" / | 44 | / | ._\\\\ |\\ |_.".-" / |
49 | / | __\\)|)|),/|_." _,." | 45 | / | __\\)|)|),/|_." _,." |
50 | / \_." " ") | ).-""---''-- | 46 | / \\_." " ") | ).-""---''-- |
51 | ( "/.""7__-""'' | 47 | ( "/.""7__-""'' |
52 | | " ."._--._ | 48 | | " ."._--._ |
53 | \\ \\ (_ __ "" ".,_ | 49 | \\ \\ (_ __ "" ".,_ |
@@ -72,8 +68,7 @@ getSettings() | |||
72 | .addHelpText('after', '\n\n State: ' + state + '\n\n' + | 68 | .addHelpText('after', '\n\n State: ' + state + '\n\n' + |
73 | ' Examples:\n\n' + | 69 | ' Examples:\n\n' + |
74 | ' $ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD"\n' + | 70 | ' $ peertube auth add -u "PEERTUBE_URL" -U "PEERTUBE_USER" --password "PEERTUBE_PASSWORD"\n' + |
75 | ' $ peertube up <videoFile>\n' + | 71 | ' $ peertube up <videoFile>\n' |
76 | ' $ peertube watch https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10\n' | ||
77 | ) | 72 | ) |
78 | .parse(process.argv) | 73 | .parse(process.argv) |
79 | }) | 74 | }) |
diff --git a/server/tools/test-live.ts b/server/tools/test-live.ts deleted file mode 100644 index 27f2a4a92..000000000 --- a/server/tools/test-live.ts +++ /dev/null | |||
@@ -1,102 +0,0 @@ | |||
1 | import { program } from 'commander' | ||
2 | import { LiveVideoCreate, VideoPrivacy } from '@shared/models' | ||
3 | import { | ||
4 | createSingleServer, | ||
5 | killallServers, | ||
6 | sendRTMPStream, | ||
7 | PeerTubeServer, | ||
8 | setAccessTokensToServers, | ||
9 | setDefaultVideoChannel | ||
10 | } from '../../shared/extra-utils' | ||
11 | import { registerTSPaths } from '../helpers/register-ts-paths' | ||
12 | |||
13 | registerTSPaths() | ||
14 | |||
15 | type CommandType = 'live-mux' | 'live-transcoding' | ||
16 | |||
17 | registerTSPaths() | ||
18 | |||
19 | const command = program | ||
20 | .name('test-live') | ||
21 | .option('-t, --type <type>', 'live-muxing|live-transcoding') | ||
22 | .parse(process.argv) | ||
23 | |||
24 | run() | ||
25 | .catch(err => { | ||
26 | console.error(err) | ||
27 | process.exit(-1) | ||
28 | }) | ||
29 | |||
30 | async function run () { | ||
31 | const commandType: CommandType = command['type'] | ||
32 | if (!commandType) { | ||
33 | console.error('Miss command type') | ||
34 | process.exit(-1) | ||
35 | } | ||
36 | |||
37 | console.log('Starting server.') | ||
38 | |||
39 | const server = await createSingleServer(1, {}, { hideLogs: false, nodeArgs: [ '--inspect' ] }) | ||
40 | |||
41 | const cleanup = async () => { | ||
42 | console.log('Killing server') | ||
43 | await killallServers([ server ]) | ||
44 | } | ||
45 | |||
46 | process.on('exit', cleanup) | ||
47 | process.on('SIGINT', cleanup) | ||
48 | |||
49 | await setAccessTokensToServers([ server ]) | ||
50 | await setDefaultVideoChannel([ server ]) | ||
51 | |||
52 | await buildConfig(server, commandType) | ||
53 | |||
54 | const attributes: LiveVideoCreate = { | ||
55 | name: 'live', | ||
56 | saveReplay: true, | ||
57 | channelId: server.store.channel.id, | ||
58 | privacy: VideoPrivacy.PUBLIC | ||
59 | } | ||
60 | |||
61 | console.log('Creating live.') | ||
62 | |||
63 | const { uuid: liveVideoUUID } = await server.live.create({ fields: attributes }) | ||
64 | |||
65 | const live = await server.live.get({ videoId: liveVideoUUID }) | ||
66 | |||
67 | console.log('Sending RTMP stream.') | ||
68 | |||
69 | const ffmpegCommand = sendRTMPStream({ rtmpBaseUrl: live.rtmpUrl, streamKey: live.streamKey }) | ||
70 | |||
71 | ffmpegCommand.on('error', err => { | ||
72 | console.error(err) | ||
73 | process.exit(-1) | ||
74 | }) | ||
75 | |||
76 | ffmpegCommand.on('end', () => { | ||
77 | console.log('ffmpeg ended') | ||
78 | process.exit(0) | ||
79 | }) | ||
80 | } | ||
81 | |||
82 | // ---------------------------------------------------------------------------- | ||
83 | |||
84 | async function buildConfig (server: PeerTubeServer, commandType: CommandType) { | ||
85 | await server.config.updateCustomSubConfig({ | ||
86 | newConfig: { | ||
87 | instance: { | ||
88 | customizations: { | ||
89 | javascript: '', | ||
90 | css: '' | ||
91 | } | ||
92 | }, | ||
93 | live: { | ||
94 | enabled: true, | ||
95 | allowReplay: true, | ||
96 | transcoding: { | ||
97 | enabled: commandType === 'live-transcoding' | ||
98 | } | ||
99 | } | ||
100 | } | ||
101 | }) | ||
102 | } | ||
diff --git a/server/tools/yarn.lock b/server/tools/yarn.lock index dceacb223..28e9779da 100644 --- a/server/tools/yarn.lock +++ b/server/tools/yarn.lock | |||
@@ -23,97 +23,6 @@ | |||
23 | chalk "^2.0.0" | 23 | chalk "^2.0.0" |
24 | js-tokens "^4.0.0" | 24 | js-tokens "^4.0.0" |
25 | 25 | ||
26 | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": | ||
27 | version "1.1.2" | ||
28 | resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" | ||
29 | integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= | ||
30 | |||
31 | "@protobufjs/base64@^1.1.2": | ||
32 | version "1.1.2" | ||
33 | resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" | ||
34 | integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== | ||
35 | |||
36 | "@protobufjs/codegen@^2.0.4": | ||
37 | version "2.0.4" | ||
38 | resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" | ||
39 | integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== | ||
40 | |||
41 | "@protobufjs/eventemitter@^1.1.0": | ||
42 | version "1.1.0" | ||
43 | resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" | ||
44 | integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= | ||
45 | |||
46 | "@protobufjs/fetch@^1.1.0": | ||
47 | version "1.1.0" | ||
48 | resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" | ||
49 | integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= | ||
50 | dependencies: | ||
51 | "@protobufjs/aspromise" "^1.1.1" | ||
52 | "@protobufjs/inquire" "^1.1.0" | ||
53 | |||
54 | "@protobufjs/float@^1.0.2": | ||
55 | version "1.0.2" | ||
56 | resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" | ||
57 | integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= | ||
58 | |||
59 | "@protobufjs/inquire@^1.1.0": | ||
60 | version "1.1.0" | ||
61 | resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" | ||
62 | integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= | ||
63 | |||
64 | "@protobufjs/path@^1.1.2": | ||
65 | version "1.1.2" | ||
66 | resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" | ||
67 | integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= | ||
68 | |||
69 | "@protobufjs/pool@^1.1.0": | ||
70 | version "1.1.0" | ||
71 | resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" | ||
72 | integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= | ||
73 | |||
74 | "@protobufjs/utf8@^1.1.0": | ||
75 | version "1.1.0" | ||
76 | resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" | ||
77 | integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= | ||
78 | |||
79 | "@types/long@^4.0.1": | ||
80 | version "4.0.1" | ||
81 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" | ||
82 | integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== | ||
83 | |||
84 | "@types/node@>=13.7.0": | ||
85 | version "15.12.2" | ||
86 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" | ||
87 | integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== | ||
88 | |||
89 | abbrev@1: | ||
90 | version "1.1.1" | ||
91 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" | ||
92 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== | ||
93 | |||
94 | addr-to-ip-port@^1.0.1, addr-to-ip-port@^1.5.1: | ||
95 | version "1.5.1" | ||
96 | resolved "https://registry.yarnpkg.com/addr-to-ip-port/-/addr-to-ip-port-1.5.1.tgz#bfada13fd6aeeeac19f1e9f7d84b4bbab45e5208" | ||
97 | integrity sha512-bA+dyydTNuQtrEDJ0g9eR7XabNhvrM5yZY0hvTbNK3yvoeC73ZqMES6E1cEqH9WPxs4uMtMsOjfwS4FmluhsAA== | ||
98 | |||
99 | airplay-js@^0.3.0: | ||
100 | version "0.3.0" | ||
101 | resolved "https://registry.yarnpkg.com/airplay-js/-/airplay-js-0.3.0.tgz#16bac2ef91b31249382924bfdeeabaddc9db7398" | ||
102 | integrity sha1-FrrC75GzEkk4KSS/3uq63cnbc5g= | ||
103 | dependencies: | ||
104 | mdns-js "0.5.0" | ||
105 | plist-with-patches "0.5.1" | ||
106 | |||
107 | ansi-regex@^2.0.0: | ||
108 | version "2.1.1" | ||
109 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" | ||
110 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= | ||
111 | |||
112 | ansi-regex@^3.0.0: | ||
113 | version "3.0.0" | ||
114 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" | ||
115 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= | ||
116 | |||
117 | ansi-regex@^5.0.0: | 26 | ansi-regex@^5.0.0: |
118 | version "5.0.0" | 27 | version "5.0.0" |
119 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" | 28 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" |
@@ -140,221 +49,6 @@ application-config@^2.0.0: | |||
140 | load-json-file "^6.2.0" | 49 | load-json-file "^6.2.0" |
141 | write-json-file "^4.2.0" | 50 | write-json-file "^4.2.0" |
142 | 51 | ||
143 | aproba@^1.0.3: | ||
144 | version "1.2.0" | ||
145 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" | ||
146 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== | ||
147 | |||
148 | are-we-there-yet@~1.1.2: | ||
149 | version "1.1.5" | ||
150 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" | ||
151 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== | ||
152 | dependencies: | ||
153 | delegates "^1.0.0" | ||
154 | readable-stream "^2.0.6" | ||
155 | |||
156 | balanced-match@^1.0.0: | ||
157 | version "1.0.2" | ||
158 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" | ||
159 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== | ||
160 | |||
161 | base64-js@^1.3.1: | ||
162 | version "1.5.1" | ||
163 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" | ||
164 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== | ||
165 | |||
166 | bencode@^2.0.0, bencode@^2.0.1: | ||
167 | version "2.0.1" | ||
168 | resolved "https://registry.yarnpkg.com/bencode/-/bencode-2.0.1.tgz#667a6a31c5e038d558608333da6b7c94e836c85b" | ||
169 | integrity sha512-2uhEl8FdjSBUyb69qDTgOEeeqDTa+n3yMQzLW0cOzNf1Ow5bwcg3idf+qsWisIKRH8Bk8oC7UXL8irRcPA8ZEQ== | ||
170 | dependencies: | ||
171 | safe-buffer "^5.1.1" | ||
172 | |||
173 | bep53-range@^1.1.0: | ||
174 | version "1.1.0" | ||
175 | resolved "https://registry.yarnpkg.com/bep53-range/-/bep53-range-1.1.0.tgz#a009311710c955d27eb3a30cf329e8c139693d27" | ||
176 | integrity sha512-yGQTG4NtwTciX0Bkgk1FqQL4p+NiCQKpTSFho2lrxvUkXIlzyJDwraj8aYxAxRZMnnOhRr7QlIBoMRPEnIR34Q== | ||
177 | |||
178 | binary-search@^1.3.4: | ||
179 | version "1.3.6" | ||
180 | resolved "https://registry.yarnpkg.com/binary-search/-/binary-search-1.3.6.tgz#e32426016a0c5092f0f3598836a1c7da3560565c" | ||
181 | integrity sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA== | ||
182 | |||
183 | bitfield@^4.0.0: | ||
184 | version "4.0.0" | ||
185 | resolved "https://registry.yarnpkg.com/bitfield/-/bitfield-4.0.0.tgz#3094123c870030dc6198a283d779639bd2a8e256" | ||
186 | integrity sha512-jtuSG9CQr5yoHFuvhgf50+DH8Aezl3C/mMSfqdG4DqP7Kqe34uBUtCEHPN9oWaldTm96/i7y5e778SnM5ES4rw== | ||
187 | |||
188 | bittorrent-dht@^10.0.0: | ||
189 | version "10.0.0" | ||
190 | resolved "https://registry.yarnpkg.com/bittorrent-dht/-/bittorrent-dht-10.0.0.tgz#01de59bb03ed86a8847cb533134925d236d7f565" | ||
191 | integrity sha512-mrM18HMabvd3n/hQa4PYe942nWvBsJCBQb5PfT9kUJLlspNPGiulZYSCgWs7+XarS7nufYrGEp07f9eKTKIrgw== | ||
192 | dependencies: | ||
193 | bencode "^2.0.0" | ||
194 | debug "^4.1.1" | ||
195 | k-bucket "^5.0.0" | ||
196 | k-rpc "^5.0.0" | ||
197 | last-one-wins "^1.0.4" | ||
198 | lru "^3.1.0" | ||
199 | randombytes "^2.0.5" | ||
200 | record-cache "^1.0.2" | ||
201 | simple-sha1 "^3.0.0" | ||
202 | |||
203 | bittorrent-lsd@^1.0.0: | ||
204 | version "1.1.0" | ||
205 | resolved "https://registry.yarnpkg.com/bittorrent-lsd/-/bittorrent-lsd-1.1.0.tgz#64f7fa5a277e0236af6c03d475065f2bb3fc6ade" | ||
206 | integrity sha512-j9F+bDt1R//+kLfeSgkmc1A3x0u70gjb/FXaRgTtw+V3wIeYjOekiIlmsXf1SNKuxU5YHDkNL8CFNHx+MfSPSw== | ||
207 | dependencies: | ||
208 | chrome-dgram "^3.0.6" | ||
209 | debug "^4.2.0" | ||
210 | |||
211 | bittorrent-peerid@^1.3.3: | ||
212 | version "1.3.3" | ||
213 | resolved "https://registry.yarnpkg.com/bittorrent-peerid/-/bittorrent-peerid-1.3.3.tgz#b8dc79e421f8136d2ffd0b163a18e9d70da09949" | ||
214 | integrity sha512-tSh9HdQgwyEAfo1jzoGEis6o/zs4CcdRTchG93XVl5jct+DCAN90M5MVUV76k2vJ9Xg3GAzLB5NLsY/vnVTh6w== | ||
215 | |||
216 | bittorrent-protocol@^3.3.1: | ||
217 | version "3.4.1" | ||
218 | resolved "https://registry.yarnpkg.com/bittorrent-protocol/-/bittorrent-protocol-3.4.1.tgz#b481d09dbf910fa7fcca5f06a7c1c4246151d4d1" | ||
219 | integrity sha512-3qBW4ZZrUZKN7HzHbX4+kbiphrTNeraMp3i9n3wobicysjibAV8SBDY+sGiBN4SgXV6WvEW4kyRPIjoSqW+khw== | ||
220 | dependencies: | ||
221 | bencode "^2.0.1" | ||
222 | bitfield "^4.0.0" | ||
223 | buffer-xor "^2.0.2" | ||
224 | debug "^4.3.1" | ||
225 | randombytes "^2.1.0" | ||
226 | rc4 "^0.1.5" | ||
227 | readable-stream "^3.6.0" | ||
228 | simple-sha1 "^3.0.0" | ||
229 | speedometer "^1.1.0" | ||
230 | unordered-array-remove "^1.0.2" | ||
231 | |||
232 | bittorrent-tracker@^9.0.0: | ||
233 | version "9.17.2" | ||
234 | resolved "https://registry.yarnpkg.com/bittorrent-tracker/-/bittorrent-tracker-9.17.2.tgz#1afb02d3d2fb474c13389c45e8a2b6919bff40bd" | ||
235 | integrity sha512-hXjed0OnB16da+ScJUZnrAZbf9gMgSLKqh5rJebtYnTRgN4o1mX0DOPH3Nf5RFCs935ibhSmZN5nwbkh+3MdEA== | ||
236 | dependencies: | ||
237 | bencode "^2.0.1" | ||
238 | bittorrent-peerid "^1.3.3" | ||
239 | bn.js "^5.2.0" | ||
240 | chrome-dgram "^3.0.6" | ||
241 | compact2string "^1.4.1" | ||
242 | debug "^4.1.1" | ||
243 | ip "^1.1.5" | ||
244 | lru "^3.1.0" | ||
245 | minimist "^1.2.5" | ||
246 | once "^1.4.0" | ||
247 | queue-microtask "^1.2.3" | ||
248 | random-iterate "^1.0.1" | ||
249 | randombytes "^2.1.0" | ||
250 | run-parallel "^1.2.0" | ||
251 | run-series "^1.1.9" | ||
252 | simple-get "^4.0.0" | ||
253 | simple-peer "^9.11.0" | ||
254 | simple-websocket "^9.1.0" | ||
255 | string2compact "^1.3.0" | ||
256 | unordered-array-remove "^1.0.2" | ||
257 | ws "^7.4.5" | ||
258 | optionalDependencies: | ||
259 | bufferutil "^4.0.3" | ||
260 | utf-8-validate "^5.0.5" | ||
261 | |||
262 | blob-to-buffer@^1.2.9: | ||
263 | version "1.2.9" | ||
264 | resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz#a17fd6c1c564011408f8971e451544245daaa84a" | ||
265 | integrity sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA== | ||
266 | |||
267 | block-stream2@^2.0.0, block-stream2@^2.1.0: | ||
268 | version "2.1.0" | ||
269 | resolved "https://registry.yarnpkg.com/block-stream2/-/block-stream2-2.1.0.tgz#ac0c5ef4298b3857796e05be8ebed72196fa054b" | ||
270 | integrity sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg== | ||
271 | dependencies: | ||
272 | readable-stream "^3.4.0" | ||
273 | |||
274 | bn.js@^5.2.0: | ||
275 | version "5.2.0" | ||
276 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" | ||
277 | integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== | ||
278 | |||
279 | brace-expansion@^1.1.7: | ||
280 | version "1.1.11" | ||
281 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" | ||
282 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== | ||
283 | dependencies: | ||
284 | balanced-match "^1.0.0" | ||
285 | concat-map "0.0.1" | ||
286 | |||
287 | browserify-package-json@^1.0.0: | ||
288 | version "1.0.1" | ||
289 | resolved "https://registry.yarnpkg.com/browserify-package-json/-/browserify-package-json-1.0.1.tgz#98dde8aa5c561fd6d3fe49bbaa102b74b396fdea" | ||
290 | integrity sha1-mN3oqlxWH9bT/km7qhArdLOW/eo= | ||
291 | |||
292 | buffer-alloc-unsafe@^1.1.0: | ||
293 | version "1.1.0" | ||
294 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" | ||
295 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== | ||
296 | |||
297 | buffer-alloc@^1.1.0: | ||
298 | version "1.2.0" | ||
299 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" | ||
300 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== | ||
301 | dependencies: | ||
302 | buffer-alloc-unsafe "^1.1.0" | ||
303 | buffer-fill "^1.0.0" | ||
304 | |||
305 | buffer-fill@^1.0.0: | ||
306 | version "1.0.0" | ||
307 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" | ||
308 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= | ||
309 | |||
310 | buffer-from@^1.0.0: | ||
311 | version "1.1.1" | ||
312 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" | ||
313 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== | ||
314 | |||
315 | buffer-indexof@^1.0.0: | ||
316 | version "1.1.1" | ||
317 | resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" | ||
318 | integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== | ||
319 | |||
320 | buffer-xor@^2.0.2: | ||
321 | version "2.0.2" | ||
322 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" | ||
323 | integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== | ||
324 | dependencies: | ||
325 | safe-buffer "^5.1.1" | ||
326 | |||
327 | buffer@^6.0.3: | ||
328 | version "6.0.3" | ||
329 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" | ||
330 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== | ||
331 | dependencies: | ||
332 | base64-js "^1.3.1" | ||
333 | ieee754 "^1.2.1" | ||
334 | |||
335 | bufferutil@^4.0.3: | ||
336 | version "4.0.3" | ||
337 | resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.3.tgz#66724b756bed23cd7c28c4d306d7994f9943cc6b" | ||
338 | integrity sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw== | ||
339 | dependencies: | ||
340 | node-gyp-build "^4.2.0" | ||
341 | |||
342 | castv2-client@^1.1.0: | ||
343 | version "1.2.0" | ||
344 | resolved "https://registry.yarnpkg.com/castv2-client/-/castv2-client-1.2.0.tgz#a9193b1a5448b8cb9a0415bd021c8811ed7b0544" | ||
345 | integrity sha1-qRk7GlRIuMuaBBW9AhyIEe17BUQ= | ||
346 | dependencies: | ||
347 | castv2 "~0.1.4" | ||
348 | debug "^2.2.0" | ||
349 | |||
350 | castv2@~0.1.4: | ||
351 | version "0.1.10" | ||
352 | resolved "https://registry.yarnpkg.com/castv2/-/castv2-0.1.10.tgz#d3df00124f1ba8a97691c69dd44221d3b5f93c56" | ||
353 | integrity sha512-3QWevHrjT22KdF08Y2a217IYCDQDP7vEJaY4n0lPBeC5UBYbMFMadDfVTsaQwq7wqsEgYUHElPGm3EO1ey+TNw== | ||
354 | dependencies: | ||
355 | debug "^4.1.1" | ||
356 | protobufjs "^6.8.8" | ||
357 | |||
358 | chalk@^2.0.0: | 52 | chalk@^2.0.0: |
359 | version "2.4.2" | 53 | version "2.4.2" |
360 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" | 54 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" |
@@ -364,62 +58,6 @@ chalk@^2.0.0: | |||
364 | escape-string-regexp "^1.0.5" | 58 | escape-string-regexp "^1.0.5" |
365 | supports-color "^5.3.0" | 59 | supports-color "^5.3.0" |
366 | 60 | ||
367 | charset@^1.0.1: | ||
368 | version "1.0.1" | ||
369 | resolved "https://registry.yarnpkg.com/charset/-/charset-1.0.1.tgz#8d59546c355be61049a8fa9164747793319852bd" | ||
370 | integrity sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg== | ||
371 | |||
372 | chownr@^1.1.1: | ||
373 | version "1.1.4" | ||
374 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" | ||
375 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== | ||
376 | |||
377 | chrome-dgram@^3.0.2, chrome-dgram@^3.0.6: | ||
378 | version "3.0.6" | ||
379 | resolved "https://registry.yarnpkg.com/chrome-dgram/-/chrome-dgram-3.0.6.tgz#2288b5c7471f66f073691206d36319dda713cf55" | ||
380 | integrity sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA== | ||
381 | dependencies: | ||
382 | inherits "^2.0.4" | ||
383 | run-series "^1.1.9" | ||
384 | |||
385 | chrome-dns@^1.0.0: | ||
386 | version "1.0.1" | ||
387 | resolved "https://registry.yarnpkg.com/chrome-dns/-/chrome-dns-1.0.1.tgz#6870af680a40d2c4b2efc2154a378793f5a4ce4b" | ||
388 | integrity sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg== | ||
389 | dependencies: | ||
390 | chrome-net "^3.3.2" | ||
391 | |||
392 | chrome-net@^3.3.2, chrome-net@^3.3.3, chrome-net@^3.3.4: | ||
393 | version "3.3.4" | ||
394 | resolved "https://registry.yarnpkg.com/chrome-net/-/chrome-net-3.3.4.tgz#0e604a31d226ebfb8d2d1c381cab47d35309825d" | ||
395 | integrity sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw== | ||
396 | dependencies: | ||
397 | inherits "^2.0.1" | ||
398 | |||
399 | chromecasts@^1.9.1: | ||
400 | version "1.10.0" | ||
401 | resolved "https://registry.yarnpkg.com/chromecasts/-/chromecasts-1.10.0.tgz#7016c9f31b99e40636b21a75976c9364e3fbabbb" | ||
402 | integrity sha512-vrOiuHxqLb0bWRBlvyL18cHU8PcbZ7iJvwDB6aHdbtdIDVWuzWWZwDyAWHu54j4JNqyaAyYBJiJ6bbHInVcqBQ== | ||
403 | dependencies: | ||
404 | castv2-client "^1.1.0" | ||
405 | debug "^2.1.3" | ||
406 | dns-txt "^2.0.2" | ||
407 | mime "^1.3.4" | ||
408 | multicast-dns "^7.2.2" | ||
409 | simple-get "^2.0.0" | ||
410 | thunky "^0.1.0" | ||
411 | xml2js "^0.4.8" | ||
412 | optionalDependencies: | ||
413 | node-ssdp "^2.2.0" | ||
414 | |||
415 | chunk-store-stream@^4.3.0: | ||
416 | version "4.3.0" | ||
417 | resolved "https://registry.yarnpkg.com/chunk-store-stream/-/chunk-store-stream-4.3.0.tgz#3de5f4dfe19729366c29bb7ed52d139f9af29f0e" | ||
418 | integrity sha512-qby+/RXoiMoTVtPiylWZt7KFF1jy6M829TzMi2hxZtBIH9ptV19wxcft6zGiXLokJgCbuZPGNGab6DWHqiSEKw== | ||
419 | dependencies: | ||
420 | block-stream2 "^2.0.0" | ||
421 | readable-stream "^3.6.0" | ||
422 | |||
423 | cli-table3@^0.6.0: | 61 | cli-table3@^0.6.0: |
424 | version "0.6.0" | 62 | version "0.6.0" |
425 | resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" | 63 | resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" |
@@ -430,16 +68,6 @@ cli-table3@^0.6.0: | |||
430 | optionalDependencies: | 68 | optionalDependencies: |
431 | colors "^1.1.2" | 69 | colors "^1.1.2" |
432 | 70 | ||
433 | clivas@^0.2.0: | ||
434 | version "0.2.0" | ||
435 | resolved "https://registry.yarnpkg.com/clivas/-/clivas-0.2.0.tgz#b8d19188b3243e390f302410bd0cb1622db82649" | ||
436 | integrity sha1-uNGRiLMkPjkPMCQQvQyxYi24Jkk= | ||
437 | |||
438 | code-point-at@^1.0.0: | ||
439 | version "1.1.0" | ||
440 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" | ||
441 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= | ||
442 | |||
443 | color-convert@^1.9.0: | 71 | color-convert@^1.9.0: |
444 | version "1.9.3" | 72 | version "1.9.3" |
445 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" | 73 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" |
@@ -457,67 +85,6 @@ colors@^1.1.2: | |||
457 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" | 85 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" |
458 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== | 86 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== |
459 | 87 | ||
460 | common-tags@^1.8.0: | ||
461 | version "1.8.0" | ||
462 | resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" | ||
463 | integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== | ||
464 | |||
465 | compact2string@^1.4.1: | ||
466 | version "1.4.1" | ||
467 | resolved "https://registry.yarnpkg.com/compact2string/-/compact2string-1.4.1.tgz#8d34929055f8300a13cfc030ad1832e2e53c2e25" | ||
468 | integrity sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og== | ||
469 | dependencies: | ||
470 | ipaddr.js ">= 0.1.5" | ||
471 | |||
472 | concat-map@0.0.1: | ||
473 | version "0.0.1" | ||
474 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" | ||
475 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= | ||
476 | |||
477 | concat-stream@^1.4.8: | ||
478 | version "1.6.2" | ||
479 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" | ||
480 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== | ||
481 | dependencies: | ||
482 | buffer-from "^1.0.0" | ||
483 | inherits "^2.0.3" | ||
484 | readable-stream "^2.2.2" | ||
485 | typedarray "^0.0.6" | ||
486 | |||
487 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: | ||
488 | version "1.1.0" | ||
489 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" | ||
490 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= | ||
491 | |||
492 | core-util-is@~1.0.0: | ||
493 | version "1.0.2" | ||
494 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" | ||
495 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= | ||
496 | |||
497 | cpus@^1.0.3: | ||
498 | version "1.0.3" | ||
499 | resolved "https://registry.yarnpkg.com/cpus/-/cpus-1.0.3.tgz#4ef6deea461968d6329d07dd01205685df2934a2" | ||
500 | integrity sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA== | ||
501 | |||
502 | create-torrent@^4.4.2, create-torrent@^4.7.0: | ||
503 | version "4.7.0" | ||
504 | resolved "https://registry.yarnpkg.com/create-torrent/-/create-torrent-4.7.0.tgz#ba5d52d41e7621d0d61c895c8026d3fb22aa4333" | ||
505 | integrity sha512-Pb3XjZNKdCs0Nk46yFKb82y+a3xRQeMvGi1AlJfIV40y/iwkgBqzS5EfqdnakEOvh2jzTOx3v8QxZpkz4hPzyw== | ||
506 | dependencies: | ||
507 | bencode "^2.0.1" | ||
508 | block-stream2 "^2.1.0" | ||
509 | filestream "^5.0.0" | ||
510 | is-file "^1.0.0" | ||
511 | junk "^3.1.0" | ||
512 | minimist "^1.2.5" | ||
513 | multistream "^4.0.1" | ||
514 | once "^1.4.0" | ||
515 | piece-length "^2.0.1" | ||
516 | queue-microtask "^1.2.2" | ||
517 | readable-stream "^3.6.0" | ||
518 | run-parallel "^1.1.10" | ||
519 | simple-sha1 "^3.0.1" | ||
520 | |||
521 | cross-spawn@^6.0.0: | 88 | cross-spawn@^6.0.0: |
522 | version "6.0.5" | 89 | version "6.0.5" |
523 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" | 90 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" |
@@ -529,142 +96,23 @@ cross-spawn@^6.0.0: | |||
529 | shebang-command "^1.2.0" | 96 | shebang-command "^1.2.0" |
530 | which "^1.2.9" | 97 | which "^1.2.9" |
531 | 98 | ||
532 | debug@^2.1.0, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0: | 99 | debug@^3.1.0: |
533 | version "2.6.9" | ||
534 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" | ||
535 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== | ||
536 | dependencies: | ||
537 | ms "2.0.0" | ||
538 | |||
539 | debug@^3.1.0, debug@^3.2.6: | ||
540 | version "3.2.7" | 100 | version "3.2.7" |
541 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" | 101 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" |
542 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== | 102 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== |
543 | dependencies: | 103 | dependencies: |
544 | ms "^2.1.1" | 104 | ms "^2.1.1" |
545 | 105 | ||
546 | debug@^4.0.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: | ||
547 | version "4.3.1" | ||
548 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" | ||
549 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== | ||
550 | dependencies: | ||
551 | ms "2.1.2" | ||
552 | |||
553 | decompress-response@^3.3.0: | ||
554 | version "3.3.0" | ||
555 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" | ||
556 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= | ||
557 | dependencies: | ||
558 | mimic-response "^1.0.0" | ||
559 | |||
560 | decompress-response@^6.0.0: | ||
561 | version "6.0.0" | ||
562 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" | ||
563 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== | ||
564 | dependencies: | ||
565 | mimic-response "^3.1.0" | ||
566 | |||
567 | deep-extend@^0.6.0: | ||
568 | version "0.6.0" | ||
569 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" | ||
570 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== | ||
571 | |||
572 | define-lazy-prop@^2.0.0: | ||
573 | version "2.0.0" | ||
574 | resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" | ||
575 | integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== | ||
576 | |||
577 | delegates@^1.0.0: | ||
578 | version "1.0.0" | ||
579 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" | ||
580 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= | ||
581 | |||
582 | detect-indent@^6.0.0: | 106 | detect-indent@^6.0.0: |
583 | version "6.1.0" | 107 | version "6.1.0" |
584 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" | 108 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" |
585 | integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== | 109 | integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== |
586 | 110 | ||
587 | detect-libc@^1.0.2: | ||
588 | version "1.0.3" | ||
589 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" | ||
590 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= | ||
591 | |||
592 | dlnacasts@^0.1.0: | ||
593 | version "0.1.0" | ||
594 | resolved "https://registry.yarnpkg.com/dlnacasts/-/dlnacasts-0.1.0.tgz#f805211dcac74f6bb3a4d5d5541ad783b1b67d22" | ||
595 | integrity sha1-+AUhHcrHT2uzpNXVVBrXg7G2fSI= | ||
596 | dependencies: | ||
597 | debug "^2.1.3" | ||
598 | mime "^1.3.4" | ||
599 | node-ssdp "^2.7.1" | ||
600 | run-parallel "^1.1.6" | ||
601 | simple-get "^2.1.0" | ||
602 | thunky "^0.1.0" | ||
603 | upnp-mediarenderer-client "^1.2.2" | ||
604 | xml2js "^0.4.8" | ||
605 | |||
606 | dns-packet@^5.2.2: | ||
607 | version "5.2.4" | ||
608 | resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.2.4.tgz#e004f409eadfa8ec861964dcb9eb395884fcf67d" | ||
609 | integrity sha512-vgu5Bx5IV8mXmh/9cn1lzn+J7okFlXe1vBRp+kCBJXg1nBED6Z/Q4e+QaDxQRSozMr14p/VQmdXwsf/I2wGjUA== | ||
610 | dependencies: | ||
611 | ip "^1.1.5" | ||
612 | |||
613 | dns-txt@^2.0.2: | ||
614 | version "2.0.2" | ||
615 | resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" | ||
616 | integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= | ||
617 | dependencies: | ||
618 | buffer-indexof "^1.0.0" | ||
619 | |||
620 | domexception@^1.0.1: | ||
621 | version "1.0.1" | ||
622 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" | ||
623 | integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== | ||
624 | dependencies: | ||
625 | webidl-conversions "^4.0.2" | ||
626 | |||
627 | ecstatic@^4.1.4: | ||
628 | version "4.1.4" | ||
629 | resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-4.1.4.tgz#86bf340dabe56c4d0c93d406ac36c040f68e1d79" | ||
630 | integrity sha512-8E4ZLK4uRuB9pwywGpy/B9vcz4gCp6IY7u4cMbeCINr/fjb1v+0wf0Ae2XlfSnG8xZYnE4uaJBjFkYI0bqcIdw== | ||
631 | dependencies: | ||
632 | charset "^1.0.1" | ||
633 | he "^1.1.1" | ||
634 | mime "^2.4.1" | ||
635 | minimist "^1.1.0" | ||
636 | on-finished "^2.3.0" | ||
637 | url-join "^4.0.0" | ||
638 | |||
639 | ee-first@1.1.1: | ||
640 | version "1.1.1" | ||
641 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" | ||
642 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= | ||
643 | |||
644 | elementtree@^0.1.6, elementtree@~0.1.6: | ||
645 | version "0.1.7" | ||
646 | resolved "https://registry.yarnpkg.com/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" | ||
647 | integrity sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA= | ||
648 | dependencies: | ||
649 | sax "1.1.4" | ||
650 | |||
651 | emoji-regex@^8.0.0: | 111 | emoji-regex@^8.0.0: |
652 | version "8.0.0" | 112 | version "8.0.0" |
653 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" | 113 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" |
654 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== | 114 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== |
655 | 115 | ||
656 | end-of-stream@^1.1.0, end-of-stream@^1.4.4: | ||
657 | version "1.4.4" | ||
658 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" | ||
659 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== | ||
660 | dependencies: | ||
661 | once "^1.4.0" | ||
662 | |||
663 | err-code@^3.0.1: | ||
664 | version "3.0.1" | ||
665 | resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" | ||
666 | integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== | ||
667 | |||
668 | error-ex@^1.3.1: | 116 | error-ex@^1.3.1: |
669 | version "1.3.2" | 117 | version "1.3.2" |
670 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" | 118 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" |
@@ -672,11 +120,6 @@ error-ex@^1.3.1: | |||
672 | dependencies: | 120 | dependencies: |
673 | is-arrayish "^0.2.1" | 121 | is-arrayish "^0.2.1" |
674 | 122 | ||
675 | escape-html@^1.0.3: | ||
676 | version "1.0.3" | ||
677 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" | ||
678 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= | ||
679 | |||
680 | escape-string-regexp@^1.0.5: | 123 | escape-string-regexp@^1.0.5: |
681 | version "1.0.5" | 124 | version "1.0.5" |
682 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" | 125 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" |
@@ -695,91 +138,11 @@ execa@^0.10.0: | |||
695 | signal-exit "^3.0.0" | 138 | signal-exit "^3.0.0" |
696 | strip-eof "^1.0.0" | 139 | strip-eof "^1.0.0" |
697 | 140 | ||
698 | executable@^4.1.1: | ||
699 | version "4.1.1" | ||
700 | resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" | ||
701 | integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== | ||
702 | dependencies: | ||
703 | pify "^2.2.0" | ||
704 | |||
705 | filestream@^5.0.0: | ||
706 | version "5.0.0" | ||
707 | resolved "https://registry.yarnpkg.com/filestream/-/filestream-5.0.0.tgz#79015f3bae95ad0f47ef818694846f085087b92e" | ||
708 | integrity sha512-5H3RqSaJp12THfZiNWodYM7TiKfQvrpX+EIOrB1XvCceTys4yvfEIl8wDp+/yI8qj6Bxym8m0NYWwVXDAet/+A== | ||
709 | dependencies: | ||
710 | readable-stream "^3.4.0" | ||
711 | typedarray-to-buffer "^3.0.0" | ||
712 | |||
713 | freelist@^1.0.3: | ||
714 | version "1.0.3" | ||
715 | resolved "https://registry.yarnpkg.com/freelist/-/freelist-1.0.3.tgz#006775509f3935701784d3ed2fc9f12c9df1bab2" | ||
716 | integrity sha1-AGd1UJ85NXAXhNPtL8nxLJ3xurI= | ||
717 | |||
718 | fs-chunk-store@^2.0.3: | ||
719 | version "2.0.3" | ||
720 | resolved "https://registry.yarnpkg.com/fs-chunk-store/-/fs-chunk-store-2.0.3.tgz#21e51f1833a84a07cb5e911d058dae084030375a" | ||
721 | integrity sha512-qQi93nHX3880gtoQPt1hKQcuYBNVfCbMk8OVRDqR0cJ0riheELW25ry9yl7pII8E9gOAONTGKBD5N/zGHFSVQg== | ||
722 | dependencies: | ||
723 | queue-microtask "^1.2.2" | ||
724 | random-access-file "^2.0.1" | ||
725 | randombytes "^2.0.3" | ||
726 | rimraf "^3.0.0" | ||
727 | run-parallel "^1.1.2" | ||
728 | thunky "^1.0.1" | ||
729 | |||
730 | fs-minipass@^1.2.5: | ||
731 | version "1.2.7" | ||
732 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" | ||
733 | integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== | ||
734 | dependencies: | ||
735 | minipass "^2.6.0" | ||
736 | |||
737 | fs.realpath@^1.0.0: | ||
738 | version "1.0.0" | ||
739 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" | ||
740 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= | ||
741 | |||
742 | gauge@~2.7.3: | ||
743 | version "2.7.4" | ||
744 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" | ||
745 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= | ||
746 | dependencies: | ||
747 | aproba "^1.0.3" | ||
748 | console-control-strings "^1.0.0" | ||
749 | has-unicode "^2.0.0" | ||
750 | object-assign "^4.1.0" | ||
751 | signal-exit "^3.0.0" | ||
752 | string-width "^1.0.1" | ||
753 | strip-ansi "^3.0.1" | ||
754 | wide-align "^1.1.0" | ||
755 | |||
756 | get-browser-rtc@^1.1.0: | ||
757 | version "1.1.0" | ||
758 | resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz#d1494e299b00f33fc8e9d6d3343ba4ba99711a2c" | ||
759 | integrity sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ== | ||
760 | |||
761 | get-stdin@^8.0.0: | ||
762 | version "8.0.0" | ||
763 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" | ||
764 | integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== | ||
765 | |||
766 | get-stream@^3.0.0: | 141 | get-stream@^3.0.0: |
767 | version "3.0.0" | 142 | version "3.0.0" |
768 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" | 143 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" |
769 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= | 144 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= |
770 | 145 | ||
771 | glob@^7.1.3: | ||
772 | version "7.1.7" | ||
773 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" | ||
774 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== | ||
775 | dependencies: | ||
776 | fs.realpath "^1.0.0" | ||
777 | inflight "^1.0.4" | ||
778 | inherits "2" | ||
779 | minimatch "^3.0.4" | ||
780 | once "^1.3.0" | ||
781 | path-is-absolute "^1.0.0" | ||
782 | |||
783 | graceful-fs@^4.1.15: | 146 | graceful-fs@^4.1.15: |
784 | version "4.2.6" | 147 | version "4.2.6" |
785 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" | 148 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" |
@@ -790,132 +153,16 @@ has-flag@^3.0.0: | |||
790 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" | 153 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" |
791 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= | 154 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= |
792 | 155 | ||
793 | has-unicode@^2.0.0: | ||
794 | version "2.0.1" | ||
795 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" | ||
796 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= | ||
797 | |||
798 | he@^1.1.1: | ||
799 | version "1.2.0" | ||
800 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" | ||
801 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== | ||
802 | |||
803 | "http-node@github:feross/http-node#webtorrent": | ||
804 | version "1.2.0" | ||
805 | resolved "https://codeload.github.com/feross/http-node/tar.gz/342ef8624495343ffd050bd0808b3750cf0e3974" | ||
806 | dependencies: | ||
807 | chrome-net "^3.3.3" | ||
808 | freelist "^1.0.3" | ||
809 | http-parser-js "^0.4.3" | ||
810 | |||
811 | http-parser-js@^0.4.3: | ||
812 | version "0.4.13" | ||
813 | resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" | ||
814 | integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= | ||
815 | |||
816 | iconv-lite@^0.4.4: | ||
817 | version "0.4.24" | ||
818 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" | ||
819 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== | ||
820 | dependencies: | ||
821 | safer-buffer ">= 2.1.2 < 3" | ||
822 | |||
823 | ieee754@^1.2.1: | ||
824 | version "1.2.1" | ||
825 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" | ||
826 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== | ||
827 | |||
828 | ignore-walk@^3.0.1: | ||
829 | version "3.0.4" | ||
830 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" | ||
831 | integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== | ||
832 | dependencies: | ||
833 | minimatch "^3.0.4" | ||
834 | |||
835 | immediate-chunk-store@^2.2.0: | ||
836 | version "2.2.0" | ||
837 | resolved "https://registry.yarnpkg.com/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz#f56d30ecc7171f6cfcf632b0eb8395a89f92c03c" | ||
838 | integrity sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA== | ||
839 | dependencies: | ||
840 | queue-microtask "^1.2.3" | ||
841 | |||
842 | imurmurhash@^0.1.4: | 156 | imurmurhash@^0.1.4: |
843 | version "0.1.4" | 157 | version "0.1.4" |
844 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" | 158 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" |
845 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= | 159 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= |
846 | 160 | ||
847 | inflight@^1.0.4: | ||
848 | version "1.0.6" | ||
849 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" | ||
850 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= | ||
851 | dependencies: | ||
852 | once "^1.3.0" | ||
853 | wrappy "1" | ||
854 | |||
855 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: | ||
856 | version "2.0.4" | ||
857 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | ||
858 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | ||
859 | |||
860 | ini@~1.3.0: | ||
861 | version "1.3.8" | ||
862 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" | ||
863 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== | ||
864 | |||
865 | ip-set@^2.1.0: | ||
866 | version "2.1.0" | ||
867 | resolved "https://registry.yarnpkg.com/ip-set/-/ip-set-2.1.0.tgz#9a47b9f5d220c38bc7fe5db8efc4baa45b0a0a35" | ||
868 | integrity sha512-JdHz4tSMx1IeFj8yEcQU0i58qiSkOlmZXkZ8+HJ0ROV5KcgLRDO9F703oJ1GeZCvqggrcCbmagD/V7hghY62wA== | ||
869 | dependencies: | ||
870 | ip "^1.1.5" | ||
871 | |||
872 | ip@^1.0.1, ip@^1.1.5: | ||
873 | version "1.1.5" | ||
874 | resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" | ||
875 | integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= | ||
876 | |||
877 | "ipaddr.js@>= 0.1.5": | ||
878 | version "2.0.1" | ||
879 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" | ||
880 | integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== | ||
881 | |||
882 | ipaddr.js@^1.0.1: | ||
883 | version "1.9.1" | ||
884 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" | ||
885 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== | ||
886 | |||
887 | is-arrayish@^0.2.1: | 161 | is-arrayish@^0.2.1: |
888 | version "0.2.1" | 162 | version "0.2.1" |
889 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" | 163 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" |
890 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= | 164 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= |
891 | 165 | ||
892 | is-ascii@^1.0.0: | ||
893 | version "1.0.0" | ||
894 | resolved "https://registry.yarnpkg.com/is-ascii/-/is-ascii-1.0.0.tgz#f02ad0259a0921cd199ff21ce1b09e0f6b4e3929" | ||
895 | integrity sha1-8CrQJZoJIc0Zn/Ic4bCeD2tOOSk= | ||
896 | |||
897 | is-docker@^2.0.0, is-docker@^2.1.1: | ||
898 | version "2.2.1" | ||
899 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" | ||
900 | integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== | ||
901 | |||
902 | is-file@^1.0.0: | ||
903 | version "1.0.0" | ||
904 | resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596" | ||
905 | integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY= | ||
906 | |||
907 | is-fullwidth-code-point@^1.0.0: | ||
908 | version "1.0.0" | ||
909 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" | ||
910 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= | ||
911 | dependencies: | ||
912 | number-is-nan "^1.0.0" | ||
913 | |||
914 | is-fullwidth-code-point@^2.0.0: | ||
915 | version "2.0.0" | ||
916 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" | ||
917 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= | ||
918 | |||
919 | is-fullwidth-code-point@^3.0.0: | 166 | is-fullwidth-code-point@^3.0.0: |
920 | version "3.0.0" | 167 | version "3.0.0" |
921 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" | 168 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" |
@@ -936,18 +183,6 @@ is-typedarray@^1.0.0: | |||
936 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" | 183 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" |
937 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= | 184 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= |
938 | 185 | ||
939 | is-wsl@^2.2.0: | ||
940 | version "2.2.0" | ||
941 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" | ||
942 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== | ||
943 | dependencies: | ||
944 | is-docker "^2.0.0" | ||
945 | |||
946 | isarray@~1.0.0: | ||
947 | version "1.0.0" | ||
948 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" | ||
949 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= | ||
950 | |||
951 | isexe@^2.0.0: | 186 | isexe@^2.0.0: |
952 | version "2.0.0" | 187 | version "2.0.0" |
953 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" | 188 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" |
@@ -963,58 +198,11 @@ json-parse-even-better-errors@^2.3.0: | |||
963 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" | 198 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" |
964 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== | 199 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== |
965 | 200 | ||
966 | junk@^3.1.0: | ||
967 | version "3.1.0" | ||
968 | resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" | ||
969 | integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== | ||
970 | |||
971 | k-bucket@^5.0.0: | ||
972 | version "5.1.0" | ||
973 | resolved "https://registry.yarnpkg.com/k-bucket/-/k-bucket-5.1.0.tgz#db2c9e72bd168b432e3f3e8fc092e2ccb61bff89" | ||
974 | integrity sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg== | ||
975 | dependencies: | ||
976 | randombytes "^2.1.0" | ||
977 | |||
978 | k-rpc-socket@^1.7.2: | ||
979 | version "1.11.1" | ||
980 | resolved "https://registry.yarnpkg.com/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz#f14b4b240a716c6cad7b6434b21716dbd7c7b0e8" | ||
981 | integrity sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA== | ||
982 | dependencies: | ||
983 | bencode "^2.0.0" | ||
984 | chrome-dgram "^3.0.2" | ||
985 | chrome-dns "^1.0.0" | ||
986 | chrome-net "^3.3.2" | ||
987 | |||
988 | k-rpc@^5.0.0: | ||
989 | version "5.1.0" | ||
990 | resolved "https://registry.yarnpkg.com/k-rpc/-/k-rpc-5.1.0.tgz#af2052de2e84994d55da3032175da5dad8640174" | ||
991 | integrity sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ== | ||
992 | dependencies: | ||
993 | k-bucket "^5.0.0" | ||
994 | k-rpc-socket "^1.7.2" | ||
995 | randombytes "^2.0.5" | ||
996 | |||
997 | last-one-wins@^1.0.4: | ||
998 | version "1.0.4" | ||
999 | resolved "https://registry.yarnpkg.com/last-one-wins/-/last-one-wins-1.0.4.tgz#c1bfd0cbcb46790ec9156b8d1aee8fcb86cda22a" | ||
1000 | integrity sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio= | ||
1001 | |||
1002 | lines-and-columns@^1.1.6: | 201 | lines-and-columns@^1.1.6: |
1003 | version "1.1.6" | 202 | version "1.1.6" |
1004 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" | 203 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" |
1005 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= | 204 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= |
1006 | 205 | ||
1007 | load-ip-set@^2.2.1: | ||
1008 | version "2.2.1" | ||
1009 | resolved "https://registry.yarnpkg.com/load-ip-set/-/load-ip-set-2.2.1.tgz#9496ab8aa14ebf81aeb7c8bb38e7abdf50af3563" | ||
1010 | integrity sha512-G3hQXehU2LTOp52e+lPffpK4EvidfjwbvHaGqmFcp4ptiZagR4xFdL+D08kMX906dxeqZyWhfonEjdUxrWcldg== | ||
1011 | dependencies: | ||
1012 | ip-set "^2.1.0" | ||
1013 | netmask "^2.0.1" | ||
1014 | once "^1.4.0" | ||
1015 | simple-get "^4.0.0" | ||
1016 | split "^1.0.1" | ||
1017 | |||
1018 | load-json-file@^6.2.0: | 206 | load-json-file@^6.2.0: |
1019 | version "6.2.0" | 207 | version "6.2.0" |
1020 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" | 208 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" |
@@ -1025,34 +213,6 @@ load-json-file@^6.2.0: | |||
1025 | strip-bom "^4.0.0" | 213 | strip-bom "^4.0.0" |
1026 | type-fest "^0.6.0" | 214 | type-fest "^0.6.0" |
1027 | 215 | ||
1028 | long@^4.0.0: | ||
1029 | version "4.0.0" | ||
1030 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" | ||
1031 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== | ||
1032 | |||
1033 | lru@^3.1.0: | ||
1034 | version "3.1.0" | ||
1035 | resolved "https://registry.yarnpkg.com/lru/-/lru-3.1.0.tgz#ea7fb8546d83733396a13091d76cfeb4c06837d5" | ||
1036 | integrity sha1-6n+4VG2DczOWoTCR12z+tMBoN9U= | ||
1037 | dependencies: | ||
1038 | inherits "^2.0.1" | ||
1039 | |||
1040 | lt_donthave@^1.0.1: | ||
1041 | version "1.0.1" | ||
1042 | resolved "https://registry.yarnpkg.com/lt_donthave/-/lt_donthave-1.0.1.tgz#a160e08bdf15b9e092172063688855a6c031d8b3" | ||
1043 | integrity sha512-PfOXfDN9GnUjlNHjjxKQuMxPC8s12iSrnmg+Ff1BU1uLn7S1BFAKzpZCu6Gwg3WsCUvTZrZoDSHvy6B/j+N4/Q== | ||
1044 | dependencies: | ||
1045 | debug "^4.2.0" | ||
1046 | unordered-array-remove "^1.0.2" | ||
1047 | |||
1048 | magnet-uri@^6.0.0: | ||
1049 | version "6.2.0" | ||
1050 | resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-6.2.0.tgz#10f7be050bf23452df210838239b118463c3eeff" | ||
1051 | integrity sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ== | ||
1052 | dependencies: | ||
1053 | bep53-range "^1.1.0" | ||
1054 | thirty-two "^1.0.2" | ||
1055 | |||
1056 | make-dir@^3.0.0: | 216 | make-dir@^3.0.0: |
1057 | version "3.1.0" | 217 | version "3.1.0" |
1058 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" | 218 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" |
@@ -1060,170 +220,11 @@ make-dir@^3.0.0: | |||
1060 | dependencies: | 220 | dependencies: |
1061 | semver "^6.0.0" | 221 | semver "^6.0.0" |
1062 | 222 | ||
1063 | mdns-js-packet@~0.2.0: | ||
1064 | version "0.2.0" | ||
1065 | resolved "https://registry.yarnpkg.com/mdns-js-packet/-/mdns-js-packet-0.2.0.tgz#642409e8183c7561cc60615bbd1420ec2fad7616" | ||
1066 | integrity sha1-ZCQJ6Bg8dWHMYGFbvRQg7C+tdhY= | ||
1067 | dependencies: | ||
1068 | debug "^2.1.0" | ||
1069 | qap "^3.1.2" | ||
1070 | |||
1071 | mdns-js@0.5.0: | ||
1072 | version "0.5.0" | ||
1073 | resolved "https://registry.yarnpkg.com/mdns-js/-/mdns-js-0.5.0.tgz#4c8abb6ba7cabdc892d39228c3faa2556e09cf87" | ||
1074 | integrity sha1-TIq7a6fKvciS05Iow/qiVW4Jz4c= | ||
1075 | dependencies: | ||
1076 | debug "^2.1.1" | ||
1077 | mdns-js-packet "~0.2.0" | ||
1078 | semver "~5.1.0" | ||
1079 | |||
1080 | mediasource@^2.2.2, mediasource@^2.4.0: | ||
1081 | version "2.4.0" | ||
1082 | resolved "https://registry.yarnpkg.com/mediasource/-/mediasource-2.4.0.tgz#7b03378054c41400374e9bade50aa0d7a758c39b" | ||
1083 | integrity sha512-SKUMrbFMHgiCUZFOWZcL0aiF/KgHx9SPIKzxrl6+7nMUMDK/ZnOmJdY/9wKzYeM0g3mybt3ueg+W+/mrYfmeFQ== | ||
1084 | dependencies: | ||
1085 | inherits "^2.0.4" | ||
1086 | readable-stream "^3.6.0" | ||
1087 | to-arraybuffer "^1.0.1" | ||
1088 | |||
1089 | memory-chunk-store@^1.3.5: | ||
1090 | version "1.3.5" | ||
1091 | resolved "https://registry.yarnpkg.com/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz#700f712415895600bc5466007333efa19f1de07c" | ||
1092 | integrity sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g== | ||
1093 | dependencies: | ||
1094 | queue-microtask "^1.2.3" | ||
1095 | |||
1096 | mime@^1.3.4: | ||
1097 | version "1.6.0" | ||
1098 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" | ||
1099 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== | ||
1100 | |||
1101 | mime@^2.4.1, mime@^2.4.6, mime@^2.5.2: | ||
1102 | version "2.5.2" | ||
1103 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" | ||
1104 | integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== | ||
1105 | |||
1106 | mimic-response@^1.0.0: | ||
1107 | version "1.0.1" | ||
1108 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" | ||
1109 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== | ||
1110 | |||
1111 | mimic-response@^3.1.0: | ||
1112 | version "3.1.0" | ||
1113 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" | ||
1114 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== | ||
1115 | |||
1116 | minimatch@^3.0.4: | ||
1117 | version "3.0.4" | ||
1118 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" | ||
1119 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== | ||
1120 | dependencies: | ||
1121 | brace-expansion "^1.1.7" | ||
1122 | |||
1123 | minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5: | ||
1124 | version "1.2.5" | ||
1125 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" | ||
1126 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== | ||
1127 | |||
1128 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: | ||
1129 | version "2.9.0" | ||
1130 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" | ||
1131 | integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== | ||
1132 | dependencies: | ||
1133 | safe-buffer "^5.1.2" | ||
1134 | yallist "^3.0.0" | ||
1135 | |||
1136 | minizlib@^1.2.1: | ||
1137 | version "1.3.3" | ||
1138 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" | ||
1139 | integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== | ||
1140 | dependencies: | ||
1141 | minipass "^2.9.0" | ||
1142 | |||
1143 | mkdirp-classic@^0.5.2: | ||
1144 | version "0.5.3" | ||
1145 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" | ||
1146 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== | ||
1147 | |||
1148 | mkdirp@^0.5.0, mkdirp@^0.5.1: | ||
1149 | version "0.5.5" | ||
1150 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" | ||
1151 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== | ||
1152 | dependencies: | ||
1153 | minimist "^1.2.5" | ||
1154 | |||
1155 | moment@^2.27.0: | ||
1156 | version "2.29.1" | ||
1157 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" | ||
1158 | integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== | ||
1159 | |||
1160 | mp4-box-encoding@^1.3.0: | ||
1161 | version "1.4.1" | ||
1162 | resolved "https://registry.yarnpkg.com/mp4-box-encoding/-/mp4-box-encoding-1.4.1.tgz#19b31804c896bc1adf1c21b497bcf951aa3b9098" | ||
1163 | integrity sha512-2/PRtGGiqPc/VEhbm7xAQ+gbb7yzHjjMAv6MpAifr5pCpbh3fQUdj93uNgwPiTppAGu8HFKe3PeU+OdRyAxStA== | ||
1164 | dependencies: | ||
1165 | uint64be "^2.0.2" | ||
1166 | |||
1167 | mp4-stream@^3.0.0: | ||
1168 | version "3.1.3" | ||
1169 | resolved "https://registry.yarnpkg.com/mp4-stream/-/mp4-stream-3.1.3.tgz#79b8a19900337203a9bd607a02eccc64419a379c" | ||
1170 | integrity sha512-DUT8f0x2jHbZjNMdqe9h6lZdt6RENWTTdGn8z3TXa4uEsoltuNY9lCCij84mdm0q7xcV0E2W25WRxlKBMo4hSw== | ||
1171 | dependencies: | ||
1172 | mp4-box-encoding "^1.3.0" | ||
1173 | next-event "^1.0.0" | ||
1174 | queue-microtask "^1.2.2" | ||
1175 | readable-stream "^3.0.6" | ||
1176 | |||
1177 | ms@2.0.0: | ||
1178 | version "2.0.0" | ||
1179 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" | ||
1180 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= | ||
1181 | |||
1182 | ms@2.1.2: | ||
1183 | version "2.1.2" | ||
1184 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" | ||
1185 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== | ||
1186 | |||
1187 | ms@^2.1.1: | 223 | ms@^2.1.1: |
1188 | version "2.1.3" | 224 | version "2.1.3" |
1189 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" | 225 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" |
1190 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== | 226 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== |
1191 | 227 | ||
1192 | multicast-dns@^7.2.2: | ||
1193 | version "7.2.3" | ||
1194 | resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.3.tgz#cbd07571dda41807b36f71067681f19e85ccc2cd" | ||
1195 | integrity sha512-TzxgGSLRLB7tqAlzjgd2x2ZE0cDsGFq4rs9W4yE5xp+7hlRXeUQGtXZsTGfGw2FwWB45rfe8DtXMYBpZGMLUng== | ||
1196 | dependencies: | ||
1197 | dns-packet "^5.2.2" | ||
1198 | thunky "^1.0.2" | ||
1199 | |||
1200 | multistream@^4.0.1, multistream@^4.1.0: | ||
1201 | version "4.1.0" | ||
1202 | resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8" | ||
1203 | integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw== | ||
1204 | dependencies: | ||
1205 | once "^1.4.0" | ||
1206 | readable-stream "^3.6.0" | ||
1207 | |||
1208 | napi-macros@^2.0.0: | ||
1209 | version "2.0.0" | ||
1210 | resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" | ||
1211 | integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== | ||
1212 | |||
1213 | needle@^2.2.1: | ||
1214 | version "2.6.0" | ||
1215 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe" | ||
1216 | integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== | ||
1217 | dependencies: | ||
1218 | debug "^3.2.6" | ||
1219 | iconv-lite "^0.4.4" | ||
1220 | sax "^1.2.4" | ||
1221 | |||
1222 | netmask@^2.0.1: | ||
1223 | version "2.0.2" | ||
1224 | resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" | ||
1225 | integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== | ||
1226 | |||
1227 | netrc-parser@^3.1.6: | 228 | netrc-parser@^3.1.6: |
1228 | version "3.1.6" | 229 | version "3.1.6" |
1229 | resolved "https://registry.yarnpkg.com/netrc-parser/-/netrc-parser-3.1.6.tgz#7243c9ec850b8e805b9bdc7eae7b1450d4a96e72" | 230 | resolved "https://registry.yarnpkg.com/netrc-parser/-/netrc-parser-3.1.6.tgz#7243c9ec850b8e805b9bdc7eae7b1450d4a96e72" |
@@ -1232,86 +233,11 @@ netrc-parser@^3.1.6: | |||
1232 | debug "^3.1.0" | 233 | debug "^3.1.0" |
1233 | execa "^0.10.0" | 234 | execa "^0.10.0" |
1234 | 235 | ||
1235 | network-address@^1.0.0, network-address@^1.1.2: | ||
1236 | version "1.1.2" | ||
1237 | resolved "https://registry.yarnpkg.com/network-address/-/network-address-1.1.2.tgz#4aa7bfd43f03f0b81c9702b13d6a858ddb326f3e" | ||
1238 | integrity sha1-Sqe/1D8D8LgclwKxPWqFjdsybz4= | ||
1239 | |||
1240 | next-event@^1.0.0: | ||
1241 | version "1.0.0" | ||
1242 | resolved "https://registry.yarnpkg.com/next-event/-/next-event-1.0.0.tgz#e7778acde2e55802e0ad1879c39cf6f75eda61d8" | ||
1243 | integrity sha1-53eKzeLlWALgrRh5w5z2917aYdg= | ||
1244 | |||
1245 | nice-try@^1.0.4: | 236 | nice-try@^1.0.4: |
1246 | version "1.0.5" | 237 | version "1.0.5" |
1247 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" | 238 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" |
1248 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== | 239 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== |
1249 | 240 | ||
1250 | node-gyp-build@^4.2.0: | ||
1251 | version "4.2.3" | ||
1252 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" | ||
1253 | integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== | ||
1254 | |||
1255 | node-pre-gyp@^0.13.0: | ||
1256 | version "0.13.0" | ||
1257 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42" | ||
1258 | integrity sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ== | ||
1259 | dependencies: | ||
1260 | detect-libc "^1.0.2" | ||
1261 | mkdirp "^0.5.1" | ||
1262 | needle "^2.2.1" | ||
1263 | nopt "^4.0.1" | ||
1264 | npm-packlist "^1.1.6" | ||
1265 | npmlog "^4.0.2" | ||
1266 | rc "^1.2.7" | ||
1267 | rimraf "^2.6.1" | ||
1268 | semver "^5.3.0" | ||
1269 | tar "^4" | ||
1270 | |||
1271 | node-ssdp@^2.2.0, node-ssdp@^2.7.1: | ||
1272 | version "2.9.1" | ||
1273 | resolved "https://registry.yarnpkg.com/node-ssdp/-/node-ssdp-2.9.1.tgz#2d6ba8e7eff9bf5b338564f91f7ac5d5cdddc55b" | ||
1274 | integrity sha1-LWuo5+/5v1szhWT5H3rF1c3dxVs= | ||
1275 | dependencies: | ||
1276 | debug "^2.2.0" | ||
1277 | ip "^1.0.1" | ||
1278 | |||
1279 | nodebmc@0.0.7: | ||
1280 | version "0.0.7" | ||
1281 | resolved "https://registry.yarnpkg.com/nodebmc/-/nodebmc-0.0.7.tgz#fae179165265509302cefbebeabd29bd4035184d" | ||
1282 | integrity sha1-+uF5FlJlUJMCzvvr6r0pvUA1GE0= | ||
1283 | dependencies: | ||
1284 | mdns-js "0.5.0" | ||
1285 | |||
1286 | nopt@^4.0.1: | ||
1287 | version "4.0.3" | ||
1288 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" | ||
1289 | integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== | ||
1290 | dependencies: | ||
1291 | abbrev "1" | ||
1292 | osenv "^0.1.4" | ||
1293 | |||
1294 | npm-bundled@^1.0.1: | ||
1295 | version "1.1.2" | ||
1296 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" | ||
1297 | integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== | ||
1298 | dependencies: | ||
1299 | npm-normalize-package-bin "^1.0.1" | ||
1300 | |||
1301 | npm-normalize-package-bin@^1.0.1: | ||
1302 | version "1.0.1" | ||
1303 | resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" | ||
1304 | integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== | ||
1305 | |||
1306 | npm-packlist@^1.1.6: | ||
1307 | version "1.4.8" | ||
1308 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" | ||
1309 | integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== | ||
1310 | dependencies: | ||
1311 | ignore-walk "^3.0.1" | ||
1312 | npm-bundled "^1.0.1" | ||
1313 | npm-normalize-package-bin "^1.0.1" | ||
1314 | |||
1315 | npm-run-path@^2.0.0: | 241 | npm-run-path@^2.0.0: |
1316 | version "2.0.2" | 242 | version "2.0.2" |
1317 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" | 243 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" |
@@ -1319,79 +245,16 @@ npm-run-path@^2.0.0: | |||
1319 | dependencies: | 245 | dependencies: |
1320 | path-key "^2.0.0" | 246 | path-key "^2.0.0" |
1321 | 247 | ||
1322 | npmlog@^4.0.2: | ||
1323 | version "4.1.2" | ||
1324 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" | ||
1325 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== | ||
1326 | dependencies: | ||
1327 | are-we-there-yet "~1.1.2" | ||
1328 | console-control-strings "~1.1.0" | ||
1329 | gauge "~2.7.3" | ||
1330 | set-blocking "~2.0.0" | ||
1331 | |||
1332 | number-is-nan@^1.0.0: | ||
1333 | version "1.0.1" | ||
1334 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" | ||
1335 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= | ||
1336 | |||
1337 | object-assign@^4.1.0: | 248 | object-assign@^4.1.0: |
1338 | version "4.1.1" | 249 | version "4.1.1" |
1339 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" | 250 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" |
1340 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= | 251 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= |
1341 | 252 | ||
1342 | on-finished@^2.3.0: | ||
1343 | version "2.3.0" | ||
1344 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" | ||
1345 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= | ||
1346 | dependencies: | ||
1347 | ee-first "1.1.1" | ||
1348 | |||
1349 | once@^1.3.0, once@^1.3.1, once@^1.4.0: | ||
1350 | version "1.4.0" | ||
1351 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" | ||
1352 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= | ||
1353 | dependencies: | ||
1354 | wrappy "1" | ||
1355 | |||
1356 | open@^8.0.0: | ||
1357 | version "8.2.0" | ||
1358 | resolved "https://registry.yarnpkg.com/open/-/open-8.2.0.tgz#d6a4788b00009a9d60df471ecb89842a15fdcfc1" | ||
1359 | integrity sha512-O8uInONB4asyY3qUcEytpgwxQG3O0fJ/hlssoUHsBboOIRVZzT6Wq+Rwj5nffbeUhOdMjpXeISpDDzHCMRDuOQ== | ||
1360 | dependencies: | ||
1361 | define-lazy-prop "^2.0.0" | ||
1362 | is-docker "^2.1.1" | ||
1363 | is-wsl "^2.2.0" | ||
1364 | |||
1365 | os-homedir@^1.0.0: | ||
1366 | version "1.0.2" | ||
1367 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" | ||
1368 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= | ||
1369 | |||
1370 | os-tmpdir@^1.0.0: | ||
1371 | version "1.0.2" | ||
1372 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" | ||
1373 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= | ||
1374 | |||
1375 | osenv@^0.1.4: | ||
1376 | version "0.1.5" | ||
1377 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" | ||
1378 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== | ||
1379 | dependencies: | ||
1380 | os-homedir "^1.0.0" | ||
1381 | os-tmpdir "^1.0.0" | ||
1382 | |||
1383 | p-finally@^1.0.0: | 253 | p-finally@^1.0.0: |
1384 | version "1.0.0" | 254 | version "1.0.0" |
1385 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" | 255 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" |
1386 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= | 256 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= |
1387 | 257 | ||
1388 | package-json-versionify@^1.0.4: | ||
1389 | version "1.0.4" | ||
1390 | resolved "https://registry.yarnpkg.com/package-json-versionify/-/package-json-versionify-1.0.4.tgz#5860587a944873a6b7e6d26e8e51ffb22315bf17" | ||
1391 | integrity sha1-WGBYepRIc6a35tJujlH/siMVvxc= | ||
1392 | dependencies: | ||
1393 | browserify-package-json "^1.0.0" | ||
1394 | |||
1395 | parse-json@^5.0.0: | 258 | parse-json@^5.0.0: |
1396 | version "5.2.0" | 259 | version "5.2.0" |
1397 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" | 260 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" |
@@ -1402,250 +265,12 @@ parse-json@^5.0.0: | |||
1402 | json-parse-even-better-errors "^2.3.0" | 265 | json-parse-even-better-errors "^2.3.0" |
1403 | lines-and-columns "^1.1.6" | 266 | lines-and-columns "^1.1.6" |
1404 | 267 | ||
1405 | parse-torrent@^9.0.0, parse-torrent@^9.1.3: | ||
1406 | version "9.1.3" | ||
1407 | resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-9.1.3.tgz#9b4bc8dca243b356bf449938d6d38a259a2a707c" | ||
1408 | integrity sha512-/Yr951CvJM8S6TjMaqrsmMxeQEAjDeCX+MZ3hGXXc7DG2wqzp/rzOsHtDzIVqN6NsFRCqy6wYLF/W7Sgvq7bXw== | ||
1409 | dependencies: | ||
1410 | bencode "^2.0.1" | ||
1411 | blob-to-buffer "^1.2.9" | ||
1412 | get-stdin "^8.0.0" | ||
1413 | magnet-uri "^6.0.0" | ||
1414 | queue-microtask "^1.2.2" | ||
1415 | simple-get "^4.0.0" | ||
1416 | simple-sha1 "^3.0.1" | ||
1417 | |||
1418 | path-is-absolute@^1.0.0: | ||
1419 | version "1.0.1" | ||
1420 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" | ||
1421 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= | ||
1422 | |||
1423 | path-key@^2.0.0, path-key@^2.0.1: | 268 | path-key@^2.0.0, path-key@^2.0.1: |
1424 | version "2.0.1" | 269 | version "2.0.1" |
1425 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" | 270 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" |
1426 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= | 271 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= |
1427 | 272 | ||
1428 | piece-length@^2.0.1: | 273 | semver@^5.5.0: |
1429 | version "2.0.1" | ||
1430 | resolved "https://registry.yarnpkg.com/piece-length/-/piece-length-2.0.1.tgz#dbed4e78976955f34466d0a65304d0cb21914ac9" | ||
1431 | integrity sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug== | ||
1432 | |||
1433 | pify@^2.2.0: | ||
1434 | version "2.3.0" | ||
1435 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" | ||
1436 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= | ||
1437 | |||
1438 | plist-with-patches@0.5.1: | ||
1439 | version "0.5.1" | ||
1440 | resolved "https://registry.yarnpkg.com/plist-with-patches/-/plist-with-patches-0.5.1.tgz#868aae2e0df8989b026562b35cbc19cfd8bb780d" | ||
1441 | integrity sha1-hoquLg34mJsCZWKzXLwZz9i7eA0= | ||
1442 | dependencies: | ||
1443 | xmlbuilder "0.4.x" | ||
1444 | xmldom "0.1.x" | ||
1445 | |||
1446 | prettier-bytes@^1.0.4: | ||
1447 | version "1.0.4" | ||
1448 | resolved "https://registry.yarnpkg.com/prettier-bytes/-/prettier-bytes-1.0.4.tgz#994b02aa46f699c50b6257b5faaa7fe2557e62d6" | ||
1449 | integrity sha1-mUsCqkb2mcULYle1+qp/4lV+YtY= | ||
1450 | |||
1451 | process-nextick-args@~2.0.0: | ||
1452 | version "2.0.1" | ||
1453 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" | ||
1454 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== | ||
1455 | |||
1456 | protobufjs@^6.8.8: | ||
1457 | version "6.11.2" | ||
1458 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" | ||
1459 | integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== | ||
1460 | dependencies: | ||
1461 | "@protobufjs/aspromise" "^1.1.2" | ||
1462 | "@protobufjs/base64" "^1.1.2" | ||
1463 | "@protobufjs/codegen" "^2.0.4" | ||
1464 | "@protobufjs/eventemitter" "^1.1.0" | ||
1465 | "@protobufjs/fetch" "^1.1.0" | ||
1466 | "@protobufjs/float" "^1.0.2" | ||
1467 | "@protobufjs/inquire" "^1.1.0" | ||
1468 | "@protobufjs/path" "^1.1.2" | ||
1469 | "@protobufjs/pool" "^1.1.0" | ||
1470 | "@protobufjs/utf8" "^1.1.0" | ||
1471 | "@types/long" "^4.0.1" | ||
1472 | "@types/node" ">=13.7.0" | ||
1473 | long "^4.0.0" | ||
1474 | |||
1475 | pump@^3.0.0: | ||
1476 | version "3.0.0" | ||
1477 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" | ||
1478 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== | ||
1479 | dependencies: | ||
1480 | end-of-stream "^1.1.0" | ||
1481 | once "^1.3.1" | ||
1482 | |||
1483 | qap@^3.1.2: | ||
1484 | version "3.3.1" | ||
1485 | resolved "https://registry.yarnpkg.com/qap/-/qap-3.3.1.tgz#11f9e8fa8890fe7cb99210c0f44d0613b7372cac" | ||
1486 | integrity sha1-Efno+oiQ/ny5khDA9E0GE7c3LKw= | ||
1487 | |||
1488 | queue-microtask@^1.2.2, queue-microtask@^1.2.3: | ||
1489 | version "1.2.3" | ||
1490 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" | ||
1491 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== | ||
1492 | |||
1493 | random-access-file@^2.0.1: | ||
1494 | version "2.2.0" | ||
1495 | resolved "https://registry.yarnpkg.com/random-access-file/-/random-access-file-2.2.0.tgz#b49b999efefb374afb7587f219071fec5ce66546" | ||
1496 | integrity sha512-B744003Mj7v3EcuPl9hCiB2Ot4aZjgtU2mV6yFY1THiWU/XfGf1uSadR+SlQdJcwHgAWeG7Lbos0aUqjtj8FQg== | ||
1497 | dependencies: | ||
1498 | mkdirp-classic "^0.5.2" | ||
1499 | random-access-storage "^1.1.1" | ||
1500 | |||
1501 | random-access-storage@^1.1.1: | ||
1502 | version "1.4.1" | ||
1503 | resolved "https://registry.yarnpkg.com/random-access-storage/-/random-access-storage-1.4.1.tgz#39a524dd428ade9161ce61a8ae677766e6117ffb" | ||
1504 | integrity sha512-DbCc2TIzOxPaHF6KCbr8zLtiYOJQQQCBHUVNHV/SckUQobCBB2YkDtbLdxGnPwPNpJfEyMWxDAm36A2xkbxxtw== | ||
1505 | dependencies: | ||
1506 | inherits "^2.0.3" | ||
1507 | |||
1508 | random-iterate@^1.0.1: | ||
1509 | version "1.0.1" | ||
1510 | resolved "https://registry.yarnpkg.com/random-iterate/-/random-iterate-1.0.1.tgz#f7d97d92dee6665ec5f6da08c7f963cad4b2ac99" | ||
1511 | integrity sha1-99l9kt7mZl7F9toIx/ljytSyrJk= | ||
1512 | |||
1513 | randombytes@^2.0.3, randombytes@^2.0.5, randombytes@^2.1.0: | ||
1514 | version "2.1.0" | ||
1515 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" | ||
1516 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== | ||
1517 | dependencies: | ||
1518 | safe-buffer "^5.1.0" | ||
1519 | |||
1520 | range-parser@^1.2.1: | ||
1521 | version "1.2.1" | ||
1522 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" | ||
1523 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== | ||
1524 | |||
1525 | range-slice-stream@^2.0.0: | ||
1526 | version "2.0.0" | ||
1527 | resolved "https://registry.yarnpkg.com/range-slice-stream/-/range-slice-stream-2.0.0.tgz#1f25fc7a2cacf9ccd140c46f9cf670a1a7fe3ce6" | ||
1528 | integrity sha512-PPYLwZ63lXi6Tv2EZ8w3M4FzC0rVqvxivaOVS8pXSp5FMIHFnvi4MWHL3UdFLhwSy50aNtJsgjY0mBC6oFL26Q== | ||
1529 | dependencies: | ||
1530 | readable-stream "^3.0.2" | ||
1531 | |||
1532 | rc4@^0.1.5: | ||
1533 | version "0.1.5" | ||
1534 | resolved "https://registry.yarnpkg.com/rc4/-/rc4-0.1.5.tgz#08c6e04a0168f6eb621c22ab6cb1151bd9f4a64d" | ||
1535 | integrity sha1-CMbgSgFo9utiHCKrbLEVG9n0pk0= | ||
1536 | |||
1537 | rc@^1.2.7: | ||
1538 | version "1.2.8" | ||
1539 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" | ||
1540 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== | ||
1541 | dependencies: | ||
1542 | deep-extend "^0.6.0" | ||
1543 | ini "~1.3.0" | ||
1544 | minimist "^1.2.0" | ||
1545 | strip-json-comments "~2.0.1" | ||
1546 | |||
1547 | readable-stream@^2.0.6, readable-stream@^2.2.2: | ||
1548 | version "2.3.7" | ||
1549 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" | ||
1550 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== | ||
1551 | dependencies: | ||
1552 | core-util-is "~1.0.0" | ||
1553 | inherits "~2.0.3" | ||
1554 | isarray "~1.0.0" | ||
1555 | process-nextick-args "~2.0.0" | ||
1556 | safe-buffer "~5.1.1" | ||
1557 | string_decoder "~1.1.1" | ||
1558 | util-deprecate "~1.0.1" | ||
1559 | |||
1560 | readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: | ||
1561 | version "3.6.0" | ||
1562 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" | ||
1563 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== | ||
1564 | dependencies: | ||
1565 | inherits "^2.0.3" | ||
1566 | string_decoder "^1.1.1" | ||
1567 | util-deprecate "^1.0.1" | ||
1568 | |||
1569 | record-cache@^1.0.2: | ||
1570 | version "1.1.1" | ||
1571 | resolved "https://registry.yarnpkg.com/record-cache/-/record-cache-1.1.1.tgz#ba3088a489f50491a4af7b14d410822c394fb811" | ||
1572 | integrity sha512-L5hZlgWc7CmGbztnemQoKE1bLu9rtI2skOB0ttE4C5+TVszLE8Rd0YLTROSgvXKLAqPumS/soyN5tJW5wJLmJQ== | ||
1573 | |||
1574 | render-media@^4.1.0: | ||
1575 | version "4.1.0" | ||
1576 | resolved "https://registry.yarnpkg.com/render-media/-/render-media-4.1.0.tgz#9188376822653d7e56c2d789d157c81e74fee0cb" | ||
1577 | integrity sha512-F5BMWDmgATEoyPCtKjmGNTGN1ghoZlfRQ3MJh8dS/MrvIUIxupiof/Y9uahChipXcqQ57twVbgMmyQmuO1vokw== | ||
1578 | dependencies: | ||
1579 | debug "^4.2.0" | ||
1580 | is-ascii "^1.0.0" | ||
1581 | mediasource "^2.4.0" | ||
1582 | stream-to-blob-url "^3.0.2" | ||
1583 | videostream "^3.2.2" | ||
1584 | |||
1585 | rimraf@^2.6.1: | ||
1586 | version "2.7.1" | ||
1587 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" | ||
1588 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== | ||
1589 | dependencies: | ||
1590 | glob "^7.1.3" | ||
1591 | |||
1592 | rimraf@^3.0.0: | ||
1593 | version "3.0.2" | ||
1594 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" | ||
1595 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== | ||
1596 | dependencies: | ||
1597 | glob "^7.1.3" | ||
1598 | |||
1599 | run-parallel-limit@^1.1.0: | ||
1600 | version "1.1.0" | ||
1601 | resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" | ||
1602 | integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== | ||
1603 | dependencies: | ||
1604 | queue-microtask "^1.2.2" | ||
1605 | |||
1606 | run-parallel@^1.1.10, run-parallel@^1.1.2, run-parallel@^1.1.6, run-parallel@^1.2.0: | ||
1607 | version "1.2.0" | ||
1608 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" | ||
1609 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== | ||
1610 | dependencies: | ||
1611 | queue-microtask "^1.2.2" | ||
1612 | |||
1613 | run-series@^1.1.9: | ||
1614 | version "1.1.9" | ||
1615 | resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.9.tgz#15ba9cb90e6a6c054e67c98e1dc063df0ecc113a" | ||
1616 | integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g== | ||
1617 | |||
1618 | rusha@^0.8.13: | ||
1619 | version "0.8.14" | ||
1620 | resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.14.tgz#a977d0de9428406138b7bb90d3de5dcd024e2f68" | ||
1621 | integrity sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA== | ||
1622 | |||
1623 | safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: | ||
1624 | version "5.2.1" | ||
1625 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" | ||
1626 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== | ||
1627 | |||
1628 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: | ||
1629 | version "5.1.2" | ||
1630 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" | ||
1631 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== | ||
1632 | |||
1633 | "safer-buffer@>= 2.1.2 < 3": | ||
1634 | version "2.1.2" | ||
1635 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" | ||
1636 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== | ||
1637 | |||
1638 | sax@1.1.4: | ||
1639 | version "1.1.4" | ||
1640 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" | ||
1641 | integrity sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk= | ||
1642 | |||
1643 | sax@>=0.6.0, sax@^1.2.4: | ||
1644 | version "1.2.4" | ||
1645 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" | ||
1646 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== | ||
1647 | |||
1648 | semver@^5.3.0, semver@^5.5.0: | ||
1649 | version "5.7.1" | 274 | version "5.7.1" |
1650 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" | 275 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" |
1651 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== | 276 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== |
@@ -1655,16 +280,6 @@ semver@^6.0.0: | |||
1655 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" | 280 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" |
1656 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== | 281 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== |
1657 | 282 | ||
1658 | semver@~5.1.0: | ||
1659 | version "5.1.1" | ||
1660 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" | ||
1661 | integrity sha1-oykqNz5vPgeY2gsgZBuanFvEfhk= | ||
1662 | |||
1663 | set-blocking@~2.0.0: | ||
1664 | version "2.0.0" | ||
1665 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" | ||
1666 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= | ||
1667 | |||
1668 | shebang-command@^1.2.0: | 283 | shebang-command@^1.2.0: |
1669 | version "1.2.0" | 284 | version "1.2.0" |
1670 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" | 285 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" |
@@ -1682,61 +297,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: | |||
1682 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" | 297 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" |
1683 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== | 298 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== |
1684 | 299 | ||
1685 | simple-concat@^1.0.0, simple-concat@^1.0.1: | ||
1686 | version "1.0.1" | ||
1687 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" | ||
1688 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== | ||
1689 | |||
1690 | simple-get@^2.0.0, simple-get@^2.1.0: | ||
1691 | version "2.8.1" | ||
1692 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" | ||
1693 | integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== | ||
1694 | dependencies: | ||
1695 | decompress-response "^3.3.0" | ||
1696 | once "^1.3.1" | ||
1697 | simple-concat "^1.0.0" | ||
1698 | |||
1699 | simple-get@^4.0.0: | ||
1700 | version "4.0.0" | ||
1701 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" | ||
1702 | integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== | ||
1703 | dependencies: | ||
1704 | decompress-response "^6.0.0" | ||
1705 | once "^1.3.1" | ||
1706 | simple-concat "^1.0.0" | ||
1707 | |||
1708 | simple-peer@^9.11.0: | ||
1709 | version "9.11.0" | ||
1710 | resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.11.0.tgz#e8d27609c7a610c3ddd75767da868e8daab67571" | ||
1711 | integrity sha512-qvdNu/dGMHBm2uQ7oLhQBMhYlrOZC1ywXNCH/i8I4etxR1vrjCnU6ZSQBptndB1gcakjo2+w4OHo7Sjza1SHxg== | ||
1712 | dependencies: | ||
1713 | buffer "^6.0.3" | ||
1714 | debug "^4.3.1" | ||
1715 | err-code "^3.0.1" | ||
1716 | get-browser-rtc "^1.1.0" | ||
1717 | queue-microtask "^1.2.3" | ||
1718 | randombytes "^2.1.0" | ||
1719 | readable-stream "^3.6.0" | ||
1720 | |||
1721 | simple-sha1@^3.0.0, simple-sha1@^3.0.1, simple-sha1@^3.1.0: | ||
1722 | version "3.1.0" | ||
1723 | resolved "https://registry.yarnpkg.com/simple-sha1/-/simple-sha1-3.1.0.tgz#40cac8436dfaf9924332fc46a5c7bca45f656131" | ||
1724 | integrity sha512-ArTptMRC1v08H8ihPD6l0wesKvMfF9e8XL5rIHPanI7kGOsSsbY514MwVu6X1PITHCTB2F08zB7cyEbfc4wQjg== | ||
1725 | dependencies: | ||
1726 | queue-microtask "^1.2.2" | ||
1727 | rusha "^0.8.13" | ||
1728 | |||
1729 | simple-websocket@^9.1.0: | ||
1730 | version "9.1.0" | ||
1731 | resolved "https://registry.yarnpkg.com/simple-websocket/-/simple-websocket-9.1.0.tgz#91cbb39eafefbe7e66979da6c639109352786a7f" | ||
1732 | integrity sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ== | ||
1733 | dependencies: | ||
1734 | debug "^4.3.1" | ||
1735 | queue-microtask "^1.2.2" | ||
1736 | randombytes "^2.1.0" | ||
1737 | readable-stream "^3.6.0" | ||
1738 | ws "^7.4.2" | ||
1739 | |||
1740 | sort-keys@^4.0.0: | 300 | sort-keys@^4.0.0: |
1741 | version "4.2.0" | 301 | version "4.2.0" |
1742 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" | 302 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" |
@@ -1744,54 +304,6 @@ sort-keys@^4.0.0: | |||
1744 | dependencies: | 304 | dependencies: |
1745 | is-plain-obj "^2.0.0" | 305 | is-plain-obj "^2.0.0" |
1746 | 306 | ||
1747 | speedometer@^1.1.0: | ||
1748 | version "1.1.0" | ||
1749 | resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.1.0.tgz#a30b13abda45687a1a76977012c060f2ac8a7934" | ||
1750 | integrity sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ== | ||
1751 | |||
1752 | split@^1.0.1: | ||
1753 | version "1.0.1" | ||
1754 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" | ||
1755 | integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== | ||
1756 | dependencies: | ||
1757 | through "2" | ||
1758 | |||
1759 | stream-to-blob-url@^3.0.2: | ||
1760 | version "3.0.2" | ||
1761 | resolved "https://registry.yarnpkg.com/stream-to-blob-url/-/stream-to-blob-url-3.0.2.tgz#5574d139e2a6d1435945476f0a9469947f2da4fb" | ||
1762 | integrity sha512-PS6wT2ZyyR38Cy+lE6PBEI1ZmO2HdzZoLeDGG0zZbYikCZd0dh8FUoSeFzgWLItpBYw1WJmPVRLpykRV+lAWLQ== | ||
1763 | dependencies: | ||
1764 | stream-to-blob "^2.0.0" | ||
1765 | |||
1766 | stream-to-blob@^2.0.0, stream-to-blob@^2.0.1: | ||
1767 | version "2.0.1" | ||
1768 | resolved "https://registry.yarnpkg.com/stream-to-blob/-/stream-to-blob-2.0.1.tgz#59ab71d7a7f0bfb899570e886e44d39f4ac4381a" | ||
1769 | integrity sha512-GXlqXt3svqwIVWoICenix5Poxi4KbCF0BdXXUbpU1X4vq1V8wmjiEIU3aFJzCGNFpKxfbnG0uoowS3nKUgSPYg== | ||
1770 | |||
1771 | stream-with-known-length-to-buffer@^1.0.4: | ||
1772 | version "1.0.4" | ||
1773 | resolved "https://registry.yarnpkg.com/stream-with-known-length-to-buffer/-/stream-with-known-length-to-buffer-1.0.4.tgz#6a8aec53f27b8f481f962337c951aa3916fb60d1" | ||
1774 | integrity sha512-ztP79ug6S+I7td0Nd2GBeIKCm+vA54c+e60FY87metz5n/l6ydPELd2lxsljz8OpIhsRM9HkIiAwz85+S5G5/A== | ||
1775 | dependencies: | ||
1776 | once "^1.4.0" | ||
1777 | |||
1778 | string-width@^1.0.1: | ||
1779 | version "1.0.2" | ||
1780 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" | ||
1781 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= | ||
1782 | dependencies: | ||
1783 | code-point-at "^1.0.0" | ||
1784 | is-fullwidth-code-point "^1.0.0" | ||
1785 | strip-ansi "^3.0.0" | ||
1786 | |||
1787 | "string-width@^1.0.2 || 2": | ||
1788 | version "2.1.1" | ||
1789 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" | ||
1790 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== | ||
1791 | dependencies: | ||
1792 | is-fullwidth-code-point "^2.0.0" | ||
1793 | strip-ansi "^4.0.0" | ||
1794 | |||
1795 | string-width@^4.2.0: | 307 | string-width@^4.2.0: |
1796 | version "4.2.2" | 308 | version "4.2.2" |
1797 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" | 309 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" |
@@ -1801,42 +313,6 @@ string-width@^4.2.0: | |||
1801 | is-fullwidth-code-point "^3.0.0" | 313 | is-fullwidth-code-point "^3.0.0" |
1802 | strip-ansi "^6.0.0" | 314 | strip-ansi "^6.0.0" |
1803 | 315 | ||
1804 | string2compact@^1.3.0: | ||
1805 | version "1.3.0" | ||
1806 | resolved "https://registry.yarnpkg.com/string2compact/-/string2compact-1.3.0.tgz#22d946127b082d1203c51316af60117a337423c3" | ||
1807 | integrity sha512-004ulKKANDuQilQsNxy2lisrpMG0qUJxBU+2YCEF7KziRyNR0Nredm2qk0f1V82nva59H3y9GWeHXE63HzGRFw== | ||
1808 | dependencies: | ||
1809 | addr-to-ip-port "^1.0.1" | ||
1810 | ipaddr.js "^1.0.1" | ||
1811 | |||
1812 | string_decoder@^1.1.1: | ||
1813 | version "1.3.0" | ||
1814 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" | ||
1815 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== | ||
1816 | dependencies: | ||
1817 | safe-buffer "~5.2.0" | ||
1818 | |||
1819 | string_decoder@~1.1.1: | ||
1820 | version "1.1.1" | ||
1821 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" | ||
1822 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== | ||
1823 | dependencies: | ||
1824 | safe-buffer "~5.1.0" | ||
1825 | |||
1826 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: | ||
1827 | version "3.0.1" | ||
1828 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" | ||
1829 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= | ||
1830 | dependencies: | ||
1831 | ansi-regex "^2.0.0" | ||
1832 | |||
1833 | strip-ansi@^4.0.0: | ||
1834 | version "4.0.0" | ||
1835 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" | ||
1836 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= | ||
1837 | dependencies: | ||
1838 | ansi-regex "^3.0.0" | ||
1839 | |||
1840 | strip-ansi@^6.0.0: | 316 | strip-ansi@^6.0.0: |
1841 | version "6.0.0" | 317 | version "6.0.0" |
1842 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" | 318 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" |
@@ -1854,11 +330,6 @@ strip-eof@^1.0.0: | |||
1854 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" | 330 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" |
1855 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= | 331 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= |
1856 | 332 | ||
1857 | strip-json-comments@~2.0.1: | ||
1858 | version "2.0.1" | ||
1859 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" | ||
1860 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= | ||
1861 | |||
1862 | supports-color@^5.3.0: | 333 | supports-color@^5.3.0: |
1863 | version "5.5.0" | 334 | version "5.5.0" |
1864 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" | 335 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" |
@@ -1866,276 +337,18 @@ supports-color@^5.3.0: | |||
1866 | dependencies: | 337 | dependencies: |
1867 | has-flag "^3.0.0" | 338 | has-flag "^3.0.0" |
1868 | 339 | ||
1869 | tar@^4: | ||
1870 | version "4.4.13" | ||
1871 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" | ||
1872 | integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== | ||
1873 | dependencies: | ||
1874 | chownr "^1.1.1" | ||
1875 | fs-minipass "^1.2.5" | ||
1876 | minipass "^2.8.6" | ||
1877 | minizlib "^1.2.1" | ||
1878 | mkdirp "^0.5.0" | ||
1879 | safe-buffer "^5.1.2" | ||
1880 | yallist "^3.0.3" | ||
1881 | |||
1882 | thirty-two@^1.0.2: | ||
1883 | version "1.0.2" | ||
1884 | resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" | ||
1885 | integrity sha1-TKL//AKlEpDSdEueP1V2k8prYno= | ||
1886 | |||
1887 | through@2: | ||
1888 | version "2.3.8" | ||
1889 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" | ||
1890 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= | ||
1891 | |||
1892 | thunky@^0.1.0: | ||
1893 | version "0.1.0" | ||
1894 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" | ||
1895 | integrity sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4= | ||
1896 | |||
1897 | thunky@^1.0.1, thunky@^1.0.2: | ||
1898 | version "1.1.0" | ||
1899 | resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" | ||
1900 | integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== | ||
1901 | |||
1902 | timeout-refresh@^1.0.0: | ||
1903 | version "1.0.3" | ||
1904 | resolved "https://registry.yarnpkg.com/timeout-refresh/-/timeout-refresh-1.0.3.tgz#7024a8ce0a09a57acc2ea86002048e6c0bff7375" | ||
1905 | integrity sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA== | ||
1906 | |||
1907 | to-arraybuffer@^1.0.1: | ||
1908 | version "1.0.1" | ||
1909 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" | ||
1910 | integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= | ||
1911 | |||
1912 | torrent-discovery@^9.4.0: | ||
1913 | version "9.4.0" | ||
1914 | resolved "https://registry.yarnpkg.com/torrent-discovery/-/torrent-discovery-9.4.0.tgz#e6b5f8244e6ea0c48efbcfc88792e033d15e6f56" | ||
1915 | integrity sha512-+YW9JGbO5bCuDw9YYW//p4iVLV0aP4C+AYrNQjL/+dSNPUtD1ufK1V8UZERt6rIoeNGhutkSVyeO4Fid9Tjxjg== | ||
1916 | dependencies: | ||
1917 | bittorrent-dht "^10.0.0" | ||
1918 | bittorrent-lsd "^1.0.0" | ||
1919 | bittorrent-tracker "^9.0.0" | ||
1920 | debug "^4.0.0" | ||
1921 | run-parallel "^1.1.2" | ||
1922 | |||
1923 | torrent-piece@^2.0.1: | ||
1924 | version "2.0.1" | ||
1925 | resolved "https://registry.yarnpkg.com/torrent-piece/-/torrent-piece-2.0.1.tgz#a1a50fffa589d9bf9560e38837230708bc3afdc6" | ||
1926 | integrity sha512-JLSOyvQVLI6JTWqioY4vFL0JkEUKQcaHQsU3loxkCvPTSttw8ePs2tFwsP4XIjw99Fz8EdOzt/4faykcbnPbCQ== | ||
1927 | |||
1928 | type-fest@^0.6.0: | 340 | type-fest@^0.6.0: |
1929 | version "0.6.0" | 341 | version "0.6.0" |
1930 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" | 342 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" |
1931 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== | 343 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== |
1932 | 344 | ||
1933 | typedarray-to-buffer@^3.0.0, typedarray-to-buffer@^3.1.5: | 345 | typedarray-to-buffer@^3.1.5: |
1934 | version "3.1.5" | 346 | version "3.1.5" |
1935 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" | 347 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" |
1936 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== | 348 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== |
1937 | dependencies: | 349 | dependencies: |
1938 | is-typedarray "^1.0.0" | 350 | is-typedarray "^1.0.0" |
1939 | 351 | ||
1940 | typedarray@^0.0.6: | ||
1941 | version "0.0.6" | ||
1942 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" | ||
1943 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= | ||
1944 | |||
1945 | uint64be@^2.0.2: | ||
1946 | version "2.0.2" | ||
1947 | resolved "https://registry.yarnpkg.com/uint64be/-/uint64be-2.0.2.tgz#ef4a179752fe8f9ddaa29544ecfc13490031e8e5" | ||
1948 | integrity sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ== | ||
1949 | dependencies: | ||
1950 | buffer-alloc "^1.1.0" | ||
1951 | |||
1952 | unordered-array-remove@^1.0.2: | ||
1953 | version "1.0.2" | ||
1954 | resolved "https://registry.yarnpkg.com/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz#c546e8f88e317a0cf2644c97ecb57dba66d250ef" | ||
1955 | integrity sha1-xUbo+I4xegzyZEyX7LV9umbSUO8= | ||
1956 | |||
1957 | unordered-set@^2.0.1: | ||
1958 | version "2.0.1" | ||
1959 | resolved "https://registry.yarnpkg.com/unordered-set/-/unordered-set-2.0.1.tgz#4cd0fe27b8814bcf5d6073e5f0966ec7a50841e6" | ||
1960 | integrity sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg== | ||
1961 | |||
1962 | upnp-device-client@^1.0.0: | ||
1963 | version "1.0.2" | ||
1964 | resolved "https://registry.yarnpkg.com/upnp-device-client/-/upnp-device-client-1.0.2.tgz#91f84705f2349bf89082855fff4e3006ac435337" | ||
1965 | integrity sha1-kfhHBfI0m/iQgoVf/04wBqxDUzc= | ||
1966 | dependencies: | ||
1967 | concat-stream "^1.4.8" | ||
1968 | debug "^2.1.3" | ||
1969 | elementtree "~0.1.6" | ||
1970 | network-address "^1.0.0" | ||
1971 | |||
1972 | upnp-mediarenderer-client@^1.2.2: | ||
1973 | version "1.4.0" | ||
1974 | resolved "https://registry.yarnpkg.com/upnp-mediarenderer-client/-/upnp-mediarenderer-client-1.4.0.tgz#06788675c00223d90f605f7971587ab8f3c6783b" | ||
1975 | integrity sha512-F+C3Yceoz0j3ZWEchz5tpaOEqkbpObRUmeuPGc9+2u2YvC1CDbXGQ6mjbM10MDhnUJ0tTWYTufpj6xsWctnULw== | ||
1976 | dependencies: | ||
1977 | debug "^2.1.3" | ||
1978 | elementtree "^0.1.6" | ||
1979 | upnp-device-client "^1.0.0" | ||
1980 | |||
1981 | url-join@^4.0.0: | ||
1982 | version "4.0.1" | ||
1983 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" | ||
1984 | integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== | ||
1985 | |||
1986 | ut_metadata@^3.5.2: | ||
1987 | version "3.5.2" | ||
1988 | resolved "https://registry.yarnpkg.com/ut_metadata/-/ut_metadata-3.5.2.tgz#2351c9348759e929978fa6a08d56ef6f584749e7" | ||
1989 | integrity sha512-3XZZuJSeoIUyMYSuDbTbVtP4KAVGHPfU8nmHFkr8LJc+THCaUXwnu/2AV+LCSLarET/hL9IlbNfYTGrt6fOVuQ== | ||
1990 | dependencies: | ||
1991 | bencode "^2.0.1" | ||
1992 | bitfield "^4.0.0" | ||
1993 | debug "^4.2.0" | ||
1994 | simple-sha1 "^3.0.1" | ||
1995 | |||
1996 | ut_pex@^3.0.0: | ||
1997 | version "3.0.1" | ||
1998 | resolved "https://registry.yarnpkg.com/ut_pex/-/ut_pex-3.0.1.tgz#fb8b6e066f8f6f6de3e6b3e28e7d18e697be5854" | ||
1999 | integrity sha512-t1MHIDHSISgOJcmq8UM6Qv9/hRQYVaUvzqSNnXa5ATDbS9hXfhBpyBo2HcSyJtwPSHsmMtNui8G6yKirwJ8vow== | ||
2000 | dependencies: | ||
2001 | bencode "^2.0.1" | ||
2002 | compact2string "^1.4.1" | ||
2003 | string2compact "^1.3.0" | ||
2004 | |||
2005 | utf-8-validate@^5.0.5: | ||
2006 | version "5.0.5" | ||
2007 | resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.5.tgz#dd32c2e82c72002dc9f02eb67ba6761f43456ca1" | ||
2008 | integrity sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ== | ||
2009 | dependencies: | ||
2010 | node-gyp-build "^4.2.0" | ||
2011 | |||
2012 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: | ||
2013 | version "1.0.2" | ||
2014 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" | ||
2015 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= | ||
2016 | |||
2017 | utp-native@^2.4.0: | ||
2018 | version "2.5.0" | ||
2019 | resolved "https://registry.yarnpkg.com/utp-native/-/utp-native-2.5.0.tgz#3d8321760108b30cb15391196c8cc93db85b61ce" | ||
2020 | integrity sha512-HoHPE6gwLxC0xlpYJUl+Xw2sh809lhXx3TexHsb2/xY8vEd6NwuvAxOI/X27dBTc/TOT5diWUpCJWDaunkcVvA== | ||
2021 | dependencies: | ||
2022 | napi-macros "^2.0.0" | ||
2023 | node-gyp-build "^4.2.0" | ||
2024 | readable-stream "^3.0.2" | ||
2025 | timeout-refresh "^1.0.0" | ||
2026 | unordered-set "^2.0.1" | ||
2027 | |||
2028 | videostream@^3.2.2: | ||
2029 | version "3.2.2" | ||
2030 | resolved "https://registry.yarnpkg.com/videostream/-/videostream-3.2.2.tgz#e3e8d44f5159892f8f31ad35cbf9302d7a6e6afc" | ||
2031 | integrity sha512-4tz23yGGeATmbzj/ZnUm6wgQ4E1lzmMXu2mUA/c0G6adtWKxm1Di5YejdZdRsK6SdkLjKjhplFFYT7r+UUDKvA== | ||
2032 | dependencies: | ||
2033 | binary-search "^1.3.4" | ||
2034 | mediasource "^2.2.2" | ||
2035 | mp4-box-encoding "^1.3.0" | ||
2036 | mp4-stream "^3.0.0" | ||
2037 | pump "^3.0.0" | ||
2038 | range-slice-stream "^2.0.0" | ||
2039 | |||
2040 | vlc-command@^1.2.0: | ||
2041 | version "1.2.0" | ||
2042 | resolved "https://registry.yarnpkg.com/vlc-command/-/vlc-command-1.2.0.tgz#a5bac48c6948f587c0be412a07dcdc7b8eb07c9c" | ||
2043 | integrity sha512-YTr1w5KmxRN5CBCvplKOD6g/OjwCl5iz+SIjDbq8gWTkByYZun5duHm+OLUkBlbJrCGvMyFyNhTMQxV4Ny0v8g== | ||
2044 | dependencies: | ||
2045 | run-parallel "^1.1.6" | ||
2046 | winreg "^1.2.1" | ||
2047 | |||
2048 | webidl-conversions@^4.0.2: | ||
2049 | version "4.0.2" | ||
2050 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" | ||
2051 | integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== | ||
2052 | |||
2053 | webtorrent-cli@^3.2.0: | ||
2054 | version "3.3.0" | ||
2055 | resolved "https://registry.yarnpkg.com/webtorrent-cli/-/webtorrent-cli-3.3.0.tgz#465e9fb82373c6b279904b5876d4745cb8ac6b43" | ||
2056 | integrity sha512-E0gb1fXb8xNScgewQmvAmNLrnEto6MOaKlfzITVzR+bbU80LeV/YdrLw536ffcwiUv0arKQyfR/WIweBFrKWbg== | ||
2057 | dependencies: | ||
2058 | clivas "^0.2.0" | ||
2059 | common-tags "^1.8.0" | ||
2060 | create-torrent "^4.4.2" | ||
2061 | dlnacasts "^0.1.0" | ||
2062 | ecstatic "^4.1.4" | ||
2063 | executable "^4.1.1" | ||
2064 | mime "^2.4.6" | ||
2065 | minimist "^1.2.5" | ||
2066 | moment "^2.27.0" | ||
2067 | network-address "^1.1.2" | ||
2068 | open "^8.0.0" | ||
2069 | parse-torrent "^9.0.0" | ||
2070 | prettier-bytes "^1.0.4" | ||
2071 | vlc-command "^1.2.0" | ||
2072 | webtorrent "^1.0.0" | ||
2073 | winreg "^1.2.4" | ||
2074 | optionalDependencies: | ||
2075 | airplay-js "^0.3.0" | ||
2076 | chromecasts "^1.9.1" | ||
2077 | nodebmc "0.0.7" | ||
2078 | |||
2079 | webtorrent-hybrid@^4.0.3: | ||
2080 | version "4.1.0" | ||
2081 | resolved "https://registry.yarnpkg.com/webtorrent-hybrid/-/webtorrent-hybrid-4.1.0.tgz#86e397a8f051de225c60ce751f47d28a906cbfdc" | ||
2082 | integrity sha512-IqRWVI+gXHjv/ybj3YK6Q4gJM1OaIgy3Nw3ec0iPS7TeBrG6R3yhfHupF39DIwyKFERZDnYoxVnxHOt8TAaucw== | ||
2083 | dependencies: | ||
2084 | create-torrent "^4.4.2" | ||
2085 | webtorrent "^1.0.0" | ||
2086 | webtorrent-cli "^3.2.0" | ||
2087 | wrtc "^0.4.6" | ||
2088 | |||
2089 | webtorrent@^1.0.0: | ||
2090 | version "1.0.0" | ||
2091 | resolved "https://registry.yarnpkg.com/webtorrent/-/webtorrent-1.0.0.tgz#1d8fd388726ca013feb17d2437b1b9df2d24b5e8" | ||
2092 | integrity sha512-htwcY5OBOWL/OMwaw3xi1Mp2gE9k5UmGTKeO3n1ixQDH9QgeqqRlBJz2ZLEyOL8yN1FdS/D9z+ijm06bZ3oW5w== | ||
2093 | dependencies: | ||
2094 | addr-to-ip-port "^1.5.1" | ||
2095 | bitfield "^4.0.0" | ||
2096 | bittorrent-dht "^10.0.0" | ||
2097 | bittorrent-protocol "^3.3.1" | ||
2098 | chrome-net "^3.3.4" | ||
2099 | chunk-store-stream "^4.3.0" | ||
2100 | cpus "^1.0.3" | ||
2101 | create-torrent "^4.7.0" | ||
2102 | debug "^4.3.1" | ||
2103 | end-of-stream "^1.4.4" | ||
2104 | escape-html "^1.0.3" | ||
2105 | fs-chunk-store "^2.0.3" | ||
2106 | http-node "github:feross/http-node#webtorrent" | ||
2107 | immediate-chunk-store "^2.2.0" | ||
2108 | load-ip-set "^2.2.1" | ||
2109 | lt_donthave "^1.0.1" | ||
2110 | memory-chunk-store "^1.3.5" | ||
2111 | mime "^2.5.2" | ||
2112 | multistream "^4.1.0" | ||
2113 | package-json-versionify "^1.0.4" | ||
2114 | parse-torrent "^9.1.3" | ||
2115 | pump "^3.0.0" | ||
2116 | queue-microtask "^1.2.3" | ||
2117 | random-iterate "^1.0.1" | ||
2118 | randombytes "^2.1.0" | ||
2119 | range-parser "^1.2.1" | ||
2120 | readable-stream "^3.6.0" | ||
2121 | render-media "^4.1.0" | ||
2122 | run-parallel "^1.2.0" | ||
2123 | run-parallel-limit "^1.1.0" | ||
2124 | simple-concat "^1.0.1" | ||
2125 | simple-get "^4.0.0" | ||
2126 | simple-peer "^9.11.0" | ||
2127 | simple-sha1 "^3.1.0" | ||
2128 | speedometer "^1.1.0" | ||
2129 | stream-to-blob "^2.0.1" | ||
2130 | stream-to-blob-url "^3.0.2" | ||
2131 | stream-with-known-length-to-buffer "^1.0.4" | ||
2132 | torrent-discovery "^9.4.0" | ||
2133 | torrent-piece "^2.0.1" | ||
2134 | unordered-array-remove "^1.0.2" | ||
2135 | ut_metadata "^3.5.2" | ||
2136 | ut_pex "^3.0.0" | ||
2137 | utp-native "^2.4.0" | ||
2138 | |||
2139 | which@^1.2.9: | 352 | which@^1.2.9: |
2140 | version "1.3.1" | 353 | version "1.3.1" |
2141 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" | 354 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" |
@@ -2143,23 +356,6 @@ which@^1.2.9: | |||
2143 | dependencies: | 356 | dependencies: |
2144 | isexe "^2.0.0" | 357 | isexe "^2.0.0" |
2145 | 358 | ||
2146 | wide-align@^1.1.0: | ||
2147 | version "1.1.3" | ||
2148 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" | ||
2149 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== | ||
2150 | dependencies: | ||
2151 | string-width "^1.0.2 || 2" | ||
2152 | |||
2153 | winreg@^1.2.1, winreg@^1.2.4: | ||
2154 | version "1.2.4" | ||
2155 | resolved "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b" | ||
2156 | integrity sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs= | ||
2157 | |||
2158 | wrappy@1: | ||
2159 | version "1.0.2" | ||
2160 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" | ||
2161 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= | ||
2162 | |||
2163 | write-file-atomic@^3.0.0: | 359 | write-file-atomic@^3.0.0: |
2164 | version "3.0.3" | 360 | version "3.0.3" |
2165 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" | 361 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" |
@@ -2181,45 +377,3 @@ write-json-file@^4.2.0: | |||
2181 | make-dir "^3.0.0" | 377 | make-dir "^3.0.0" |
2182 | sort-keys "^4.0.0" | 378 | sort-keys "^4.0.0" |
2183 | write-file-atomic "^3.0.0" | 379 | write-file-atomic "^3.0.0" |
2184 | |||
2185 | wrtc@^0.4.6: | ||
2186 | version "0.4.7" | ||
2187 | resolved "https://registry.yarnpkg.com/wrtc/-/wrtc-0.4.7.tgz#c61530cd662713e50bffe64b7a78673ce070426c" | ||
2188 | integrity sha512-P6Hn7VT4lfSH49HxLHcHhDq+aFf/jd9dPY7lDHeFhZ22N3858EKuwm2jmnlPzpsRGEPaoF6XwkcxY5SYnt4f/g== | ||
2189 | dependencies: | ||
2190 | node-pre-gyp "^0.13.0" | ||
2191 | optionalDependencies: | ||
2192 | domexception "^1.0.1" | ||
2193 | |||
2194 | ws@^7.4.2, ws@^7.4.5: | ||
2195 | version "7.4.6" | ||
2196 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" | ||
2197 | integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== | ||
2198 | |||
2199 | xml2js@^0.4.8: | ||
2200 | version "0.4.23" | ||
2201 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" | ||
2202 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== | ||
2203 | dependencies: | ||
2204 | sax ">=0.6.0" | ||
2205 | xmlbuilder "~11.0.0" | ||
2206 | |||
2207 | xmlbuilder@0.4.x: | ||
2208 | version "0.4.3" | ||
2209 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-0.4.3.tgz#c4614ba74e0ad196e609c9272cd9e1ddb28a8a58" | ||
2210 | integrity sha1-xGFLp04K0ZbmCcknLNnh3bKKilg= | ||
2211 | |||
2212 | xmlbuilder@~11.0.0: | ||
2213 | version "11.0.1" | ||
2214 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" | ||
2215 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== | ||
2216 | |||
2217 | xmldom@0.1.x: | ||
2218 | version "0.1.31" | ||
2219 | resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" | ||
2220 | integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== | ||
2221 | |||
2222 | yallist@^3.0.0, yallist@^3.0.3: | ||
2223 | version "3.1.1" | ||
2224 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" | ||
2225 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== | ||
diff --git a/support/doc/tools.md b/support/doc/tools.md index 433aaeff7..78ace1344 100644 --- a/support/doc/tools.md +++ b/support/doc/tools.md | |||
@@ -10,7 +10,6 @@ | |||
10 | - [CLI wrapper](#cli-wrapper) | 10 | - [CLI wrapper](#cli-wrapper) |
11 | - [peertube-import-videos.js](#peertube-import-videosjs) | 11 | - [peertube-import-videos.js](#peertube-import-videosjs) |
12 | - [peertube-upload.js](#peertube-uploadjs) | 12 | - [peertube-upload.js](#peertube-uploadjs) |
13 | - [peertube-watch.js](#peertube-watchjs) | ||
14 | - [peertube-plugins.js](#peertube-pluginsjs) | 13 | - [peertube-plugins.js](#peertube-pluginsjs) |
15 | - [peertube-redundancy.js](#peertube-redundancyjs) | 14 | - [peertube-redundancy.js](#peertube-redundancyjs) |
16 | - [Server tools](#server-tools) | 15 | - [Server tools](#server-tools) |
@@ -22,11 +21,6 @@ | |||
22 | - [update-host.js](#update-hostjs) | 21 | - [update-host.js](#update-hostjs) |
23 | - [reset-password.js](#reset-passwordjs) | 22 | - [reset-password.js](#reset-passwordjs) |
24 | - [plugin install/uninstall](#plugin-installuninstall) | 23 | - [plugin install/uninstall](#plugin-installuninstall) |
25 | - [REPL (Read Eval Print Loop)](#repl-read-eval-print-loop) | ||
26 | - [.help](#help) | ||
27 | - [Lodash example](#lodash-example) | ||
28 | - [YoutubeDL example](#youtubedl-example) | ||
29 | - [Models examples](#models-examples) | ||
30 | 24 | ||
31 | <!-- END doctoc generated TOC please keep comment here to allow auto update --> | 25 | <!-- END doctoc generated TOC please keep comment here to allow auto update --> |
32 | 26 | ||
@@ -75,8 +69,6 @@ You can access it as `peertube` via an alias in your `.bashrc` like `alias peert | |||
75 | auth [action] register your accounts on remote instances to use them with other commands | 69 | auth [action] register your accounts on remote instances to use them with other commands |
76 | upload|up upload a video | 70 | upload|up upload a video |
77 | import-videos|import import a video from a streaming platform | 71 | import-videos|import import a video from a streaming platform |
78 | watch|w watch a video in the terminal ✩°。⋆ | ||
79 | repl initiate a REPL to access internals | ||
80 | plugins|p [action] manage instance plugins | 72 | plugins|p [action] manage instance plugins |
81 | redundancy|r [action] manage video redundancies | 73 | redundancy|r [action] manage video redundancies |
82 | help [cmd] display help for [cmd] | 74 | help [cmd] display help for [cmd] |
@@ -100,12 +92,6 @@ You can now use that account to upload videos without feeding the same parameter | |||
100 | $ peertube up <videoFile> | 92 | $ peertube up <videoFile> |
101 | ``` | 93 | ``` |
102 | 94 | ||
103 | And now that your video is online, you can watch it from the confort of your terminal (use `peertube watch --help` to see the supported players): | ||
104 | |||
105 | ```bash | ||
106 | $ peertube watch https://peertube.cpy.re/videos/watch/e8a1af4e-414a-4d58-bfe6-2146eed06d10 | ||
107 | ``` | ||
108 | |||
109 | To list, install, uninstall dynamically plugins/themes of an instance: | 95 | To list, install, uninstall dynamically plugins/themes of an instance: |
110 | 96 | ||
111 | ```bash | 97 | ```bash |
@@ -169,22 +155,6 @@ $ cd ${CLONE} | |||
169 | $ node dist/server/tools/peertube-upload.js --help | 155 | $ node dist/server/tools/peertube-upload.js --help |
170 | ``` | 156 | ``` |
171 | 157 | ||
172 | #### peertube-watch.js | ||
173 | |||
174 | You can use this script to play videos directly from the CLI. | ||
175 | |||
176 | It provides support for different players: | ||
177 | |||
178 | - ascii (default ; plays in ascii art in your terminal!) | ||
179 | - mpv | ||
180 | - mplayer | ||
181 | - vlc | ||
182 | - stdout | ||
183 | - xbmc | ||
184 | - airplay | ||
185 | - chromecast | ||
186 | |||
187 | |||
188 | #### peertube-plugins.js | 158 | #### peertube-plugins.js |
189 | 159 | ||
190 | Install/update/uninstall or list local or NPM PeerTube plugins: | 160 | Install/update/uninstall or list local or NPM PeerTube plugins: |
@@ -413,134 +383,3 @@ $ # Docker installation | |||
413 | $ cd /var/www/peertube-docker | 383 | $ cd /var/www/peertube-docker |
414 | $ docker-compose exec -u peertube peertube npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin | 384 | $ docker-compose exec -u peertube peertube npm run plugin:uninstall -- --npm-name peertube-plugin-myplugin |
415 | ``` | 385 | ``` |
416 | |||
417 | ### REPL (Read Eval Print Loop) | ||
418 | |||
419 | If you want to interact with the application libraries and objects even when PeerTube is not running, there is a REPL for that. | ||
420 | |||
421 | usage: `node ./dist/server/tools/peertube-repl.js` | ||
422 | |||
423 | "The default evaluator will, by default, assign the result of the most recently evaluated expression to the special variable `_` (underscore). Explicitly setting `_` to a value will disable this behavior." | ||
424 | |||
425 | - type `.help` to list commands available in the repl, notice it starts with a dot | ||
426 | - type `.exit` to exit, note that you still have to press CTRL-C to actually exit, or press CTRL-C (3 times) without typing `.exit` to exit | ||
427 | - type `context` to list all available objects and libraries in the context, note: `Promise` is also available but it's not listed in the context, in case you need promises for something | ||
428 | - type `env` to see the loaded environment variables | ||
429 | - type `path` to access path library | ||
430 | - type `lodash` to access lodash library | ||
431 | - type `uuidv1` to access uuid/v1 library | ||
432 | - type `uuidv3` to access uuid/v3 library | ||
433 | - type `uuidv4` to access uuid/v4 library | ||
434 | - type `uuidv5` to access uuid/v5 library | ||
435 | - type `YoutubeDL` to access youtube-dl library | ||
436 | - type `cli` to access the cli helpers object | ||
437 | - type `logger` to access the logger; if you log to it, it will write to stdout and to the peertube.log file | ||
438 | - type `constants` to access the constants loaded by the server | ||
439 | - type `coreUtils` to access the core-utils helpers object | ||
440 | - type `ffmpegUtils` to access the ffmpeg-utils helpers object | ||
441 | - type `peertubeCryptoUtils` to access the peertube-crypto helpers object | ||
442 | - type `signupUtils` to access the signup helpers object | ||
443 | - type `utils` to access the utils helpers object | ||
444 | - type `YoutubeDLUtils` to access the youtube-dl helpers object | ||
445 | - type `sequelizeTypescript` to access sequelizeTypescript | ||
446 | - type `modelsUtils` to access the models/utils | ||
447 | - type `models` to access the shortcut to sequelizeTypescript.models | ||
448 | - type `transaction` to access the shortcut to sequelizeTypescript.transaction | ||
449 | - type `query` to access the shortcut to sequelizeTypescript.query | ||
450 | - type `queryInterface` to access the shortcut to sequelizeTypescript.queryInterface | ||
451 | |||
452 | #### .help | ||
453 | |||
454 | ``` | ||
455 | PeerTube [1.0.0] (b10eb595)> .help | ||
456 | .break Sometimes you get stuck, this gets you out | ||
457 | .clear Break, and also clear the local context | ||
458 | .editor Enter editor mode | ||
459 | .exit Exit the repl | ||
460 | .help Print this help message | ||
461 | .load Load JS from a file into the REPL session | ||
462 | .r Reset REPL | ||
463 | .reset Reset REPL | ||
464 | .save Save all evaluated commands in this REPL session to a file | ||
465 | PeerTube [1.0.0] (b10eb595)> | ||
466 | ``` | ||
467 | |||
468 | #### Lodash example | ||
469 | |||
470 | ``` | ||
471 | PeerTube [1.0.0] (b10eb595)> lodash.keys(context) | ||
472 | [ 'global', | ||
473 | 'console', | ||
474 | 'DTRACE_NET_SERVER_CONNECTION', | ||
475 | 'DTRACE_NET_STREAM_END', | ||
476 | 'DTRACE_HTTP_SERVER_REQUEST', | ||
477 | 'DTRACE_HTTP_SERVER_RESPONSE', | ||
478 | 'DTRACE_HTTP_CLIENT_REQUEST', | ||
479 | 'DTRACE_HTTP_CLIENT_RESPONSE', | ||
480 | 'process', | ||
481 | 'Buffer', | ||
482 | 'clearImmediate', | ||
483 | 'clearInterval', | ||
484 | 'clearTimeout', | ||
485 | 'setImmediate', | ||
486 | 'setInterval', | ||
487 | 'setTimeout', | ||
488 | 'XMLHttpRequest', | ||
489 | 'compact2string', | ||
490 | 'module', | ||
491 | 'require', | ||
492 | 'path', | ||
493 | 'repl', | ||
494 | 'context', | ||
495 | 'env', | ||
496 | 'lodash', | ||
497 | 'uuidv1', | ||
498 | 'uuidv3', | ||
499 | 'uuidv4', | ||
500 | 'uuidv5', | ||
501 | 'cli', | ||
502 | 'logger', | ||
503 | 'constants', | ||
504 | 'Sequelize', | ||
505 | 'sequelizeTypescript', | ||
506 | 'modelsUtils', | ||
507 | 'models', | ||
508 | 'transaction', | ||
509 | 'query', | ||
510 | 'queryInterface', | ||
511 | 'YoutubeDL', | ||
512 | 'coreUtils', | ||
513 | 'ffmpegUtils', | ||
514 | 'peertubeCryptoUtils', | ||
515 | 'signupUtils', | ||
516 | 'utils', | ||
517 | 'YoutubeDLUtils' ] | ||
518 | PeerTube [1.0.0] (b10eb595)> | ||
519 | ``` | ||
520 | |||
521 | #### YoutubeDL example | ||
522 | ``` | ||
523 | YoutubeDL.getInfo('https://www.youtube.com/watch?v=I5ZN289jjDo', function(err, data) {console.log(err, data)}) | ||
524 | ``` | ||
525 | |||
526 | #### Models examples | ||
527 | ``` | ||
528 | PeerTube [1.0.0] (b10eb595)> new models.ActorModel({id: 3}).getVideoChannel().then(function(data){console.log(data.dataValues.name)}) | ||
529 | Promise { | ||
530 | _bitField: 0, | ||
531 | _fulfillmentHandler0: undefined, | ||
532 | _rejectionHandler0: undefined, | ||
533 | _promise0: undefined, | ||
534 | _receiver0: undefined } | ||
535 | PeerTube [1.0.0] (b10eb595)> Main root channel | ||
536 | PeerTube [1.0.0] (b10eb595)> let out; new models.UserModel({id: 1}).getAccount().then(function (data) {out = data.dataValues.id}) | ||
537 | Promise { | ||
538 | _bitField: 0, | ||
539 | _fulfillmentHandler0: undefined, | ||
540 | _rejectionHandler0: undefined, | ||
541 | _promise0: undefined, | ||
542 | _receiver0: undefined } | ||
543 | PeerTube [1.0.0] (b10eb595)> out | ||
544 | 2 | ||
545 | PeerTube [1.0.0] (b10eb595)> | ||
546 | ``` | ||
@@ -5967,16 +5967,6 @@ markdown-it@^12.0.4: | |||
5967 | mdurl "^1.0.1" | 5967 | mdurl "^1.0.1" |
5968 | uc.micro "^1.0.5" | 5968 | uc.micro "^1.0.5" |
5969 | 5969 | ||
5970 | marked-man@^0.7.0: | ||
5971 | version "0.7.0" | ||
5972 | resolved "https://registry.yarnpkg.com/marked-man/-/marked-man-0.7.0.tgz#220ba01d275d16f1a98e4e7fc3c5eac0630c68e4" | ||
5973 | integrity sha512-zxK5E4jbuARALc+fIUAanM2njVGnrd9YvKrqoDHUg2XwNLJijo39EzMIg59LecHBHsIHNtPqepqnJp4SmL/EVg== | ||
5974 | |||
5975 | marked@^3.0.2: | ||
5976 | version "3.0.2" | ||
5977 | resolved "https://registry.yarnpkg.com/marked/-/marked-3.0.2.tgz#60ce97d6aec34dd882ab4bb4df82494666854e17" | ||
5978 | integrity sha512-TMJQQ79Z0e3rJYazY0tIoMsFzteUGw9fB3FD+gzuIT3zLuG9L9ckIvUfF51apdJkcqc208jJN2KbtPbOvXtbjA== | ||
5979 | |||
5980 | math-interval-parser@^2.0.1: | 5970 | math-interval-parser@^2.0.1: |
5981 | version "2.0.1" | 5971 | version "2.0.1" |
5982 | resolved "https://registry.yarnpkg.com/math-interval-parser/-/math-interval-parser-2.0.1.tgz#e22cd6d15a0a7f4c03aec560db76513da615bed4" | 5972 | resolved "https://registry.yarnpkg.com/math-interval-parser/-/math-interval-parser-2.0.1.tgz#e22cd6d15a0a7f4c03aec560db76513da615bed4" |