From 517c0e86cbeb50ffaaf998fd945ac64e2edb0441 Mon Sep 17 00:00:00 2001 From: "DESKTOP-FMM8UI0\\CLV" Date: Wed, 21 Apr 2021 16:47:19 +0200 Subject: [PATCH 001/203] Can play Sound from a map script add sound in the TutoMap --- front/src/Api/Events/PlaySoundEvent.ts | 24 +++++++++++++++++++++ front/src/Api/IframeListener.ts | 7 ++++++ front/src/Phaser/Game/GameScene.ts | 6 ++++++ front/src/Phaser/Game/SoundManager.ts | 30 ++++++++++++++++++++++++++ front/src/iframe_api.ts | 15 +++++++++++++ maps/Tuto/scriptTuto.js | 10 +++++++++ 6 files changed, 92 insertions(+) create mode 100644 front/src/Api/Events/PlaySoundEvent.ts create mode 100644 front/src/Phaser/Game/SoundManager.ts diff --git a/front/src/Api/Events/PlaySoundEvent.ts b/front/src/Api/Events/PlaySoundEvent.ts new file mode 100644 index 00000000..49b657b1 --- /dev/null +++ b/front/src/Api/Events/PlaySoundEvent.ts @@ -0,0 +1,24 @@ +import * as tg from "generic-type-guard"; + + +const isSoundConfig = + new tg.IsInterface().withProperties({ + volume: tg.isOptional(tg.isNumber), + loop: tg.isOptional(tg.isBoolean), + mute: tg.isOptional(tg.isBoolean), + rate: tg.isOptional(tg.isNumber), + detune: tg.isOptional(tg.isNumber), + seek: tg.isOptional(tg.isNumber), + delay: tg.isOptional(tg.isNumber) + }).get(); + +export const isPlaySoundEvent = + new tg.IsInterface().withProperties({ + url: tg.isString, + config : isSoundConfig, + }).get(); + +/** + * A message sent from the iFrame to the game to add a message in the chat. + */ +export type PlaySoundEvent = tg.GuardedType; diff --git a/front/src/Api/IframeListener.ts b/front/src/Api/IframeListener.ts index c875ebbb..7273d8cc 100644 --- a/front/src/Api/IframeListener.ts +++ b/front/src/Api/IframeListener.ts @@ -12,6 +12,7 @@ import {ClosePopupEvent, isClosePopupEvent} from "./Events/ClosePopupEvent"; import {scriptUtils} from "./ScriptUtils"; import {GoToPageEvent, isGoToPageEvent} from "./Events/GoToPageEvent"; import {isOpenCoWebsite, OpenCoWebSiteEvent} from "./Events/OpenCoWebSiteEvent"; +import {isPlaySoundEvent, PlaySoundEvent} from "./Events/PlaySoundEvent"; /** @@ -52,6 +53,9 @@ class IframeListener { private readonly _removeBubbleStream: Subject = new Subject(); public readonly removeBubbleStream = this._removeBubbleStream.asObservable(); + private readonly _playSoundStream: Subject = new Subject(); + public readonly playSoundStream = this._playSoundStream.asObservable(); + private readonly iframes = new Set(); private readonly scripts = new Map(); @@ -89,6 +93,9 @@ class IframeListener { else if(payload.type === 'openCoWebSite' && isOpenCoWebsite(payload.data)) { scriptUtils.openCoWebsite(payload.data.url); } + else if(payload.type === 'playSound' && isPlaySoundEvent(payload.data)) { + this._playSoundStream.next(payload.data); + } else if(payload.type === 'closeCoWebSite') { scriptUtils.closeCoWebSite(); } diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 9ecf9d43..0e4507fa 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -39,6 +39,7 @@ import {mediaManager} from "../../WebRtc/MediaManager"; import {ItemFactoryInterface} from "../Items/ItemFactoryInterface"; import {ActionableItem} from "../Items/ActionableItem"; import {UserInputManager} from "../UserInput/UserInputManager"; +import {soundManager} from "./SoundManager"; import {UserMovedMessage} from "../../Messages/generated/messages_pb"; import {ProtobufClientUtils} from "../../Network/ProtobufClientUtils"; import {connectionManager} from "../../Connexion/ConnectionManager"; @@ -793,6 +794,11 @@ ${escapedMessage} this.userInputManager.disableControls(); })); + this.iframeSubscriptionList.push(iframeListener.playSoundStream.subscribe((playSoundEvent)=> + { + soundManager.playSound(this.load,this.sound,playSoundEvent.url,playSoundEvent.config); + })) + this.iframeSubscriptionList.push(iframeListener.enablePlayerControlStream.subscribe(()=>{ this.userInputManager.restoreControls(); })); diff --git a/front/src/Phaser/Game/SoundManager.ts b/front/src/Phaser/Game/SoundManager.ts new file mode 100644 index 00000000..ef87ce7f --- /dev/null +++ b/front/src/Phaser/Game/SoundManager.ts @@ -0,0 +1,30 @@ +import LoaderPlugin = Phaser.Loader.LoaderPlugin; +import BaseSoundManager = Phaser.Sound.BaseSoundManager; +import BaseSound = Phaser.Sound.BaseSound; +import Config = Phaser.Core.Config; +import SoundConfig = Phaser.Types.Sound.SoundConfig; + + +class SoundManager { + + public loadSound (loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string) : Promise { + return new Promise((res) => { + let sound = soundManager.get(soundUrl); + if (sound !== null) { + return res(sound); + } + loadPlugin.audio(soundUrl, soundUrl); + loadPlugin.once('filecomplete-audio-' + soundUrl, () => res(soundManager.add(soundUrl))); + loadPlugin.start(); + }); + } + + public async playSound(loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string, config: SoundConfig) : Promise { + console.log("play sound"); + const sound = await this.loadSound(loadPlugin,soundManager,soundUrl); + + sound.play(config); + console.log("j'ai joué le son"); + } +} +export const soundManager = new SoundManager(); \ No newline at end of file diff --git a/front/src/iframe_api.ts b/front/src/iframe_api.ts index 18d8d172..a3e6b5f0 100644 --- a/front/src/iframe_api.ts +++ b/front/src/iframe_api.ts @@ -9,6 +9,8 @@ import {ClosePopupEvent} from "./Api/Events/ClosePopupEvent"; import {OpenTabEvent} from "./Api/Events/OpenTabEvent"; import {GoToPageEvent} from "./Api/Events/GoToPageEvent"; import {OpenCoWebSiteEvent} from "./Api/Events/OpenCoWebSiteEvent"; +import {PlaySoundEvent} from "./Api/Events/PlaySoundEvent"; +import SoundConfig = Phaser.Types.Sound.SoundConfig; interface WorkAdventureApi { sendChatMessage(message: string, author: string): void; @@ -24,6 +26,7 @@ interface WorkAdventureApi { restorePlayerControl() : void; displayBubble() : void; removeBubble() : void; + playSound(url : string, config : SoundConfig): void; } declare global { @@ -113,6 +116,18 @@ window.WA = { },'*'); }, + playSound(url: string, config : SoundConfig) : string{ + window.parent.postMessage({ + "type" : 'playSound', + "data": { + url, + config + } as PlaySoundEvent + + },'*'); + return url; + }, + goToPage(url : string) : void{ window.parent.postMessage({ "type" : 'goToPage', diff --git a/maps/Tuto/scriptTuto.js b/maps/Tuto/scriptTuto.js index 869ec447..bcec0446 100644 --- a/maps/Tuto/scriptTuto.js +++ b/maps/Tuto/scriptTuto.js @@ -5,6 +5,12 @@ var targetObjectTutoBubble ='Tutobubble'; var targetObjectTutoChat ='tutoChat'; var targetObjectTutoExplanation ='tutoExplanation'; var popUpExplanation = undefined; +var enterSoundUrl = "/resources/objects/webrtc-in.mp3"; +var exitSoundUrl = "/resources/objects/webrtc-out.mp3"; +var soundConfig = { + volume : 0.5, + loop : false +} function launchTuto (){ WA.openPopup(targetObjectTutoBubble, textFirstPopup, [ { @@ -43,6 +49,8 @@ function launchTuto (){ WA.onEnterZone('popupZone', () => { WA.displayBubble(); + + WA.playSound(enterSoundUrl,soundConfig); if (!isFirstTimeTuto) { isFirstTimeTuto = true; launchTuto(); @@ -71,4 +79,6 @@ WA.onEnterZone('popupZone', () => { WA.onLeaveZone('popupZone', () => { if (popUpExplanation !== undefined) popUpExplanation.close(); WA.removeBubble(); + WA.playSound(exitSoundUrl,soundConfig); + }) From f03f8076f3052dd3a03720cf6f4c10205ce2bfb3 Mon Sep 17 00:00:00 2001 From: "DESKTOP-FMM8UI0\\CLV" Date: Fri, 23 Apr 2021 15:35:34 +0200 Subject: [PATCH 002/203] Sound in Script Done Fom script user can load, play and stop sound --- front/src/Api/Events/LoadSoundEvent.ts | 11 ++ front/src/Api/Events/StopSoundEvent.ts | 11 ++ front/src/Api/IframeListener.ts | 14 +++ front/src/Phaser/Game/GameScene.ts | 16 ++- front/src/Phaser/Game/SoundManager.ts | 23 +++-- front/src/iframe_api.ts | 46 ++++++++- maps/Tuto/scriptTuto.js | 13 ++- maps/Tuto/webrtc-in.mp3 | Bin 0 -> 77740 bytes maps/Tuto/webrtc-out.mp3 | Bin 0 -> 7104 bytes maps/Village/Village.json | 15 ++- maps/tests/Audience.mp3 | Bin 0 -> 607145 bytes maps/tests/SoundScript.js | 44 ++++++++ maps/tests/SoundTest.json | 134 +++++++++++++++++++++++++ maps/tests/Win.ogg | Bin 0 -> 36858 bytes maps/tests/webrtc-in.mp3 | Bin 0 -> 77740 bytes maps/tests/webrtc-out.mp3 | Bin 0 -> 7104 bytes 16 files changed, 309 insertions(+), 18 deletions(-) create mode 100644 front/src/Api/Events/LoadSoundEvent.ts create mode 100644 front/src/Api/Events/StopSoundEvent.ts create mode 100644 maps/Tuto/webrtc-in.mp3 create mode 100644 maps/Tuto/webrtc-out.mp3 create mode 100644 maps/tests/Audience.mp3 create mode 100644 maps/tests/SoundScript.js create mode 100644 maps/tests/SoundTest.json create mode 100644 maps/tests/Win.ogg create mode 100644 maps/tests/webrtc-in.mp3 create mode 100644 maps/tests/webrtc-out.mp3 diff --git a/front/src/Api/Events/LoadSoundEvent.ts b/front/src/Api/Events/LoadSoundEvent.ts new file mode 100644 index 00000000..19b4b8e1 --- /dev/null +++ b/front/src/Api/Events/LoadSoundEvent.ts @@ -0,0 +1,11 @@ +import * as tg from "generic-type-guard"; + +export const isLoadSoundEvent = + new tg.IsInterface().withProperties({ + url: tg.isString, + }).get(); + +/** + * A message sent from the iFrame to the game to add a message in the chat. + */ +export type LoadSoundEvent = tg.GuardedType; diff --git a/front/src/Api/Events/StopSoundEvent.ts b/front/src/Api/Events/StopSoundEvent.ts new file mode 100644 index 00000000..6d12516d --- /dev/null +++ b/front/src/Api/Events/StopSoundEvent.ts @@ -0,0 +1,11 @@ +import * as tg from "generic-type-guard"; + +export const isStopSoundEvent = + new tg.IsInterface().withProperties({ + url: tg.isString, + }).get(); + +/** + * A message sent from the iFrame to the game to add a message in the chat. + */ +export type StopSoundEvent = tg.GuardedType; diff --git a/front/src/Api/IframeListener.ts b/front/src/Api/IframeListener.ts index 7273d8cc..ac09acc9 100644 --- a/front/src/Api/IframeListener.ts +++ b/front/src/Api/IframeListener.ts @@ -13,6 +13,8 @@ import {scriptUtils} from "./ScriptUtils"; import {GoToPageEvent, isGoToPageEvent} from "./Events/GoToPageEvent"; import {isOpenCoWebsite, OpenCoWebSiteEvent} from "./Events/OpenCoWebSiteEvent"; import {isPlaySoundEvent, PlaySoundEvent} from "./Events/PlaySoundEvent"; +import {isStopSoundEvent, StopSoundEvent} from "./Events/StopSoundEvent"; +import {isLoadSoundEvent, LoadSoundEvent} from "./Events/LoadSoundEvent"; /** @@ -56,6 +58,12 @@ class IframeListener { private readonly _playSoundStream: Subject = new Subject(); public readonly playSoundStream = this._playSoundStream.asObservable(); + private readonly _stopSoundStream: Subject = new Subject(); + public readonly stopSoundStream = this._stopSoundStream.asObservable(); + + private readonly _loadSoundStream: Subject = new Subject(); + public readonly loadSoundStream = this._loadSoundStream.asObservable(); + private readonly iframes = new Set(); private readonly scripts = new Map(); @@ -96,6 +104,12 @@ class IframeListener { else if(payload.type === 'playSound' && isPlaySoundEvent(payload.data)) { this._playSoundStream.next(payload.data); } + else if(payload.type === 'stopSound' && isStopSoundEvent(payload.data)) { + this._stopSoundStream.next(payload.data); + } + else if(payload.type === 'loadSound' && isLoadSoundEvent(payload.data)) { + this._loadSoundStream.next(payload.data); + } else if(payload.type === 'closeCoWebSite') { scriptUtils.closeCoWebSite(); } diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 0e4507fa..ccfed6d4 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -796,12 +796,26 @@ ${escapedMessage} this.iframeSubscriptionList.push(iframeListener.playSoundStream.subscribe((playSoundEvent)=> { - soundManager.playSound(this.load,this.sound,playSoundEvent.url,playSoundEvent.config); + const url = new URL(playSoundEvent.url, this.MapUrlFile); + soundManager.playSound(this.load,this.sound,url.toString(),playSoundEvent.config); })) + this.iframeSubscriptionList.push(iframeListener.stopSoundStream.subscribe((stopSoundEvent)=> + { + const url = new URL(stopSoundEvent.url, this.MapUrlFile); + soundManager.stopSound(this.sound,url.toString()); + })) + + this.iframeSubscriptionList.push(iframeListener.loadSoundStream.subscribe((loadSoundEvent)=> + { + const url = new URL(loadSoundEvent.url, this.MapUrlFile); + soundManager.loadSound(this.load,this.sound,url.toString()); + })) + this.iframeSubscriptionList.push(iframeListener.enablePlayerControlStream.subscribe(()=>{ this.userInputManager.restoreControls(); })); + let scriptedBubbleSprite : Sprite; this.iframeSubscriptionList.push(iframeListener.displayBubbleStream.subscribe(()=>{ scriptedBubbleSprite = new Sprite(this,this.CurrentPlayer.x + 25,this.CurrentPlayer.y,'circleSprite-white'); diff --git a/front/src/Phaser/Game/SoundManager.ts b/front/src/Phaser/Game/SoundManager.ts index ef87ce7f..f2ee712b 100644 --- a/front/src/Phaser/Game/SoundManager.ts +++ b/front/src/Phaser/Game/SoundManager.ts @@ -1,14 +1,17 @@ import LoaderPlugin = Phaser.Loader.LoaderPlugin; import BaseSoundManager = Phaser.Sound.BaseSoundManager; import BaseSound = Phaser.Sound.BaseSound; -import Config = Phaser.Core.Config; import SoundConfig = Phaser.Types.Sound.SoundConfig; - class SoundManager { - + private soundPromises : Map> = new Map>(); public loadSound (loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string) : Promise { - return new Promise((res) => { + let soundPromise = this.soundPromises.get(soundUrl); + if (soundPromise !== undefined) { + return soundPromise; + } + soundPromise = new Promise((res) => { + let sound = soundManager.get(soundUrl); if (sound !== null) { return res(sound); @@ -17,14 +20,20 @@ class SoundManager { loadPlugin.once('filecomplete-audio-' + soundUrl, () => res(soundManager.add(soundUrl))); loadPlugin.start(); }); + this.soundPromises.set(soundUrl,soundPromise); + return soundPromise; } public async playSound(loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string, config: SoundConfig) : Promise { - console.log("play sound"); const sound = await this.loadSound(loadPlugin,soundManager,soundUrl); - sound.play(config); - console.log("j'ai joué le son"); + + + } + + public stopSound(soundManager : BaseSoundManager,soundUrl : string){ + console.log("stop "+ soundManager.get(soundUrl).key); + soundManager.get(soundUrl).stop(); } } export const soundManager = new SoundManager(); \ No newline at end of file diff --git a/front/src/iframe_api.ts b/front/src/iframe_api.ts index a3e6b5f0..6ea158ca 100644 --- a/front/src/iframe_api.ts +++ b/front/src/iframe_api.ts @@ -10,6 +10,8 @@ import {OpenTabEvent} from "./Api/Events/OpenTabEvent"; import {GoToPageEvent} from "./Api/Events/GoToPageEvent"; import {OpenCoWebSiteEvent} from "./Api/Events/OpenCoWebSiteEvent"; import {PlaySoundEvent} from "./Api/Events/PlaySoundEvent"; +import {StopSoundEvent} from "./Api/Events/StopSoundEvent"; +import {LoadSoundEvent} from "./Api/Events/LoadSoundEvent"; import SoundConfig = Phaser.Types.Sound.SoundConfig; interface WorkAdventureApi { @@ -26,7 +28,7 @@ interface WorkAdventureApi { restorePlayerControl() : void; displayBubble() : void; removeBubble() : void; - playSound(url : string, config : SoundConfig): void; + loadSound(url : string): Sound; } declare global { @@ -77,6 +79,42 @@ class Popup { } } +class Sound { + constructor(private url: string) { + // TODO: send a "loadSound" event + window.parent.postMessage({ + "type" : 'loadSound', + "data": { + url: this.url, + } as LoadSoundEvent + + },'*'); + } + + public play(config : SoundConfig) { + window.parent.postMessage({ + "type" : 'playSound', + "data": { + url: this.url, + config + } as PlaySoundEvent + + },'*'); + return this.url; + } + public stop() { + window.parent.postMessage({ + "type" : 'stopSound', + "data": { + url: this.url, + } as StopSoundEvent + + },'*'); + return this.url; + } + +} + window.WA = { /** * Send a message in the chat. @@ -116,7 +154,7 @@ window.WA = { },'*'); }, - playSound(url: string, config : SoundConfig) : string{ + /*playSound(url: string, config : SoundConfig) : string{ window.parent.postMessage({ "type" : 'playSound', "data": { @@ -126,6 +164,10 @@ window.WA = { },'*'); return url; + },*/ + + loadSound(url: string) : Sound { + return new Sound(url); }, goToPage(url : string) : void{ diff --git a/maps/Tuto/scriptTuto.js b/maps/Tuto/scriptTuto.js index bcec0446..8821134b 100644 --- a/maps/Tuto/scriptTuto.js +++ b/maps/Tuto/scriptTuto.js @@ -5,10 +5,10 @@ var targetObjectTutoBubble ='Tutobubble'; var targetObjectTutoChat ='tutoChat'; var targetObjectTutoExplanation ='tutoExplanation'; var popUpExplanation = undefined; -var enterSoundUrl = "/resources/objects/webrtc-in.mp3"; -var exitSoundUrl = "/resources/objects/webrtc-out.mp3"; +var enterSoundUrl = "webrtc-in.mp3"; +var exitSoundUrl = "webrtc-out.mp3"; var soundConfig = { - volume : 0.5, + volume : 0.2, loop : false } function launchTuto (){ @@ -32,6 +32,7 @@ function launchTuto (){ className : "success",callback:(popup2 => { popup2.close(); WA.restorePlayerControl(); + WA.loadSound(winSoundUrl).play(soundConfig); }) } ]) @@ -49,8 +50,7 @@ function launchTuto (){ WA.onEnterZone('popupZone', () => { WA.displayBubble(); - - WA.playSound(enterSoundUrl,soundConfig); + WA.loadSound(enterSoundUrl).play(soundConfig); if (!isFirstTimeTuto) { isFirstTimeTuto = true; launchTuto(); @@ -79,6 +79,5 @@ WA.onEnterZone('popupZone', () => { WA.onLeaveZone('popupZone', () => { if (popUpExplanation !== undefined) popUpExplanation.close(); WA.removeBubble(); - WA.playSound(exitSoundUrl,soundConfig); - + WA.loadSound(exitSoundUrl).play(soundConfig); }) diff --git a/maps/Tuto/webrtc-in.mp3 b/maps/Tuto/webrtc-in.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..34e22003c01b3fde1603e84a942746db309f3e26 GIT binary patch literal 77740 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�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 T<;chY{*T7~|HJ%GX5ha8S)GlL literal 0 HcmV?d00001 diff --git a/maps/Tuto/webrtc-out.mp3 b/maps/Tuto/webrtc-out.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..dcf02928edc4babccf8fdd7a3f2efc8a52638450 GIT binary patch literal 7104 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 J{_o$w{{riJALal6 literal 0 HcmV?d00001 diff --git a/maps/Village/Village.json b/maps/Village/Village.json index d3fbcc08..9c8fdb63 100644 --- a/maps/Village/Village.json +++ b/maps/Village/Village.json @@ -33,7 +33,7 @@ "y":0 }, { - "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 1979, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 1979, 0, 1979, 1979, 0, 1979, 1979, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 1979, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 1979, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 1979, 1979, 0, 1979, 1979, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 1979, 1979, 0, 1979, 1979, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 1979, 1979, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 1979, 0, 1979, 0, 0, 1979, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 1979, 0, 0, 0, 0, 0, 0, 0, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "height":39, "id":7, "name":"collides", @@ -769,6 +769,19 @@ "tilecount":121, "tileheight":32, "tilewidth":32 + }, + { + "columns":3, + "firstgid":4611, + "image":"su1 Student fmale 12.png", + "imageheight":128, + "imagewidth":96, + "margin":0, + "name":"su1 Student fmale 12", + "spacing":0, + "tilecount":12, + "tileheight":32, + "tilewidth":32 }], "tilewidth":32, "type":"map", diff --git a/maps/tests/Audience.mp3 b/maps/tests/Audience.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..81745d14d6eb8895dff6f33a4cb7081aa63d48cc GIT binary patch literal 607145 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

cc%qcF*j~e1!ytT{xcpI`pqH%KeTv6xfXY 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 z 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%0D|k=9u=Y9@B5xcLdg1@|TT(@%y>%Ncw^*cG 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

}i>erl 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%0Ae~h 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�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 T<;chY{*T7~|HJ%GX5ha8S)GlL literal 0 HcmV?d00001 diff --git a/maps/tests/webrtc-out.mp3 b/maps/tests/webrtc-out.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..dcf02928edc4babccf8fdd7a3f2efc8a52638450 GIT binary patch literal 7104 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 J{_o$w{{riJALal6 literal 0 HcmV?d00001 From b79d76fc2ef41c19692ad7528a19521e8c2ded9f Mon Sep 17 00:00:00 2001 From: "DESKTOP-FMM8UI0\\CLV" Date: Fri, 23 Apr 2021 17:03:17 +0200 Subject: [PATCH 003/203] parameter soundConfig is now optionnal if user call mySound.play() the sound will be played with the base SoundConfig --- front/src/Api/Events/PlaySoundEvent.ts | 2 +- front/src/Phaser/Game/SoundManager.ts | 7 ++-- maps/tests/SoundTest.json | 46 ++++++++++++++++++-------- 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/front/src/Api/Events/PlaySoundEvent.ts b/front/src/Api/Events/PlaySoundEvent.ts index 49b657b1..33ca1ff4 100644 --- a/front/src/Api/Events/PlaySoundEvent.ts +++ b/front/src/Api/Events/PlaySoundEvent.ts @@ -15,7 +15,7 @@ const isSoundConfig = export const isPlaySoundEvent = new tg.IsInterface().withProperties({ url: tg.isString, - config : isSoundConfig, + config : tg.isOptional(isSoundConfig), }).get(); /** diff --git a/front/src/Phaser/Game/SoundManager.ts b/front/src/Phaser/Game/SoundManager.ts index f2ee712b..e4d8b055 100644 --- a/front/src/Phaser/Game/SoundManager.ts +++ b/front/src/Phaser/Game/SoundManager.ts @@ -24,11 +24,10 @@ class SoundManager { return soundPromise; } - public async playSound(loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string, config: SoundConfig) : Promise { + public async playSound(loadPlugin: LoaderPlugin, soundManager : BaseSoundManager, soundUrl: string, config: SoundConfig|undefined) : Promise { const sound = await this.loadSound(loadPlugin,soundManager,soundUrl); - sound.play(config); - - + if (config === undefined) sound.play(); + else sound.play(config); } public stopSound(soundManager : BaseSoundManager,soundUrl : string){ diff --git a/maps/tests/SoundTest.json b/maps/tests/SoundTest.json index fd04ed70..f1e38761 100644 --- a/maps/tests/SoundTest.json +++ b/maps/tests/SoundTest.json @@ -62,18 +62,6 @@ "x":0, "y":0 }, - { - "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "height":20, - "id":7, - "name":"stopSound", - "opacity":1, - "type":"tilelayer", - "visible":true, - "width":20, - "x":0, - "y":0 - }, { "draworder":"topdown", "id":5, @@ -94,6 +82,38 @@ "width":107.109375, "x":258.4453125, "y":197.018229166667 + }, + { + "height":19.296875, + "id":3, + "name":"", + "rotation":0, + "text": + { + "text":"Bonjour Monde", + "wrap":true + }, + "type":"", + "visible":true, + "width":107.109375, + "x":-348.221354166667, + "y":257.018229166667 + }, + { + "height":55.296875, + "id":4, + "name":"", + "rotation":0, + "text": + { + "text":"Play Sound Loop\nexit Zone Stop Sound \n", + "wrap":true + }, + "type":"", + "visible":true, + "width":176.442708333333, + "x":243.778645833333, + "y":368.3515625 }], "opacity":1, "type":"objectgroup", @@ -102,7 +122,7 @@ "y":0 }], "nextlayerid":8, - "nextobjectid":3, + "nextobjectid":5, "orientation":"orthogonal", "properties":[ { From 3a00ecab8f1e4d29c683686322649e73b45e4722 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 May 2021 13:44:51 +0000 Subject: [PATCH 004/203] Bump lodash from 4.17.20 to 4.17.21 in /uploader Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] --- uploader/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uploader/yarn.lock b/uploader/yarn.lock index 1591fa3e..92253d44 100644 --- a/uploader/yarn.lock +++ b/uploader/yarn.lock @@ -1105,9 +1105,9 @@ lodash.once@^4.0.0: integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loud-rejection@^1.0.0: version "1.6.0" From 9c620de649a6cf87ae674700ecf9f5b32d4c8eb9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 May 2021 13:45:25 +0000 Subject: [PATCH 005/203] Bump lodash from 4.17.20 to 4.17.21 in /maps Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] --- maps/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maps/yarn.lock b/maps/yarn.lock index d2393a65..ffb4747a 100644 --- a/maps/yarn.lock +++ b/maps/yarn.lock @@ -881,9 +881,9 @@ loader-utils@^2.0.0: json5 "^2.1.2" lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loud-rejection@^1.0.0: version "1.6.0" From 543397efe48be43926b340a2e285ac1edbf2f53e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 May 2021 13:45:29 +0000 Subject: [PATCH 006/203] Bump lodash from 4.17.20 to 4.17.21 in /messages Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] --- messages/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/messages/yarn.lock b/messages/yarn.lock index d520d465..81bd0ed1 100644 --- a/messages/yarn.lock +++ b/messages/yarn.lock @@ -2606,9 +2606,9 @@ lodash.templatesettings@^4.0.0: lodash._reinterpolate "^3.0.0" lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-ok@^0.1.1: version "0.1.1" From b141da14753ac3df923fcb5bb7ecc8635a3b7f4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 May 2021 13:45:33 +0000 Subject: [PATCH 007/203] Bump lodash from 4.17.20 to 4.17.21 in /back Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] --- back/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/back/yarn.lock b/back/yarn.lock index 43f58988..9469a69d 100644 --- a/back/yarn.lock +++ b/back/yarn.lock @@ -1704,9 +1704,9 @@ lodash.once@^4.0.0: integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== long@~3: version "3.2.0" From e655edd9bd04e5a7f87b439eb362084545911bdd Mon Sep 17 00:00:00 2001 From: "DESKTOP-FMM8UI0\\CLV" Date: Fri, 7 May 2021 17:03:07 +0200 Subject: [PATCH 008/203] export class Popup and Soud of Iframe Api let become const in SoundManager --- front/src/Phaser/Game/SoundManager.ts | 2 +- front/src/iframe_api.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/front/src/Phaser/Game/SoundManager.ts b/front/src/Phaser/Game/SoundManager.ts index e4d8b055..62de69d5 100644 --- a/front/src/Phaser/Game/SoundManager.ts +++ b/front/src/Phaser/Game/SoundManager.ts @@ -12,7 +12,7 @@ class SoundManager { } soundPromise = new Promise((res) => { - let sound = soundManager.get(soundUrl); + const sound = soundManager.get(soundUrl); if (sound !== null) { return res(sound); } diff --git a/front/src/iframe_api.ts b/front/src/iframe_api.ts index 6ea158ca..3ac82f38 100644 --- a/front/src/iframe_api.ts +++ b/front/src/iframe_api.ts @@ -62,7 +62,7 @@ interface ButtonDescriptor { callback: ButtonClickedCallback, } -class Popup { +export class Popup { constructor(private id: number) { } @@ -79,7 +79,7 @@ class Popup { } } -class Sound { +export class Sound { constructor(private url: string) { // TODO: send a "loadSound" event window.parent.postMessage({ From bc88a7d3edafb8a90e36bb96767e8d33dfdd215f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 10 May 2021 10:47:55 +0200 Subject: [PATCH 009/203] Adding Markdown documentation relative to scripting --- docs/maps/scripting.md | 348 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 348 insertions(+) create mode 100644 docs/maps/scripting.md diff --git a/docs/maps/scripting.md b/docs/maps/scripting.md new file mode 100644 index 00000000..f844154c --- /dev/null +++ b/docs/maps/scripting.md @@ -0,0 +1,348 @@ +{.alert.alert-danger} +This feature is "_experimental_". We may apply changes in the near future to the way it works when we gather some feedback. + +{.section-title.accent.text-primary} +# Scripting WorkAdventure maps + +Do you want to add a bit of intelligence to your map? Scripts allow you to create maps with special features. + +You can for instance: + +* Create FTUE (First Time User Experience) scenarios where a first-time user will be displayed a notification popup. +* Create NPC (non playing characters) and interact with those characters using the chat. +* Organize interactions between an iframe and your map (for instance, walking on a special zone might add a product in the cart of an eCommerce website...) +* etc... + +Please note that scripting in WorkAdventure is at an early stage of development and that more features might be added in the future. You can actually voice your opinion about useful features by adding [an issue on Github](https://github.com/thecodingmachine/workadventure/issues). + +{.alert.alert-warning} +**Beware:** Scripts are executed in the browser of the current user only. Generally speaking, scripts cannot be used to trigger a change that will be displayed on other users screen. + +## Scripting language + +Client-side scripting is done in **Javascript** (or any language that transpiles to Javascript like _Typescript_). + +There are 2 ways you can use the scripting language: + +* **In the map**: By directly referring a Javascript file inside your map, in the `script` property of your map. +* **In an iFrame**: By placing your Javascript script into an iFrame, your script can communicate with the WorkAdventure game + +## Adding a script in the map + +Create a `script` property in your map. + +In Tiled, in order to access your map properties, you can click on _"Map > Map properties"_. + +

+ +Create a `script` property (a "string"), and put the URL of your script. + +You can put relative URLs. If your script file is next to your map, you can simply write the name of the script file here. + +
+
+ +
The script property
+
+
+ +Start by testing this with a simple message sent to the chat. + +**script.js** +```javascript +WA.sendChatMessage('Hello world', 'Mr Robot'); +``` + +The `WA` objects contains a number of useful methods enabling you to interact with the WorkAdventure game. For instance, `WA.sendChatMessage` opens the chat and adds a message in it. + +In your browser console, when you open the map, the chat message should be displayed right away. + +## Adding a script in an iFrame + +In WorkAdventure, you can easily [open an iFrame using the `openWebsite` property on a layer](special-zones). However, by default, the iFrame is not allowed to communicate with WorkAdventure. + +This is done to improve security. In order to be able to execute a script that communicates with WorkAdventure inside an iFrame, you have to **explicitly allow the iFrame to use the "iFrame API"**. + +In order to allow communication with WorkAdventure, you need to add an additional property: `openWebsiteAllowApi`. This property must be _boolean_ and you must set it to "true". + +
+
+ +
The `openWebsiteAllowApi` property
+
+
+ +In your iFrame HTML page, you now need to import the _WorkAdventure client API Javascript library_. This library contains the `WA` object that you can use to communicate with WorkAdventure. + +The library is available at `https://play.workadventu.re/iframe_api.js`. + +_Note:_ if you are using a self-hosted version of WorkAdventure, use `https://[front_domain]/iframe_api.js` + +**iframe.html** +```html + + + + + + + + +``` + +You can now start by testing this with a simple message sent to the chat. + +**iframe.html** +```html +... + +... +``` + +Let's now review the complete list of methods available in this `WA` object. + +## Using Typescript + +View the dedicated page about [using Typescript with the scripting API](using-typescript). + +## Available features in the client API + +### Sending a message in the chat + + sendChatMessage(message: string, author: string): void + +Sends a message in the chat. The message is only visible in the browser of the current user. + +* **message**: the message to be displayed in the chat +* **author**: the name displayed for the author of the message. It does not have to be a real user. + +Example: + +```javascript +WA.sendChatMessage('Hello world', 'Mr Robot'); +``` + +### Listening to messages from the chat + +```javascript +onChatMessage(callback: (message: string) => void): void +``` + +Listens to messages typed by the current user and calls the callback. Messages from other users in the chat cannot be listened to. + +* **callback**: the function that will be called when a message is received. It contains the message typed by the user. + +Example: + +```javascript +WA.onChatMessage((message => { + console.log('The user typed a message', message); +})); +``` + +### Detecting when the user enters/leaves a zone + +``` +onEnterZone(name: string, callback: () => void): void +onLeaveZone(name: string, callback: () => void): void +``` + +Listens to the position of the current user. The event is triggered when the user enters or leaves a given zone. The name of the zone is stored in the map, on a dedicated layer with the `zone` property. + +
+
+ +
The `zone` property, applied on a layer
+
+
+ +* **name**: the name of the zone, as defined in the `zone` property. +* **callback**: the function that will be called when a user enters or leaves the zone. + +Example: + +```javascript +WA.onEnterZone('myZone', () => { + WA.sendChatMessage("Hello!", 'Mr Robot'); +}) + +WA.onLeaveZone('myZone', () => { + WA.sendChatMessage("Goodbye!", 'Mr Robot'); +}) +``` + +### Opening a popup + +In order to open a popup window, you must first define the position of the popup on your map. + +You can position this popup by using a "rectangle" object in Tiled that you will place on an "object" layer. + +
+
+ +
+
+ +
+
+ +``` +openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup +``` + +* **targetObject**: the name of the rectangle object defined in Tiled. +* **message**: the message to display in the popup. +* **buttons**: an array of action buttons defined underneath the popup. + +Action buttons are `ButtonDescriptor` objects containing these properties. + +* **label (_string_)**: The label of the button. +* **className (_string_)**: The visual type of the button. Can be one of "normal", "primary", "success", "warning", "error", "disabled". +* **callback (_(popup: Popup)=>void_)**: Callback called when the button is pressed. + +Please note that `openPopup` returns an object of the `Popup` class. Also, the callback called when a button is clicked is passed a `Popup` object. + +The `Popup` class that represents an open popup contains a single method: `close()`. This will obviously close the popup when called. + +```javascript +class Popup { + /** + * Closes the popup + */ + close() {}; +} +``` + +Example: + +```javascript +let helloWorldPopup; + +// Open the popup when we enter a given zone +helloWorldPopup = WA.onEnterZone('myZone', () => { + WA.openPopup("popupRectangle", 'Hello world!', [{ + label: "Close", + className: "primary", + callback: (popup) => { + // Close the popup when the "Close" button is pressed. + popup.close(); + } + }); +}]); + +// Close the popup when we leave the zone. +WA.onLeaveZone('myZone', () => { + helloWorldPopup.close(); +}); +``` + +### Disabling / restoring controls + +``` +disablePlayerControls(): void +restorePlayerControls(): void +``` + +These 2 methods can be used to completely disable player controls and to enable them again. + +When controls are disabled, the user cannot move anymore using keyboard input. This can be useful in a "First Time User Experience" part, to display an important message to a user before letting him/her move again. + +Example: + +```javascript +WA.onEnterZone('myZone', () => { + WA.disablePlayerControls(); + WA.openPopup("popupRectangle", 'This is an imporant message!', [{ + label: "Got it!", + className: "primary", + callback: (popup) => { + WA.restorePlayerControls(); + popup.close(); + } + }]); +}); +``` + +### Opening a web page in a new tab + +``` +openTab(url: string): void +``` + +Opens the webpage at "url" in your browser, in a new tab. + +Example: + +```javascript +WA.openTab('https://www.wikipedia.org/'); +``` + +### Opening a web page in the current tab + +``` +goToPage(url: string): void +``` + +Opens the webpage at "url" in your browser in place of WorkAdventure. WorkAdventure will be completely unloaded. + +Example: + +```javascript +WA.goToPage('https://www.wikipedia.org/'); +``` + +### Opening/closing a web page in an iFrame + +``` +openCoWebSite(url: string): void +closeCoWebSite(): void +``` + +Opens the webpage at "url" in an iFrame (on the right side of the screen) or close that iFrame. + +Example: + +```javascript +WA.openCoWebSite('https://www.wikipedia.org/'); +// ... +WA.closeCoWebSite(); +``` + +### Load a sound from an url + +``` +loadSound(url: string): Sound +``` + +Load a sound from an url + +Please note that `loadSound` returns an object of the `Sound` class + +The `Sound` class that represents a loaded sound contains two methods: `play(soundConfig : SoundConfig|undefined)` and `stop()` + +The parameter soundConfig is optional, if you call play without a Sound config the sound will be played with the basic configuration. + +Example: + +```javascript +var mySound = WA.loadSound("Sound.ogg"); +var config = { + volume : 0.5, + loop : false, + rate : 1, + detune : 1, + delay : 0, + seek : 0, + mute : false +} +mySound.play(config); +// ... +mySound.stop(); +``` From 9a8b10bbf5c9ac178fc0b5bc767ea8ee1cb18837 Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 10 May 2021 11:56:08 +0200 Subject: [PATCH 010/203] added back automatic deploy of staging --- .github/workflows/build-and-deploy.yml | 30 ++++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 9e22dedc..42f4868b 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -1,6 +1,8 @@ name: Build, push and deploy Docker image on: + push: + branch: [master] release: types: [created] pull_request: @@ -14,7 +16,7 @@ env: jobs: build-front: - if: ${{ github.event.release || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -34,11 +36,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-front - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} add_git_labels: true build-back: - if: ${{ github.event.release || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -57,11 +59,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-back - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} add_git_labels: true build-pusher: - if: ${{ github.event.release || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -80,11 +82,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-pusher - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} add_git_labels: true build-uploader: - if: ${{ github.event.release || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -103,11 +105,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-uploader - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} add_git_labels: true build-maps: - if: ${{ github.event.release || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -127,7 +129,7 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-maps - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} add_git_labels: true deeploy: @@ -138,7 +140,7 @@ jobs: - build-maps - build-uploader runs-on: ubuntu-latest - if: ${{ contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} steps: - name: Checkout @@ -156,14 +158,14 @@ jobs: JITSI_URL: ${{ secrets.JITSI_URL }} SECRET_JITSI_KEY: ${{ secrets.SECRET_JITSI_KEY }} TURN_STATIC_AUTH_SECRET: ${{ secrets.TURN_STATIC_AUTH_SECRET }} - DEPLOY_REF: ${{ env.GITHUB_HEAD_REF_SLUG }} + DEPLOY_REF: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || 'master' }} with: - namespace: workadventure-${{ env.GITHUB_HEAD_REF_SLUG }} + namespace: workadventure-${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || 'master' }} - name: Add a comment in PR uses: unsplash/comment-on-pr@v1.2.0 + if: ${{ github.event.pull_request }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: msg: Environment deployed at https://play.${{ env.GITHUB_HEAD_REF_SLUG }}.test.workadventu.re - check_for_duplicate_msg: true From 293c57568e42d4e53434608947a8e4662ce84775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 10 May 2021 12:08:52 +0200 Subject: [PATCH 011/203] Splitting scripting API doc in 2 Splitting scripting API doc in 2 docs: - scripting.md: contains the explaination on how to enable scripting - api-reference.md: contains the list of all available functions --- docs/maps/api-reference.md | 237 +++++++++++++++++++++++++++++++++++++ docs/maps/scripting.md | 233 +----------------------------------- 2 files changed, 238 insertions(+), 232 deletions(-) create mode 100644 docs/maps/api-reference.md diff --git a/docs/maps/api-reference.md b/docs/maps/api-reference.md new file mode 100644 index 00000000..9891a88a --- /dev/null +++ b/docs/maps/api-reference.md @@ -0,0 +1,237 @@ +{.section-title.accent.text-primary} +# API Reference + +### Sending a message in the chat + +``` +sendChatMessage(message: string, author: string): void +``` + +Sends a message in the chat. The message is only visible in the browser of the current user. + +* **message**: the message to be displayed in the chat +* **author**: the name displayed for the author of the message. It does not have to be a real user. + +Example: + +```javascript +WA.sendChatMessage('Hello world', 'Mr Robot'); +``` + +### Listening to messages from the chat + +```javascript +onChatMessage(callback: (message: string) => void): void +``` + +Listens to messages typed by the current user and calls the callback. Messages from other users in the chat cannot be listened to. + +* **callback**: the function that will be called when a message is received. It contains the message typed by the user. + +Example: + +```javascript +WA.onChatMessage((message => { + console.log('The user typed a message', message); +})); +``` + +### Detecting when the user enters/leaves a zone + +``` +onEnterZone(name: string, callback: () => void): void +onLeaveZone(name: string, callback: () => void): void +``` + +Listens to the position of the current user. The event is triggered when the user enters or leaves a given zone. The name of the zone is stored in the map, on a dedicated layer with the `zone` property. + +
+
+ +
The `zone` property, applied on a layer
+
+
+ +* **name**: the name of the zone, as defined in the `zone` property. +* **callback**: the function that will be called when a user enters or leaves the zone. + +Example: + +```javascript +WA.onEnterZone('myZone', () => { + WA.sendChatMessage("Hello!", 'Mr Robot'); +}) + +WA.onLeaveZone('myZone', () => { + WA.sendChatMessage("Goodbye!", 'Mr Robot'); +}) +``` + +### Opening a popup + +In order to open a popup window, you must first define the position of the popup on your map. + +You can position this popup by using a "rectangle" object in Tiled that you will place on an "object" layer. + +
+
+ +
+
+ +
+
+ +``` +openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup +``` + +* **targetObject**: the name of the rectangle object defined in Tiled. +* **message**: the message to display in the popup. +* **buttons**: an array of action buttons defined underneath the popup. + +Action buttons are `ButtonDescriptor` objects containing these properties. + +* **label (_string_)**: The label of the button. +* **className (_string_)**: The visual type of the button. Can be one of "normal", "primary", "success", "warning", "error", "disabled". +* **callback (_(popup: Popup)=>void_)**: Callback called when the button is pressed. + +Please note that `openPopup` returns an object of the `Popup` class. Also, the callback called when a button is clicked is passed a `Popup` object. + +The `Popup` class that represents an open popup contains a single method: `close()`. This will obviously close the popup when called. + +```javascript +class Popup { + /** + * Closes the popup + */ + close() {}; +} +``` + +Example: + +```javascript +let helloWorldPopup; + +// Open the popup when we enter a given zone +helloWorldPopup = WA.onEnterZone('myZone', () => { + WA.openPopup("popupRectangle", 'Hello world!', [{ + label: "Close", + className: "primary", + callback: (popup) => { + // Close the popup when the "Close" button is pressed. + popup.close(); + } + }); +}]); + +// Close the popup when we leave the zone. +WA.onLeaveZone('myZone', () => { + helloWorldPopup.close(); +}); +``` + +### Disabling / restoring controls + +``` +disablePlayerControls(): void +restorePlayerControls(): void +``` + +These 2 methods can be used to completely disable player controls and to enable them again. + +When controls are disabled, the user cannot move anymore using keyboard input. This can be useful in a "First Time User Experience" part, to display an important message to a user before letting him/her move again. + +Example: + +```javascript +WA.onEnterZone('myZone', () => { + WA.disablePlayerControls(); + WA.openPopup("popupRectangle", 'This is an imporant message!', [{ + label: "Got it!", + className: "primary", + callback: (popup) => { + WA.restorePlayerControls(); + popup.close(); + } + }]); +}); +``` + +### Opening a web page in a new tab + +``` +openTab(url: string): void +``` + +Opens the webpage at "url" in your browser, in a new tab. + +Example: + +```javascript +WA.openTab('https://www.wikipedia.org/'); +``` + +### Opening a web page in the current tab + +``` +goToPage(url: string): void +``` + +Opens the webpage at "url" in your browser in place of WorkAdventure. WorkAdventure will be completely unloaded. + +Example: + +```javascript +WA.goToPage('https://www.wikipedia.org/'); +``` + +### Opening/closing a web page in an iFrame + +``` +openCoWebSite(url: string): void +closeCoWebSite(): void +``` + +Opens the webpage at "url" in an iFrame (on the right side of the screen) or close that iFrame. + +Example: + +```javascript +WA.openCoWebSite('https://www.wikipedia.org/'); +// ... +WA.closeCoWebSite(); +``` + +### Load a sound from an url + +``` +loadSound(url: string): Sound +``` + +Load a sound from an url + +Please note that `loadSound` returns an object of the `Sound` class + +The `Sound` class that represents a loaded sound contains two methods: `play(soundConfig : SoundConfig|undefined)` and `stop()` + +The parameter soundConfig is optional, if you call play without a Sound config the sound will be played with the basic configuration. + +Example: + +```javascript +var mySound = WA.loadSound("Sound.ogg"); +var config = { + volume : 0.5, + loop : false, + rate : 1, + detune : 1, + delay : 0, + seek : 0, + mute : false +} +mySound.play(config); +// ... +mySound.stop(); +``` diff --git a/docs/maps/scripting.md b/docs/maps/scripting.md index f844154c..a3dd6572 100644 --- a/docs/maps/scripting.md +++ b/docs/maps/scripting.md @@ -114,235 +114,4 @@ View the dedicated page about [using Typescript with the scripting API](using-ty ## Available features in the client API -### Sending a message in the chat - - sendChatMessage(message: string, author: string): void - -Sends a message in the chat. The message is only visible in the browser of the current user. - -* **message**: the message to be displayed in the chat -* **author**: the name displayed for the author of the message. It does not have to be a real user. - -Example: - -```javascript -WA.sendChatMessage('Hello world', 'Mr Robot'); -``` - -### Listening to messages from the chat - -```javascript -onChatMessage(callback: (message: string) => void): void -``` - -Listens to messages typed by the current user and calls the callback. Messages from other users in the chat cannot be listened to. - -* **callback**: the function that will be called when a message is received. It contains the message typed by the user. - -Example: - -```javascript -WA.onChatMessage((message => { - console.log('The user typed a message', message); -})); -``` - -### Detecting when the user enters/leaves a zone - -``` -onEnterZone(name: string, callback: () => void): void -onLeaveZone(name: string, callback: () => void): void -``` - -Listens to the position of the current user. The event is triggered when the user enters or leaves a given zone. The name of the zone is stored in the map, on a dedicated layer with the `zone` property. - -
-
- -
The `zone` property, applied on a layer
-
-
- -* **name**: the name of the zone, as defined in the `zone` property. -* **callback**: the function that will be called when a user enters or leaves the zone. - -Example: - -```javascript -WA.onEnterZone('myZone', () => { - WA.sendChatMessage("Hello!", 'Mr Robot'); -}) - -WA.onLeaveZone('myZone', () => { - WA.sendChatMessage("Goodbye!", 'Mr Robot'); -}) -``` - -### Opening a popup - -In order to open a popup window, you must first define the position of the popup on your map. - -You can position this popup by using a "rectangle" object in Tiled that you will place on an "object" layer. - -
-
- -
-
- -
-
- -``` -openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup -``` - -* **targetObject**: the name of the rectangle object defined in Tiled. -* **message**: the message to display in the popup. -* **buttons**: an array of action buttons defined underneath the popup. - -Action buttons are `ButtonDescriptor` objects containing these properties. - -* **label (_string_)**: The label of the button. -* **className (_string_)**: The visual type of the button. Can be one of "normal", "primary", "success", "warning", "error", "disabled". -* **callback (_(popup: Popup)=>void_)**: Callback called when the button is pressed. - -Please note that `openPopup` returns an object of the `Popup` class. Also, the callback called when a button is clicked is passed a `Popup` object. - -The `Popup` class that represents an open popup contains a single method: `close()`. This will obviously close the popup when called. - -```javascript -class Popup { - /** - * Closes the popup - */ - close() {}; -} -``` - -Example: - -```javascript -let helloWorldPopup; - -// Open the popup when we enter a given zone -helloWorldPopup = WA.onEnterZone('myZone', () => { - WA.openPopup("popupRectangle", 'Hello world!', [{ - label: "Close", - className: "primary", - callback: (popup) => { - // Close the popup when the "Close" button is pressed. - popup.close(); - } - }); -}]); - -// Close the popup when we leave the zone. -WA.onLeaveZone('myZone', () => { - helloWorldPopup.close(); -}); -``` - -### Disabling / restoring controls - -``` -disablePlayerControls(): void -restorePlayerControls(): void -``` - -These 2 methods can be used to completely disable player controls and to enable them again. - -When controls are disabled, the user cannot move anymore using keyboard input. This can be useful in a "First Time User Experience" part, to display an important message to a user before letting him/her move again. - -Example: - -```javascript -WA.onEnterZone('myZone', () => { - WA.disablePlayerControls(); - WA.openPopup("popupRectangle", 'This is an imporant message!', [{ - label: "Got it!", - className: "primary", - callback: (popup) => { - WA.restorePlayerControls(); - popup.close(); - } - }]); -}); -``` - -### Opening a web page in a new tab - -``` -openTab(url: string): void -``` - -Opens the webpage at "url" in your browser, in a new tab. - -Example: - -```javascript -WA.openTab('https://www.wikipedia.org/'); -``` - -### Opening a web page in the current tab - -``` -goToPage(url: string): void -``` - -Opens the webpage at "url" in your browser in place of WorkAdventure. WorkAdventure will be completely unloaded. - -Example: - -```javascript -WA.goToPage('https://www.wikipedia.org/'); -``` - -### Opening/closing a web page in an iFrame - -``` -openCoWebSite(url: string): void -closeCoWebSite(): void -``` - -Opens the webpage at "url" in an iFrame (on the right side of the screen) or close that iFrame. - -Example: - -```javascript -WA.openCoWebSite('https://www.wikipedia.org/'); -// ... -WA.closeCoWebSite(); -``` - -### Load a sound from an url - -``` -loadSound(url: string): Sound -``` - -Load a sound from an url - -Please note that `loadSound` returns an object of the `Sound` class - -The `Sound` class that represents a loaded sound contains two methods: `play(soundConfig : SoundConfig|undefined)` and `stop()` - -The parameter soundConfig is optional, if you call play without a Sound config the sound will be played with the basic configuration. - -Example: - -```javascript -var mySound = WA.loadSound("Sound.ogg"); -var config = { - volume : 0.5, - loop : false, - rate : 1, - detune : 1, - delay : 0, - seek : 0, - mute : false -} -mySound.play(config); -// ... -mySound.stop(); -``` +The list of available functions and features is [available in the API Reference page, with examples](api-reference). From c025d1798bedb9a68389d729cf15013b69ef0972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 10 May 2021 12:14:31 +0200 Subject: [PATCH 012/203] Renaming restorePlayerControls/disablePlayerControls Putting "controls" in the plural form: - restorePlayerControl => restorePlayerControls - disablePlayerControl => disablePlayerControls --- front/src/Api/Events/IframeEvent.ts | 6 +++--- front/src/Api/IframeListener.ts | 4 ++-- front/src/iframe_api.ts | 12 ++++++------ maps/Tuto/scriptTuto.js | 4 ++-- maps/tests/script.js | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/front/src/Api/Events/IframeEvent.ts b/front/src/Api/Events/IframeEvent.ts index 1ed853c9..2f703222 100644 --- a/front/src/Api/Events/IframeEvent.ts +++ b/front/src/Api/Events/IframeEvent.ts @@ -25,8 +25,8 @@ export type IframeEventMap = { goToPage: GoToPageEvent openCoWebSite: OpenCoWebSiteEvent closeCoWebSite: null - disablePlayerControl: null - restorePlayerControl: null + disablePlayerControls: null + restorePlayerControls: null displayBubble: null removeBubble: null } @@ -52,4 +52,4 @@ export interface IframeResponseEvent { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const isIframeResponseEventWrapper = (event: { type?: string }): event is IframeResponseEvent => typeof event.type === 'string'; \ No newline at end of file +export const isIframeResponseEventWrapper = (event: { type?: string }): event is IframeResponseEvent => typeof event.type === 'string'; diff --git a/front/src/Api/IframeListener.ts b/front/src/Api/IframeListener.ts index d3b8ce4f..29e87b8a 100644 --- a/front/src/Api/IframeListener.ts +++ b/front/src/Api/IframeListener.ts @@ -96,10 +96,10 @@ class IframeListener { else if (payload.type === 'closeCoWebSite') { scriptUtils.closeCoWebSite(); } - else if (payload.type === 'disablePlayerControl') { + else if (payload.type === 'disablePlayerControls') { this._disablePlayerControlStream.next(); } - else if (payload.type === 'restorePlayerControl') { + else if (payload.type === 'restorePlayerControls') { this._enablePlayerControlStream.next(); } else if (payload.type === 'displayBubble') { diff --git a/front/src/iframe_api.ts b/front/src/iframe_api.ts index 6d0ef354..0bef1cc7 100644 --- a/front/src/iframe_api.ts +++ b/front/src/iframe_api.ts @@ -20,8 +20,8 @@ interface WorkAdventureApi { goToPage(url : string): void; openCoWebSite(url : string): void; closeCoWebSite(): void; - disablePlayerControl(): void; - restorePlayerControl(): void; + disablePlayerControls(): void; + restorePlayerControls(): void; displayBubble(): void; removeBubble(): void; } @@ -88,12 +88,12 @@ window.WA = { } as ChatEvent }, '*'); }, - disablePlayerControl(): void { - window.parent.postMessage({ 'type': 'disablePlayerControl' }, '*'); + disablePlayerControls(): void { + window.parent.postMessage({ 'type': 'disablePlayerControls' }, '*'); }, - restorePlayerControl(): void { - window.parent.postMessage({ 'type': 'restorePlayerControl' }, '*'); + restorePlayerControls(): void { + window.parent.postMessage({ 'type': 'restorePlayerControls' }, '*'); }, displayBubble(): void { diff --git a/maps/Tuto/scriptTuto.js b/maps/Tuto/scriptTuto.js index 869ec447..65962a94 100644 --- a/maps/Tuto/scriptTuto.js +++ b/maps/Tuto/scriptTuto.js @@ -25,7 +25,7 @@ function launchTuto (){ label: "Got it!", className : "success",callback:(popup2 => { popup2.close(); - WA.restorePlayerControl(); + WA.restorePlayerControls(); }) } ]) @@ -36,7 +36,7 @@ function launchTuto (){ } } ]); - WA.disablePlayerControl(); + WA.disablePlayerControls(); } diff --git a/maps/tests/script.js b/maps/tests/script.js index 25e47249..4a889a8a 100644 --- a/maps/tests/script.js +++ b/maps/tests/script.js @@ -21,7 +21,7 @@ function launchTuto (){ callback: (popup1) => { WA.sendChatMessage("Hey you can talk here too ! ", 'WA Guide'); popup1.close(); - WA.restorePlayerControl(); + WA.restorePlayerControls(); } } @@ -29,7 +29,7 @@ function launchTuto (){ } } ]); - WA.disablePlayerControl(); + WA.disablePlayerControls(); } WA.onChatMessage((message => { From de1768b7bbe67a438fa6dcf6a5a103b1758418b5 Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 10 May 2021 12:10:47 +0200 Subject: [PATCH 013/203] added back automatic deploy of staging 2 --- .github/workflows/build-and-deploy.yml | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 42f4868b..48a7bae9 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -2,7 +2,7 @@ name: Build, push and deploy Docker image on: push: - branch: [master] + branches: [master] release: types: [created] pull_request: @@ -16,7 +16,7 @@ env: jobs: build-front: - if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -36,11 +36,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-front - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} + tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} add_git_labels: true build-back: - if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -59,11 +59,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-back - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} + tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} add_git_labels: true build-pusher: - if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -82,11 +82,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-pusher - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} + tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} add_git_labels: true build-uploader: - if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -105,11 +105,11 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-uploader - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} + tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} add_git_labels: true build-maps: - if: ${{ github.event.release || github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: @@ -129,7 +129,7 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} repository: thecodingmachine/workadventure-maps - tags: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || github.event.release && env.GITHUB_REF_SLUG || 'master' }} + tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} add_git_labels: true deeploy: @@ -140,7 +140,7 @@ jobs: - build-maps - build-uploader runs-on: ubuntu-latest - if: ${{ github.event.push || contains(github.event.pull_request.labels.*.name, 'deploy') }} + if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} steps: - name: Checkout @@ -158,13 +158,13 @@ jobs: JITSI_URL: ${{ secrets.JITSI_URL }} SECRET_JITSI_KEY: ${{ secrets.SECRET_JITSI_KEY }} TURN_STATIC_AUTH_SECRET: ${{ secrets.TURN_STATIC_AUTH_SECRET }} - DEPLOY_REF: ${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || 'master' }} + DEPLOY_REF: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} with: - namespace: workadventure-${{ github.event.pull_request && env.GITHUB_HEAD_REF_SLUG || 'master' }} + namespace: workadventure-${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} - name: Add a comment in PR uses: unsplash/comment-on-pr@v1.2.0 - if: ${{ github.event.pull_request }} + if: ${{ github.event_name == 'pull_request' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From d1f1c8f47093bd4cca7d058018c0bd77cf0bfa95 Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 10 May 2021 12:40:12 +0200 Subject: [PATCH 014/203] added back automatic deploy of staging 3 --- deeployer.libsonnet | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/deeployer.libsonnet b/deeployer.libsonnet index 7ed9db8c..f9dd87bd 100644 --- a/deeployer.libsonnet +++ b/deeployer.libsonnet @@ -2,7 +2,7 @@ local env = std.extVar("env"), local namespace = env.DEPLOY_REF, local tag = namespace, - local url = if namespace == "master" then "workadventu.re" else namespace+".test.workadventu.re", + local url = namespace+".test.workadventu.re", // develop branch does not use admin because of issue with SSL certificate of admin as of now. local adminUrl = if namespace == "master" || namespace == "develop" || std.startsWith(namespace, "admin") then "https://"+url else null, "$schema": "https://raw.githubusercontent.com/thecodingmachine/deeployer/master/deeployer.schema.json", @@ -25,10 +25,7 @@ "TURN_STATIC_AUTH_SECRET": env.TURN_STATIC_AUTH_SECRET, } + (if adminUrl != null then { "ADMIN_API_URL": adminUrl, - } else {}) + if namespace != "master" then { - // Absolutely ugly WorkAround to circumvent broken certificates on the K8S test cluster. Don't do this in production kids! - "NODE_TLS_REJECT_UNAUTHORIZED": "0" - } + } else {}) }, "back2": { "image": "thecodingmachine/workadventure-back:"+tag, @@ -47,10 +44,7 @@ "TURN_STATIC_AUTH_SECRET": env.TURN_STATIC_AUTH_SECRET, } + (if adminUrl != null then { "ADMIN_API_URL": adminUrl, - } else {}) + if namespace != "master" then { - // Absolutely ugly WorkAround to circumvent broken certificates on the K8S test cluster. Don't do this in production kids! - "NODE_TLS_REJECT_UNAUTHORIZED": "0" - } + } else {}) }, "pusher": { "replicas": 2, @@ -69,10 +63,7 @@ "SECRET_JITSI_KEY": env.SECRET_JITSI_KEY, } + (if adminUrl != null then { "ADMIN_API_URL": adminUrl, - } else {}) + if namespace != "master" then { - // Absolutely ugly WorkAround to circumvent broken certificates on the K8S test cluster. Don't do this in production kids! - "NODE_TLS_REJECT_UNAUTHORIZED": "0" - } + } else {}) }, "front": { "image": "thecodingmachine/workadventure-front:"+tag, From 3b6daa99c000c209b1cb6c2759747c7594c2d388 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 11:50:12 +0000 Subject: [PATCH 015/203] Bump hosted-git-info from 2.8.8 to 2.8.9 in /back Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] --- back/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/back/yarn.lock b/back/yarn.lock index 43f58988..99b5df61 100644 --- a/back/yarn.lock +++ b/back/yarn.lock @@ -1251,9 +1251,9 @@ has-values@^1.0.0: kind-of "^4.0.0" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== http-errors@1.7.2: version "1.7.2" From 25d1e575ef7e24db7726f45754e65a6596ee0bd3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 16:57:45 +0000 Subject: [PATCH 016/203] Bump hosted-git-info from 2.8.8 to 2.8.9 in /maps Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] --- maps/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maps/yarn.lock b/maps/yarn.lock index ffb4747a..041c70ed 100644 --- a/maps/yarn.lock +++ b/maps/yarn.lock @@ -665,9 +665,9 @@ has@^1.0.3: function-bind "^1.1.1" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== iconv-lite@^0.4.24: version "0.4.24" From 50ee2e98100cbcb7f267139fa5fe5f17d05694a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 16:57:50 +0000 Subject: [PATCH 017/203] Bump hosted-git-info from 2.8.8 to 2.8.9 in /uploader Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] --- uploader/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uploader/yarn.lock b/uploader/yarn.lock index 92253d44..5b6741ac 100644 --- a/uploader/yarn.lock +++ b/uploader/yarn.lock @@ -811,9 +811,9 @@ has@^1.0.3: function-bind "^1.1.1" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== http-errors@1.7.2: version "1.7.2" From e0d496c7b7f621adea0aaa8e6c2717b2ff8578f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 16:57:51 +0000 Subject: [PATCH 018/203] Bump hosted-git-info from 2.8.8 to 2.8.9 in /benchmark Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] --- benchmark/package-lock.json | 6 +++--- benchmark/yarn.lock | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/benchmark/package-lock.json b/benchmark/package-lock.json index 8d4db6cf..72d0aae4 100644 --- a/benchmark/package-lock.json +++ b/benchmark/package-lock.json @@ -230,9 +230,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "indent-string": { "version": "2.1.0", diff --git a/benchmark/yarn.lock b/benchmark/yarn.lock index d93e3667..f1209dcf 100644 --- a/benchmark/yarn.lock +++ b/benchmark/yarn.lock @@ -169,8 +169,8 @@ graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" indent-string@^2.1.0: version "2.1.0" From 003bdf18cbc5b41a13d0289f22370762b8c97d87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 16:58:41 +0000 Subject: [PATCH 019/203] Bump hosted-git-info from 2.8.8 to 2.8.9 in /messages Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] --- messages/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/messages/yarn.lock b/messages/yarn.lock index 81bd0ed1..af71c938 100644 --- a/messages/yarn.lock +++ b/messages/yarn.lock @@ -2097,9 +2097,9 @@ highlight.js@^9.12.0: integrity sha512-zBZAmhSupHIl5sITeMqIJnYCDfAEc3Gdkqj65wC1lpI468MMQeeQkhcIAvk+RylAkxrCcI9xy9piHiXeQ1BdzQ== hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== html-tag@^2.0.0: version "2.0.0" From 58482f8ae6aacf9d22e3fa154dae1073fcc85865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 10 May 2021 19:01:18 +0200 Subject: [PATCH 020/203] Improving Changelog --- CHANGELOG.md | 7 +++++++ docs/maps/scripting.md | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3117ea31..2028e3b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## Version 1.3.9 - in dev +### BREAKING CHANGES + +- Scripting API: + - Changed function names: `restorePlayerControl` => `restorePlayerControls`, `disablePlayerControl` => `disablePlayerControls`. + Please keep in mind that the scripting API is still experimental. Some breaking changes can occur in it until we mark it as stable. + ### Updates - Mobile support has been improved @@ -7,6 +13,7 @@ - Mouse wheel support to zoom in / out - Pinch support on mobile to zoom in / out - Improved virtual joystick size (adapts to the zoom level) + ### Bug Fixes diff --git a/docs/maps/scripting.md b/docs/maps/scripting.md index a3dd6572..b9dee484 100644 --- a/docs/maps/scripting.md +++ b/docs/maps/scripting.md @@ -1,4 +1,4 @@ -{.alert.alert-danger} +{.alert.alert-danger style="width:80%"} This feature is "_experimental_". We may apply changes in the near future to the way it works when we gather some feedback. {.section-title.accent.text-primary} From 0411d5e493d4db6c8b90d97d34838c101dc11759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 10 May 2021 19:05:01 +0200 Subject: [PATCH 021/203] Fixing "camera popup" always display on resize This fixes a bug where the "camera popup" window was always displayed when the screen was resized. --- .../Phaser/Menu/HelpCameraSettingsScene.ts | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts index 429e197b..6e80b8d4 100644 --- a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts +++ b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts @@ -109,15 +109,18 @@ export class HelpCameraSettingsScene extends DirtyScene { public onResize(ev: UIEvent): void { super.onResize(ev); - const middleX = this.getMiddleX(); - const middleY = this.getMiddleY(); - this.tweens.add({ - targets: this.helpCameraSettingsElement, - x: middleX, - y: middleY, - duration: 1000, - ease: 'Power3' - }); + if (this.helpCameraSettingsOpened) { + const middleX = this.getMiddleX(); + const middleY = this.getMiddleY(); + this.tweens.add({ + targets: this.helpCameraSettingsElement, + x: middleX, + y: middleY, + duration: 1000, + ease: 'Power3' + }); + this.dirty = true; + } } private getMiddleX() : number{ From bd4cf5d7f714c9da8b3876369f1c5da316b5110e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gr=C3=A9goire=20parant?= Date: Mon, 10 May 2021 19:55:43 +0200 Subject: [PATCH 022/203] Fix error context sound meter (#1009) --- front/src/Phaser/Components/SoundMeter.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/front/src/Phaser/Components/SoundMeter.ts b/front/src/Phaser/Components/SoundMeter.ts index af75940e..1d6f7eba 100644 --- a/front/src/Phaser/Components/SoundMeter.ts +++ b/front/src/Phaser/Components/SoundMeter.ts @@ -17,14 +17,12 @@ export class SoundMeter { } private init(context: AudioContext) { - if (this.context === undefined) { - this.context = context; - this.analyser = this.context.createAnalyser(); + this.context = context; + this.analyser = this.context.createAnalyser(); - this.analyser.fftSize = 2048; - const bufferLength = this.analyser.fftSize; - this.dataArray = new Uint8Array(bufferLength); - } + this.analyser.fftSize = 2048; + const bufferLength = this.analyser.fftSize; + this.dataArray = new Uint8Array(bufferLength); } public connectToSource(stream: MediaStream, context: AudioContext): void From 0fd743bcacc66d6c8ce51f76eae1420c9d26fd50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gr=C3=A9goire=20parant?= Date: Mon, 10 May 2021 20:49:17 +0200 Subject: [PATCH 023/203] HotFix sound meter (#1029) --- front/src/WebRtc/MediaManager.ts | 39 +++++++++++++++++++------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index d9a91940..76cdc671 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -43,7 +43,8 @@ export class MediaManager { microphoneClose: HTMLImageElement; microphone: HTMLImageElement; webrtcInAudio: HTMLAudioElement; - mySoundMeterElement: HTMLDivElement; + //FIX ME SOUNDMETER: check stalability of sound meter calculation + //mySoundMeterElement: HTMLDivElement; private webrtcOutAudio: HTMLAudioElement; constraintsMedia : MediaStreamConstraints = { audio: audioConstraint, @@ -71,9 +72,10 @@ export class MediaManager { private userInputManager?: UserInputManager; - private mySoundMeter?: SoundMeter|null; + //FIX ME SOUNDMETER: check stalability of sound meter calculation + /*private mySoundMeter?: SoundMeter|null; private soundMeters: Map = new Map(); - private soundMeterElements: Map = new Map(); + private soundMeterElements: Map = new Map();*/ constructor() { @@ -134,15 +136,17 @@ export class MediaManager { this.checkActiveUser(); //todo: desactivated in case of bug - this.mySoundMeterElement = (HtmlUtils.getElementByIdOrFail('mySoundMeter')); + //FIX ME SOUNDMETER: check stalability of sound meter calculation + /*this.mySoundMeterElement = (HtmlUtils.getElementByIdOrFail('mySoundMeter')); this.mySoundMeterElement.childNodes.forEach((value: ChildNode, index) => { this.mySoundMeterElement.children.item(index)?.classList.remove('active'); - }); + });*/ } public updateScene(){ this.lastUpdateScene = new Date(); - this.updateSoudMeter(); + //FIX ME SOUNDMETER: check stalability of sound meter calculation + //this.updateSoudMeter(); } public blurCamera() { @@ -457,12 +461,12 @@ export class MediaManager { this.localStream = stream; this.myCamVideo.srcObject = this.localStream; - //init sound meter - this.mySoundMeter = null; + //FIX ME SOUNDMETER: check stalability of sound meter calculation + /*this.mySoundMeter = null; if(this.constraintsMedia.audio){ this.mySoundMeter = new SoundMeter(); this.mySoundMeter.connectToSource(stream, new AudioContext()); - } + }*/ return stream; }).catch((err: Error) => { throw err; @@ -489,7 +493,7 @@ export class MediaManager { track.stop(); } } - this.mySoundMeter?.stop(); + //this.mySoundMeter?.stop(); } setCamera(id: string): Promise { @@ -632,11 +636,12 @@ export class MediaManager { } remoteVideo.srcObject = stream; + //FIX ME SOUNDMETER: check stalability of sound meter calculation //sound metter - const soundMeter = new SoundMeter(); + /*const soundMeter = new SoundMeter(); soundMeter.connectToSource(stream, new AudioContext()); this.soundMeters.set(userId, soundMeter); - this.soundMeterElements.set(userId, HtmlUtils.getElementByIdOrFail('soundMeter-'+userId)); + this.soundMeterElements.set(userId, HtmlUtils.getElementByIdOrFail('soundMeter-'+userId));*/ } addStreamRemoteScreenSharing(userId: string, stream : MediaStream){ // In the case of screen sharing (going both ways), we may need to create the HTML element if it does not exist yet @@ -652,9 +657,10 @@ export class MediaManager { layoutManager.remove(userId); this.remoteVideo.delete(userId); - this.soundMeters.get(userId)?.stop(); + //FIX ME SOUNDMETER: check stalability of sound meter calculation + /*this.soundMeters.get(userId)?.stop(); this.soundMeters.delete(userId); - this.soundMeterElements.delete(userId); + this.soundMeterElements.delete(userId);*/ //permit to remove user in discussion part this.removeParticipant(userId); @@ -807,7 +813,8 @@ export class MediaManager { } } - updateSoudMeter(){ + //FIX ME SOUNDMETER: check stalability of sound meter calculation + /*updateSoudMeter(){ try{ const volume = parseInt(((this.mySoundMeter ? this.mySoundMeter.getVolume() : 0) / 10).toFixed(0)); this.setVolumeSoundMeter(volume, this.mySoundMeterElement); @@ -824,7 +831,7 @@ export class MediaManager { }catch(err){ //console.error(err); } - } + }*/ private setVolumeSoundMeter(volume: number, element: HTMLDivElement){ if(volume <= 0 && !element.classList.contains('active')){ From 52b1c6733b0c907b8ae2c7ce59f99dcd20126e3c Mon Sep 17 00:00:00 2001 From: Gregoire Parant Date: Fri, 7 May 2021 01:37:05 +0200 Subject: [PATCH 024/203] Notification & Camera - Notification when user is first and not focus on the tab - Camera focus when user is in discussion circle and back on tab with previous config camera settings - Camera stay blur if user is in discussion circle and not back on the tab # Conflicts: # front/src/WebRtc/MediaManager.ts --- front/src/WebRtc/MediaManager.ts | 33 ++++++++++++++++++++++++++++++-- front/src/WebRtc/SimplePeer.ts | 5 +++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 76cdc671..460d5807 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -141,6 +141,9 @@ export class MediaManager { this.mySoundMeterElement.childNodes.forEach((value: ChildNode, index) => { this.mySoundMeterElement.children.item(index)?.classList.remove('active'); });*/ + + //Check of ask notification navigator permission + this.getNotification(); } public updateScene(){ @@ -790,9 +793,9 @@ export class MediaManager { this.setTimeOutlastUpdateScene = setTimeout(() => { const now = new Date(); //if last update is more of 10 sec - if( (now.getTime() - this.lastUpdateScene.getTime()) > 10000) { + if( (now.getTime() - this.lastUpdateScene.getTime()) > 10000 && this.remoteVideo.size === 0) { this.blurCamera(); - }else{ + }else if((now.getTime() - this.lastUpdateScene.getTime()) <= 10000){ this.focusCamera(); } this.checkActiveUser(); @@ -854,6 +857,32 @@ export class MediaManager { elementChildre.classList.add('active'); }); } + + public getNotification(){ + //Get notification + if (window.Notification && Notification.permission !== "granted") { + Notification.requestPermission().catch((err) => { + console.error(`Notification permission error`, err); + }); + } + } + + public createNotification(userName: string){ + if(this.focused){ + return; + } + if (window.Notification && Notification.permission === "granted") { + const title = 'WorkAdventure'; + const options = { + body: `Hi! ${userName} wants to discuss with you, don't be afraid!`, + icon: '/resources/logos/logo-WA-min.png', + image: '/resources/logos/logo-WA-min.png', + badge: '/resources/logos/logo-WA-min.png', + }; + new Notification(title, options); + //new Notification(`Hi! ${userName} wants to discuss with you, don't be afraid!`); + } + } } export const mediaManager = new MediaManager(); diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index 7690c27d..3a56d20b 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -158,6 +158,11 @@ export class SimplePeer { this.sendLocalScreenSharingStreamToUser(user.userId); } }); + + //Create a notification for first user in circle discussion + if(this.PeerConnectionArray.size === 0){ + mediaManager.createNotification(user.name??''); + } this.PeerConnectionArray.set(user.userId, peer); for (const peerConnectionListener of this.peerConnectionListeners) { From e50aad0ea05e3f9fc1edb3706f58900cb261fd29 Mon Sep 17 00:00:00 2001 From: Gregoire Parant Date: Fri, 7 May 2021 11:39:25 +0200 Subject: [PATCH 025/203] Add WA logo --- front/dist/resources/logos/logo-WA-min.png | Bin 0 -> 2136 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 front/dist/resources/logos/logo-WA-min.png diff --git a/front/dist/resources/logos/logo-WA-min.png b/front/dist/resources/logos/logo-WA-min.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2131519735538aa4a2c7bdfcb46f945f54b69d GIT binary patch literal 2136 zcmV-e2&eanP)y0Kf7jVwzah0w!eWcYeU2~_}zu{)LwUPa<9x_AWVAwm*B@}#c= zz$ySNcyK=~4gg>akD-6JH%$lv=-{#J!M%vk&xpZWd=)?wpZ1Q&PdhJ(SJ=QN!n=6E zHvy!EPmYEM_oI_B0Ng||c!N&@=->}jH^b*iJ%SfagAW2|qv2gg^S0@ur*oP)xa|j7_C1tcFfEM;|sHZzggS#g-i<|G5&2bz7!3Nl{zLb zVp0I>XnaDA+a^U|svsmu@va*>cZ{SDlJ?$16CR*L#y5fyPoP@>9di3d(Jlg=X<(AJ z{Hp6@EdIHFfAZ-kmoLNIxpUIrcXD8;!-*>C))L4x z0nS{1J_pZJm6NM}KYxzD|NP_l^|LR&oP6dWB}^HkZGf+%?v~YFr>&o7!GhYbtSw_KpiG& z#>4_|EWqml=;;rSK92}^1klFfM6Eo2{J8XVjYj$4;>(vW;nk~G!CB?v#fxzI^l4j{ ztE?N~X#$i68wjUV+OA3fP0THcFj=jt8K@F~(VBF^IE|{FK@vdyDHT9j5SZkV`=)-L z2M->YI<-^w_V!9Izr4H*mo8nheT(x&lTFJ!fY6`<;WdS}EE9n7iHU?Y3T;_7HH@Nv z13Y>11kRi}BYffu7cQvWjIaQVKmAod!uj*(r#^fA`t{`fyLa#4{rmSP{@=!02T2E1 z8O`R&tZOtn+4Meo^a!3me=dC8YuB!+-1Y*-bW_D5-U@&fC_R1pbn^bqn>WWtmP7!i zMNlPx`T6-1|IQ1*A#K(OVNndw^5w1xZ7?5d5@bDIZG!l>S*JF@9C7@bKZo$@?o;uE=HuQ-L6>3E-+EA%bMewj_YKn2POK zO@Om?YhxgB^?7$+H9m0f-aTEv%#>|e9)L1{`oh%&5F`L17N`k`999tM?OH!FgDAe? zs34>eY62pM1Q0oO-8?#Ivi<(1VF_U1!zNBuvwm3P{x#SL`vQ@!J4M57=+?<9x z|Bs-u03X}@#Q6E*)G}nNf)&fcQ>LbhvzmY@H$l{fspg$xfVklD08V$aCX6v=J={ex zK;QL(kk6hyb9wm*HYRo)9UYyx&f40ViOVn_?4o`E@&fgP8QYNn;z39NlnK-i=0jZ+ z0}OGs$*5)sB@;BNX6UFEr7SHixhM!3$gB`TJA%}QLR*#zfSQ5&ASHk<=8i7*Xho2e(tQJ}3PQT*LWnRK=vXXT zdQUpSIh9-d@GKW^bj47>`oF`&L*?_>$m93-#eNDy{rWtN(RQV65|0N+I)%2a-8P|% zEuNu$-l9;cT`38taP9EMD**BWVX@7-gQ!SZIC+6^;I@_M*0Ec*`UURXxntup%A7iN z>i9@mSy?f8IUY7e1Ry#wWP`egy=E-ByQ`=GhO~XG*KCLu^~y{Q+o0Y-FB!-@oHEj)2_-7`2xK8UIW(yixJCBzhE3TzPFW8CxaeTdhqVMEXP~mMm&)|;5pF9-S%Evo zs+)VMt`D$FTgy77!`tImgpLIwwy2xf37a|!cU5A5JU!Rb$s%G~*RHNQ1wcWe9R`?& zYpFfcDF8qb41Hd0G;p*U9}FxKHNqRD%s@ZdjSq%a3EL$RXvc{0!Qe7+sR(GyKpkVo z2Lmxc9tsTAFlv0TuuxC?bI>PQs8a(1>Q&*l}h3O_B&nosD zQkuvn?c29DGuyTR04FPSDK40zkH)t;xzNR8(L-$8HXU5sN0O)hd(**Q5iUGHmKK&V z#X5%2*D<1}g6rkt)Bb`Rk#!s;{UhJt-|o!#;DHCo(!|<=^%@6>Y1y_nlWcqvKuR5j zkQ)A`Z)-98D1eky2%UhJt2;oWbIsIsfzJZSvWi0Raw7`{J7{$8m)Z+O04a+ZG5FSx zu!9EghP32 Date: Tue, 11 May 2021 10:56:50 +0200 Subject: [PATCH 026/203] Refactoring code to use the "visibilitychange" event Using the "visiblitychange" event instead of relying on a "trick" related to RAF being disabled when a window is not open allows us to have cleaner code. Bonus: the recursive call to "setTimeout" is gone, so the stacktrace growing indefinitely is gone too. This should make the application a bit more stable. --- front/src/Phaser/Game/GameScene.ts | 17 ++++++++ front/src/Phaser/Login/EnableCameraScene.ts | 1 - front/src/WebRtc/MediaManager.ts | 44 ++++++--------------- 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index c433ed0f..cd1b8892 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -183,6 +183,7 @@ export class GameScene extends ResizableScene implements CenterListener { private messageSubscription: Subscription|null = null; private popUpElements : Map = new Map(); private originalMapUrl: string|undefined; + private onVisibilityChangeCallback: () => void; constructor(private room: Room, MapUrlFile: string, customKey?: string|undefined) { super({ @@ -202,6 +203,7 @@ export class GameScene extends ResizableScene implements CenterListener { this.connectionAnswerPromise = new Promise((resolve, reject): void => { this.connectionAnswerPromiseResolve = resolve; }) + this.onVisibilityChangeCallback = this.onVisibilityChange.bind(this); } //hook preload scene @@ -499,6 +501,8 @@ export class GameScene extends ResizableScene implements CenterListener { if (!this.room.isDisconnected()) { this.connect(); } + + document.addEventListener('visibilitychange', this.onVisibilityChangeCallback); } /** @@ -620,6 +624,7 @@ export class GameScene extends ResizableScene implements CenterListener { self.chatModeSprite.setVisible(false); self.openChatIcon.setVisible(false); audioManager.restoreVolume(); + self.onVisibilityChange(); } } }) @@ -918,6 +923,8 @@ ${escapedMessage} for(const iframeEvents of this.iframeSubscriptionList){ iframeEvents.unsubscribe(); } + + document.removeEventListener('visibilitychange', this.onVisibilityChangeCallback); } private removeAllRemotePlayers(): void { @@ -1510,4 +1517,14 @@ ${escapedMessage} }); } } + + private onVisibilityChange(): void { + if (document.visibilityState === 'visible') { + mediaManager.focusCamera(); + } else { + if (this.simplePeer.getNbConnections() === 0) { + mediaManager.blurCamera(); + } + } + } } diff --git a/front/src/Phaser/Login/EnableCameraScene.ts b/front/src/Phaser/Login/EnableCameraScene.ts index 917dd44b..dfe48aea 100644 --- a/front/src/Phaser/Login/EnableCameraScene.ts +++ b/front/src/Phaser/Login/EnableCameraScene.ts @@ -247,7 +247,6 @@ export class EnableCameraScene extends Phaser.Scene { update(time: number, delta: number): void { this.soundMeterSprite.setVolume(this.soundMeter.getVolume()); - mediaManager.updateScene(); const middleX = this.getMiddleX(); this.tweens.add({ diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 460d5807..437e5e76 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -55,7 +55,7 @@ export class MediaManager { stopScreenSharingCallBacks : Set = new Set(); showReportModalCallBacks : Set = new Set(); helpCameraSettingsCallBacks : Set = new Set(); - + private microphoneBtn: HTMLDivElement; private cinemaBtn: HTMLDivElement; private monitorBtn: HTMLDivElement; @@ -63,9 +63,6 @@ export class MediaManager { private previousConstraint : MediaStreamConstraints; private focused : boolean = true; - private lastUpdateScene : Date = new Date(); - private setTimeOutlastUpdateScene? : NodeJS.Timeout; - private hasCamera = true; private triggerCloseJistiFrame : Map = new Map(); @@ -134,8 +131,6 @@ export class MediaManager { this.previousConstraint = JSON.parse(JSON.stringify(this.constraintsMedia)); this.pingCameraStatus(); - this.checkActiveUser(); //todo: desactivated in case of bug - //FIX ME SOUNDMETER: check stalability of sound meter calculation /*this.mySoundMeterElement = (HtmlUtils.getElementByIdOrFail('mySoundMeter')); this.mySoundMeterElement.childNodes.forEach((value: ChildNode, index) => { @@ -147,7 +142,6 @@ export class MediaManager { } public updateScene(){ - this.lastUpdateScene = new Date(); //FIX ME SOUNDMETER: check stalability of sound meter calculation //this.updateSoudMeter(); } @@ -418,7 +412,7 @@ export class MediaManager { } private _startScreenCapture() { - if (navigator.getDisplayMedia) { + if (navigator.getDisplayMedia) { return navigator.getDisplayMedia({video: true}); } else if (navigator.mediaDevices.getDisplayMedia) { return navigator.mediaDevices.getDisplayMedia({video: true}); @@ -553,7 +547,7 @@ export class MediaManager { `; layoutManager.add(DivImportance.Normal, userId, html); - + this.remoteVideo.set(userId, HtmlUtils.getElementByIdOrFail(userId)); //permit to create participant in discussion part @@ -571,7 +565,7 @@ export class MediaManager { showReportUser(); }); } - + addScreenSharingActiveVideo(userId: string, divImportance: DivImportance = DivImportance.Important){ userId = this.getScreenSharingId(userId); @@ -597,7 +591,7 @@ export class MediaManager { } element.classList.add('active') //todo: why does a method 'disable' add a class 'active'? } - + enabledMicrophoneByUserId(userId: number){ const element = document.getElementById(`microphone-${userId}`); if(!element){ @@ -605,7 +599,7 @@ export class MediaManager { } element.classList.remove('active') //todo: why does a method 'enable' remove a class 'active'? } - + disabledVideoByUserId(userId: number) { let element = document.getElementById(`${userId}`); if (element) { @@ -616,7 +610,7 @@ export class MediaManager { element.style.display = "block"; } } - + enabledVideoByUserId(userId: number){ let element = document.getElementById(`${userId}`); if(element){ @@ -655,7 +649,7 @@ export class MediaManager { this.addStreamRemoteVideo(this.getScreenSharingId(userId), stream); } - + removeActiveVideo(userId: string){ layoutManager.remove(userId); this.remoteVideo.delete(userId); @@ -671,7 +665,7 @@ export class MediaManager { removeActiveScreenSharingVideo(userId: string) { this.removeActiveVideo(this.getScreenSharingId(userId)) } - + playWebrtcOutSound(): void { this.webrtcOutAudio.play(); } @@ -717,7 +711,7 @@ export class MediaManager { const connnectingSpinnerDiv = element.getElementsByClassName('connecting-spinner').item(0) as HTMLDivElement|null; return connnectingSpinnerDiv; } - + private getColorByString(str: String) : String|null { let hash = 0; if (str.length === 0) return null; @@ -785,22 +779,6 @@ export class MediaManager { this.userInputManager = userInputManager; discussionManager.setUserInputManager(userInputManager); } - //check if user is active - private checkActiveUser(){ - if(this.setTimeOutlastUpdateScene){ - clearTimeout(this.setTimeOutlastUpdateScene); - } - this.setTimeOutlastUpdateScene = setTimeout(() => { - const now = new Date(); - //if last update is more of 10 sec - if( (now.getTime() - this.lastUpdateScene.getTime()) > 10000 && this.remoteVideo.size === 0) { - this.blurCamera(); - }else if((now.getTime() - this.lastUpdateScene.getTime()) <= 10000){ - this.focusCamera(); - } - this.checkActiveUser(); - }, this.focused ? 10000 : 1000); - } public setShowReportModalCallBacks(callback: ShowReportCallBack){ this.showReportModalCallBacks.add(callback); @@ -821,7 +799,7 @@ export class MediaManager { try{ const volume = parseInt(((this.mySoundMeter ? this.mySoundMeter.getVolume() : 0) / 10).toFixed(0)); this.setVolumeSoundMeter(volume, this.mySoundMeterElement); - + for(const indexUserId of this.soundMeters.keys()){ const soundMeter = this.soundMeters.get(indexUserId); const soundMeterElement = this.soundMeterElements.get(indexUserId); From f044b3d249fe1467d241b17ec4d358c7efb63e8d Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 10 May 2021 19:13:53 +0200 Subject: [PATCH 027/203] FIX: triggering a map transition now ignores other map transitions for 500ms --- front/src/Phaser/Game/GameScene.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 65129787..eb8be0e9 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -186,6 +186,7 @@ export class GameScene extends DirtyScene implements CenterListener { private popUpElements : Map = new Map(); private originalMapUrl: string|undefined; private pinchManager: PinchManager|undefined; + private mapTransitioning: boolean = false; //used to prevent transitions happenning at the same time. constructor(private room: Room, MapUrlFile: string, customKey?: string|undefined) { super({ @@ -882,6 +883,8 @@ ${escapedMessage} } private onMapExit(exitKey: string) { + if (this.mapTransitioning) return; + this.mapTransitioning = true; const {roomId, hash} = Room.getIdFromIdentifier(exitKey, this.MapUrlFile, this.instance); if (!roomId) throw new Error('Could not find the room from its exit key: '+exitKey); urlManager.pushStartLayerNameToUrl(hash); @@ -899,6 +902,7 @@ ${escapedMessage} this.initPositionFromLayerName(hash || defaultStartLayerName); this.CurrentPlayer.x = this.startX; this.CurrentPlayer.y = this.startY; + setTimeout(() => this.mapTransitioning = false, 500); } } From ad39b43df35ec2af22d3a7f7f70d95ec08ffcc36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 11 May 2021 14:52:51 +0200 Subject: [PATCH 028/203] Closing game webcame in Jitsi When stepping in Jitsi, the game webcam (from mediaManager) was not shut down. And when enabling/disabling the webcam in Jitsi, the webcam in mediaManager was also enabled/disabled. This PR fixes those issues. It also fixes a race condition when closing a Jitsi where the mic/cam would be enabled at the same time. --- front/src/Phaser/Game/GameScene.ts | 9 ++++++ front/src/WebRtc/JitsiFactory.ts | 27 +++++++----------- front/src/WebRtc/MediaManager.ts | 44 +++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 30 deletions(-) diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index cd1b8892..5d54d470 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1475,6 +1475,8 @@ ${escapedMessage} mediaManager.addTriggerCloseJitsiFrameButton('close-jisi',() => { this.stopJitsi(); }); + + this.onVisibilityChange(); } public stopJitsi(): void { @@ -1483,6 +1485,7 @@ ${escapedMessage} mediaManager.showGameOverlay(); mediaManager.removeTriggerCloseJitsiFrameButton('close-jisi'); + this.onVisibilityChange(); } //todo: put this into an 'orchestrator' scene (EntryScene?) @@ -1519,6 +1522,12 @@ ${escapedMessage} } private onVisibilityChange(): void { + // If the overlay is not displayed, we are in Jitsi. We don't need the webcam. + if (!mediaManager.isGameOverlayVisible()) { + mediaManager.blurCamera(); + return; + } + if (document.visibilityState === 'visible') { mediaManager.focusCamera(); } else { diff --git a/front/src/WebRtc/JitsiFactory.ts b/front/src/WebRtc/JitsiFactory.ts index 983b08e2..8ddbba7b 100644 --- a/front/src/WebRtc/JitsiFactory.ts +++ b/front/src/WebRtc/JitsiFactory.ts @@ -10,9 +10,10 @@ interface jitsiConfigInterface { } const getDefaultConfig = () : jitsiConfigInterface => { + const constraints = mediaManager.getConstraintRequestedByUser(); return { - startWithAudioMuted: !mediaManager.constraintsMedia.audio, - startWithVideoMuted: mediaManager.constraintsMedia.video === false, + startWithAudioMuted: !constraints.audio, + startWithVideoMuted: constraints.video === false, prejoinPageEnabled: false } } @@ -71,7 +72,7 @@ class JitsiFactory { private jitsiApi: any; // eslint-disable-line @typescript-eslint/no-explicit-any private audioCallback = this.onAudioChange.bind(this); private videoCallback = this.onVideoChange.bind(this); - private previousConfigMeet? : jitsiConfigInterface; + private previousConfigMeet! : jitsiConfigInterface; private jitsiScriptLoaded: boolean = false; /** @@ -136,32 +137,24 @@ class JitsiFactory { //restore previous config if(this.previousConfigMeet?.startWithAudioMuted){ - mediaManager.disableMicrophone(); + await mediaManager.disableMicrophone(); }else{ - mediaManager.enableMicrophone(); + await mediaManager.enableMicrophone(); } if(this.previousConfigMeet?.startWithVideoMuted){ - mediaManager.disableCamera(); + await mediaManager.disableCamera(); }else{ - mediaManager.enableCamera(); + await mediaManager.enableCamera(); } } private onAudioChange({muted}: {muted: boolean}): void { - if (muted && mediaManager.constraintsMedia.audio === true) { - mediaManager.disableMicrophone(); - } else if(!muted && mediaManager.constraintsMedia.audio === false) { - mediaManager.enableMicrophone(); - } + this.previousConfigMeet.startWithAudioMuted = muted; } private onVideoChange({muted}: {muted: boolean}): void { - if (muted && mediaManager.constraintsMedia.video !== false) { - mediaManager.disableCamera(); - } else if(!muted && mediaManager.constraintsMedia.video === false) { - mediaManager.enableCamera(); - } + this.previousConfigMeet.startWithVideoMuted = muted; } private async loadJitsiScript(domain: string): Promise { diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 437e5e76..85060a86 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -155,6 +155,13 @@ export class MediaManager { this.disableCamera(); } + /** + * Returns the constraint that the user wants (independently of the visibility / jitsi state...) + */ + public getConstraintRequestedByUser(): MediaStreamConstraints { + return this.previousConstraint ?? this.constraintsMedia; + } + public focusCamera() { if(this.focused){ return; @@ -197,7 +204,7 @@ export class MediaManager { } } - public showGameOverlay(){ + public showGameOverlay(): void { const gameOverlay = HtmlUtils.getElementByIdOrFail('game-overlay'); gameOverlay.classList.add('active'); @@ -208,7 +215,7 @@ export class MediaManager { buttonCloseFrame.removeEventListener('click', functionTrigger); } - public hideGameOverlay(){ + public hideGameOverlay(): void { const gameOverlay = HtmlUtils.getElementByIdOrFail('game-overlay'); gameOverlay.classList.remove('active'); @@ -219,6 +226,11 @@ export class MediaManager { buttonCloseFrame.addEventListener('click', functionTrigger); } + public isGameOverlayVisible(): boolean { + const gameOverlay = HtmlUtils.getElementByIdOrFail('game-overlay'); + return gameOverlay.classList.contains('active'); + } + public updateCameraQuality(value: number) { this.enableCameraStyle(); const newVideoConstraint = JSON.parse(JSON.stringify(videoConstraint)); @@ -230,29 +242,32 @@ export class MediaManager { }); } - public enableCamera() { + public async enableCamera() { this.constraintsMedia.video = videoConstraint; - this.getCamera().then((stream: MediaStream) => { + try { + const stream = await this.getCamera() //TODO show error message tooltip upper of camera button //TODO message : please check camera permission of your navigator if(stream.getVideoTracks().length === 0) { - throw Error('Video track is empty, please check camera permission of your navigator') + throw new Error('Video track is empty, please check camera permission of your navigator') } this.enableCameraStyle(); this.triggerUpdatedLocalStreamCallbacks(stream); - }).catch((err) => { + } catch(err) { console.error(err); this.disableCameraStyle(); + this.stopCamera(); layoutManager.addInformation('warning', 'Camera access denied. Click here and check navigators permissions.', () => { this.showHelpCameraSettingsCallBack(); }, this.userInputManager); - }); + } } public async disableCamera() { this.disableCameraStyle(); + this.stopCamera(); if (this.constraintsMedia.audio !== false) { const stream = await this.getCamera(); @@ -262,25 +277,27 @@ export class MediaManager { } } - public enableMicrophone() { + public async enableMicrophone() { this.constraintsMedia.audio = audioConstraint; - this.getCamera().then((stream) => { + try { + const stream = await this.getCamera(); + //TODO show error message tooltip upper of camera button //TODO message : please check microphone permission of your navigator - if(stream.getAudioTracks().length === 0) { + if (stream.getAudioTracks().length === 0) { throw Error('Audio track is empty, please check microphone permission of your navigator') } this.enableMicrophoneStyle(); this.triggerUpdatedLocalStreamCallbacks(stream); - }).catch((err) => { + } catch(err) { console.error(err); this.disableMicrophoneStyle(); layoutManager.addInformation('warning', 'Microphone access denied. Click here and check navigators permissions.', () => { this.showHelpCameraSettingsCallBack(); }, this.userInputManager); - }); + } } public async disableMicrophone() { @@ -325,7 +342,6 @@ export class MediaManager { this.cinemaBtn.classList.add("disabled"); this.constraintsMedia.video = false; this.myCamVideo.srcObject = null; - this.stopCamera(); } private enableMicrophoneStyle(){ @@ -436,6 +452,8 @@ export class MediaManager { return this.getLocalStream().catch((err) => { console.info('Error get camera, trying with video option at null =>', err); this.disableCameraStyle(); + this.stopCamera(); + return this.getLocalStream().then((stream : MediaStream) => { this.hasCamera = false; return stream; From 4ec5ad9e3301b484a5ab392d1c4d7e0e2089eccb Mon Sep 17 00:00:00 2001 From: kharhamel Date: Tue, 11 May 2021 16:44:31 +0200 Subject: [PATCH 029/203] FIX: trackDirtyAnims now listen to more generic events --- front/src/Phaser/Game/DirtyScene.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/src/Phaser/Game/DirtyScene.ts b/front/src/Phaser/Game/DirtyScene.ts index 03ec9a95..27ebd3cb 100644 --- a/front/src/Phaser/Game/DirtyScene.ts +++ b/front/src/Phaser/Game/DirtyScene.ts @@ -2,6 +2,7 @@ import {ResizableScene} from "../Login/ResizableScene"; import GameObject = Phaser.GameObjects.GameObject; import Events = Phaser.Scenes.Events; import AnimationEvents = Phaser.Animations.Events; +import StructEvents = Phaser.Structs.Events; /** * A scene that can track its dirty/pristine state. @@ -23,12 +24,11 @@ export abstract class DirtyScene extends ResizableScene { } this.isAlreadyTracking = true; const trackAnimationFunction = this.trackAnimation.bind(this); - this.events.on(Events.ADDED_TO_SCENE, (gameObject: GameObject) => { + this.sys.updateList.on(StructEvents.PROCESS_QUEUE_ADD, (gameObject: GameObject) => { this.objectListChanged = true; gameObject.on(AnimationEvents.ANIMATION_UPDATE, trackAnimationFunction); }); - - this.events.on(Events.REMOVED_FROM_SCENE, (gameObject: GameObject) => { + this.sys.updateList.on(StructEvents.PROCESS_QUEUE_REMOVE, (gameObject: GameObject) => { this.objectListChanged = true; gameObject.removeListener(AnimationEvents.ANIMATION_UPDATE, trackAnimationFunction); }); From 627db30410c0a256a844bf2b56c259b280800c15 Mon Sep 17 00:00:00 2001 From: TabascoEye Date: Tue, 11 May 2021 17:38:28 +0200 Subject: [PATCH 030/203] turning noise suppresion back on turning AGC off was a good idea, disabling noise suppresion with it was not. => should all end up in the "settings" menu in the end --- front/src/WebRtc/MediaManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 85060a86..2bed2c68 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -20,7 +20,7 @@ const audioConstraint: boolean|MediaTrackConstraints = { //TODO: make these values configurable in the game settings menu and store them in localstorage autoGainControl: false, echoCancellation: true, - noiseSuppression: false + noiseSuppression: true }; export type UpdatedLocalStreamCallback = (media: MediaStream|null) => void; From 2d8997c6d7bbfc8a96afbe2c7ba21f72a39da6d9 Mon Sep 17 00:00:00 2001 From: TabascoEye Date: Tue, 11 May 2021 17:38:28 +0200 Subject: [PATCH 031/203] turning noise suppresion back on turning AGC off was a good idea, disabling noise suppresion with it was not. => should all end up in the "settings" menu in the end --- front/src/WebRtc/MediaManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 85060a86..2bed2c68 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -20,7 +20,7 @@ const audioConstraint: boolean|MediaTrackConstraints = { //TODO: make these values configurable in the game settings menu and store them in localstorage autoGainControl: false, echoCancellation: true, - noiseSuppression: false + noiseSuppression: true }; export type UpdatedLocalStreamCallback = (media: MediaStream|null) => void; From aff912da552bfcf2a7aa8d6238ada195a2e228cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 May 2021 23:45:14 +0000 Subject: [PATCH 032/203] Bump lodash from 4.17.20 to 4.17.21 in /pusher Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] --- pusher/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pusher/yarn.lock b/pusher/yarn.lock index 43f58988..9469a69d 100644 --- a/pusher/yarn.lock +++ b/pusher/yarn.lock @@ -1704,9 +1704,9 @@ lodash.once@^4.0.0: integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== long@~3: version "3.2.0" From 4d4f845b9eb1dbbbd028baccfd9d437c06a52759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 09:13:25 +0200 Subject: [PATCH 033/203] Setting "importsNotUsedAsValues": "error" Turning the "importsNotUsedAsValues" TS config value to "error". This will require us to use `import type` instead of `import` when we are importing a value that is only used as a type (and therefore that is dropped by the Typescript compiler). Why this change? This is a requirement to be able to use Svelte in the future. See https://github.com/sveltejs/svelte-preprocess/issues/206#issuecomment-663193798 --- .../ConsoleGlobalMessageManager.ts | 6 +++--- .../src/Administration/GlobalMessageManager.ts | 4 ++-- front/src/Administration/TypeMessage.ts | 4 ++-- front/src/Api/Events/IframeEvent.ts | 18 +++++++++--------- front/src/Api/IframeListener.ts | 6 +++--- front/src/Connexion/AdminMessagesService.ts | 8 ++++---- front/src/Connexion/ConnectionManager.ts | 2 +- front/src/Connexion/ConnexionModels.ts | 6 +++--- front/src/Connexion/RoomConnection.ts | 8 ++++---- front/src/Network/ProtobufClientUtils.ts | 2 +- front/src/Phaser/Companion/Companion.ts | 7 +++---- front/src/Phaser/Components/MobileJoystick.ts | 1 - .../src/Phaser/Components/SoundMeterSprite.ts | 2 +- front/src/Phaser/Components/TextUtils.ts | 6 ++---- .../Entity/PlayerTexturesLoadingManager.ts | 3 +-- front/src/Phaser/Entity/RemotePlayer.ts | 12 ++++++------ front/src/Phaser/Entity/SpeechBubble.ts | 4 ++-- front/src/Phaser/Game/AddPlayerInterface.ts | 4 ++-- front/src/Phaser/Game/GameManager.ts | 10 +++++----- front/src/Phaser/Game/GameMap.ts | 2 +- front/src/Phaser/Game/GameScene.ts | 16 ++++++++-------- front/src/Phaser/Game/PlayerMovement.ts | 4 ++-- .../Phaser/Game/PlayersPositionInterpolator.ts | 4 ++-- front/src/Phaser/Items/ActionableItem.ts | 2 +- front/src/Phaser/Items/Computer/computer.ts | 6 +++--- front/src/Phaser/Items/ItemFactoryInterface.ts | 6 +++--- .../src/Phaser/Login/AbstractCharacterScene.ts | 6 +++--- front/src/Phaser/Login/CustomizeScene.ts | 2 +- .../Phaser/Login/SelectCharacterMobileScene.ts | 18 ++---------------- front/src/Phaser/Login/SelectCharacterScene.ts | 4 +--- front/src/Phaser/Login/SelectCompanionScene.ts | 2 +- front/src/Phaser/Map/LayersIterator.ts | 2 +- front/src/Phaser/Player/Player.ts | 2 +- front/src/Phaser/UserInput/UserInputManager.ts | 4 ++-- front/src/Url/UrlManager.ts | 2 +- front/src/WebRtc/DiscussionManager.ts | 4 ++-- front/src/WebRtc/LayoutManager.ts | 4 ++-- front/src/WebRtc/MediaManager.ts | 4 ++-- front/src/WebRtc/ScreenSharingPeer.ts | 6 +++--- front/src/WebRtc/SimplePeer.ts | 4 ++-- front/src/WebRtc/VideoPeer.ts | 8 ++++---- front/src/iframe_api.ts | 12 ++++++------ front/src/types.ts | 2 +- front/tsconfig.json | 2 ++ 44 files changed, 111 insertions(+), 130 deletions(-) diff --git a/front/src/Administration/ConsoleGlobalMessageManager.ts b/front/src/Administration/ConsoleGlobalMessageManager.ts index c1d0fba9..0dbfe834 100644 --- a/front/src/Administration/ConsoleGlobalMessageManager.ts +++ b/front/src/Administration/ConsoleGlobalMessageManager.ts @@ -1,7 +1,7 @@ import {HtmlUtils} from "../WebRtc/HtmlUtils"; -import {UserInputManager} from "../Phaser/UserInput/UserInputManager"; -import {RoomConnection} from "../Connexion/RoomConnection"; -import {PlayGlobalMessageInterface} from "../Connexion/ConnexionModels"; +import type {UserInputManager} from "../Phaser/UserInput/UserInputManager"; +import type {RoomConnection} from "../Connexion/RoomConnection"; +import type {PlayGlobalMessageInterface} from "../Connexion/ConnexionModels"; import {AdminMessageEventTypes} from "../Connexion/AdminMessagesService"; export const CLASS_CONSOLE_MESSAGE = 'main-console'; diff --git a/front/src/Administration/GlobalMessageManager.ts b/front/src/Administration/GlobalMessageManager.ts index bc9f3cfe..95364e4c 100644 --- a/front/src/Administration/GlobalMessageManager.ts +++ b/front/src/Administration/GlobalMessageManager.ts @@ -1,8 +1,8 @@ import {HtmlUtils} from "./../WebRtc/HtmlUtils"; import {AUDIO_TYPE, MESSAGE_TYPE} from "./ConsoleGlobalMessageManager"; import {PUSHER_URL, UPLOADER_URL} from "../Enum/EnvironmentVariable"; -import {RoomConnection} from "../Connexion/RoomConnection"; -import {PlayGlobalMessageInterface} from "../Connexion/ConnexionModels"; +import type {RoomConnection} from "../Connexion/RoomConnection"; +import type {PlayGlobalMessageInterface} from "../Connexion/ConnexionModels"; export class GlobalMessageManager { diff --git a/front/src/Administration/TypeMessage.ts b/front/src/Administration/TypeMessage.ts index 182f7e01..07f330fd 100644 --- a/front/src/Administration/TypeMessage.ts +++ b/front/src/Administration/TypeMessage.ts @@ -1,4 +1,4 @@ -import {TypeMessageInterface} from "./UserMessageManager"; +import type {TypeMessageInterface} from "./UserMessageManager"; import {HtmlUtils} from "../WebRtc/HtmlUtils"; let modalTimeOut : NodeJS.Timeout; @@ -86,4 +86,4 @@ export class Banned extends TypeMessageExt { showMessage(message: string){ super.showMessage(message, false); } -} \ No newline at end of file +} diff --git a/front/src/Api/Events/IframeEvent.ts b/front/src/Api/Events/IframeEvent.ts index 2f703222..598f4544 100644 --- a/front/src/Api/Events/IframeEvent.ts +++ b/front/src/Api/Events/IframeEvent.ts @@ -1,14 +1,14 @@ -import { ButtonClickedEvent } from './ButtonClickedEvent'; -import { ChatEvent } from './ChatEvent'; -import { ClosePopupEvent } from './ClosePopupEvent'; -import { EnterLeaveEvent } from './EnterLeaveEvent'; -import { GoToPageEvent } from './GoToPageEvent'; -import { OpenCoWebSiteEvent } from './OpenCoWebSiteEvent'; -import { OpenPopupEvent } from './OpenPopupEvent'; -import { OpenTabEvent } from './OpenTabEvent'; -import { UserInputChatEvent } from './UserInputChatEvent'; +import type { ButtonClickedEvent } from './ButtonClickedEvent'; +import type { ChatEvent } from './ChatEvent'; +import type { ClosePopupEvent } from './ClosePopupEvent'; +import type { EnterLeaveEvent } from './EnterLeaveEvent'; +import type { GoToPageEvent } from './GoToPageEvent'; +import type { OpenCoWebSiteEvent } from './OpenCoWebSiteEvent'; +import type { OpenPopupEvent } from './OpenPopupEvent'; +import type { OpenTabEvent } from './OpenTabEvent'; +import type { UserInputChatEvent } from './UserInputChatEvent'; export interface TypedMessageEvent extends MessageEvent { diff --git a/front/src/Api/IframeListener.ts b/front/src/Api/IframeListener.ts index 29e87b8a..6c4e1a20 100644 --- a/front/src/Api/IframeListener.ts +++ b/front/src/Api/IframeListener.ts @@ -2,16 +2,16 @@ import { Subject } from "rxjs"; import { ChatEvent, isChatEvent } from "./Events/ChatEvent"; import * as crypto from "crypto"; import { HtmlUtils } from "../WebRtc/HtmlUtils"; -import { EnterLeaveEvent } from "./Events/EnterLeaveEvent"; +import type { EnterLeaveEvent } from "./Events/EnterLeaveEvent"; import { isOpenPopupEvent, OpenPopupEvent } from "./Events/OpenPopupEvent"; import { isOpenTabEvent, OpenTabEvent } from "./Events/OpenTabEvent"; -import { ButtonClickedEvent } from "./Events/ButtonClickedEvent"; +import type { ButtonClickedEvent } from "./Events/ButtonClickedEvent"; import { ClosePopupEvent, isClosePopupEvent } from "./Events/ClosePopupEvent"; import { scriptUtils } from "./ScriptUtils"; import { GoToPageEvent, isGoToPageEvent } from "./Events/GoToPageEvent"; import { isOpenCoWebsite, OpenCoWebSiteEvent } from "./Events/OpenCoWebSiteEvent"; import { IframeEventMap, IframeEvent, IframeResponseEvent, IframeResponseEventMap, isIframeEventWrapper, TypedMessageEvent } from "./Events/IframeEvent"; -import { UserInputChatEvent } from "./Events/UserInputChatEvent"; +import type { UserInputChatEvent } from "./Events/UserInputChatEvent"; /** diff --git a/front/src/Connexion/AdminMessagesService.ts b/front/src/Connexion/AdminMessagesService.ts index 1750dd28..0cf7f95f 100644 --- a/front/src/Connexion/AdminMessagesService.ts +++ b/front/src/Connexion/AdminMessagesService.ts @@ -1,5 +1,5 @@ import {Subject} from "rxjs"; -import {BanUserMessage, SendUserMessage} from "../Messages/generated/messages_pb"; +import type {BanUserMessage, SendUserMessage} from "../Messages/generated/messages_pb"; export enum AdminMessageEventTypes { admin = 'message', @@ -19,11 +19,11 @@ interface AdminMessageEvent { class AdminMessagesService { private _messageStream: Subject = new Subject(); public messageStream = this._messageStream.asObservable(); - + constructor() { this.messageStream.subscribe((event) => console.log('message', event)) } - + onSendusermessage(message: SendUserMessage|BanUserMessage) { this._messageStream.next({ type: message.getType() as unknown as AdminMessageEventTypes, @@ -32,4 +32,4 @@ class AdminMessagesService { } } -export const adminMessagesService = new AdminMessagesService(); \ No newline at end of file +export const adminMessagesService = new AdminMessagesService(); diff --git a/front/src/Connexion/ConnectionManager.ts b/front/src/Connexion/ConnectionManager.ts index a0edacbc..932fb1fc 100644 --- a/front/src/Connexion/ConnectionManager.ts +++ b/front/src/Connexion/ConnectionManager.ts @@ -1,7 +1,7 @@ import Axios from "axios"; import {PUSHER_URL, START_ROOM_URL} from "../Enum/EnvironmentVariable"; import {RoomConnection} from "./RoomConnection"; -import {OnConnectInterface, PositionInterface, ViewportInterface} from "./ConnexionModels"; +import type {OnConnectInterface, PositionInterface, ViewportInterface} from "./ConnexionModels"; import {GameConnexionTypes, urlManager} from "../Url/UrlManager"; import {localUserStore} from "./LocalUserStore"; import {LocalUser} from "./LocalUser"; diff --git a/front/src/Connexion/ConnexionModels.ts b/front/src/Connexion/ConnexionModels.ts index 477e86e3..09447445 100644 --- a/front/src/Connexion/ConnexionModels.ts +++ b/front/src/Connexion/ConnexionModels.ts @@ -1,8 +1,8 @@ import {PlayerAnimationDirections} from "../Phaser/Player/Animation"; import {UserSimplePeerInterface} from "../WebRtc/SimplePeer"; -import {SignalData} from "simple-peer"; -import {RoomConnection} from "./RoomConnection"; -import {BodyResourceDescriptionInterface} from "../Phaser/Entity/PlayerTextures"; +import type {SignalData} from "simple-peer"; +import type {RoomConnection} from "./RoomConnection"; +import type {BodyResourceDescriptionInterface} from "../Phaser/Entity/PlayerTextures"; export enum EventMessage{ CONNECT = "connect", diff --git a/front/src/Connexion/RoomConnection.ts b/front/src/Connexion/RoomConnection.ts index 101bdd61..6edb9c45 100644 --- a/front/src/Connexion/RoomConnection.ts +++ b/front/src/Connexion/RoomConnection.ts @@ -27,11 +27,11 @@ import { SendJitsiJwtMessage, CharacterLayerMessage, PingMessage, - SendUserMessage, + SendUserMessage, BanUserMessage } from "../Messages/generated/messages_pb" -import {UserSimplePeerInterface} from "../WebRtc/SimplePeer"; +import type {UserSimplePeerInterface} from "../WebRtc/SimplePeer"; import Direction = PositionMessage.Direction; import {ProtobufClientUtils} from "../Network/ProtobufClientUtils"; import { @@ -42,7 +42,7 @@ import { ViewportInterface, WebRtcDisconnectMessageInterface, WebRtcSignalReceivedMessageInterface, } from "./ConnexionModels"; -import {BodyResourceDescriptionInterface} from "../Phaser/Entity/PlayerTextures"; +import type {BodyResourceDescriptionInterface} from "../Phaser/Entity/PlayerTextures"; import {adminMessagesService} from "./AdminMessagesService"; import {worldFullMessageStream} from "./WorldFullMessageStream"; import {worldFullWarningStream} from "./WorldFullWarningStream"; @@ -86,7 +86,7 @@ export class RoomConnection implements RoomConnection { url += '&bottom='+Math.floor(viewport.bottom); url += '&left='+Math.floor(viewport.left); url += '&right='+Math.floor(viewport.right); - + if (typeof companion === 'string') { url += '&companion='+encodeURIComponent(companion); } diff --git a/front/src/Network/ProtobufClientUtils.ts b/front/src/Network/ProtobufClientUtils.ts index 6a402e97..3d2d5c32 100644 --- a/front/src/Network/ProtobufClientUtils.ts +++ b/front/src/Network/ProtobufClientUtils.ts @@ -1,6 +1,6 @@ import {PositionMessage} from "../Messages/generated/messages_pb"; import Direction = PositionMessage.Direction; -import {PointInterface} from "../Connexion/ConnexionModels"; +import type {PointInterface} from "../Connexion/ConnexionModels"; export class ProtobufClientUtils { diff --git a/front/src/Phaser/Companion/Companion.ts b/front/src/Phaser/Companion/Companion.ts index 72491ae1..1c43f452 100644 --- a/front/src/Phaser/Companion/Companion.ts +++ b/front/src/Phaser/Companion/Companion.ts @@ -1,6 +1,5 @@ import Sprite = Phaser.GameObjects.Sprite; import Container = Phaser.GameObjects.Container; -import { lazyLoadCompanionResource } from "./CompanionTexturesLoadingManager"; import { PlayerAnimationDirections, PlayerAnimationTypes } from "../Player/Animation"; export interface CompanionStatus { @@ -25,7 +24,7 @@ export class Companion extends Container { constructor(scene: Phaser.Scene, x: number, y: number, name: string, texturePromise: Promise) { super(scene, x + 14, y + 4); - + this.sprites = new Map(); this.delta = 0; @@ -104,7 +103,7 @@ export class Companion extends Container { } } } - + this.setDepth(this.y); this.playAnimation(this.direction, this.animationType); } @@ -137,7 +136,7 @@ export class Companion extends Container { this.getAnimations(resource).forEach(animation => { this.scene.anims.create(animation); }); - + this.scene.sys.updateList.add(sprite); this.sprites.set(resource, sprite); } diff --git a/front/src/Phaser/Components/MobileJoystick.ts b/front/src/Phaser/Components/MobileJoystick.ts index 0af3d6c8..fced71da 100644 --- a/front/src/Phaser/Components/MobileJoystick.ts +++ b/front/src/Phaser/Components/MobileJoystick.ts @@ -1,5 +1,4 @@ import VirtualJoystick from 'phaser3-rex-plugins/plugins/virtualjoystick.js'; -import ScaleManager = Phaser.Scale.ScaleManager; import {waScaleManager} from "../Services/WaScaleManager"; //the assets were found here: https://hannemann.itch.io/virtual-joystick-pack-free diff --git a/front/src/Phaser/Components/SoundMeterSprite.ts b/front/src/Phaser/Components/SoundMeterSprite.ts index 2787059d..582617f9 100644 --- a/front/src/Phaser/Components/SoundMeterSprite.ts +++ b/front/src/Phaser/Components/SoundMeterSprite.ts @@ -1,5 +1,5 @@ import Container = Phaser.GameObjects.Container; -import {Scene} from "phaser"; +import type {Scene} from "phaser"; import GameObject = Phaser.GameObjects.GameObject; import Rectangle = Phaser.GameObjects.Rectangle; diff --git a/front/src/Phaser/Components/TextUtils.ts b/front/src/Phaser/Components/TextUtils.ts index beee840a..db9a97fb 100644 --- a/front/src/Phaser/Components/TextUtils.ts +++ b/front/src/Phaser/Components/TextUtils.ts @@ -1,7 +1,5 @@ -import {ITiledMapObject} from "../Map/ITiledMap"; -import Text = Phaser.GameObjects.Text; -import {GameScene} from "../Game/GameScene"; -import TextStyle = Phaser.GameObjects.TextStyle; +import type {ITiledMapObject} from "../Map/ITiledMap"; +import type {GameScene} from "../Game/GameScene"; export class TextUtils { public static createTextFromITiledMapObject(scene: GameScene, object: ITiledMapObject): void { diff --git a/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts b/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts index 3dfe8368..6d8b84c2 100644 --- a/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts +++ b/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts @@ -1,6 +1,5 @@ import LoaderPlugin = Phaser.Loader.LoaderPlugin; -import TextureManager = Phaser.Textures.TextureManager; -import {CharacterTexture} from "../../Connexion/LocalUser"; +import type {CharacterTexture} from "../../Connexion/LocalUser"; import {BodyResourceDescriptionInterface, LAYERS, PLAYER_RESOURCES} from "./PlayerTextures"; diff --git a/front/src/Phaser/Entity/RemotePlayer.ts b/front/src/Phaser/Entity/RemotePlayer.ts index 41e2e2df..4787d1f2 100644 --- a/front/src/Phaser/Entity/RemotePlayer.ts +++ b/front/src/Phaser/Entity/RemotePlayer.ts @@ -1,7 +1,7 @@ -import {GameScene} from "../Game/GameScene"; -import {PointInterface} from "../../Connexion/ConnexionModels"; +import type {GameScene} from "../Game/GameScene"; +import type {PointInterface} from "../../Connexion/ConnexionModels"; import {Character} from "../Entity/Character"; -import {PlayerAnimationDirections} from "../Player/Animation"; +import type {PlayerAnimationDirections} from "../Player/Animation"; /** * Class representing the sprite of a remote player (a player that plays on another computer) @@ -22,7 +22,7 @@ export class RemotePlayer extends Character { companionTexturePromise?: Promise ) { super(Scene, x, y, texturesPromise, name, direction, moving, 1); - + //set data this.userId = userId; @@ -35,9 +35,9 @@ export class RemotePlayer extends Character { this.playAnimation(position.direction as PlayerAnimationDirections, position.moving); this.setX(position.x); this.setY(position.y); - + this.setDepth(position.y); //this is to make sure the perspective (player models closer the bottom of the screen will appear in front of models nearer the top of the screen). - + if (this.companion) { this.companion.setTarget(position.x, position.y, position.direction as PlayerAnimationDirections); } diff --git a/front/src/Phaser/Entity/SpeechBubble.ts b/front/src/Phaser/Entity/SpeechBubble.ts index 231de875..17b7ed0e 100644 --- a/front/src/Phaser/Entity/SpeechBubble.ts +++ b/front/src/Phaser/Entity/SpeechBubble.ts @@ -1,12 +1,12 @@ import Scene = Phaser.Scene; -import {Character} from "./Character"; +import type {Character} from "./Character"; //todo: improve this WIP export class SpeechBubble { private bubble: Phaser.GameObjects.Graphics; private content: Phaser.GameObjects.Text; - + constructor(scene: Scene, player: Character, text: string = "") { const bubbleHeight = 50; diff --git a/front/src/Phaser/Game/AddPlayerInterface.ts b/front/src/Phaser/Game/AddPlayerInterface.ts index 96762a66..70c341ee 100644 --- a/front/src/Phaser/Game/AddPlayerInterface.ts +++ b/front/src/Phaser/Game/AddPlayerInterface.ts @@ -1,5 +1,5 @@ -import {PointInterface} from "../../Connexion/ConnexionModels"; -import {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; +import type {PointInterface} from "../../Connexion/ConnexionModels"; +import type {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; export interface AddPlayerInterface { userId: number; diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 6047d430..2a1d3d8a 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -1,6 +1,6 @@ import {GameScene} from "./GameScene"; import {connectionManager} from "../../Connexion/ConnectionManager"; -import {Room} from "../../Connexion/Room"; +import type {Room} from "../../Connexion/Room"; import {MenuScene, MenuSceneName} from "../Menu/MenuScene"; import {HelpCameraSettingsScene, HelpCameraSettingsSceneName} from "../Menu/HelpCameraSettingsScene"; import {LoginSceneName} from "../Login/LoginScene"; @@ -24,7 +24,7 @@ export class GameManager { private companion: string|null; private startRoom!:Room; currentGameSceneName: string|null = null; - + constructor() { this.playerName = localUserStore.getName(); this.characterLayers = localUserStore.getCharacterLayers(); @@ -65,7 +65,7 @@ export class GameManager { return this.characterLayers; } - + setCompanion(companion: string|null): void { this.companion = companion; } @@ -91,7 +91,7 @@ export class GameManager { scenePlugin.launch(MenuSceneName); scenePlugin.launch(HelpCameraSettingsSceneName);//700 } - + public gameSceneIsCreated(scene: GameScene) { this.currentGameSceneName = scene.scene.key; const menuScene: MenuScene = scene.scene.get(MenuSceneName) as MenuScene; @@ -125,7 +125,7 @@ export class GameManager { scene.scene.run(fallbackSceneName) } } - + public getCurrentGameScene(scene: Phaser.Scene): GameScene { if (this.currentGameSceneName === null) throw 'No current scene id set!'; return scene.scene.get(this.currentGameSceneName) as GameScene diff --git a/front/src/Phaser/Game/GameMap.ts b/front/src/Phaser/Game/GameMap.ts index 5fe91b62..7c93a702 100644 --- a/front/src/Phaser/Game/GameMap.ts +++ b/front/src/Phaser/Game/GameMap.ts @@ -1,4 +1,4 @@ -import {ITiledMap, ITiledMapLayer} from "../Map/ITiledMap"; +import type {ITiledMap, ITiledMapLayer} from "../Map/ITiledMap"; import {LayersIterator} from "../Map/LayersIterator"; export type PropertyChangeCallback = (newValue: string | number | boolean | undefined, oldValue: string | number | boolean | undefined, allProps: Map) => void; diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 5214dcd4..353b6b51 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1,5 +1,5 @@ import {gameManager, HasMovedEvent} from "./GameManager"; -import { +import type { GroupCreatedUpdatedMessageInterface, MessageUserJoined, MessageUserMovedInterface, @@ -16,7 +16,7 @@ import { MAX_PER_GROUP, POSITION_DELAY, } from "../../Enum/EnvironmentVariable"; -import { +import type { ITiledMap, ITiledMapLayer, ITiledMapLayerProperty, @@ -25,7 +25,7 @@ import { ITiledMapTileLayer, ITiledTileSet } from "../Map/ITiledMap"; -import {AddPlayerInterface} from "./AddPlayerInterface"; +import type {AddPlayerInterface} from "./AddPlayerInterface"; import {PlayerAnimationDirections} from "../Player/Animation"; import {PlayerMovement} from "./PlayerMovement"; import {PlayersPositionInterpolator} from "./PlayersPositionInterpolator"; @@ -49,13 +49,13 @@ import { import {GameMap} from "./GameMap"; import {coWebsiteManager} from "../../WebRtc/CoWebsiteManager"; import {mediaManager} from "../../WebRtc/MediaManager"; -import {ItemFactoryInterface} from "../Items/ItemFactoryInterface"; -import {ActionableItem} from "../Items/ActionableItem"; +import type {ItemFactoryInterface} from "../Items/ItemFactoryInterface"; +import type {ActionableItem} from "../Items/ActionableItem"; import {UserInputManager} from "../UserInput/UserInputManager"; -import {UserMovedMessage} from "../../Messages/generated/messages_pb"; +import type {UserMovedMessage} from "../../Messages/generated/messages_pb"; import {ProtobufClientUtils} from "../../Network/ProtobufClientUtils"; import {connectionManager} from "../../Connexion/ConnectionManager"; -import {RoomConnection} from "../../Connexion/RoomConnection"; +import type {RoomConnection} from "../../Connexion/RoomConnection"; import {GlobalMessageManager} from "../../Administration/GlobalMessageManager"; import {userMessageManager} from "../../Administration/UserMessageManager"; import {ConsoleGlobalMessageManager} from "../../Administration/ConsoleGlobalMessageManager"; @@ -80,7 +80,7 @@ import CanvasTexture = Phaser.Textures.CanvasTexture; import GameObject = Phaser.GameObjects.GameObject; import FILE_LOAD_ERROR = Phaser.Loader.Events.FILE_LOAD_ERROR; import DOMElement = Phaser.GameObjects.DOMElement; -import {Subscription} from "rxjs"; +import type {Subscription} from "rxjs"; import {worldFullMessageStream} from "../../Connexion/WorldFullMessageStream"; import { lazyLoadCompanionResource } from "../Companion/CompanionTexturesLoadingManager"; import RenderTexture = Phaser.GameObjects.RenderTexture; diff --git a/front/src/Phaser/Game/PlayerMovement.ts b/front/src/Phaser/Game/PlayerMovement.ts index eb1a5d1b..89c4c1a4 100644 --- a/front/src/Phaser/Game/PlayerMovement.ts +++ b/front/src/Phaser/Game/PlayerMovement.ts @@ -1,6 +1,6 @@ -import {HasMovedEvent} from "./GameManager"; +import type {HasMovedEvent} from "./GameManager"; import {MAX_EXTRAPOLATION_TIME} from "../../Enum/EnvironmentVariable"; -import {PositionInterface} from "../../Connexion/ConnexionModels"; +import type {PositionInterface} from "../../Connexion/ConnexionModels"; export class PlayerMovement { public constructor(private startPosition: PositionInterface, private startTick: number, private endPosition: HasMovedEvent, private endTick: number) { diff --git a/front/src/Phaser/Game/PlayersPositionInterpolator.ts b/front/src/Phaser/Game/PlayersPositionInterpolator.ts index 3ac87397..100aa1a0 100644 --- a/front/src/Phaser/Game/PlayersPositionInterpolator.ts +++ b/front/src/Phaser/Game/PlayersPositionInterpolator.ts @@ -2,8 +2,8 @@ * This class is in charge of computing the position of all players. * Player movement is delayed by 200ms so position depends on ticks. */ -import {PlayerMovement} from "./PlayerMovement"; -import {HasMovedEvent} from "./GameManager"; +import type {PlayerMovement} from "./PlayerMovement"; +import type {HasMovedEvent} from "./GameManager"; export class PlayersPositionInterpolator { playerMovements: Map = new Map(); diff --git a/front/src/Phaser/Items/ActionableItem.ts b/front/src/Phaser/Items/ActionableItem.ts index fe4de385..f012b525 100644 --- a/front/src/Phaser/Items/ActionableItem.ts +++ b/front/src/Phaser/Items/ActionableItem.ts @@ -4,7 +4,7 @@ */ import Sprite = Phaser.GameObjects.Sprite; import {OutlinePipeline} from "../Shaders/OutlinePipeline"; -import {GameScene} from "../Game/GameScene"; +import type {GameScene} from "../Game/GameScene"; type EventCallback = (state: unknown, parameters: unknown) => void; diff --git a/front/src/Phaser/Items/Computer/computer.ts b/front/src/Phaser/Items/Computer/computer.ts index fdc7a358..8240d904 100644 --- a/front/src/Phaser/Items/Computer/computer.ts +++ b/front/src/Phaser/Items/Computer/computer.ts @@ -1,9 +1,9 @@ import * as Phaser from 'phaser'; import {Scene} from "phaser"; import Sprite = Phaser.GameObjects.Sprite; -import {ITiledMapObject} from "../../Map/ITiledMap"; -import {ItemFactoryInterface} from "../ItemFactoryInterface"; -import {GameScene} from "../../Game/GameScene"; +import type {ITiledMapObject} from "../../Map/ITiledMap"; +import type {ItemFactoryInterface} from "../ItemFactoryInterface"; +import type {GameScene} from "../../Game/GameScene"; import {ActionableItem} from "../ActionableItem"; import * as tg from "generic-type-guard"; diff --git a/front/src/Phaser/Items/ItemFactoryInterface.ts b/front/src/Phaser/Items/ItemFactoryInterface.ts index e3e52517..deff8fbb 100644 --- a/front/src/Phaser/Items/ItemFactoryInterface.ts +++ b/front/src/Phaser/Items/ItemFactoryInterface.ts @@ -1,7 +1,7 @@ +import type {GameScene} from "../Game/GameScene"; +import type {ITiledMapObject} from "../Map/ITiledMap"; +import type {ActionableItem} from "./ActionableItem"; import LoaderPlugin = Phaser.Loader.LoaderPlugin; -import {GameScene} from "../Game/GameScene"; -import {ITiledMapObject} from "../Map/ITiledMap"; -import {ActionableItem} from "./ActionableItem"; export interface ItemFactoryInterface { preload: (loader: LoaderPlugin) => void; diff --git a/front/src/Phaser/Login/AbstractCharacterScene.ts b/front/src/Phaser/Login/AbstractCharacterScene.ts index dfc98539..0d3a7c3b 100644 --- a/front/src/Phaser/Login/AbstractCharacterScene.ts +++ b/front/src/Phaser/Login/AbstractCharacterScene.ts @@ -1,8 +1,8 @@ import {ResizableScene} from "./ResizableScene"; import {localUserStore} from "../../Connexion/LocalUserStore"; -import {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; +import type {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; import {loadCustomTexture} from "../Entity/PlayerTexturesLoadingManager"; -import {CharacterTexture} from "../../Connexion/LocalUser"; +import type {CharacterTexture} from "../../Connexion/LocalUser"; export abstract class AbstractCharacterScene extends ResizableScene { @@ -38,4 +38,4 @@ export abstract class AbstractCharacterScene extends ResizableScene { const localUser = localUserStore.getLocalUser(); return localUser?.textures; } -} \ No newline at end of file +} diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index c20bc61e..8b9a9a7a 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -6,7 +6,7 @@ import Container = Phaser.GameObjects.Container; import {gameManager} from "../Game/GameManager"; import {localUserStore} from "../../Connexion/LocalUserStore"; import {addLoader} from "../Components/Loader"; -import {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; +import type {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; import {AbstractCharacterScene} from "./AbstractCharacterScene"; import {areCharacterLayersValid} from "../../Connexion/LocalUser"; import { MenuScene } from "../Menu/MenuScene"; diff --git a/front/src/Phaser/Login/SelectCharacterMobileScene.ts b/front/src/Phaser/Login/SelectCharacterMobileScene.ts index e29ab798..b9c4b5a8 100644 --- a/front/src/Phaser/Login/SelectCharacterMobileScene.ts +++ b/front/src/Phaser/Login/SelectCharacterMobileScene.ts @@ -1,18 +1,4 @@ -import {gameManager} from "../Game/GameManager"; -import {TextField} from "../Components/TextField"; -import Image = Phaser.GameObjects.Image; -import Rectangle = Phaser.GameObjects.Rectangle; -import {EnableCameraSceneName} from "./EnableCameraScene"; -import {CustomizeSceneName} from "./CustomizeScene"; -import {localUserStore} from "../../Connexion/LocalUserStore"; -import {loadAllDefaultModels} from "../Entity/PlayerTexturesLoadingManager"; -import {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; -import {AbstractCharacterScene} from "./AbstractCharacterScene"; -import {areCharacterLayersValid} from "../../Connexion/LocalUser"; -import {touchScreenManager} from "../../Touch/TouchScreenManager"; -import {PinchManager} from "../UserInput/PinchManager"; -import {MenuScene} from "../Menu/MenuScene"; -import { SelectCharacterScene, SelectCharacterSceneName } from "./SelectCharacterScene"; +import { SelectCharacterScene } from "./SelectCharacterScene"; export class SelectCharacterMobileScene extends SelectCharacterScene { @@ -20,7 +6,7 @@ export class SelectCharacterMobileScene extends SelectCharacterScene { super.create(); this.selectedRectangle.destroy(); } - + protected defineSetupPlayer(numero: number){ const deltaX = 30; const deltaY = 2; diff --git a/front/src/Phaser/Login/SelectCharacterScene.ts b/front/src/Phaser/Login/SelectCharacterScene.ts index 0366dde5..ecbb9c64 100644 --- a/front/src/Phaser/Login/SelectCharacterScene.ts +++ b/front/src/Phaser/Login/SelectCharacterScene.ts @@ -1,18 +1,16 @@ import {gameManager} from "../Game/GameManager"; -import Image = Phaser.GameObjects.Image; import Rectangle = Phaser.GameObjects.Rectangle; import {EnableCameraSceneName} from "./EnableCameraScene"; import {CustomizeSceneName} from "./CustomizeScene"; import {localUserStore} from "../../Connexion/LocalUserStore"; import {loadAllDefaultModels} from "../Entity/PlayerTexturesLoadingManager"; import {addLoader} from "../Components/Loader"; -import {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; +import type {BodyResourceDescriptionInterface} from "../Entity/PlayerTextures"; import {AbstractCharacterScene} from "./AbstractCharacterScene"; import {areCharacterLayersValid} from "../../Connexion/LocalUser"; import {touchScreenManager} from "../../Touch/TouchScreenManager"; import {PinchManager} from "../UserInput/PinchManager"; import {MenuScene} from "../Menu/MenuScene"; -import { SelectCharacterMobileScene } from "./SelectCharacterMobileScene"; //todo: put this constants in a dedicated file export const SelectCharacterSceneName = "SelectCharacterScene"; diff --git a/front/src/Phaser/Login/SelectCompanionScene.ts b/front/src/Phaser/Login/SelectCompanionScene.ts index 4ef378d6..203fd557 100644 --- a/front/src/Phaser/Login/SelectCompanionScene.ts +++ b/front/src/Phaser/Login/SelectCompanionScene.ts @@ -5,7 +5,7 @@ import { gameManager} from "../Game/GameManager"; import { ResizableScene } from "./ResizableScene"; import { EnableCameraSceneName } from "./EnableCameraScene"; import { localUserStore } from "../../Connexion/LocalUserStore"; -import { CompanionResourceDescriptionInterface } from "../Companion/CompanionTextures"; +import type { CompanionResourceDescriptionInterface } from "../Companion/CompanionTextures"; import { getAllCompanionResources } from "../Companion/CompanionTexturesLoadingManager"; import {touchScreenManager} from "../../Touch/TouchScreenManager"; import {PinchManager} from "../UserInput/PinchManager"; diff --git a/front/src/Phaser/Map/LayersIterator.ts b/front/src/Phaser/Map/LayersIterator.ts index 501a5f7b..c39f05d8 100644 --- a/front/src/Phaser/Map/LayersIterator.ts +++ b/front/src/Phaser/Map/LayersIterator.ts @@ -1,4 +1,4 @@ -import {ITiledMap, ITiledMapLayer} from "./ITiledMap"; +import type {ITiledMap, ITiledMapLayer} from "./ITiledMap"; /** * Iterates over the layers of a map, flattening the grouped layers diff --git a/front/src/Phaser/Player/Player.ts b/front/src/Phaser/Player/Player.ts index 3db7f051..6044ba84 100644 --- a/front/src/Phaser/Player/Player.ts +++ b/front/src/Phaser/Player/Player.ts @@ -1,5 +1,5 @@ import {PlayerAnimationDirections} from "./Animation"; -import {GameScene} from "../Game/GameScene"; +import type {GameScene} from "../Game/GameScene"; import {UserInputEvent, UserInputManager} from "../UserInput/UserInputManager"; import {Character} from "../Entity/Character"; diff --git a/front/src/Phaser/UserInput/UserInputManager.ts b/front/src/Phaser/UserInput/UserInputManager.ts index fe78dac8..073244d2 100644 --- a/front/src/Phaser/UserInput/UserInputManager.ts +++ b/front/src/Phaser/UserInput/UserInputManager.ts @@ -1,5 +1,5 @@ -import { Direction } from "../../types"; -import {GameScene} from "../Game/GameScene"; +import type { Direction } from "../../types"; +import type {GameScene} from "../Game/GameScene"; import {touchScreenManager} from "../../Touch/TouchScreenManager"; import {MobileJoystick} from "../Components/MobileJoystick"; diff --git a/front/src/Url/UrlManager.ts b/front/src/Url/UrlManager.ts index 9e10b4ee..b502467f 100644 --- a/front/src/Url/UrlManager.ts +++ b/front/src/Url/UrlManager.ts @@ -1,4 +1,4 @@ -import {Room} from "../Connexion/Room"; +import type {Room} from "../Connexion/Room"; export enum GameConnexionTypes { anonymous=1, diff --git a/front/src/WebRtc/DiscussionManager.ts b/front/src/WebRtc/DiscussionManager.ts index 3e565c21..9bbfac5a 100644 --- a/front/src/WebRtc/DiscussionManager.ts +++ b/front/src/WebRtc/DiscussionManager.ts @@ -1,6 +1,6 @@ import {HtmlUtils} from "./HtmlUtils"; -import {mediaManager, ReportCallback, ShowReportCallBack} from "./MediaManager"; -import {UserInputManager} from "../Phaser/UserInput/UserInputManager"; +import type {ShowReportCallBack} from "./MediaManager"; +import type {UserInputManager} from "../Phaser/UserInput/UserInputManager"; import {connectionManager} from "../Connexion/ConnectionManager"; import {GameConnexionTypes} from "../Url/UrlManager"; import {iframeListener} from "../Api/IframeListener"; diff --git a/front/src/WebRtc/LayoutManager.ts b/front/src/WebRtc/LayoutManager.ts index eed12333..3d92baac 100644 --- a/front/src/WebRtc/LayoutManager.ts +++ b/front/src/WebRtc/LayoutManager.ts @@ -1,4 +1,4 @@ -import { UserInputManager } from "../Phaser/UserInput/UserInputManager"; +import type { UserInputManager } from "../Phaser/UserInput/UserInputManager"; import {HtmlUtils} from "./HtmlUtils"; export enum LayoutMode { @@ -324,7 +324,7 @@ class LayoutManager { public addActionButton(id: string, text: string, callBack: Function, userInputManager: UserInputManager){ //delete previous element this.removeActionButton(id, userInputManager); - + //create div and text html component const p = document.createElement('p'); p.classList.add('action-body'); diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 85060a86..7396e890 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -1,9 +1,9 @@ import {DivImportance, layoutManager} from "./LayoutManager"; import {HtmlUtils} from "./HtmlUtils"; import {discussionManager, SendMessageCallback} from "./DiscussionManager"; -import {UserInputManager} from "../Phaser/UserInput/UserInputManager"; +import type {UserInputManager} from "../Phaser/UserInput/UserInputManager"; import {localUserStore} from "../Connexion/LocalUserStore"; -import {UserSimplePeerInterface} from "./SimplePeer"; +import type {UserSimplePeerInterface} from "./SimplePeer"; import {SoundMeter} from "../Phaser/Components/SoundMeter"; declare const navigator:any; // eslint-disable-line @typescript-eslint/no-explicit-any diff --git a/front/src/WebRtc/ScreenSharingPeer.ts b/front/src/WebRtc/ScreenSharingPeer.ts index cb48e7be..f1786ef3 100644 --- a/front/src/WebRtc/ScreenSharingPeer.ts +++ b/front/src/WebRtc/ScreenSharingPeer.ts @@ -1,9 +1,9 @@ -import * as SimplePeerNamespace from "simple-peer"; +import type * as SimplePeerNamespace from "simple-peer"; import {mediaManager} from "./MediaManager"; import {STUN_SERVER, TURN_SERVER, TURN_USER, TURN_PASSWORD} from "../Enum/EnvironmentVariable"; -import {RoomConnection} from "../Connexion/RoomConnection"; +import type {RoomConnection} from "../Connexion/RoomConnection"; import {MESSAGE_TYPE_CONSTRAINT} from "./VideoPeer"; -import {UserSimplePeerInterface} from "./SimplePeer"; +import type {UserSimplePeerInterface} from "./SimplePeer"; const Peer: SimplePeerNamespace.SimplePeer = require('simple-peer'); diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index 3a56d20b..67e72c6d 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -1,4 +1,4 @@ -import { +import type { WebRtcDisconnectMessageInterface, WebRtcSignalReceivedMessageInterface, } from "../Connexion/ConnexionModels"; @@ -10,7 +10,7 @@ import { } from "./MediaManager"; import {ScreenSharingPeer} from "./ScreenSharingPeer"; import {MESSAGE_TYPE_BLOCKED, MESSAGE_TYPE_CONSTRAINT, MESSAGE_TYPE_MESSAGE, VideoPeer} from "./VideoPeer"; -import {RoomConnection} from "../Connexion/RoomConnection"; +import type {RoomConnection} from "../Connexion/RoomConnection"; import {connectionManager} from "../Connexion/ConnectionManager"; import {GameConnexionTypes} from "../Url/UrlManager"; import {blackListManager} from "./BlackListManager"; diff --git a/front/src/WebRtc/VideoPeer.ts b/front/src/WebRtc/VideoPeer.ts index 2952ea62..503ca0de 100644 --- a/front/src/WebRtc/VideoPeer.ts +++ b/front/src/WebRtc/VideoPeer.ts @@ -1,10 +1,10 @@ -import * as SimplePeerNamespace from "simple-peer"; +import type * as SimplePeerNamespace from "simple-peer"; import {mediaManager} from "./MediaManager"; import {STUN_SERVER, TURN_PASSWORD, TURN_SERVER, TURN_USER} from "../Enum/EnvironmentVariable"; -import {RoomConnection} from "../Connexion/RoomConnection"; +import type {RoomConnection} from "../Connexion/RoomConnection"; import {blackListManager} from "./BlackListManager"; -import {Subscription} from "rxjs"; -import {UserSimplePeerInterface} from "./SimplePeer"; +import type {Subscription} from "rxjs"; +import type {UserSimplePeerInterface} from "./SimplePeer"; const Peer: SimplePeerNamespace.SimplePeer = require('simple-peer'); diff --git a/front/src/iframe_api.ts b/front/src/iframe_api.ts index 0bef1cc7..df37e53d 100644 --- a/front/src/iframe_api.ts +++ b/front/src/iframe_api.ts @@ -1,14 +1,14 @@ -import { ChatEvent } from "./Api/Events/ChatEvent"; +import type { ChatEvent } from "./Api/Events/ChatEvent"; import { isIframeResponseEventWrapper } from "./Api/Events/IframeEvent"; import { isUserInputChatEvent, UserInputChatEvent } from "./Api/Events/UserInputChatEvent"; import { Subject } from "rxjs"; import { EnterLeaveEvent, isEnterLeaveEvent } from "./Api/Events/EnterLeaveEvent"; -import { OpenPopupEvent } from "./Api/Events/OpenPopupEvent"; +import type { OpenPopupEvent } from "./Api/Events/OpenPopupEvent"; import { isButtonClickedEvent } from "./Api/Events/ButtonClickedEvent"; -import { ClosePopupEvent } from "./Api/Events/ClosePopupEvent"; -import { OpenTabEvent } from "./Api/Events/OpenTabEvent"; -import { GoToPageEvent } from "./Api/Events/GoToPageEvent"; -import { OpenCoWebSiteEvent } from "./Api/Events/OpenCoWebSiteEvent"; +import type { ClosePopupEvent } from "./Api/Events/ClosePopupEvent"; +import type { OpenTabEvent } from "./Api/Events/OpenTabEvent"; +import type { GoToPageEvent } from "./Api/Events/GoToPageEvent"; +import type { OpenCoWebSiteEvent } from "./Api/Events/OpenCoWebSiteEvent"; interface WorkAdventureApi { sendChatMessage(message: string, author: string): void; diff --git a/front/src/types.ts b/front/src/types.ts index 6b99434d..6b9e97e6 100644 --- a/front/src/types.ts +++ b/front/src/types.ts @@ -1,4 +1,4 @@ -import Phaser from "phaser"; +import type Phaser from "phaser"; export type CursorKey = { isDown: boolean diff --git a/front/tsconfig.json b/front/tsconfig.json index fea8fd54..0af412db 100644 --- a/front/tsconfig.json +++ b/front/tsconfig.json @@ -11,6 +11,8 @@ "allowJs": true, "esModuleInterop": true, + "importsNotUsedAsValues": "error", + "strict": true, /* Enable all strict type-checking options. */ "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ "strictNullChecks": true, /* Enable strict null checks. */ From 8c1e01566a6f31a223ba95f6e0b5811e478faaf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 10:35:14 +0200 Subject: [PATCH 034/203] Upgrading all dependencies in front Upgrading to Webpack 5, Typescript 4, ... --- front/package.json | 29 +- front/src/Api/IframeListener.ts | 3 +- front/src/Phaser/Game/GameScene.ts | 2 +- front/src/WebRtc/CoWebsiteManager.ts | 6 +- front/webpack.config.js | 8 +- front/yarn.lock | 1939 ++++++++------------------ 6 files changed, 616 insertions(+), 1371 deletions(-) diff --git a/front/package.json b/front/package.json index 85275d60..707412f2 100644 --- a/front/package.json +++ b/front/package.json @@ -9,20 +9,20 @@ "@types/quill": "^1.3.7", "@typescript-eslint/eslint-plugin": "^2.26.0", "@typescript-eslint/parser": "^2.26.0", - "css-loader": "^5.1.3", + "css-loader": "^5.2.4", "eslint": "^6.8.0", - "html-webpack-plugin": "^4.3.0", + "html-webpack-plugin": "^5.3.1", "jasmine": "^3.5.0", - "mini-css-extract-plugin": "^1.3.9", - "sass": "^1.32.8", - "sass-loader": "10.1.1", - "ts-loader": "^6.2.2", - "ts-node": "^8.10.2", - "typescript": "^3.8.3", - "webpack": "^4.42.1", - "webpack-cli": "^3.3.11", - "webpack-dev-server": "^3.10.3", - "webpack-merge": "^4.2.2" + "mini-css-extract-plugin": "^1.6.0", + "sass": "^1.32.12", + "sass-loader": "^11.1.0", + "ts-loader": "^9.1.2", + "ts-node": "^9.1.1", + "typescript": "^4.2.4", + "webpack": "^5.37.0", + "webpack-cli": "^4.7.0", + "webpack-dev-server": "^3.11.2", + "webpack-merge": "^5.7.3" }, "dependencies": { "@types/simple-peer": "^9.6.0", @@ -36,11 +36,10 @@ "quill": "1.3.6", "rxjs": "^6.6.3", "simple-peer": "^9.6.2", - "socket.io-client": "^2.3.0", - "webpack-require-http": "^0.4.3" + "socket.io-client": "^2.3.0" }, "scripts": { - "start": "webpack-dev-server --open", + "start": "webpack serve --open", "build": "webpack --config webpack.prod.js", "test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", "lint": "node_modules/.bin/eslint src/ . --ext .ts", diff --git a/front/src/Api/IframeListener.ts b/front/src/Api/IframeListener.ts index 29e87b8a..147361aa 100644 --- a/front/src/Api/IframeListener.ts +++ b/front/src/Api/IframeListener.ts @@ -1,6 +1,5 @@ import { Subject } from "rxjs"; import { ChatEvent, isChatEvent } from "./Events/ChatEvent"; -import * as crypto from "crypto"; import { HtmlUtils } from "../WebRtc/HtmlUtils"; import { EnterLeaveEvent } from "./Events/EnterLeaveEvent"; import { isOpenPopupEvent, OpenPopupEvent } from "./Events/OpenPopupEvent"; @@ -176,7 +175,7 @@ class IframeListener { } private getIFrameId(scriptUrl: string): string { - return 'script' + crypto.createHash('md5').update(scriptUrl).digest("hex"); + return 'script' + btoa(scriptUrl); } unregisterScript(scriptUrl: string): void { diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 5214dcd4..e7e25678 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -151,7 +151,7 @@ export class GameScene extends DirtyScene implements CenterListener { private GlobalMessageManager!: GlobalMessageManager; public ConsoleGlobalMessageManager!: ConsoleGlobalMessageManager; private connectionAnswerPromise: Promise; - private connectionAnswerPromiseResolve!: (value?: RoomJoinedMessageInterface | PromiseLike) => void; + private connectionAnswerPromiseResolve!: (value: RoomJoinedMessageInterface | PromiseLike) => void; // A promise that will resolve when the "create" method is called (signaling loading is ended) private createPromise: Promise; private createPromiseResolve!: (value?: void | PromiseLike) => void; diff --git a/front/src/WebRtc/CoWebsiteManager.ts b/front/src/WebRtc/CoWebsiteManager.ts index 95885a53..f00f6ecb 100644 --- a/front/src/WebRtc/CoWebsiteManager.ts +++ b/front/src/WebRtc/CoWebsiteManager.ts @@ -32,7 +32,7 @@ class CoWebsiteManager { private resizing: boolean = false; private cowebsiteMainDom: HTMLDivElement; private cowebsiteAsideDom: HTMLDivElement; - + get width(): number { return this.cowebsiteDiv.clientWidth; } @@ -137,14 +137,14 @@ class CoWebsiteManager { if (allowPolicy) { iframe.allow = allowPolicy; } - const onloadPromise = new Promise((resolve) => { + const onloadPromise = new Promise((resolve) => { iframe.onload = () => resolve(); }); if (allowApi) { iframeListener.registerIframe(iframe); } this.cowebsiteMainDom.appendChild(iframe); - const onTimeoutPromise = new Promise((resolve) => { + const onTimeoutPromise = new Promise((resolve) => { setTimeout(() => resolve(), 2000); }); this.currentOperationPromise = this.currentOperationPromise.then(() =>Promise.race([onloadPromise, onTimeoutPromise])).then(() => { diff --git a/front/webpack.config.js b/front/webpack.config.js index f1a3df44..8c4f33a7 100644 --- a/front/webpack.config.js +++ b/front/webpack.config.js @@ -46,9 +46,9 @@ module.exports = { path: path.resolve(__dirname, 'dist'), publicPath: '/' }, - externals:[ + /*externals:[ require('webpack-require-http') - ], + ],*/ plugins: [ new MiniCssExtractPlugin({filename: 'style.[contenthash].css'}), new HtmlWebpackPlugin( @@ -81,7 +81,9 @@ module.exports = { 'TURN_PASSWORD': null, 'JITSI_URL': null, 'JITSI_PRIVATE_MODE': null, - 'START_ROOM_URL': null + 'START_ROOM_URL': null, + 'MAX_USERNAME_LENGTH': 8, + 'MAX_PER_GROUP': 4 }) ], diff --git a/front/yarn.lock b/front/yarn.lock index 528d4320..167d9780 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -23,16 +23,37 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== +"@discoveryjs/json-ext@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" + integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== + +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/eslint@*": + version "7.2.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" + integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.47": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -56,7 +77,7 @@ resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.6.9.tgz#8785870f87839b7d91b45d7b226380f28dee5d9f" integrity sha512-B53NIwMj/AO0O+xfSWLYmKB0Mo6TYxfv2Mk8/c1T2w/e38t55iaPR6p7pHXTTtqfTmevPK3i8T1YweYFTZlxDw== -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -90,44 +111,6 @@ resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.36.tgz#e4f1ca065f84c20939e9850e70222202bd76ff3f" integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/tapable@^1", "@types/tapable@^1.0.5": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" - integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== - -"@types/uglify-js@*": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" - integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== - dependencies: - source-map "^0.6.1" - -"@types/webpack-sources@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" - integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4.41.8": - version "4.41.27" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.27.tgz#f47da488c8037e7f1b2dbf2714fbbacb61ec0ffc" - integrity sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - "@typescript-eslint/eslint-plugin@^2.26.0": version "2.34.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" @@ -171,150 +154,143 @@ semver "^7.3.2" tsutils "^3.17.1" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@webassemblyjs/ast@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" + integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/helper-numbers" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@webassemblyjs/floating-point-hex-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" + integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@webassemblyjs/helper-api-error@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" + integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@webassemblyjs/helper-buffer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" + integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/helper-numbers@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" + integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/helper-wasm-bytecode@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" + integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@webassemblyjs/helper-wasm-section@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" + integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" + integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" + integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/utf8@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" + integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== +"@webassemblyjs/wasm-edit@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" + integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/helper-wasm-section" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-opt" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wast-printer" "1.11.0" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/wasm-gen@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" + integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/wasm-opt@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" + integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/wasm-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" + integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== +"@webassemblyjs/wast-printer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" + integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" + "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== +"@webpack-cli/configtest@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" + integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== + +"@webpack-cli/info@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" + integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" + integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -339,16 +315,16 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.2.1: + version "8.2.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" + integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -359,7 +335,7 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -436,11 +412,6 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -500,24 +471,6 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -572,7 +525,7 @@ base64-arraybuffer@0.1.4: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -622,21 +575,6 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -701,71 +639,16 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== +browserslist@^4.14.5: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" buffer-from@^1.0.0: version "1.1.1" @@ -777,20 +660,6 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -799,11 +668,6 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -814,27 +678,6 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -881,7 +724,12 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: +caniuse-lite@^1.0.30001219: + version "1.0.30001228" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" + integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== + +chalk@^2.0.0, chalk@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -903,12 +751,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -charenc@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1: +"chokidar@>=3.0.0 <4.0.0": version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -942,24 +785,11 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -998,6 +828,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -1035,7 +874,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.2: +colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== @@ -1050,10 +889,10 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== component-bind@1.0.0: version "1.0.0" @@ -1095,31 +934,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -1142,18 +961,6 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -1164,36 +971,10 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" @@ -1206,32 +987,19 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -crypt@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -css-loader@^5.1.3: - version "5.2.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.2.tgz#65f2c1482255f15847ecad6cbc515cae8a5b234e" - integrity sha512-IS722y7Lh2Yq+acMR74tdf3faMOLRP2RfLwS0VzSS7T98IHtacMWJLku3A0OBTFHB07zAa4nWBhA8gfxwQVWGQ== +css-loader@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" + integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== dependencies: camelcase "^6.2.0" icss-utils "^5.1.0" @@ -1265,11 +1033,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1333,7 +1096,7 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -1380,24 +1143,11 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-node@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" @@ -1408,15 +1158,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -1459,11 +1200,6 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -1497,33 +1233,15 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" +electron-to-chromium@^1.3.723: + version "1.3.727" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" + integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== emoji-regex@^7.0.1: version "7.0.3" @@ -1545,7 +1263,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -1580,14 +1298,13 @@ engine.io-parser@~2.2.0: blob "0.0.5" has-binary2 "~1.0.2" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.0: + version "5.8.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" + integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" entities@^1.1.1: version "1.1.2" @@ -1599,48 +1316,32 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + err-code@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== -errno@^0.1.3, errno@~0.1.7: +errno@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" -es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" +es-module-lexer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" + integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@~1.0.3: version "1.0.3" @@ -1652,15 +1353,7 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: +eslint-scope@^5.0.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -1751,7 +1444,7 @@ esquery@^1.0.1: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -1793,7 +1486,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -1805,14 +1498,6 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -1826,6 +1511,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1839,13 +1539,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -1945,6 +1638,11 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" @@ -1952,11 +1650,6 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -2006,15 +1699,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -2022,15 +1706,13 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" + locate-path "^5.0.0" + path-exists "^4.0.0" flat-cache@^2.0.1: version "2.0.1" @@ -2046,15 +1728,12 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" +follow-redirects@^1.0.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== -follow-redirects@^1.0.0, follow-redirects@^1.10.0: +follow-redirects@^1.10.0: version "1.13.3" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== @@ -2081,24 +1760,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2142,7 +1803,7 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -2158,6 +1819,11 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2178,7 +1844,24 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.0.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2190,42 +1873,6 @@ glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^12.1.0: version "12.4.0" resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" @@ -2249,7 +1896,7 @@ google-protobuf@^3.13.0: resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.15.8.tgz#5f3948905e4951c867d6bc143f385a80e2a39efe" integrity sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -2259,11 +1906,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -2286,7 +1928,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -2329,44 +1971,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -2395,20 +2004,16 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" -html-webpack-plugin@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" - integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== +html-webpack-plugin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.1.tgz#8797327548e3de438e3494e0c6d06f181a7f20d1" + integrity sha512-rZsVvPXUYFyME0cuGkyOHfx9hmkFa4pWfxY/mdY38PsBEaVNsRoA+Id+8z6DBDgyv3zaw6XQszdF8HLwfQvcdQ== dependencies: "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" lodash "^4.17.20" pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" + tapable "^2.0.0" htmlparser2@^3.10.1: version "3.10.1" @@ -2483,10 +2088,10 @@ http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -2500,16 +2105,11 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.4, ieee754@^1.2.1: +ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2531,6 +2131,14 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2546,11 +2154,6 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2559,26 +2162,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - inquirer@^7.0.0: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" @@ -2606,10 +2199,10 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== ip-regex@^2.1.0: version "2.1.0" @@ -2652,11 +2245,6 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2671,22 +2259,17 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-buffer@^1.1.5, is-buffer@~1.1.6: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" @@ -2766,16 +2349,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2814,7 +2387,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4, is-regex@^1.1.2: +is-regex@^1.0.4: version "1.1.2" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== @@ -2827,19 +2400,12 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -2849,7 +2415,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -2889,6 +2455,15 @@ jasmine@^3.5.0: glob "^7.1.6" jasmine-core "~3.7.0" +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2922,13 +2497,6 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -2983,19 +2551,10 @@ linked-list-typescript@^1.0.11: resolved "https://registry.yarnpkg.com/linked-list-typescript/-/linked-list-typescript-1.0.15.tgz#faeed93cf9203f102e2158c29edcddda320abe82" integrity sha512-RIyUu9lnJIyIaMe63O7/aFv/T2v3KsMFuXMBbUQCHX+cgtGro86ETDj5ed0a8gQL2+DFjzYYsgVG4I36/cUwgw== -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^1.0.2, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@^2.0.0: version "2.0.0" @@ -3014,6 +2573,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3036,13 +2602,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3050,14 +2609,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -3075,24 +2626,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -md5@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" - integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== - dependencies: - charenc "0.0.2" - crypt "0.0.2" - is-buffer "~1.1.6" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -3106,25 +2639,22 @@ memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -3151,20 +2681,12 @@ micromatch@^4.0.0: braces "^3.0.1" picomatch "^2.2.3" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": version "1.47.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== -mime-types@~2.1.17, mime-types@~2.1.24: +mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.30" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== @@ -3186,25 +2708,20 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@^1.3.9: - version "1.5.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.5.0.tgz#69bee3b273d2d4ee8649a2eb409514b7df744a27" - integrity sha512-SIbuLMv6jsk1FnLIU5OUG/+VMGUprEjM1+o2trOAx8i5KOKMrhyezb1dJ4Ugsykb8Jgq8/w5NEopy6escV9G7g== +mini-css-extract-plugin@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.0.tgz#b4db2525af2624899ed64a23b0016e0036411893" + integrity sha512-nPFKI7NSy6uONUo9yn2hIfb9vyYvkFu95qki0e21DQ9uaqNKDP15DGpK0KnV6wDroWxPHtExrdEwx/yDQ8nVRw== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3212,27 +2729,11 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -3241,25 +2742,13 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: +mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3335,7 +2824,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -3358,34 +2847,10 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" +node-releases@^1.1.71: + version "1.1.71" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== normalize-path@^2.1.1: version "2.1.1" @@ -3406,6 +2871,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -3413,7 +2885,7 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -3427,11 +2899,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" - integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== - object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -3452,25 +2919,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -3502,7 +2950,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -3535,11 +2983,6 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3550,13 +2993,20 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -3564,6 +3014,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -3581,25 +3038,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - papaparse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.0.tgz#ab1702feb96e79ab4309652f36db9536563ad05a" integrity sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg== -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - param-case@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -3620,22 +3063,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parseqs@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" @@ -3664,11 +3091,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -3679,6 +3101,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3694,6 +3121,16 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -3707,17 +3144,6 @@ path@^0.12.7: process "^0.11.1" util "^0.10.3" -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - phaser3-rex-plugins@^1.1.42: version "1.1.45" resolved "https://registry.yarnpkg.com/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.45.tgz#9c617b4d0f17e7b61b2292d158fa93ba4c7c5e55" @@ -3770,6 +3196,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" @@ -3854,7 +3287,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.1, process@^0.11.10: +process@^0.11.1: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -3864,11 +3297,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -3882,26 +3310,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3910,25 +3318,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -3939,11 +3333,6 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -3987,21 +3376,13 @@ quill@1.3.6: parchment "^1.1.4" quill-delta "^3.6.2" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -4017,7 +3398,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -4055,6 +3436,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + dependencies: + resolve "^1.9.0" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -4134,13 +3522,12 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" + resolve-from "^5.0.0" resolve-from@^3.0.0: version "3.0.0" @@ -4152,11 +3539,24 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve@^1.9.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -4182,33 +3582,18 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.3: +rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rxjs@^6.6.0, rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -4221,7 +3606,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4233,26 +3618,23 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" - integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== +sass-loader@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.1.0.tgz#302a83e41834a7ac0cc9d7591e52688ef4ed92af" + integrity sha512-TS8KtLtMAqK68lBs0PRzoGf7ndz9m7pKo4BXvUzjGDDgWEY0qcoMMRVpaHfYM0i3/E6UsererqIpjs7dVA/p7A== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" -sass@^1.32.8: - version "1.32.10" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.10.tgz#d40da4e20031b450359ee1c7e69bc8cc89569241" - integrity sha512-Nx0pcWoonAkn7CRp0aE/hket1UP97GiR1IFw3kcjV3pnenhWgZEWUf0ZcfPOV2fK52fnOcK3JdC/YYZ9E47DTQ== +sass@^1.32.12: + version "1.32.12" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" + integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== dependencies: chokidar ">=3.0.0 <4.0.0" @@ -4280,23 +3662,23 @@ select-hose@^2.0.0: integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selfsigned@^1.10.8: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + version "1.10.11" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== dependencies: node-forge "^0.10.0" -semver@^5.5.0, semver@^5.6.0: +semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.5: +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -4322,10 +3704,10 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" @@ -4367,11 +3749,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -4382,13 +3759,12 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + kind-of "^6.0.2" shebang-command@^1.2.0: version "1.2.0" @@ -4397,12 +3773,24 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -signal-exit@^3.0.0, signal-exit@^3.0.2: +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -4506,7 +3894,7 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -4522,7 +3910,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.17, source-map-support@~0.5.12: +source-map-support@^0.5.17, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -4545,7 +3933,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -4585,13 +3973,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -4605,38 +3986,6 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -4655,23 +4004,7 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -4711,6 +4044,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-json-comments@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -4730,7 +4068,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -4747,27 +4085,24 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" + integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== +terser-webpack-plugin@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" + integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" + jest-worker "^26.6.2" + p-limit "^3.1.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + terser "^5.5.1" -terser@^4.1.2, terser@^4.6.3: +terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -4776,19 +4111,20 @@ terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.5.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4799,13 +4135,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4818,11 +4147,6 @@ to-array@0.1.4: resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -4860,23 +4184,23 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -ts-loader@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" - integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== +ts-loader@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.1.2.tgz#ba9b9abb05a514e8ff825791a3f6fcf793272728" + integrity sha512-ryMgATvLLl+z8zQvdlm6Pep0slmwxFWIEnq/5VdiLVjqQXnFJgO+qNLGIIP+d2N2jsFZ9MibZCVDb2bSp7OmEA== dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" + chalk "^4.1.0" + enhanced-resolve "^5.0.0" micromatch "^4.0.0" - semver "^6.0.0" + semver "^7.3.4" -ts-node@^8.10.2: - version "8.10.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" - integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== dependencies: arg "^4.1.0" + create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" source-map-support "^0.5.17" @@ -4899,11 +4223,6 @@ tsutils@^3.17.1: dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -4929,25 +4248,10 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.8.3: - version "3.9.9" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" - integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== - -unbox-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" +typescript@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== union-value@^1.0.0: version "1.0.1" @@ -4964,20 +4268,6 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -5034,21 +4324,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" @@ -5056,13 +4331,6 @@ util@^0.10.3: dependencies: inherits "2.0.3" -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -5078,7 +4346,7 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -5088,28 +4356,13 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watchpack@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" + integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -5123,22 +4376,24 @@ webfontloader@^1.6.28: resolved "https://registry.yarnpkg.com/webfontloader/-/webfontloader-1.6.28.tgz#db786129253cb6e8eae54c2fb05f870af6675bae" integrity sha1-23hhKSU8tujq5UwvsF+HCvZnW64= -webpack-cli@^3.3.11: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== +webpack-cli@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" + integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.0.3" + "@webpack-cli/info" "^1.2.4" + "@webpack-cli/serve" "^1.4.0" + colorette "^1.2.1" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: version "3.7.3" @@ -5151,7 +4406,7 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.10.3: +webpack-dev-server@^3.11.2: version "3.11.2" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== @@ -5198,22 +4453,15 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== +webpack-merge@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== dependencies: - lodash "^4.17.15" + clone-deep "^4.0.1" + wildcard "^2.0.0" -webpack-require-http@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/webpack-require-http/-/webpack-require-http-0.4.3.tgz#5690d8cc57246a53a81f1ccffd20d0394d70261c" - integrity sha1-VpDYzFckalOoHxzP/SDQOU1wJhw= - dependencies: - md5 "^2.0.0" - url "^0.11.0" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -5221,34 +4469,42 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.42.1: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== +webpack-sources@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" + integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack@^5.37.0: + version "5.37.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.37.0.tgz#2ab00f613faf494504eb2beef278dab7493cc39d" + integrity sha512-yvdhgcI6QkQkDe1hINBAJ1UNevqNGTVaCkD2SSJcB8rcrNNl922RI8i2DXUAuNfANoxwsiXXEA4ZPZI9q2oGLA== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.47" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + acorn "^8.2.1" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.8.0" + es-module-lexer "^0.4.0" + eslint-scope "^5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.1" + watchpack "^2.0.0" + webpack-sources "^2.1.1" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -5264,41 +4520,35 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -5337,21 +4587,11 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -5390,3 +4630,8 @@ yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From f57c01dee8d34557155f48222b02dfa34affb4d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 11:05:49 +0200 Subject: [PATCH 035/203] Refactoring Webpack files to remove prod file. The prod file is now inferred from the NODE_ENV variable. --- .github/workflows/continuous_integration.yml | 2 +- front/package.json | 5 +- front/src/Enum/EnvironmentVariable.ts | 3 +- front/webpack.config.js | 7 +- front/webpack.prod.js | 7 - front/yarn.lock | 149 ++++++++----------- 6 files changed, 70 insertions(+), 103 deletions(-) delete mode 100644 front/webpack.prod.js diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 38d8c8f0..06c1c58e 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -49,7 +49,7 @@ jobs: - name: "Build" run: yarn run build env: - API_URL: "localhost:8080" + PUSHER_URL: "//localhost:8080" working-directory: "front" - name: "Lint" diff --git a/front/package.json b/front/package.json index 707412f2..bb98aaf3 100644 --- a/front/package.json +++ b/front/package.json @@ -21,8 +21,7 @@ "typescript": "^4.2.4", "webpack": "^5.37.0", "webpack-cli": "^4.7.0", - "webpack-dev-server": "^3.11.2", - "webpack-merge": "^5.7.3" + "webpack-dev-server": "^3.11.2" }, "dependencies": { "@types/simple-peer": "^9.6.0", @@ -40,7 +39,7 @@ }, "scripts": { "start": "webpack serve --open", - "build": "webpack --config webpack.prod.js", + "build": "NODE_ENV=production webpack", "test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", "lint": "node_modules/.bin/eslint src/ . --ext .ts", "fix": "node_modules/.bin/eslint --fix src/ . --ext .ts" diff --git a/front/src/Enum/EnvironmentVariable.ts b/front/src/Enum/EnvironmentVariable.ts index 7dd3a175..b5de23d5 100644 --- a/front/src/Enum/EnvironmentVariable.ts +++ b/front/src/Enum/EnvironmentVariable.ts @@ -1,7 +1,6 @@ const DEBUG_MODE: boolean = process.env.DEBUG_MODE == "true"; const START_ROOM_URL : string = process.env.START_ROOM_URL || '/_/global/maps.workadventure.localhost/Floor0/floor0.json'; -// For compatibility reasons with older versions, API_URL is the old host name of PUSHER_URL -const PUSHER_URL = process.env.PUSHER_URL || (process.env.API_URL ? '//'+process.env.API_URL : "//pusher.workadventure.localhost"); +const PUSHER_URL = process.env.PUSHER_URL || '//pusher.workadventure.localhost'; const UPLOADER_URL = process.env.UPLOADER_URL || '//uploader.workadventure.localhost'; const ADMIN_URL = process.env.ADMIN_URL || "//workadventure.localhost"; const STUN_SERVER: string = process.env.STUN_SERVER || "stun:stun.l.google.com:19302"; diff --git a/front/webpack.config.js b/front/webpack.config.js index 8c4f33a7..b04929b2 100644 --- a/front/webpack.config.js +++ b/front/webpack.config.js @@ -3,12 +3,17 @@ const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const mode = process.env.NODE_ENV ?? 'development'; +const isProduction = mode === 'production'; +const isDevelopment = !isProduction; + module.exports = { entry: { 'main': './src/index.ts', 'iframe_api': './src/iframe_api.ts' }, - devtool: 'inline-source-map', + mode: mode, + devtool: isDevelopment ? 'inline-source-map' : 'source-map', devServer: { contentBase: './dist', host: '0.0.0.0', diff --git a/front/webpack.prod.js b/front/webpack.prod.js deleted file mode 100644 index b5695cc6..00000000 --- a/front/webpack.prod.js +++ /dev/null @@ -1,7 +0,0 @@ -const merge = require('webpack-merge'); -const common = require('./webpack.config.js'); - -module.exports = merge(common, { - mode: 'production', - devtool: 'source-map' -}); diff --git a/front/yarn.lock b/front/yarn.lock index 167d9780..a1f7c883 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -9,17 +9,17 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== "@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.14.0" chalk "^2.0.0" js-tokens "^4.0.0" @@ -63,9 +63,9 @@ "@types/node" "*" "@types/google-protobuf@^3.7.3": - version "3.15.0" - resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.0.tgz#1df2507453a5da732b31846f0c8a64116aef21be" - integrity sha512-IshlR1QWD9LYQRlYMfF8dG6PqxrZHddlWB8O5+HCGwH1nv2JQ887fMwRRlXOmUEFehvg+k1THx2h7RbqPUPkGA== + version "3.15.2" + resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.2.tgz#70753e948cabeb416d71299dc35c3f562a10fb0f" + integrity sha512-ubeqvw7sl6CdgeiIilsXB2jIFoD/D0F+/LIEp7xEBEXRNtDJcf05FRINybsJtL7GlkWOUVn6gJs2W9OF+xI6lg== "@types/html-minifier-terser@^5.0.0": version "5.1.1" @@ -73,9 +73,9 @@ integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== "@types/jasmine@^3.5.10": - version "3.6.9" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.6.9.tgz#8785870f87839b7d91b45d7b226380f28dee5d9f" - integrity sha512-B53NIwMj/AO0O+xfSWLYmKB0Mo6TYxfv2Mk8/c1T2w/e38t55iaPR6p7pHXTTtqfTmevPK3i8T1YweYFTZlxDw== + version "3.7.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.7.2.tgz#f83ca1936f8cf5d3375506b481f52f8903c2df21" + integrity sha512-w5Zc9pSwxlr1ne+froeIceYbrh0a2Us+0kTaX6JA0N7nPh+yv1zN10LyDMKwnT0x2AbIDGlrD1cv6plVjfCcZw== "@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": version "7.0.7" @@ -88,9 +88,9 @@ integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== "@types/node@*": - version "14.14.41" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" - integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g== + version "15.0.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" + integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== "@types/quill@^1.3.7": version "1.3.10" @@ -739,9 +739,9 @@ chalk@^2.0.0, chalk@^2.1.0: supports-color "^5.3.0" chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -1271,9 +1271,9 @@ end-of-stream@^1.1.0: once "^1.4.0" engine.io-client@~3.5.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.5.1.tgz#b500458a39c0cd197a921e0e759721a746d0bdb9" - integrity sha512-oVu9kBkGbcggulyVF0kz6BV3ganqUeqXvD79WOFKa+11oK692w1NyFkuEj4xrkFRpZhn92QOqTk4RQq5LiBXbQ== + version "3.5.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.5.2.tgz#0ef473621294004e9ceebe73cef0af9e36f2f5fa" + integrity sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA== dependencies: component-emitter "~1.3.0" component-inherit "0.0.3" @@ -1284,7 +1284,7 @@ engine.io-client@~3.5.0: parseqs "0.0.6" parseuri "0.0.6" ws "~7.4.2" - xmlhttprequest-ssl "~1.5.4" + xmlhttprequest-ssl "~1.6.2" yeast "0.1.2" engine.io-parser@~2.2.0: @@ -1728,16 +1728,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -follow-redirects@^1.0.0: +follow-redirects@^1.0.0, follow-redirects@^1.10.0: version "1.14.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== -follow-redirects@^1.10.0: - version "1.13.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" - integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1849,7 +1844,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.3: +glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -1861,18 +1856,6 @@ glob@^7.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - globals@^12.1.0: version "12.4.0" resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" @@ -1892,9 +1875,9 @@ globby@^6.1.0: pinkie-promise "^2.0.0" google-protobuf@^3.13.0: - version "3.15.8" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.15.8.tgz#5f3948905e4951c867d6bc143f385a80e2a39efe" - integrity sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw== + version "3.16.0" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.16.0.tgz#87c61829a8aec7d9244dcbed9464e1d0fcbed8ae" + integrity sha512-gBY66yYL1wbQMU2r1POkXSXkm035Ni0wFv3vx0K9IEUsJLP9G5rAcFVn0xUXfZneRu6MmDjaw93pt/DE56VOyw== graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.6" @@ -1928,7 +1911,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1: +has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -2144,11 +2127,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -2286,9 +2264,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== is-descriptor@^0.1.0: version "0.1.6" @@ -2388,12 +2366,12 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: isobject "^3.0.1" is-regex@^1.0.4: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: call-bind "^1.0.2" - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-stream@^1.1.0: version "1.1.0" @@ -2590,10 +2568,10 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -lokijs@^1.5.11: - version "1.5.11" - resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.11.tgz#2b2ea82ec66050e4b112c6cfc588dac22d362b13" - integrity sha512-YYyuBPxMn/oS0tFznQDbIX5XL1ltMcwFqCboDr8voYE4VCDzR5vAsrvQDhlnua4lBeqMqHmLvUXRTmRUzUKH1Q== +lokijs@^1.5.12: + version "1.5.12" + resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.12.tgz#cb55b37009bdf09ee7952a6adddd555b893653a0" + integrity sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q== lower-case@^2.0.2: version "2.0.2" @@ -2792,10 +2770,10 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.1.22: - version "3.1.22" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" - integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== nanomatch@^1.2.9: version "1.2.13" @@ -3145,12 +3123,12 @@ path@^0.12.7: util "^0.10.3" phaser3-rex-plugins@^1.1.42: - version "1.1.45" - resolved "https://registry.yarnpkg.com/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.45.tgz#9c617b4d0f17e7b61b2292d158fa93ba4c7c5e55" - integrity sha512-1wRHhmyw9HCPG6T3CYUR1Qoo73WWizMYxpW5xbjm3NQFgXTqeuqUgyqExLrglrxLqiuhXxSVTnbhWH61XDP5Xg== + version "1.1.46" + resolved "https://registry.yarnpkg.com/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.46.tgz#c53142461646a3c986e3af7d23b5f272e6a1f8d6" + integrity sha512-v2pQQFHX+ym6FwHNHyOxisoUa6iuAN3NxHjb8JthwLRPEnb0++EzDJq1Fdu2dduqx5Bh0K0B9ZvIk1ESSA8b0A== dependencies: eventemitter3 "^3.1.2" - lokijs "^1.5.11" + lokijs "^1.5.12" papaparse "^5.3.0" webfontloader "^1.6.28" @@ -3246,13 +3224,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== dependencies: cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" util-deprecate "^1.0.2" postcss-value-parser@^4.1.0: @@ -3261,12 +3237,12 @@ postcss-value-parser@^4.1.0: integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== postcss@^8.2.10: - version "8.2.10" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.10.tgz#ca7a042aa8aff494b334d0ff3e9e77079f6f702b" - integrity sha512-b/h7CPV7QEdrqIxtAf2j31U5ef05uBDuvoXv6L51Q4rcS1jdlXAVKJv+atCFdUXYl9dyTHGyoMzIepwowRJjFw== + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== dependencies: colorette "^1.2.2" - nanoid "^3.1.22" + nanoid "^3.1.23" source-map "^0.6.1" prelude-ls@~1.1.2: @@ -4263,11 +4239,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4582,10 +4553,10 @@ ws@~7.4.2: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= +xmlhttprequest-ssl@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz#dd6899bfbcf684b554e393c30b13b9f3b001a7ee" + integrity sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg== y18n@^4.0.0: version "4.0.3" From 664a5b6b91c368372e9f5492c8d44c3b99ec9d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 11:44:41 +0200 Subject: [PATCH 036/203] Upgrading ESLint (and ignoring a bunch of interesting rules) --- front/.eslintrc.json | 11 +- front/package.json | 6 +- front/yarn.lock | 631 ++++++++++++++++++++++++------------------- 3 files changed, 366 insertions(+), 282 deletions(-) diff --git a/front/.eslintrc.json b/front/.eslintrc.json index 3aab37d9..037fddae 100644 --- a/front/.eslintrc.json +++ b/front/.eslintrc.json @@ -25,6 +25,15 @@ ], "rules": { "no-unused-vars": "off", - "@typescript-eslint/no-explicit-any": "error" + "@typescript-eslint/no-explicit-any": "error", + + // TODO: remove those ignored rules and write a stronger code! + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/restrict-plus-operands": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/restrict-template-expressions": "off" } } diff --git a/front/package.json b/front/package.json index bb98aaf3..c372fde0 100644 --- a/front/package.json +++ b/front/package.json @@ -7,10 +7,10 @@ "@types/google-protobuf": "^3.7.3", "@types/jasmine": "^3.5.10", "@types/quill": "^1.3.7", - "@typescript-eslint/eslint-plugin": "^2.26.0", - "@typescript-eslint/parser": "^2.26.0", + "@typescript-eslint/eslint-plugin": "^4.23.0", + "@typescript-eslint/parser": "^4.23.0", "css-loader": "^5.2.4", - "eslint": "^6.8.0", + "eslint": "^7.26.0", "html-webpack-plugin": "^5.3.1", "jasmine": "^3.5.0", "mini-css-extract-plugin": "^1.6.0", diff --git a/front/yarn.lock b/front/yarn.lock index a1f7c883..d9a4a173 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -2,19 +2,19 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: - "@babel/highlight" "^7.12.13" + "@babel/highlight" "^7.10.4" "@babel/helper-validator-identifier@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== -"@babel/highlight@^7.12.13": +"@babel/highlight@^7.10.4": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== @@ -28,6 +28,42 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + "@types/eslint-scope@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" @@ -36,11 +72,6 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/eslint@*": version "7.2.10" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" @@ -111,49 +142,76 @@ resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.36.tgz#e4f1ca065f84c20939e9850e70222202bd76ff3f" integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== -"@typescript-eslint/eslint-plugin@^2.26.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" - integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== +"@typescript-eslint/eslint-plugin@^4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" + integrity sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw== dependencies: - "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/experimental-utils" "4.23.0" + "@typescript-eslint/scope-manager" "4.23.0" + debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== +"@typescript-eslint/experimental-utils@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz#f2059434cd6e5672bfeab2fb03b7c0a20622266f" + integrity sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.26.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" - integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.34.0" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== +"@typescript-eslint/parser@^4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.23.0.tgz#239315d38e42e852bef43a4b0b01bef78f78911c" + integrity sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug== dependencies: + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" + +"@typescript-eslint/scope-manager@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz#8792ef7eacac122e2ec8fa2d30a59b8d9a1f1ce4" + integrity sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w== + dependencies: + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" + +"@typescript-eslint/types@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b" + integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw== + +"@typescript-eslint/typescript-estree@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz#0753b292097523852428a6f5a1aa8ccc1aae6cd9" + integrity sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw== + dependencies: + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" + debug "^4.1.1" + globby "^11.0.1" is-glob "^4.0.1" - lodash "^4.17.15" semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz#7215cc977bd3b4ef22467b9023594e32f9e4e455" + integrity sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg== + dependencies: + "@typescript-eslint/types" "4.23.0" + eslint-visitor-keys "^2.0.0" + "@webassemblyjs/ast@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" @@ -310,12 +368,12 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.2.0: +acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^7.1.1: +acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -340,7 +398,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -350,17 +408,25 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.3.0.tgz#25ee7348e32cdc4a1dbb38256bf6bdc451dd577c" + integrity sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-html@0.0.7: version "0.0.7" @@ -389,7 +455,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -456,6 +522,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -476,10 +547,10 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-each@^1.0.1: version "1.0.3" @@ -729,7 +800,7 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== -chalk@^2.0.0, chalk@^2.1.0: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -738,7 +809,7 @@ chalk@^2.0.0, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== @@ -746,11 +817,6 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - "chokidar@>=3.0.0 <4.0.0": version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" @@ -807,18 +873,6 @@ clean-css@^4.2.3: dependencies: source-map "~0.6.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -976,7 +1030,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -987,7 +1041,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.3: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1083,7 +1137,7 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -1158,6 +1212,13 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -1306,6 +1367,13 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -1361,83 +1429,81 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: +eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.26.0: + version "7.26.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" + integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== dependencies: - "@babel/code-frame" "^7.0.0" + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.1" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^12.1.0" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.21" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -1595,15 +1661,6 @@ extend@^3.0.1, extend@^3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -1628,12 +1685,24 @@ fast-diff@1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -1643,6 +1712,13 @@ fastest-levenshtein@^1.0.12: resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" @@ -1650,19 +1726,12 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" file-uri-to-path@1.0.0: version "1.0.0" @@ -1714,19 +1783,18 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + flatted "^3.1.0" + rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== follow-redirects@^1.0.0, follow-redirects@^1.10.0: version "1.14.1" @@ -1832,7 +1900,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -1863,6 +1931,25 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.1: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -2076,7 +2163,7 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2098,7 +2185,12 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -import-fresh@^3.0.0: +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -2150,25 +2242,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -2465,6 +2538,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -2516,13 +2594,13 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" linked-list-typescript@^1.0.11: version "1.0.15" @@ -2558,7 +2636,17 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2627,6 +2715,11 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -2651,7 +2744,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0: +micromatch@^4.0.0, micromatch@^4.0.2: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== @@ -2760,11 +2853,6 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" @@ -2928,7 +3016,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -2942,17 +3030,17 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" original@^1.0.0: version "1.0.2" @@ -2961,11 +3049,6 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -3114,6 +3197,11 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + path@^0.12.7: version "0.12.7" resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" @@ -3245,10 +3333,10 @@ postcss@^8.2.10: nanoid "^3.1.23" source-map "^0.6.1" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== pretty-error@^2.1.1: version "2.1.2" @@ -3319,7 +3407,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -queue-microtask@^1.2.3: +queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -3435,12 +3523,7 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: +regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -3481,6 +3564,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -3533,14 +3621,6 @@ resolve@^1.9.0: is-core-module "^2.2.0" path-parse "^1.0.6" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -3551,12 +3631,10 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^2.6.3: version "2.7.1" @@ -3565,12 +3643,21 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" -rxjs@^6.6.0, rxjs@^6.6.3: +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -3649,12 +3736,12 @@ semver@^5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.1.2, semver@^6.3.0: +semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -3766,7 +3853,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -3784,14 +3871,19 @@ simple-peer@^9.6.2: randombytes "^2.1.0" readable-stream "^3.6.0" -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -3971,7 +4063,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== @@ -4025,7 +4117,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.0.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -4051,15 +4143,17 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^6.0.4: + version "6.7.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" + integrity sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.0" @@ -4101,23 +4195,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -4199,17 +4281,17 @@ tsutils@^3.17.1: dependencies: tslib "^1.8.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.8.1: version "0.8.1" @@ -4515,7 +4597,7 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -4534,13 +4616,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" From 06058cfc241d98d60490857a40fad0dc33ed0a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 11:45:01 +0200 Subject: [PATCH 037/203] Upgrading Typescript target from ES2015 to ES2017. --- front/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/tsconfig.json b/front/tsconfig.json index fea8fd54..ce16ffb5 100644 --- a/front/tsconfig.json +++ b/front/tsconfig.json @@ -4,7 +4,7 @@ "sourceMap": true, "moduleResolution": "node", "module": "CommonJS", - "target": "ES2015", + "target": "ES2017", "declaration": false, "downlevelIteration": true, "jsx": "react", From 4fcbc146ca7f0008db7e38976d28dc92ff7ac845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 13:38:32 +0200 Subject: [PATCH 038/203] Switching the Webpack configuration file to Typescript This switches the Webpack config file from JS to Typescript. --- front/package.json | 1 + .../{webpack.config.js => webpack.config.ts} | 7 +- front/yarn.lock | 146 +++++++++++++++++- 3 files changed, 150 insertions(+), 4 deletions(-) rename front/{webpack.config.js => webpack.config.ts} (92%) diff --git a/front/package.json b/front/package.json index c372fde0..8e9b82e6 100644 --- a/front/package.json +++ b/front/package.json @@ -7,6 +7,7 @@ "@types/google-protobuf": "^3.7.3", "@types/jasmine": "^3.5.10", "@types/quill": "^1.3.7", + "@types/webpack-dev-server": "^3.11.4", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", "css-loader": "^5.2.4", diff --git a/front/webpack.config.js b/front/webpack.config.ts similarity index 92% rename from front/webpack.config.js rename to front/webpack.config.ts index b04929b2..336cad82 100644 --- a/front/webpack.config.js +++ b/front/webpack.config.ts @@ -1,3 +1,6 @@ +import {Configuration} from "webpack"; +import WebpackDevServer from "webpack-dev-server"; + const path = require('path'); const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); @@ -46,7 +49,7 @@ module.exports = { filename: (pathData) => { // Add a content hash only for the main bundle. // We want the iframe_api.js file to keep its name as it will be referenced from outside iframes. - return pathData.chunk.name === 'main' ? 'js/[name].[contenthash].js': '[name].js'; + return pathData.chunk?.name === 'main' ? 'js/[name].[contenthash].js': '[name].js'; }, path: path.resolve(__dirname, 'dist'), publicPath: '/' @@ -92,4 +95,4 @@ module.exports = { }) ], -}; +} as Configuration & WebpackDevServer.Configuration; diff --git a/front/yarn.lock b/front/yarn.lock index d9a4a173..08c1347e 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -64,6 +64,34 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect-history-api-fallback@*": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz#8c0f0e6e5d8252b699f5a662f51bdf82fd9d8bb8" + integrity sha512-Kf8v0wljR5GSCOCF/VQWdV3ZhKOVA73drXtY3geMTQgHy9dgqQ0dLrf31M0hcuWkhFzK5sP0kkS3mJzcKVtZbw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.34" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" + integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== + dependencies: + "@types/node" "*" + "@types/eslint-scope@^3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" @@ -85,6 +113,25 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.19" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" + integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.11" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" + integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -103,6 +150,13 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== +"@types/http-proxy@^1.17.5": + version "1.17.5" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" + integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q== + dependencies: + "@types/node" "*" + "@types/jasmine@^3.5.10": version "3.7.2" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.7.2.tgz#f83ca1936f8cf5d3375506b481f52f8903c2df21" @@ -113,6 +167,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + "@types/minimatch@*": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" @@ -123,6 +182,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== +"@types/qs@*": + version "6.9.6" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + "@types/quill@^1.3.7": version "1.3.10" resolved "https://registry.yarnpkg.com/@types/quill/-/quill-1.3.10.tgz#dc1f7b6587f7ee94bdf5291bc92289f6f0497613" @@ -130,6 +194,19 @@ dependencies: parchment "^1.1.2" +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/serve-static@*": + version "1.13.9" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" + integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + "@types/simple-peer@^9.6.0": version "9.6.2" resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-9.6.2.tgz#a72afb6bd280fc4083d37e00247b30975304c071" @@ -142,6 +219,55 @@ resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.36.tgz#e4f1ca065f84c20939e9850e70222202bd76ff3f" integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/tapable@^1": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" + integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== + +"@types/uglify-js@*": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" + integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== + dependencies: + source-map "^0.6.1" + +"@types/webpack-dev-server@^3.11.4": + version "3.11.4" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07" + integrity sha512-DCKORHjqNNVuMIDWFrlljftvc9CL0+09p3l7lBpb8dRqgN5SmvkWCY4MPKxoI6wJgdRqohmoNbptkxqSKAzLRg== + dependencies: + "@types/connect-history-api-fallback" "*" + "@types/express" "*" + "@types/serve-static" "*" + "@types/webpack" "^4" + http-proxy-middleware "^1.0.0" + +"@types/webpack-sources@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4": + version "4.41.28" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.28.tgz#0069a2159b7ad4d83d0b5801942c17d54133897b" + integrity sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + "@typescript-eslint/eslint-plugin@^4.23.0": version "4.23.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" @@ -2149,7 +2275,18 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.17.0: +http-proxy-middleware@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" + integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== + dependencies: + "@types/http-proxy" "^1.17.5" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.17.0, http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -2431,6 +2568,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4001,7 +4143,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== From 1466d7481c79c135a6cb2f109166e91f510663ba Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 17 May 2021 12:20:07 +0200 Subject: [PATCH 039/203] FIX: fixed an error in webpack config --- front/webpack.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front/webpack.config.ts b/front/webpack.config.ts index 336cad82..fc32aaea 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -1,5 +1,5 @@ -import {Configuration} from "webpack"; -import WebpackDevServer from "webpack-dev-server"; +import type {Configuration} from "webpack"; +import type WebpackDevServer from "webpack-dev-server"; const path = require('path'); const webpack = require('webpack'); From a23e72454d929e6f0d1648ef7a7f8c22930f1ca1 Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 17 May 2021 13:50:31 +0200 Subject: [PATCH 040/203] FEATURE: added the env variable DISABLE_DIRTY_CHECKS --- .env.template | 2 ++ docker-compose.single-domain.yaml | 2 ++ docker-compose.yaml | 2 ++ front/src/Enum/EnvironmentVariable.ts | 6 ++++-- front/src/Phaser/Game/DirtyScene.ts | 3 ++- front/src/Phaser/Game/Game.ts | 4 +++- front/src/Phaser/UserInput/UserInputManager.ts | 2 +- front/src/WebRtc/MediaManager.ts | 3 ++- front/webpack.config.ts | 2 ++ 9 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.env.template b/.env.template index a9ae63d7..4ba9bcec 100644 --- a/.env.template +++ b/.env.template @@ -10,6 +10,8 @@ START_ROOM_URL=/_/global/maps.workadventure.localhost/Floor0/floor0.json # If you are using Coturn, this is the value of the "static-auth-secret" parameter in your coturn config file. # Keep empty if you are sharing hard coded / clear text credentials. TURN_STATIC_AUTH_SECRET= +DISABLE_NOTIFICATIONS=true +SKIP_RENDER_OPTIMIZATIONS=false # The email address used by Let's encrypt to send renewal warnings (compulsory) ACME_EMAIL= diff --git a/docker-compose.single-domain.yaml b/docker-compose.single-domain.yaml index 81305671..345ccf8d 100644 --- a/docker-compose.single-domain.yaml +++ b/docker-compose.single-domain.yaml @@ -33,6 +33,8 @@ services: STARTUP_COMMAND_1: ./templater.sh STARTUP_COMMAND_2: yarn install TURN_SERVER: "turn:localhost:3478,turns:localhost:5349" + DISABLE_NOTIFICATIONS: "$DISABLE_NOTIFICATIONS" + SKIP_RENDER_OPTIMIZATIONS: "$SKIP_RENDER_OPTIMIZATIONS" # Use TURN_USER/TURN_PASSWORD if your Coturn server is secured via hard coded credentials. # Advice: you should instead use Coturn REST API along the TURN_STATIC_AUTH_SECRET in the Back container TURN_USER: "" diff --git a/docker-compose.yaml b/docker-compose.yaml index cea1bc03..1c1bcb8f 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -33,6 +33,8 @@ services: STARTUP_COMMAND_2: yarn install STUN_SERVER: "stun:stun.l.google.com:19302" TURN_SERVER: "turn:coturn.workadventure.localhost:3478,turns:coturn.workadventure.localhost:5349" + DISABLE_NOTIFICATIONS: "$DISABLE_NOTIFICATIONS" + SKIP_RENDER_OPTIMIZATIONS: "$SKIP_RENDER_OPTIMIZATIONS" # Use TURN_USER/TURN_PASSWORD if your Coturn server is secured via hard coded credentials. # Advice: you should instead use Coturn REST API along the TURN_STATIC_AUTH_SECRET in the Back container TURN_USER: "" diff --git a/front/src/Enum/EnvironmentVariable.ts b/front/src/Enum/EnvironmentVariable.ts index b5de23d5..685b3c17 100644 --- a/front/src/Enum/EnvironmentVariable.ts +++ b/front/src/Enum/EnvironmentVariable.ts @@ -2,9 +2,10 @@ const DEBUG_MODE: boolean = process.env.DEBUG_MODE == "true"; const START_ROOM_URL : string = process.env.START_ROOM_URL || '/_/global/maps.workadventure.localhost/Floor0/floor0.json'; const PUSHER_URL = process.env.PUSHER_URL || '//pusher.workadventure.localhost'; const UPLOADER_URL = process.env.UPLOADER_URL || '//uploader.workadventure.localhost'; -const ADMIN_URL = process.env.ADMIN_URL || "//workadventure.localhost"; const STUN_SERVER: string = process.env.STUN_SERVER || "stun:stun.l.google.com:19302"; const TURN_SERVER: string = process.env.TURN_SERVER || ""; +const SKIP_RENDER_OPTIMIZATIONS: boolean = !!(process.env.SKIP_RENDER_OPTIMIZATIONS); +const DISABLE_NOTIFICATIONS: boolean = !!(process.env.DISABLE_NOTIFICATIONS); const TURN_USER: string = process.env.TURN_USER || ''; const TURN_PASSWORD: string = process.env.TURN_PASSWORD || ''; const JITSI_URL : string|undefined = (process.env.JITSI_URL === '') ? undefined : process.env.JITSI_URL; @@ -19,9 +20,10 @@ export const isMobile = ():boolean => ( ( window.innerWidth <= 800 ) || ( window export { DEBUG_MODE, START_ROOM_URL, + SKIP_RENDER_OPTIMIZATIONS, + DISABLE_NOTIFICATIONS, PUSHER_URL, UPLOADER_URL, - ADMIN_URL, POSITION_DELAY, MAX_EXTRAPOLATION_TIME, STUN_SERVER, diff --git a/front/src/Phaser/Game/DirtyScene.ts b/front/src/Phaser/Game/DirtyScene.ts index 27ebd3cb..e44ce07b 100644 --- a/front/src/Phaser/Game/DirtyScene.ts +++ b/front/src/Phaser/Game/DirtyScene.ts @@ -3,6 +3,7 @@ import GameObject = Phaser.GameObjects.GameObject; import Events = Phaser.Scenes.Events; import AnimationEvents = Phaser.Animations.Events; import StructEvents = Phaser.Structs.Events; +import {SKIP_RENDER_OPTIMIZATIONS} from "../../Enum/EnvironmentVariable"; /** * A scene that can track its dirty/pristine state. @@ -19,7 +20,7 @@ export abstract class DirtyScene extends ResizableScene { * Note: this does not work with animations from sprites inside containers. */ protected trackDirtyAnims(): void { - if (this.isAlreadyTracking) { + if (this.isAlreadyTracking || SKIP_RENDER_OPTIMIZATIONS) { return; } this.isAlreadyTracking = true; diff --git a/front/src/Phaser/Game/Game.ts b/front/src/Phaser/Game/Game.ts index 50bfb17a..c26d07d7 100644 --- a/front/src/Phaser/Game/Game.ts +++ b/front/src/Phaser/Game/Game.ts @@ -1,3 +1,5 @@ +import {SKIP_RENDER_OPTIMIZATIONS} from "../../Enum/EnvironmentVariable"; + const Events = Phaser.Core.Events; /** @@ -35,7 +37,7 @@ export class Game extends Phaser.Game { eventEmitter.emit(Events.POST_STEP, time, delta); // This "if" is the changed introduced by the new "Game" class to avoid rendering unnecessarily. - if (this.isDirty()) { + if (SKIP_RENDER_OPTIMIZATIONS || this.isDirty()) { const renderer = this.renderer; // Run the Pre-render (clearing the canvas, setting background colors, etc) diff --git a/front/src/Phaser/UserInput/UserInputManager.ts b/front/src/Phaser/UserInput/UserInputManager.ts index 073244d2..70bb9b1b 100644 --- a/front/src/Phaser/UserInput/UserInputManager.ts +++ b/front/src/Phaser/UserInput/UserInputManager.ts @@ -173,7 +173,7 @@ export class UserInputManager { } destroy(): void { - this.joystick.destroy(); + this.joystick?.destroy(); } private initMouseWheel() { diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 0f88e743..b7594670 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -5,6 +5,7 @@ import type {UserInputManager} from "../Phaser/UserInput/UserInputManager"; import {localUserStore} from "../Connexion/LocalUserStore"; import type {UserSimplePeerInterface} from "./SimplePeer"; import {SoundMeter} from "../Phaser/Components/SoundMeter"; +import {DISABLE_NOTIFICATIONS} from "../Enum/EnvironmentVariable"; declare const navigator:any; // eslint-disable-line @typescript-eslint/no-explicit-any @@ -856,7 +857,7 @@ export class MediaManager { public getNotification(){ //Get notification - if (window.Notification && Notification.permission !== "granted") { + if (!DISABLE_NOTIFICATIONS && window.Notification && Notification.permission !== "granted") { Notification.requestPermission().catch((err) => { console.error(`Notification permission error`, err); }); diff --git a/front/webpack.config.ts b/front/webpack.config.ts index fc32aaea..e3568544 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -79,6 +79,8 @@ module.exports = { }), new webpack.EnvironmentPlugin({ 'API_URL': null, + 'SKIP_RENDER_OPTIMIZATIONS': false, + 'DISABLE_NOTIFICATIONS': false, 'PUSHER_URL': undefined, 'UPLOADER_URL': null, 'ADMIN_URL': null, From a66d42e158e16be4575f43df758303e9ab693ac1 Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 17 May 2021 15:49:18 +0200 Subject: [PATCH 041/203] FEATURE: we now allow a global zoom level of 1.5 --- front/src/Enum/EnvironmentVariable.ts | 4 +-- front/src/Phaser/Services/HdpiManager.ts | 36 +++++++++++-------- .../tests/Phaser/Services/HdpiManagerTest.ts | 2 +- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/front/src/Enum/EnvironmentVariable.ts b/front/src/Enum/EnvironmentVariable.ts index 685b3c17..85b63335 100644 --- a/front/src/Enum/EnvironmentVariable.ts +++ b/front/src/Enum/EnvironmentVariable.ts @@ -4,8 +4,8 @@ const PUSHER_URL = process.env.PUSHER_URL || '//pusher.workadventure.localhost'; const UPLOADER_URL = process.env.UPLOADER_URL || '//uploader.workadventure.localhost'; const STUN_SERVER: string = process.env.STUN_SERVER || "stun:stun.l.google.com:19302"; const TURN_SERVER: string = process.env.TURN_SERVER || ""; -const SKIP_RENDER_OPTIMIZATIONS: boolean = !!(process.env.SKIP_RENDER_OPTIMIZATIONS); -const DISABLE_NOTIFICATIONS: boolean = !!(process.env.DISABLE_NOTIFICATIONS); +const SKIP_RENDER_OPTIMIZATIONS: boolean = process.env.SKIP_RENDER_OPTIMIZATIONS == "true"; +const DISABLE_NOTIFICATIONS: boolean = process.env.DISABLE_NOTIFICATIONS == "true"; const TURN_USER: string = process.env.TURN_USER || ''; const TURN_PASSWORD: string = process.env.TURN_PASSWORD || ''; const JITSI_URL : string|undefined = (process.env.JITSI_URL === '') ? undefined : process.env.JITSI_URL; diff --git a/front/src/Phaser/Services/HdpiManager.ts b/front/src/Phaser/Services/HdpiManager.ts index 867c7a53..33f7e3a8 100644 --- a/front/src/Phaser/Services/HdpiManager.ts +++ b/front/src/Phaser/Services/HdpiManager.ts @@ -1,4 +1,3 @@ -import ScaleManager = Phaser.Scale.ScaleManager; interface Size { width: number; @@ -13,8 +12,7 @@ export class HdpiManager { * @param minRecommendedGamePixelsNumber The minimum number of pixels we want to display "by default" to the user * @param absoluteMinPixelNumber The very minimum of game pixels to display. Below, we forbid zooming more */ - public constructor(private minRecommendedGamePixelsNumber: number, private absoluteMinPixelNumber: number) { - } + public constructor(private minRecommendedGamePixelsNumber: number, private absoluteMinPixelNumber: number) {} /** * Returns the optimal size in "game pixels" based on the screen size in "real pixels". @@ -36,16 +34,12 @@ export class HdpiManager { }; } - let i = 1; - - while (realPixelNumber > this.minRecommendedGamePixelsNumber * i * i) { - i++; - } + const optimalZoomLevel = this.getOptimalZoomLevel(realPixelNumber); // Has the canvas more pixels than the screen? This is forbidden - if ((i - 1) * this._zoomModifier < 1) { + if (optimalZoomLevel * this._zoomModifier < 1) { // Let's reset the zoom modifier (WARNING this is a SIDE EFFECT in a getter) - this._zoomModifier = 1 / (i - 1); + this._zoomModifier = 1 / optimalZoomLevel; return { game: { @@ -59,8 +53,8 @@ export class HdpiManager { } } - const gameWidth = Math.ceil(realPixelScreenSize.width / (i - 1) / this._zoomModifier); - const gameHeight = Math.ceil(realPixelScreenSize.height / (i - 1) / this._zoomModifier); + const gameWidth = Math.ceil(realPixelScreenSize.width / optimalZoomLevel / this._zoomModifier); + const gameHeight = Math.ceil(realPixelScreenSize.height / optimalZoomLevel / this._zoomModifier); // Let's ensure we display a minimum of pixels, even if crazily zoomed in. if (gameWidth * gameHeight < this.absoluteMinPixelNumber) { @@ -68,7 +62,7 @@ export class HdpiManager { const minGameWidth = Math.sqrt(this.absoluteMinPixelNumber * realPixelScreenSize.width / realPixelScreenSize.height); // Let's reset the zoom modifier (WARNING this is a SIDE EFFECT in a getter) - this._zoomModifier = realPixelScreenSize.width / minGameWidth / (i - 1); + this._zoomModifier = realPixelScreenSize.width / minGameWidth / optimalZoomLevel; return { game: { @@ -89,12 +83,24 @@ export class HdpiManager { height: gameHeight, }, real: { - width: Math.ceil(realPixelScreenSize.width / (i - 1)) * (i - 1), - height: Math.ceil(realPixelScreenSize.height / (i - 1)) * (i - 1), + width: Math.ceil(realPixelScreenSize.width / optimalZoomLevel) * optimalZoomLevel, + height: Math.ceil(realPixelScreenSize.height / optimalZoomLevel) * optimalZoomLevel, } } } + /** + * We only accept integer but we make an exception for 1.5 + */ + private getOptimalZoomLevel(realPixelNumber: number): number { + const result = Math.sqrt(realPixelNumber / this.minRecommendedGamePixelsNumber); + if (1.5 <= result && result < 2) { + return 1.5 + } else { + return Math.floor(result); + } + } + public get zoomModifier(): number { return this._zoomModifier; } diff --git a/front/tests/Phaser/Services/HdpiManagerTest.ts b/front/tests/Phaser/Services/HdpiManagerTest.ts index 32a6b03a..2d1fee70 100644 --- a/front/tests/Phaser/Services/HdpiManagerTest.ts +++ b/front/tests/Phaser/Services/HdpiManagerTest.ts @@ -50,6 +50,6 @@ describe("Test HdpiManager", () => { const result = hdpiManager.getOptimalGameSize({ width: 1280, height: 768 }); expect(result.game.width).toEqual(1280); expect(result.game.height).toEqual(768); - expect(hdpiManager.zoomModifier).toEqual(1); + expect(hdpiManager.zoomModifier).toEqual(2 / 3); }); }); From f2dca82642ee0477b07add6e87ba1f6689fe8f2e Mon Sep 17 00:00:00 2001 From: kharhamel Date: Mon, 17 May 2021 16:30:19 +0200 Subject: [PATCH 042/203] FIX: webpack config NodePolyfillPlugin --- front/package.json | 1 + front/webpack.config.ts | 2 + front/yarn.lock | 648 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 639 insertions(+), 12 deletions(-) diff --git a/front/package.json b/front/package.json index 8e9b82e6..c2d4be97 100644 --- a/front/package.json +++ b/front/package.json @@ -15,6 +15,7 @@ "html-webpack-plugin": "^5.3.1", "jasmine": "^3.5.0", "mini-css-extract-plugin": "^1.6.0", + "node-polyfill-webpack-plugin": "^1.1.2", "sass": "^1.32.12", "sass-loader": "^11.1.0", "ts-loader": "^9.1.2", diff --git a/front/webpack.config.ts b/front/webpack.config.ts index e3568544..36b79db5 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -5,6 +5,7 @@ const path = require('path'); const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const NodePolyfillPlugin = require("node-polyfill-webpack-plugin") const mode = process.env.NODE_ENV ?? 'development'; const isProduction = mode === 'production'; @@ -77,6 +78,7 @@ module.exports = { new webpack.ProvidePlugin({ Phaser: 'phaser' }), + new NodePolyfillPlugin(), new webpack.EnvironmentPlugin({ 'API_URL': null, 'SKIP_RENDER_OPTIMIZATIONS': false, diff --git a/front/yarn.lock b/front/yarn.lock index 08c1347e..0007b80d 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -631,6 +631,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -668,6 +673,26 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -700,6 +725,13 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + axios@^0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" @@ -772,6 +804,16 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -836,6 +878,72 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.14.5: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" @@ -857,6 +965,11 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -865,6 +978,11 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -982,6 +1100,14 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1119,6 +1245,16 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +console-browserify@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -1151,6 +1287,37 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -1176,6 +1343,23 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto-browserify@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + css-loader@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" @@ -1323,6 +1507,14 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -1338,6 +1530,15 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1387,6 +1588,11 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +domain-browser@^4.19.0: + version "4.19.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1" + integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ== + domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -1430,6 +1636,19 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1527,11 +1746,47 @@ errno@^0.1.3: dependencies: prr "~1.0.1" +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + es-module-lexer@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1678,7 +1933,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0: +events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -1690,6 +1945,14 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -1881,6 +2144,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-2.0.2.tgz#fff662368e505d69826abb113f0f6a98f56e9d5f" + integrity sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg== + finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -1932,6 +2200,11 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -1992,7 +2265,7 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -2102,6 +2375,11 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -2167,11 +2445,37 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -2295,6 +2599,11 @@ http-proxy@^1.17.0, http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -2369,7 +2678,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2433,6 +2742,11 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2447,11 +2761,23 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" @@ -2523,6 +2849,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" + integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2537,6 +2868,24 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2580,7 +2929,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4: +is-regex@^1.0.4, is-regex@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== @@ -2598,6 +2947,29 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -2834,6 +3206,15 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2894,6 +3275,14 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.2.3" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": version "1.47.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" @@ -2930,11 +3319,16 @@ mini-css-extract-plugin@^1.6.0: schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0: +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3055,6 +3449,36 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-polyfill-webpack-plugin@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.2.tgz#3e8e8640a920b566d5842df84f1c8c077554250e" + integrity sha512-ubwf7M73V13RDlKaDmMh1+giB/D8KL75umXEGabGtxSt/WRCirl01urhK1qsr6Cdt77escQ9SNb5OoTR8IwEHg== + dependencies: + assert "^2.0.0" + browserify-zlib "^0.2.0" + buffer "^6.0.3" + console-browserify "^1.2.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.12.0" + domain-browser "^4.19.0" + events "^3.3.0" + filter-obj "^2.0.2" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "^1.0.1" + process "^0.11.10" + punycode "^2.1.1" + querystring-es3 "^0.2.1" + readable-stream "^3.6.0" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.3.0" + timers-browserify "^2.0.12" + tty-browserify "^0.0.1" + url "^0.11.0" + util "^0.12.3" + vm-browserify "^1.1.2" + node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" @@ -3107,6 +3531,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -3127,6 +3556,16 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -3191,6 +3630,11 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -3241,6 +3685,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + papaparse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.0.tgz#ab1702feb96e79ab4309652f36db9536563ad05a" @@ -3266,6 +3715,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + parseqs@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" @@ -3294,6 +3754,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -3352,6 +3817,17 @@ path@^0.12.7: process "^0.11.1" util "^0.10.3" +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + phaser3-rex-plugins@^1.1.42: version "1.1.46" resolved "https://registry.yarnpkg.com/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.46.tgz#c53142461646a3c986e3af7d23b5f272e6a1f8d6" @@ -3493,7 +3969,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.1: +process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -3516,6 +3992,18 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3529,7 +4017,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -3539,6 +4027,11 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +querystring-es3@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -3582,13 +4075,21 @@ quill@1.3.6: parchment "^1.1.4" quill-delta "^3.6.2" -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -3617,7 +4118,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -3792,6 +4293,14 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -3811,7 +4320,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -3823,7 +4332,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -3954,6 +4463,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -3964,6 +4478,14 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -4196,6 +4718,24 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-http@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -4214,7 +4754,23 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string_decoder@^1.1.1: +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -4342,6 +4898,13 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +timers-browserify@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -4423,6 +4986,11 @@ tsutils@^3.17.1: dependencies: tslib "^1.8.1" +tty-browserify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -4453,6 +5021,16 @@ typescript@^4.2.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -4526,6 +5104,18 @@ util@^0.10.3: dependencies: inherits "2.0.3" +util@^0.12.0, util@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -4551,6 +5141,11 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vm-browserify@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + watchpack@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" @@ -4715,11 +5310,35 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -4775,6 +5394,11 @@ xmlhttprequest-ssl@~1.6.2: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz#dd6899bfbcf684b554e393c30b13b9f3b001a7ee" integrity sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg== +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" From 9bc79c3ed3c5110f412fc32387797e5fb62c56f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 11 May 2021 17:37:21 +0200 Subject: [PATCH 043/203] Adding Svelte to the project --- front/package.json | 5 + front/src/Components/App.svelte | 6 + front/src/index.ts | 9 + front/tsconfig.json | 1 + front/webpack.config.ts | 56 ++- front/yarn.lock | 738 +++++--------------------------- 6 files changed, 178 insertions(+), 637 deletions(-) create mode 100644 front/src/Components/App.svelte diff --git a/front/package.json b/front/package.json index c2d4be97..9ec355f7 100644 --- a/front/package.json +++ b/front/package.json @@ -4,12 +4,14 @@ "main": "index.js", "license": "SEE LICENSE IN LICENSE.txt", "devDependencies": { + "@tsconfig/svelte": "^1.0.10", "@types/google-protobuf": "^3.7.3", "@types/jasmine": "^3.5.10", "@types/quill": "^1.3.7", "@types/webpack-dev-server": "^3.11.4", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", + "autoprefixer": "^10.2.5", "css-loader": "^5.2.4", "eslint": "^7.26.0", "html-webpack-plugin": "^5.3.1", @@ -18,6 +20,9 @@ "node-polyfill-webpack-plugin": "^1.1.2", "sass": "^1.32.12", "sass-loader": "^11.1.0", + "svelte": "^3.38.2", + "svelte-loader": "^3.1.1", + "svelte-preprocess": "^4.7.3", "ts-loader": "^9.1.2", "ts-node": "^9.1.1", "typescript": "^4.2.4", diff --git a/front/src/Components/App.svelte b/front/src/Components/App.svelte new file mode 100644 index 00000000..0ca0b3cf --- /dev/null +++ b/front/src/Components/App.svelte @@ -0,0 +1,6 @@ + + +
+
diff --git a/front/src/index.ts b/front/src/index.ts index 4065788e..5a975975 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -21,6 +21,8 @@ import { SelectCharacterMobileScene } from './Phaser/Login/SelectCharacterMobile import {HdpiManager} from "./Phaser/Services/HdpiManager"; import {waScaleManager} from "./Phaser/Services/WaScaleManager"; import {Game} from "./Phaser/Game/Game"; +import App from './Components/App.svelte'; +import {HtmlUtils} from "./WebRtc/HtmlUtils"; const {width, height} = coWebsiteManager.getGameSize(); @@ -147,3 +149,10 @@ coWebsiteManager.onResize.subscribe(() => { }); iframeListener.init(); + +const app = new App({ + target: document.body, + props: { }, +}) + +export default app diff --git a/front/tsconfig.json b/front/tsconfig.json index 1845ee40..a4d27eee 100644 --- a/front/tsconfig.json +++ b/front/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "@tsconfig/svelte/tsconfig.json", "compilerOptions": { "outDir": "./dist/", "sourceMap": true, diff --git a/front/webpack.config.ts b/front/webpack.config.ts index 36b79db5..e5d3f9e8 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -1,5 +1,7 @@ import type {Configuration} from "webpack"; import type WebpackDevServer from "webpack-dev-server"; +import SveltePreprocess from 'svelte-preprocess'; +import Autoprefixer from 'autoprefixer'; const path = require('path'); const webpack = require('webpack'); @@ -41,10 +43,54 @@ module.exports = { test: /\.scss$/, use: [MiniCssExtractPlugin.loader, 'css-loader?url=false', 'sass-loader'], }, + { + test: /\.svelte$/, + exclude: /node_modules/, + use: { + loader: 'svelte-loader', + options: { + compilerOptions: { + // Dev mode must be enabled for HMR to work! + dev: isDevelopment + }, + emitCss: isProduction, + hotReload: isDevelopment, + hotOptions: { + // List of options and defaults: https://www.npmjs.com/package/svelte-loader-hot#usage + noPreserveState: false, + optimistic: true, + }, + preprocess: SveltePreprocess({ + scss: true, + sass: true, + postcss: { + plugins: [ + Autoprefixer + ] + } + }) + } + } + }, + + // Required to prevent errors from Svelte on Webpack 5+, omit on Webpack 4 + // See: https://github.com/sveltejs/svelte-loader#usage + { + test: /node_modules\/svelte\/.*\.mjs$/, + resolve: { + fullySpecified: false + } + }, + ], }, resolve: { - extensions: [ '.tsx', '.ts', '.js' ], + /*alias: { + // Note: Later in this config file, we'll automatically add paths from `tsconfig.compilerOptions.paths` + svelte: path.resolve('node_modules', 'svelte') + },*/ + extensions: [ '.tsx', '.ts', '.js', '.svelte' ], + //mainFields: ['svelte', 'browser', 'module', 'main'] }, output: { filename: (pathData) => { @@ -98,5 +144,13 @@ module.exports = { 'MAX_PER_GROUP': 4 }) ], + stats: { + chunks: false, + chunkModules: false, + modules: false, + assets: true, + entrypoints: false, + errorDetails: false + } } as Configuration & WebpackDevServer.Configuration; diff --git a/front/yarn.lock b/front/yarn.lock index 0007b80d..8811e420 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -64,6 +64,11 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@tsconfig/svelte@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@tsconfig/svelte/-/svelte-1.0.10.tgz#30ec7feeee0bdf38b12a50f0686f8a2e7b6b9dc0" + integrity sha512-EBrpH2iXXfaf/9z81koiDYkp2mlwW2XzFcAqn6qh7VKyP8zBvHHAQzNhY+W9vH5arAjmGAm5g8ElWq6YmXm3ig== + "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -182,6 +187,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== +"@types/pug@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.4.tgz#8772fcd0418e3cd2cc171555d73007415051f4b2" + integrity sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI= + "@types/qs@*": version "6.9.6" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" @@ -199,6 +209,13 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== +"@types/sass@^1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.16.0.tgz#b41ac1c17fa68ffb57d43e2360486ef526b3d57d" + integrity sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA== + dependencies: + "@types/node" "*" + "@types/serve-static@*": version "1.13.9" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" @@ -631,11 +648,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -673,26 +685,6 @@ arraybuffer.slice@~0.0.7: resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== - dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -725,12 +717,17 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== +autoprefixer@^10.2.5: + version "10.2.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" + integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== dependencies: - array-filter "^1.0.0" + browserslist "^4.16.3" + caniuse-lite "^1.0.30001196" + colorette "^1.2.2" + fraction.js "^4.0.13" + normalize-range "^0.1.2" + postcss-value-parser "^4.1.0" axios@^0.21.1: version "0.21.1" @@ -804,16 +801,6 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -878,73 +865,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.14.5: +browserslist@^4.14.5, browserslist@^4.16.3: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -965,11 +886,6 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -978,11 +894,6 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1039,7 +950,7 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001219: +caniuse-lite@^1.0.30001196, caniuse-lite@^1.0.30001219: version "1.0.30001228" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== @@ -1100,14 +1011,6 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1245,16 +1148,6 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -console-browserify@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -1287,37 +1180,6 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -1343,23 +1205,6 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - css-loader@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" @@ -1507,19 +1352,16 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + detect-node@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" @@ -1530,15 +1372,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1588,11 +1421,6 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -domain-browser@^4.19.0: - version "4.19.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1" - integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ== - domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -1636,19 +1464,6 @@ electron-to-chromium@^1.3.723: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1746,47 +1561,11 @@ errno@^0.1.3: dependencies: prr "~1.0.1" -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - es-module-lexer@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1933,7 +1712,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0, events@^3.3.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -1945,14 +1724,6 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2144,11 +1915,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -filter-obj@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-2.0.2.tgz#fff662368e505d69826abb113f0f6a98f56e9d5f" - integrity sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg== - finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -2200,16 +1966,16 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +fraction.js@^4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" + integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -2265,7 +2031,7 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -2375,11 +2141,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -2445,37 +2206,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -2599,11 +2334,6 @@ http-proxy@^1.17.0, http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -2678,7 +2408,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2742,11 +2472,6 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2761,23 +2486,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - is-core-module@^2.2.0: version "2.4.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" @@ -2849,11 +2562,6 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-function@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" - integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2868,24 +2576,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-nan@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2929,7 +2619,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4, is-regex@^1.1.2: +is-regex@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== @@ -2947,29 +2637,6 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" - integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.2" - es-abstract "^1.18.0-next.2" - foreach "^2.0.5" - has-symbols "^1.0.1" - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3206,15 +2873,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -3275,14 +2933,6 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.2.3" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": version "1.47.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" @@ -3310,6 +2960,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + mini-css-extract-plugin@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.0.tgz#b4db2525af2624899ed64a23b0016e0036411893" @@ -3319,16 +2974,11 @@ mini-css-extract-plugin@^1.6.0: schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3449,36 +3099,6 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-polyfill-webpack-plugin@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.2.tgz#3e8e8640a920b566d5842df84f1c8c077554250e" - integrity sha512-ubwf7M73V13RDlKaDmMh1+giB/D8KL75umXEGabGtxSt/WRCirl01urhK1qsr6Cdt77escQ9SNb5OoTR8IwEHg== - dependencies: - assert "^2.0.0" - browserify-zlib "^0.2.0" - buffer "^6.0.3" - console-browserify "^1.2.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.12.0" - domain-browser "^4.19.0" - events "^3.3.0" - filter-obj "^2.0.2" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "^1.0.1" - process "^0.11.10" - punycode "^2.1.1" - querystring-es3 "^0.2.1" - readable-stream "^3.6.0" - stream-browserify "^3.0.0" - stream-http "^3.2.0" - string_decoder "^1.3.0" - timers-browserify "^2.0.12" - tty-browserify "^0.0.1" - url "^0.11.0" - util "^0.12.3" - vm-browserify "^1.1.2" - node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" @@ -3496,6 +3116,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -3531,11 +3156,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.9.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== - object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -3556,16 +3176,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -3630,11 +3240,6 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -3685,11 +3290,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - papaparse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.0.tgz#ab1702feb96e79ab4309652f36db9536563ad05a" @@ -3715,17 +3315,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parseqs@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" @@ -3754,11 +3343,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -3817,17 +3401,6 @@ path@^0.12.7: process "^0.11.1" util "^0.10.3" -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - phaser3-rex-plugins@^1.1.42: version "1.1.46" resolved "https://registry.yarnpkg.com/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.46.tgz#c53142461646a3c986e3af7d23b5f272e6a1f8d6" @@ -3969,7 +3542,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.1, process@^0.11.10: +process@^0.11.1: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -3992,18 +3565,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -4017,7 +3578,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -4027,11 +3588,6 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -querystring-es3@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -4075,21 +3631,13 @@ quill@1.3.6: parchment "^1.1.4" quill-delta "^3.6.2" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -4118,7 +3666,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -4293,14 +3841,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4320,7 +3860,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4332,7 +3872,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -4463,11 +4003,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -4478,14 +4013,6 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -4718,24 +4245,6 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-http@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" - integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.4" - readable-stream "^3.6.0" - xtend "^4.0.2" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -4754,23 +4263,7 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.1.1, string_decoder@^1.3.0: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -4815,6 +4308,13 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -4841,6 +4341,40 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +svelte-dev-helper@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz#7d187db5c6cdbbd64d75a32f91b8998bde3273c3" + integrity sha1-fRh9tcbNu9ZNdaMvkbiZi94yc8M= + +svelte-hmr@^0.12.3: + version "0.12.9" + resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.12.9.tgz#e323b71062a59bf4b73d2d5a7cc80dba256217e1" + integrity sha512-SGE7Odznj4dqZtUVIWcoPCvZ9gHImxVIIjrz+O3DDSi0j4OaSLim6MRF4UdhlBKeW3glSRc+tXNSKYvM5x+Dyw== + +svelte-loader@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/svelte-loader/-/svelte-loader-3.1.1.tgz#cb03541214b164edee58e4c98d4303f76df9013d" + integrity sha512-JU7qo1yBdDeJ3Aw23WoGKXrVaSn3KeWkM9KMl43HuMVFrsPNHIzZHTsf1ARJX/Abm3jeqNjigaO35RVbixhmWg== + dependencies: + loader-utils "^2.0.0" + svelte-dev-helper "^1.1.9" + svelte-hmr "^0.12.3" + +svelte-preprocess@^4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.7.3.tgz#454fa059c2400b15e7a3caeca18993cff9df0e96" + integrity sha512-Zx1/xLeGOIBlZMGPRCaXtlMe4ZA0faato5Dc3CosEqwu75MIEPuOstdkH6cy+RYTUYynoxzNaDxkPX4DbrPwRA== + dependencies: + "@types/pug" "^2.0.4" + "@types/sass" "^1.16.0" + detect-indent "^6.0.0" + strip-indent "^3.0.0" + +svelte@^3.38.2: + version "3.38.2" + resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.38.2.tgz#55e5c681f793ae349b5cc2fe58e5782af4275ef5" + integrity sha512-q5Dq0/QHh4BLJyEVWGe7Cej5NWs040LWjMbicBGZ+3qpFWJ1YObRmUDZKbbovddLC9WW7THTj3kYbTOFmU9fbg== + table@^6.0.4: version "6.7.0" resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" @@ -4898,13 +4432,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timers-browserify@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -4986,11 +4513,6 @@ tsutils@^3.17.1: dependencies: tslib "^1.8.1" -tty-browserify@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" - integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -5021,16 +4543,6 @@ typescript@^4.2.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== -unbox-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -5104,18 +4616,6 @@ util@^0.10.3: dependencies: inherits "2.0.3" -util@^0.12.0, util@^0.12.3: - version "0.12.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" - integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -5141,11 +4641,6 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vm-browserify@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - watchpack@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" @@ -5310,35 +4805,11 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -5394,11 +4865,6 @@ xmlhttprequest-ssl@~1.6.2: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz#dd6899bfbcf684b554e393c30b13b9f3b001a7ee" integrity sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg== -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" From 62cc1f73ca6f5649361fafd81b6ba20e0c93d96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 15:57:53 +0200 Subject: [PATCH 044/203] Tryig to fix webpack for Svelte --- front/src/Components/Menu/MenuIcon.svelte | 0 .../Stores/RequestedConstraintsStore.ts | 22 +++++++++++++++++++ front/webpack.config.ts | 9 ++++---- 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 front/src/Components/Menu/MenuIcon.svelte create mode 100644 front/src/WebRtc/Stores/RequestedConstraintsStore.ts diff --git a/front/src/Components/Menu/MenuIcon.svelte b/front/src/Components/Menu/MenuIcon.svelte new file mode 100644 index 00000000..e69de29b diff --git a/front/src/WebRtc/Stores/RequestedConstraintsStore.ts b/front/src/WebRtc/Stores/RequestedConstraintsStore.ts new file mode 100644 index 00000000..3e2243e3 --- /dev/null +++ b/front/src/WebRtc/Stores/RequestedConstraintsStore.ts @@ -0,0 +1,22 @@ +import { derived, writable, Writable } from "svelte/store"; + +class RequestedConstraintsStore { + constructor( + public camera: Writable = writable(false), + public microphone: Writable = writable(false), + ) { } + + get fullname() { + // Use derived to access writable values and export as readonly + return derived( + [this.camera, this.microphone], + ([$camera, $microphone]) => { + console.log("cam or mic", $camera || $microphone) + return $camera || $microphone; + } + ) + } +} + +// Export a singleton +export const myFormStore = new MyFormStore(); diff --git a/front/webpack.config.ts b/front/webpack.config.ts index e5d3f9e8..4fae3cff 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -44,7 +44,7 @@ module.exports = { use: [MiniCssExtractPlugin.loader, 'css-loader?url=false', 'sass-loader'], }, { - test: /\.svelte$/, + test: /\.(html|svelte)$/, exclude: /node_modules/, use: { loader: 'svelte-loader', @@ -85,12 +85,11 @@ module.exports = { ], }, resolve: { - /*alias: { - // Note: Later in this config file, we'll automatically add paths from `tsconfig.compilerOptions.paths` + alias: { svelte: path.resolve('node_modules', 'svelte') - },*/ + }, extensions: [ '.tsx', '.ts', '.js', '.svelte' ], - //mainFields: ['svelte', 'browser', 'module', 'main'] + mainFields: ['svelte', 'browser', 'module', 'main'] }, output: { filename: (pathData) => { From 1885ea42a48318a8a0c6a9224799606b06d095b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 12 May 2021 18:32:55 +0200 Subject: [PATCH 045/203] First working example with Svelte (the menu icon shows up on entering the game) --- front/dist/index.tmpl.html | 2 + front/dist/resources/style/style.css | 8 + front/src/Components/App.svelte | 5 + front/src/Components/Menu/MenuIcon.svelte | 33 + front/src/Phaser/Menu/MenuScene.ts | 2 + front/src/Stores/MenuStore.ts | 3 + front/src/index.ts | 2 +- front/webpack.config.ts | 5 +- front/yarn.lock | 4915 --------------------- 9 files changed, 57 insertions(+), 4918 deletions(-) create mode 100644 front/src/Stores/MenuStore.ts delete mode 100644 front/yarn.lock diff --git a/front/dist/index.tmpl.html b/front/dist/index.tmpl.html index c4763b6e..adbbfe44 100644 --- a/front/dist/index.tmpl.html +++ b/front/dist/index.tmpl.html @@ -38,6 +38,8 @@
+
+
diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index 717e1d69..dd62a4d4 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -1225,3 +1225,11 @@ div.action.danger p.action-body{ 50% {bottom: 30px;} 100% {bottom: 40px;} } + + +#svelte-overlay { + position: absolute; + width: 100%; + height: 100%; + pointer-events: none; +} diff --git a/front/src/Components/App.svelte b/front/src/Components/App.svelte index 0ca0b3cf..2cd9d925 100644 --- a/front/src/Components/App.svelte +++ b/front/src/Components/App.svelte @@ -1,6 +1,11 @@
+ {#if $menuIconVisible} + + {/if}
diff --git a/front/src/Components/Menu/MenuIcon.svelte b/front/src/Components/Menu/MenuIcon.svelte index e69de29b..46c233ba 100644 --- a/front/src/Components/Menu/MenuIcon.svelte +++ b/front/src/Components/Menu/MenuIcon.svelte @@ -0,0 +1,33 @@ + + +
+
+ +
+
+ + diff --git a/front/src/Phaser/Menu/MenuScene.ts b/front/src/Phaser/Menu/MenuScene.ts index f26c00c6..76bf520f 100644 --- a/front/src/Phaser/Menu/MenuScene.ts +++ b/front/src/Phaser/Menu/MenuScene.ts @@ -9,6 +9,7 @@ import {connectionManager} from "../../Connexion/ConnectionManager"; import {GameConnexionTypes} from "../../Url/UrlManager"; import {WarningContainer, warningContainerHtml, warningContainerKey} from "../Components/WarningContainer"; import {worldFullWarningStream} from "../../Connexion/WorldFullWarningStream"; +import {menuIconVisible} from "../../Stores/MenuStore"; export const MenuSceneName = 'MenuScene'; const gameMenuKey = 'gameMenu'; @@ -53,6 +54,7 @@ export class MenuScene extends Phaser.Scene { } create() { + menuIconVisible.set(true); this.menuElement = this.add.dom(closedSideMenuX, 30).createFromCache(gameMenuKey); this.menuElement.setOrigin(0); MenuScene.revealMenusAfterInit(this.menuElement, 'gameMenu'); diff --git a/front/src/Stores/MenuStore.ts b/front/src/Stores/MenuStore.ts new file mode 100644 index 00000000..c7c02130 --- /dev/null +++ b/front/src/Stores/MenuStore.ts @@ -0,0 +1,3 @@ +import { derived, writable, Writable } from "svelte/store"; + +export const menuIconVisible = writable(false); diff --git a/front/src/index.ts b/front/src/index.ts index 5a975975..cb0425a8 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -151,7 +151,7 @@ coWebsiteManager.onResize.subscribe(() => { iframeListener.init(); const app = new App({ - target: document.body, + target: HtmlUtils.getElementByIdOrFail('svelte-overlay'), props: { }, }) diff --git a/front/webpack.config.ts b/front/webpack.config.ts index 4fae3cff..69d047ea 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -60,7 +60,8 @@ module.exports = { noPreserveState: false, optimistic: true, }, - preprocess: SveltePreprocess({ + // FIXME: SveltePreprocess does not work here + /*preprocess: SveltePreprocess({ scss: true, sass: true, postcss: { @@ -68,7 +69,7 @@ module.exports = { Autoprefixer ] } - }) + })*/ } } }, diff --git a/front/yarn.lock b/front/yarn.lock deleted file mode 100644 index 8811e420..00000000 --- a/front/yarn.lock +++ /dev/null @@ -1,4915 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== - -"@babel/highlight@^7.10.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@discoveryjs/json-ext@^0.5.0": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" - integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== - -"@eslint/eslintrc@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" - integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== - dependencies: - "@nodelib/fs.stat" "2.0.4" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== - dependencies: - "@nodelib/fs.scandir" "2.1.4" - fastq "^1.6.0" - -"@tsconfig/svelte@^1.0.10": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@tsconfig/svelte/-/svelte-1.0.10.tgz#30ec7feeee0bdf38b12a50f0686f8a2e7b6b9dc0" - integrity sha512-EBrpH2iXXfaf/9z81koiDYkp2mlwW2XzFcAqn6qh7VKyP8zBvHHAQzNhY+W9vH5arAjmGAm5g8ElWq6YmXm3ig== - -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== - -"@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect-history-api-fallback@*": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz#8c0f0e6e5d8252b699f5a662f51bdf82fd9d8bb8" - integrity sha512-Kf8v0wljR5GSCOCF/VQWdV3ZhKOVA73drXtY3geMTQgHy9dgqQ0dLrf31M0hcuWkhFzK5sP0kkS3mJzcKVtZbw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.34" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== - dependencies: - "@types/node" "*" - -"@types/eslint-scope@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" - integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "7.2.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" - integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.47": - version "0.0.47" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" - integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" - integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.11" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" - integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/google-protobuf@^3.7.3": - version "3.15.2" - resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.2.tgz#70753e948cabeb416d71299dc35c3f562a10fb0f" - integrity sha512-ubeqvw7sl6CdgeiIilsXB2jIFoD/D0F+/LIEp7xEBEXRNtDJcf05FRINybsJtL7GlkWOUVn6gJs2W9OF+xI6lg== - -"@types/html-minifier-terser@^5.0.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" - integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== - -"@types/http-proxy@^1.17.5": - version "1.17.5" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" - integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q== - dependencies: - "@types/node" "*" - -"@types/jasmine@^3.5.10": - version "3.7.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.7.2.tgz#f83ca1936f8cf5d3375506b481f52f8903c2df21" - integrity sha512-w5Zc9pSwxlr1ne+froeIceYbrh0a2Us+0kTaX6JA0N7nPh+yv1zN10LyDMKwnT0x2AbIDGlrD1cv6plVjfCcZw== - -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/minimatch@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" - integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== - -"@types/node@*": - version "15.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" - integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== - -"@types/pug@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.4.tgz#8772fcd0418e3cd2cc171555d73007415051f4b2" - integrity sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI= - -"@types/qs@*": - version "6.9.6" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== - -"@types/quill@^1.3.7": - version "1.3.10" - resolved "https://registry.yarnpkg.com/@types/quill/-/quill-1.3.10.tgz#dc1f7b6587f7ee94bdf5291bc92289f6f0497613" - integrity sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw== - dependencies: - parchment "^1.1.2" - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== - -"@types/sass@^1.16.0": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.16.0.tgz#b41ac1c17fa68ffb57d43e2360486ef526b3d57d" - integrity sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA== - dependencies: - "@types/node" "*" - -"@types/serve-static@*": - version "1.13.9" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/simple-peer@^9.6.0": - version "9.6.2" - resolved "https://registry.yarnpkg.com/@types/simple-peer/-/simple-peer-9.6.2.tgz#a72afb6bd280fc4083d37e00247b30975304c071" - integrity sha512-FirllZ8397Qo8LfAgD4UuMgIOQmP1zdcP2eFNRDpaFDGQs42j2XxKOcTcvYZjXHv4HD7hgoNXzjB6iiEspKniw== - dependencies: - "@types/node" "*" - -"@types/socket.io-client@^1.4.32": - version "1.4.36" - resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.36.tgz#e4f1ca065f84c20939e9850e70222202bd76ff3f" - integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/tapable@^1": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" - integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== - -"@types/uglify-js@*": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" - integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== - dependencies: - source-map "^0.6.1" - -"@types/webpack-dev-server@^3.11.4": - version "3.11.4" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07" - integrity sha512-DCKORHjqNNVuMIDWFrlljftvc9CL0+09p3l7lBpb8dRqgN5SmvkWCY4MPKxoI6wJgdRqohmoNbptkxqSKAzLRg== - dependencies: - "@types/connect-history-api-fallback" "*" - "@types/express" "*" - "@types/serve-static" "*" - "@types/webpack" "^4" - http-proxy-middleware "^1.0.0" - -"@types/webpack-sources@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" - integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4": - version "4.41.28" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.28.tgz#0069a2159b7ad4d83d0b5801942c17d54133897b" - integrity sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@typescript-eslint/eslint-plugin@^4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" - integrity sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw== - dependencies: - "@typescript-eslint/experimental-utils" "4.23.0" - "@typescript-eslint/scope-manager" "4.23.0" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz#f2059434cd6e5672bfeab2fb03b7c0a20622266f" - integrity sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.23.0" - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/typescript-estree" "4.23.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.23.0.tgz#239315d38e42e852bef43a4b0b01bef78f78911c" - integrity sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug== - dependencies: - "@typescript-eslint/scope-manager" "4.23.0" - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/typescript-estree" "4.23.0" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz#8792ef7eacac122e2ec8fa2d30a59b8d9a1f1ce4" - integrity sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w== - dependencies: - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/visitor-keys" "4.23.0" - -"@typescript-eslint/types@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b" - integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw== - -"@typescript-eslint/typescript-estree@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz#0753b292097523852428a6f5a1aa8ccc1aae6cd9" - integrity sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw== - dependencies: - "@typescript-eslint/types" "4.23.0" - "@typescript-eslint/visitor-keys" "4.23.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@4.23.0": - version "4.23.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz#7215cc977bd3b4ef22467b9023594e32f9e4e455" - integrity sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg== - dependencies: - "@typescript-eslint/types" "4.23.0" - eslint-visitor-keys "^2.0.0" - -"@webassemblyjs/ast@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" - integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - -"@webassemblyjs/floating-point-hex-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" - integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== - -"@webassemblyjs/helper-api-error@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" - integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== - -"@webassemblyjs/helper-buffer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" - integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== - -"@webassemblyjs/helper-numbers@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" - integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" - integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== - -"@webassemblyjs/helper-wasm-section@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" - integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - -"@webassemblyjs/ieee754@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" - integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" - integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" - integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== - -"@webassemblyjs/wasm-edit@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" - integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/helper-wasm-section" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-opt" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - "@webassemblyjs/wast-printer" "1.11.0" - -"@webassemblyjs/wasm-gen@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" - integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wasm-opt@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" - integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - -"@webassemblyjs/wasm-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" - integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wast-printer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" - integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" - integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== - -"@webpack-cli/info@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" - integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" - integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.1: - version "8.2.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" - integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.3.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.3.0.tgz#25ee7348e32cdc4a1dbb38256bf6bdc451dd577c" - integrity sha512-RYE7B5An83d7eWnDR8kbdaIFqmKCNsP16ay1hDbJEU+sa0e3H9SebskCt0Uufem6cfAVu7Col6ubcn/W+Sm8/Q== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^10.2.5: - version "10.2.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.5.tgz#096a0337dbc96c0873526d7fef5de4428d05382d" - integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== - dependencies: - browserslist "^4.16.3" - caniuse-lite "^1.0.30001196" - colorette "^1.2.2" - fraction.js "^4.0.13" - normalize-range "^0.1.2" - postcss-value-parser "^4.1.0" - -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" - integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.14.5, browserslist@^4.16.3: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-lite@^1.0.30001196, caniuse-lite@^1.0.30001219: - version "1.0.30001228" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" - integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -"chokidar@>=3.0.0 <4.0.0": - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@^1.2.1, component-emitter@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-loader@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" - integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== - dependencies: - camelcase "^6.2.0" - icss-utils "^5.1.0" - loader-utils "^2.0.0" - postcss "^8.2.10" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^3.0.0" - semver "^7.3.5" - -css-select@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== - -detect-node@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.5.tgz#9d270aa7eaa5af0b72c4c9d9b814e7f4ce738b79" - integrity sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.723: - version "1.3.727" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz#857e310ca00f0b75da4e1db6ff0e073cc4a91ddf" - integrity sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -engine.io-client@~3.5.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.5.2.tgz#0ef473621294004e9ceebe73cef0af9e36f2f5fa" - integrity sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA== - dependencies: - component-emitter "~1.3.0" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.2.0" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.6" - parseuri "0.0.6" - ws "~7.4.2" - xmlhttprequest-ssl "~1.6.2" - yeast "0.1.2" - -engine.io-parser@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" - integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.4" - blob "0.0.5" - has-binary2 "~1.0.2" - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.8.0: - version "5.8.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" - integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -envinfo@^7.7.3: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - -errno@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -es-module-lexer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" - integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.26.0: - version "7.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" - integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.1" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.21" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.4" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba" - integrity sha1-teEHm1n7XhuidxwKmTvgYKWMmbo= - -eventemitter3@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -eventemitter3@^4.0.0, eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.1, extend@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" - integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig== - -fast-glob@^3.1.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - -fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== - -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fraction.js@^4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" - integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -generic-type-guard@^3.2.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/generic-type-guard/-/generic-type-guard-3.4.1.tgz#0896dc018de915c890562a34763858076e4676da" - integrity sha512-sXce0Lz3Wfy2rR1W8O8kUemgEriTeG1x8shqSJeWGb0FwJu2qBEkB1M2qXbdSLmpgDnHcIXo0Dj/1VLNJkK/QA== - -get-browser-rtc@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz#d1494e299b00f33fc8e9d6d3343ba4ba99711a2c" - integrity sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" - integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.1: - version "11.0.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -google-protobuf@^3.13.0: - version "3.16.0" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.16.0.tgz#87c61829a8aec7d9244dcbed9464e1d0fcbed8ae" - integrity sha512-gBY66yYL1wbQMU2r1POkXSXkm035Ni0wFv3vx0K9IEUsJLP9G5rAcFVn0xUXfZneRu6MmDjaw93pt/DE56VOyw== - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.1.tgz#8797327548e3de438e3494e0c6d06f181a7f20d1" - integrity sha512-rZsVvPXUYFyME0cuGkyOHfx9hmkFa4pWfxY/mdY38PsBEaVNsRoA+Id+8z6DBDgyv3zaw6XQszdF8HLwfQvcdQ== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - html-minifier-terser "^5.0.1" - lodash "^4.17.20" - pretty-error "^2.1.1" - tapable "^2.0.0" - -htmlparser2@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy-middleware@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" - integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== - dependencies: - "@types/http-proxy" "^1.17.5" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.17.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" - integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jasmine-core@~3.7.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.7.1.tgz#0401327f6249eac993d47bbfa18d4e8efacfb561" - integrity sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ== - -jasmine@^3.5.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.7.0.tgz#d36638c0c815e6ad5666676e386d79e2ccb70835" - integrity sha512-wlzGQ+cIFzMEsI+wDqmOwvnjTvolLFwlcpYLCqSPPH0prOQaW3P+IzMhHYn934l1imNvw07oCyX+vGUv3wmtSQ== - dependencies: - glob "^7.1.6" - jasmine-core "~3.7.0" - -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json3@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klona@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -linked-list-typescript@^1.0.11: - version "1.0.15" - resolved "https://registry.yarnpkg.com/linked-list-typescript/-/linked-list-typescript-1.0.15.tgz#faeed93cf9203f102e2158c29edcddda320abe82" - integrity sha512-RIyUu9lnJIyIaMe63O7/aFv/T2v3KsMFuXMBbUQCHX+cgtGro86ETDj5ed0a8gQL2+DFjzYYsgVG4I36/cUwgw== - -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -lokijs@^1.5.12: - version "1.5.12" - resolved "https://registry.yarnpkg.com/lokijs/-/lokijs-1.5.12.tgz#cb55b37009bdf09ee7952a6adddd555b893653a0" - integrity sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.0, micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": - version "1.47.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" - integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== - -mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.30" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" - integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== - dependencies: - mime-db "1.47.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.0.tgz#b4db2525af2624899ed64a23b0016e0036411893" - integrity sha512-nPFKI7NSy6uONUo9yn2hIfb9vyYvkFu95qki0e21DQ9uaqNKDP15DGpK0KnV6wDroWxPHtExrdEwx/yDQ8nVRw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-releases@^1.1.71: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -papaparse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.0.tgz#ab1702feb96e79ab4309652f36db9536563ad05a" - integrity sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg== - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parchment@^1.1.2, parchment@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5" - integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parseqs@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" - integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== - -parseuri@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" - integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -path@^0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" - integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= - dependencies: - process "^0.11.1" - util "^0.10.3" - -phaser3-rex-plugins@^1.1.42: - version "1.1.46" - resolved "https://registry.yarnpkg.com/phaser3-rex-plugins/-/phaser3-rex-plugins-1.1.46.tgz#c53142461646a3c986e3af7d23b5f272e6a1f8d6" - integrity sha512-v2pQQFHX+ym6FwHNHyOxisoUa6iuAN3NxHjb8JthwLRPEnb0++EzDJq1Fdu2dduqx5Bh0K0B9ZvIk1ESSA8b0A== - dependencies: - eventemitter3 "^3.1.2" - lokijs "^1.5.12" - papaparse "^5.3.0" - webfontloader "^1.6.28" - -phaser@^3.54.0: - version "3.54.0" - resolved "https://registry.yarnpkg.com/phaser/-/phaser-3.54.0.tgz#46b191e46059aab2a9a57f78525c60b595767eee" - integrity sha512-/1XVI6J2siS0OGwJez7vLbRjars1zb//EvJdYMVyd3wNTUf5DHrvYUj1f6TsEISr4vjnbrNtS66QIuPbGU8x6A== - dependencies: - eventemitter3 "^4.0.7" - path "^0.12.7" - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^8.2.10: - version "8.2.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" - integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map "^0.6.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.1: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2, queue-microtask@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue-typescript@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/queue-typescript/-/queue-typescript-1.0.1.tgz#2d7842fc3b3e0e3f33d077887a8f2a5bb0baf460" - integrity sha512-tkK08uPfmpPl0cX1WRSU3EoNb/T5zSoZPGkkpfGX4E8QayWvEmLS2cI3pFngNPkNTCU5pCDQ1IwlzN0L5gdFPg== - dependencies: - linked-list-typescript "^1.0.11" - -quill-delta@^3.6.2: - version "3.6.3" - resolved "https://registry.yarnpkg.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032" - integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg== - dependencies: - deep-equal "^1.0.1" - extend "^3.0.2" - fast-diff "1.1.2" - -quill@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/quill/-/quill-1.3.6.tgz#99f4de1fee85925a0d7d4163b6d8328f23317a4d" - integrity sha512-K0mvhimWZN6s+9OQ249CH2IEPZ9JmkFuCQeHAOQax3EZ2nDJ3wfGh59mnlQaZV2i7u8eFarx6wAtvQKgShojug== - dependencies: - clone "^2.1.1" - deep-equal "^1.0.1" - eventemitter3 "^2.0.3" - extend "^3.0.1" - parchment "^1.1.4" - quill-delta "^3.6.2" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -readable-stream@^2.0.1, readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" - integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== - dependencies: - css-select "^2.0.2" - dom-converter "^0.2" - htmlparser2 "^3.10.1" - lodash "^4.17.20" - strip-ansi "^3.0.0" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.9.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-loader@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.1.0.tgz#302a83e41834a7ac0cc9d7591e52688ef4ed92af" - integrity sha512-TS8KtLtMAqK68lBs0PRzoGf7ndz9m7pKo4BXvUzjGDDgWEY0qcoMMRVpaHfYM0i3/E6UsererqIpjs7dVA/p7A== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@^1.32.12: - version "1.32.12" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" - integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== - dependencies: - chokidar ">=3.0.0 <4.0.0" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== - dependencies: - "@types/json-schema" "^7.0.6" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.8: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.0, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-peer@^9.6.2: - version "9.11.0" - resolved "https://registry.yarnpkg.com/simple-peer/-/simple-peer-9.11.0.tgz#e8d27609c7a610c3ddd75767da868e8daab67571" - integrity sha512-qvdNu/dGMHBm2uQ7oLhQBMhYlrOZC1ywXNCH/i8I4etxR1vrjCnU6ZSQBptndB1gcakjo2+w4OHo7Sjza1SHxg== - dependencies: - buffer "^6.0.3" - debug "^4.3.1" - err-code "^3.0.1" - get-browser-rtc "^1.1.0" - queue-microtask "^1.2.3" - randombytes "^2.1.0" - readable-stream "^3.6.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-client@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.4.0.tgz#aafb5d594a3c55a34355562fc8aea22ed9119a35" - integrity sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ== - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "~1.3.0" - debug "~3.1.0" - engine.io-client "~3.5.0" - has-binary2 "~1.0.2" - indexof "0.0.1" - parseqs "0.0.6" - parseuri "0.0.6" - socket.io-parser "~3.3.0" - to-array "0.1.4" - -socket.io-parser@~3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.2.tgz#ef872009d0adcf704f2fbe830191a14752ad50b6" - integrity sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg== - dependencies: - component-emitter "~1.3.0" - debug "~3.1.0" - isarray "2.0.1" - -sockjs-client@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" - integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== - dependencies: - debug "^3.2.6" - eventsource "^1.0.7" - faye-websocket "^0.11.3" - inherits "^2.0.4" - json3 "^3.3.3" - url-parse "^1.5.1" - -sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== - dependencies: - faye-websocket "^0.11.3" - uuid "^3.4.0" - websocket-driver "^0.7.4" - -source-list-map@^2.0.0, source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.17, source-map-support@~0.5.12, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svelte-dev-helper@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz#7d187db5c6cdbbd64d75a32f91b8998bde3273c3" - integrity sha1-fRh9tcbNu9ZNdaMvkbiZi94yc8M= - -svelte-hmr@^0.12.3: - version "0.12.9" - resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.12.9.tgz#e323b71062a59bf4b73d2d5a7cc80dba256217e1" - integrity sha512-SGE7Odznj4dqZtUVIWcoPCvZ9gHImxVIIjrz+O3DDSi0j4OaSLim6MRF4UdhlBKeW3glSRc+tXNSKYvM5x+Dyw== - -svelte-loader@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/svelte-loader/-/svelte-loader-3.1.1.tgz#cb03541214b164edee58e4c98d4303f76df9013d" - integrity sha512-JU7qo1yBdDeJ3Aw23WoGKXrVaSn3KeWkM9KMl43HuMVFrsPNHIzZHTsf1ARJX/Abm3jeqNjigaO35RVbixhmWg== - dependencies: - loader-utils "^2.0.0" - svelte-dev-helper "^1.1.9" - svelte-hmr "^0.12.3" - -svelte-preprocess@^4.7.3: - version "4.7.3" - resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-4.7.3.tgz#454fa059c2400b15e7a3caeca18993cff9df0e96" - integrity sha512-Zx1/xLeGOIBlZMGPRCaXtlMe4ZA0faato5Dc3CosEqwu75MIEPuOstdkH6cy+RYTUYynoxzNaDxkPX4DbrPwRA== - dependencies: - "@types/pug" "^2.0.4" - "@types/sass" "^1.16.0" - detect-indent "^6.0.0" - strip-indent "^3.0.0" - -svelte@^3.38.2: - version "3.38.2" - resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.38.2.tgz#55e5c681f793ae349b5cc2fe58e5782af4275ef5" - integrity sha512-q5Dq0/QHh4BLJyEVWGe7Cej5NWs040LWjMbicBGZ+3qpFWJ1YObRmUDZKbbovddLC9WW7THTj3kYbTOFmU9fbg== - -table@^6.0.4: - version "6.7.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.0.tgz#26274751f0ee099c547f6cb91d3eff0d61d155b2" - integrity sha512-SAM+5p6V99gYiiy2gT5ArdzgM1dLDed0nkrWmG6Fry/bUS/m9x83BwpJUOf1Qj/x2qJd+thL6IkIx7qPGRxqBw== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== - -terser-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" - integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== - dependencies: - jest-worker "^26.6.2" - p-limit "^3.1.0" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.5.1" - -terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.5.1: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -ts-loader@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.1.2.tgz#ba9b9abb05a514e8ff825791a3f6fcf793272728" - integrity sha512-ryMgATvLLl+z8zQvdlm6Pep0slmwxFWIEnq/5VdiLVjqQXnFJgO+qNLGIIP+d2N2jsFZ9MibZCVDb2bSp7OmEA== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - -ts-node@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" - integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== - dependencies: - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.17" - yn "3.1.1" - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== - -tsutils@^3.17.1: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typescript@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" - integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse@^1.4.3, url-parse@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" - integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -watchpack@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" - integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webfontloader@^1.6.28: - version "1.6.28" - resolved "https://registry.yarnpkg.com/webfontloader/-/webfontloader-1.6.28.tgz#db786129253cb6e8eae54c2fb05f870af6675bae" - integrity sha1-23hhKSU8tujq5UwvsF+HCvZnW64= - -webpack-cli@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" - integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.3" - "@webpack-cli/info" "^1.2.4" - "@webpack-cli/serve" "^1.4.0" - colorette "^1.2.1" - commander "^7.0.0" - execa "^5.0.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - v8-compile-cache "^2.2.0" - webpack-merge "^5.7.3" - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.11.2: - version "3.11.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" - integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^5.7.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" - integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-sources@^1.1.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" - integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack@^5.37.0: - version "5.37.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.37.0.tgz#2ab00f613faf494504eb2beef278dab7493cc39d" - integrity sha512-yvdhgcI6QkQkDe1hINBAJ1UNevqNGTVaCkD2SSJcB8rcrNNl922RI8i2DXUAuNfANoxwsiXXEA4ZPZI9q2oGLA== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.47" - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/wasm-edit" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - acorn "^8.2.1" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.0" - es-module-lexer "^0.4.0" - eslint-scope "^5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.0.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.1" - watchpack "^2.0.0" - webpack-sources "^2.1.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@~7.4.2: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== - -xmlhttprequest-ssl@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz#dd6899bfbcf684b554e393c30b13b9f3b001a7ee" - integrity sha512-tYOaldF/0BLfKuoA39QMwD4j2m8lq4DIncqj1yuNELX4vz9+z/ieG/vwmctjJce+boFHXstqhWnHSxc4W8f4qg== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 5cb58d98a0e7ec751e02220abda1ea4d1380173f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 17 May 2021 14:30:54 +0200 Subject: [PATCH 046/203] Adding correct SCSS file integration with Svelte --- front/dist/resources/style/cowebsite.scss | 6 +- front/dist/resources/style/style.css | 52 +- front/package.json | 10 +- front/src/Components/Menu/MenuIcon.svelte | 12 +- .../Stores/RequestedConstraintsStore.ts | 22 - front/tsconfig-for-jasmine.json | 8 + front/tsconfig-for-webpack.json | 7 + front/tsconfig.json | 5 +- front/webpack.config.ts | 62 +- front/yarn.lock | 4929 +++++++++++++++++ 10 files changed, 5039 insertions(+), 74 deletions(-) delete mode 100644 front/src/WebRtc/Stores/RequestedConstraintsStore.ts create mode 100644 front/tsconfig-for-jasmine.json create mode 100644 front/tsconfig-for-webpack.json create mode 100644 front/yarn.lock diff --git a/front/dist/resources/style/cowebsite.scss b/front/dist/resources/style/cowebsite.scss index 515dc0df..f834e122 100644 --- a/front/dist/resources/style/cowebsite.scss +++ b/front/dist/resources/style/cowebsite.scss @@ -4,7 +4,7 @@ position: fixed; transition: transform 0.5s; background-color: white; - + &.loading { background-color: gray; } @@ -15,7 +15,7 @@ height: 100%; } } - + aside { background: gray; align-items: center; @@ -32,7 +32,7 @@ position: absolute; background: none; border: none; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; img { height: 25px; diff --git a/front/dist/resources/style/style.css b/front/dist/resources/style/style.css index dd62a4d4..a90318b3 100644 --- a/front/dist/resources/style/style.css +++ b/front/dist/resources/style/style.css @@ -1,9 +1,9 @@ *{ font-family: 'Open Sans', sans-serif; - cursor: url('/resources/logos/cursor_normal.png'), auto; + cursor: url('../logos/cursor_normal.png'), auto; } * a, button, select{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } body{ overflow: hidden; @@ -39,7 +39,7 @@ body .message-info.warning{ position: relative; transition: all 0.2s ease; background-color: #00000099; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .video-container i{ position: absolute; @@ -75,7 +75,7 @@ body .message-info.warning{ .video-container button.report{ display: block; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; background: none; background-color: rgba(0, 0, 0, 0); border: none; @@ -108,7 +108,7 @@ body .message-info.warning{ left: 5px; margin: 0; padding: 0; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; width: 25px; height: 25px; } @@ -118,7 +118,7 @@ body .message-info.warning{ left: 36px; color: white; font-size: 16px; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .video-container img.active { display: block !important; @@ -126,7 +126,7 @@ body .message-info.warning{ .video-container video{ height: 100%; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .video-container video:focus{ @@ -206,7 +206,7 @@ video#myCamVideo{ } /*btn animation*/ .btn-cam-action div{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; /*position: absolute;*/ border: solid 0px black; width: 44px; @@ -260,7 +260,7 @@ video#myCamVideo{ top: calc(48px - 37px); left: calc(48px - 41px); position: relative; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } /* Spinner */ @@ -572,7 +572,7 @@ input[type=range]:focus::-ms-fill-upper { margin: 2%; flex-basis: 96%; transition: margin-left 0.2s, margin-right 0.2s, margin-bottom 0.2s, margin-top 0.2s, flex-basis 0.2s; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; pointer-events: auto; /*flex-shrink: 2;*/ } @@ -590,7 +590,7 @@ input[type=range]:focus::-ms-fill-upper { .sidebar > div { margin: 2%; transition: margin-left 0.2s, margin-right 0.2s, margin-bottom 0.2s, margin-top 0.2s, max-height 0.2s, max-width 0.2s; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; border-radius: 15px 15px 15px 15px; pointer-events: auto; } @@ -600,7 +600,7 @@ input[type=range]:focus::-ms-fill-upper { } .sidebar > div video { - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } /* Let's make sure videos are vertically centered if they need to be cropped */ @@ -625,7 +625,7 @@ input[type=range]:focus::-ms-fill-upper { margin: 1%; max-height: 96%; transition: margin-left 0.2s, margin-right 0.2s, margin-bottom 0.2s, margin-top 0.2s; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .chat-mode > div:hover { @@ -715,7 +715,7 @@ input[type=range]:focus::-ms-fill-upper { margin-top: 6px; width: 30px; height: 30px; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; padding: 0 5px; transition: all .5s ease; transform: rotateY(0); @@ -739,7 +739,7 @@ input[type=range]:focus::-ms-fill-upper { .main-console div.console:hover, .message-container div.clear:hover { - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; top: calc(100% + 5px); transform: scale(1.2) translateY(3px); } @@ -772,7 +772,7 @@ input[type=range]:focus::-ms-fill-upper { transition: all .2s ease; } .main-console .btn-action .btn:hover{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; background-color: #ffda01; color: black; border: 1px solid black; @@ -787,7 +787,7 @@ input[type=range]:focus::-ms-fill-upper { .main-console .menu span { margin: 20px; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .main-console .menu span.active { @@ -821,10 +821,10 @@ input[type=range]:focus::-ms-fill-upper { } .main-console section div.upload label img{ height: 150px; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .main-console section div.upload label img{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } @@ -917,7 +917,7 @@ div.modal-report-user{ right: 0; left: auto; top: 0; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; width: 15px; height: 15px; margin: 10px; @@ -936,7 +936,7 @@ div.modal-report-user{ transition: all .2s ease; } .modal-report-user button:hover{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; background-color: #ffda01; color: black; border: 1px solid black; @@ -979,7 +979,7 @@ div.modal-report-user{ } .discussion .active-btn{ display: none; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; height: 50px; width: 50px; background-color: #2d2d2dba; @@ -1008,7 +1008,7 @@ div.modal-report-user{ right: 10px; background: none; border: none; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .discussion .close-btn img{ height: 15px; @@ -1033,7 +1033,7 @@ div.modal-report-user{ background-color: #ffffff69; padding: 5px; border-radius: 15px; - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; } .discussion .participants .participant:hover{ @@ -1066,7 +1066,7 @@ div.modal-report-user{ } .discussion .participants .participant button.report-btn{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; position: absolute; background-color: #2d2d2dba; right: 34px; @@ -1176,7 +1176,7 @@ div.action.danger{ animation-timing-function: ease-in-out; } div.action p.action-body{ - cursor: url('/resources/logos/cursor_pointer.png'), pointer; + cursor: url('../logos/cursor_pointer.png'), pointer; padding: 10px; background-color: #2d2d2dba; color: #fff; diff --git a/front/package.json b/front/package.json index 9ec355f7..4e1691de 100644 --- a/front/package.json +++ b/front/package.json @@ -7,11 +7,12 @@ "@tsconfig/svelte": "^1.0.10", "@types/google-protobuf": "^3.7.3", "@types/jasmine": "^3.5.10", + "@types/mini-css-extract-plugin": "^1.4.3", + "@types/node": "^15.3.0", "@types/quill": "^1.3.7", "@types/webpack-dev-server": "^3.11.4", "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", - "autoprefixer": "^10.2.5", "css-loader": "^5.2.4", "eslint": "^7.26.0", "html-webpack-plugin": "^5.3.1", @@ -25,6 +26,7 @@ "svelte-preprocess": "^4.7.3", "ts-loader": "^9.1.2", "ts-node": "^9.1.1", + "tsconfig-paths": "^3.9.0", "typescript": "^4.2.4", "webpack": "^5.37.0", "webpack-cli": "^4.7.0", @@ -45,9 +47,9 @@ "socket.io-client": "^2.3.0" }, "scripts": { - "start": "webpack serve --open", - "build": "NODE_ENV=production webpack", - "test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", + "start": "TS_NODE_PROJECT=\"tsconfig-for-webpack.json\" webpack serve --open", + "build": "TS_NODE_PROJECT=\"tsconfig-for-webpack.json\" NODE_ENV=production webpack", + "test": "TS_NODE_PROJECT=\"tsconfig-for-jasmine.json\" ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", "lint": "node_modules/.bin/eslint src/ . --ext .ts", "fix": "node_modules/.bin/eslint --fix src/ . --ext .ts" } diff --git a/front/src/Components/Menu/MenuIcon.svelte b/front/src/Components/Menu/MenuIcon.svelte index 46c233ba..241bf45f 100644 --- a/front/src/Components/Menu/MenuIcon.svelte +++ b/front/src/Components/Menu/MenuIcon.svelte @@ -10,17 +10,17 @@ - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/front/dist/resources/logos/cinema.svg b/front/src/Components/images/cinema.svg similarity index 100% rename from front/dist/resources/logos/cinema.svg rename to front/src/Components/images/cinema.svg diff --git a/front/dist/resources/logos/microphone-close.svg b/front/src/Components/images/microphone-close.svg similarity index 100% rename from front/dist/resources/logos/microphone-close.svg rename to front/src/Components/images/microphone-close.svg diff --git a/front/dist/resources/logos/microphone.svg b/front/src/Components/images/microphone.svg similarity index 100% rename from front/dist/resources/logos/microphone.svg rename to front/src/Components/images/microphone.svg diff --git a/front/dist/resources/logos/monitor-close.svg b/front/src/Components/images/monitor-close.svg similarity index 100% rename from front/dist/resources/logos/monitor-close.svg rename to front/src/Components/images/monitor-close.svg diff --git a/front/dist/resources/logos/monitor.svg b/front/src/Components/images/monitor.svg similarity index 100% rename from front/dist/resources/logos/monitor.svg rename to front/src/Components/images/monitor.svg diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index fad33de3..36f70918 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -47,12 +47,12 @@ export class MediaManager { localScreenCapture: MediaStream|null = null; private remoteVideo: Map = new Map(); myCamVideo: HTMLVideoElement; - cinemaClose: HTMLImageElement; + /*cinemaClose: HTMLImageElement; cinema: HTMLImageElement; monitorClose: HTMLImageElement; monitor: HTMLImageElement; microphoneClose: HTMLImageElement; - microphone: HTMLImageElement; + microphone: HTMLImageElement;*/ webrtcInAudio: HTMLAudioElement; //FIX ME SOUNDMETER: check stalability of sound meter calculation //mySoundMeterElement: HTMLDivElement; @@ -63,9 +63,9 @@ export class MediaManager { showReportModalCallBacks : Set = new Set(); helpCameraSettingsCallBacks : Set = new Set(); - private microphoneBtn: HTMLDivElement; +/* private microphoneBtn: HTMLDivElement; private cinemaBtn: HTMLDivElement; - private monitorBtn: HTMLDivElement; + private monitorBtn: HTMLDivElement;*/ private focused : boolean = true; @@ -86,7 +86,7 @@ export class MediaManager { this.webrtcInAudio.volume = 0.2; this.webrtcOutAudio.volume = 0.2; - this.microphoneBtn = HtmlUtils.getElementByIdOrFail('btn-micro'); + /*this.microphoneBtn = HtmlUtils.getElementByIdOrFail('btn-micro'); this.microphoneClose = HtmlUtils.getElementByIdOrFail('microphone-close'); this.microphoneClose.style.display = "none"; this.microphoneClose.addEventListener('click', (e: MouseEvent) => { @@ -126,7 +126,7 @@ export class MediaManager { e.preventDefault(); //this.disableScreenSharing(); requestedScreenSharingState.disableScreenSharing(); - }); + });*/ this.pingCameraStatus(); @@ -166,7 +166,7 @@ export class MediaManager { this.triggerUpdatedLocalStreamCallbacks(result.stream); }); - requestedCameraState.subscribe((enabled) => { + /*requestedCameraState.subscribe((enabled) => { if (enabled) { this.enableCameraStyle(); } else { @@ -179,7 +179,7 @@ export class MediaManager { } else { this.disableMicrophoneStyle(); } - }); + });*/ //let screenSharingStream : MediaStream|null; screenSharingLocalStreamStore.subscribe((result) => { if (result.type === 'error') { @@ -191,7 +191,7 @@ export class MediaManager { } if (result.stream !== null) { - this.enableScreenSharingStyle(); + //this.enableScreenSharingStyle(); mediaManager.localScreenCapture = result.stream; // TODO: migrate this out of MediaManager @@ -202,7 +202,7 @@ export class MediaManager { this.addScreenSharingActiveVideo('me', DivImportance.Normal); HtmlUtils.getElementByIdOrFail('screen-sharing-me').srcObject = result.stream; } else { - this.disableScreenSharingStyle(); + //this.disableScreenSharingStyle(); this.removeActiveScreenSharingVideo('me'); // FIXME: we need the old stream that is being stopped! @@ -216,13 +216,13 @@ export class MediaManager { }); - screenSharingAvailableStore.subscribe((available) => { + /*screenSharingAvailableStore.subscribe((available) => { if (available) { document.querySelector('.btn-monitor')?.classList.remove('hide'); } else { document.querySelector('.btn-monitor')?.classList.add('hide'); } - }); + });*/ } public updateScene(){ @@ -290,7 +290,7 @@ export class MediaManager { gameOverlayVisibilityStore.hideGameOverlay(); } - private enableCameraStyle(){ + /*private enableCameraStyle(){ this.cinemaClose.style.display = "none"; this.cinemaBtn.classList.remove("disabled"); this.cinema.style.display = "block"; @@ -324,7 +324,7 @@ export class MediaManager { this.monitorClose.style.display = "block"; this.monitor.style.display = "none"; this.monitorBtn.classList.remove("enabled"); - } + }*/ addActiveVideo(user: UserSimplePeerInterface, userName: string = ""){ this.webrtcInAudio.play(); From cc1eab653a1b7d77fce73356aab50596e318bb81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 28 May 2021 10:48:13 +0200 Subject: [PATCH 077/203] Fixing screen sharing button display --- front/src/Components/CameraControls.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/Components/CameraControls.svelte b/front/src/Components/CameraControls.svelte index b3c94716..98dfa4c5 100644 --- a/front/src/Components/CameraControls.svelte +++ b/front/src/Components/CameraControls.svelte @@ -35,7 +35,7 @@
-
+
{#if $requestedScreenSharingState} Start screen sharing {:else} From d1c22b122c99f6b47ef38a0810fee14b49e794e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 28 May 2021 10:48:24 +0200 Subject: [PATCH 078/203] Improving icons centering --- front/style/style.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/style/style.css b/front/style/style.css index a3bbfa1d..50c842d0 100644 --- a/front/style/style.css +++ b/front/style/style.css @@ -212,7 +212,9 @@ video#myCamVideo{ /*btn animation*/ .btn-cam-action div{ cursor: url('./images/cursor_pointer.png'), pointer; - /*position: absolute;*/ + display: flex; + align-items: center; + justify-content: center; border: solid 0px black; width: 44px; height: 44px; @@ -267,8 +269,6 @@ video#myCamVideo{ .btn-cam-action div img{ height: 22px; width: 30px; - top: calc(48px - 37px); - left: calc(48px - 41px); position: relative; cursor: url('./images/cursor_pointer.png'), pointer; } From 12da6ddd6c136cf63b51bfc2cc47a39567aaa37f Mon Sep 17 00:00:00 2001 From: kharhamel Date: Wed, 26 May 2021 17:07:07 +0200 Subject: [PATCH 079/203] FEATURE: improved the display of player names, with the font-family 'Press start 2P' and gray outlines --- CHANGELOG.md | 5 +++++ front/dist/index.tmpl.html | 1 - front/dist/resources/fonts/fonts.css | 5 +++++ front/package.json | 1 + front/src/Connexion/LocalUser.ts | 5 ++--- front/src/Phaser/Entity/Character.ts | 10 +++++----- front/src/Phaser/Game/GameScene.ts | 8 ++++++++ front/src/index.ts | 9 ++++++++- front/src/rex-plugins.d.ts | 4 ++++ front/style/fonts.scss | 1 + front/style/index.scss | 3 ++- front/tests/Phaser/Connexion/LocalUserTest.ts | 10 ++++++++-- front/webpack.config.ts | 10 +++++++++- front/yarn.lock | 5 +++++ 14 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 front/dist/resources/fonts/fonts.css create mode 100644 front/style/fonts.scss diff --git a/CHANGELOG.md b/CHANGELOG.md index dec14540..d9afd71e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,11 @@ - The emote menu can be opened by clicking on your character. - Clicking on one of its element will close the menu and play an emote above your character. - This emote can be seen by other players. +- Player names were improved. (@Kharhamel) + - We now create a GameObject.Text instead of GameObject.BitmapText + - now use the 'Press Start 2P' font family and added an outline + - As a result, we can now allow non-standard letters like french accents or chinese characters! + - Mobile support has been improved - WorkAdventure automatically sets the zoom level based on the viewport size to ensure a sensible size of the map is visible, whatever the viewport used - Mouse wheel support to zoom in / out diff --git a/front/dist/index.tmpl.html b/front/dist/index.tmpl.html index 7ef44116..01dd58d0 100644 --- a/front/dist/index.tmpl.html +++ b/front/dist/index.tmpl.html @@ -29,7 +29,6 @@ - WorkAdventure diff --git a/front/dist/resources/fonts/fonts.css b/front/dist/resources/fonts/fonts.css new file mode 100644 index 00000000..a3d3cf71 --- /dev/null +++ b/front/dist/resources/fonts/fonts.css @@ -0,0 +1,5 @@ +/*This file is a workaround to allow phaser to load directly this font */ +@font-face { + font-family: "Press Start 2P"; + src: url("/fonts/press-start-2p-latin-400-normal.woff2") format('woff2'); +} \ No newline at end of file diff --git a/front/package.json b/front/package.json index e64c0816..6cf0ee97 100644 --- a/front/package.json +++ b/front/package.json @@ -34,6 +34,7 @@ "webpack-dev-server": "^3.11.2" }, "dependencies": { + "@fontsource/press-start-2p": "^4.3.0", "@types/simple-peer": "^9.6.0", "@types/socket.io-client": "^1.4.32", "axios": "^0.21.1", diff --git a/front/src/Connexion/LocalUser.ts b/front/src/Connexion/LocalUser.ts index 0793a938..43b184cf 100644 --- a/front/src/Connexion/LocalUser.ts +++ b/front/src/Connexion/LocalUser.ts @@ -9,9 +9,8 @@ export interface CharacterTexture { export const maxUserNameLength: number = MAX_USERNAME_LENGTH; -export function isUserNameValid(value: string): boolean { - const regexp = new RegExp('^[A-Za-z0-9]{1,'+maxUserNameLength+'}$'); - return regexp.test(value); +export function isUserNameValid(value: unknown): boolean { + return typeof value === "string" && value.length > 0 && value.length < maxUserNameLength && value.indexOf(' ') === -1; } export function areCharacterLayersValid(value: string[] | null): boolean { diff --git a/front/src/Phaser/Entity/Character.ts b/front/src/Phaser/Entity/Character.ts index b1a85943..9c3273ec 100644 --- a/front/src/Phaser/Entity/Character.ts +++ b/front/src/Phaser/Entity/Character.ts @@ -1,6 +1,6 @@ import {PlayerAnimationDirections, PlayerAnimationTypes} from "../Player/Animation"; import {SpeechBubble} from "./SpeechBubble"; -import BitmapText = Phaser.GameObjects.BitmapText; +import Text = Phaser.GameObjects.Text; import Container = Phaser.GameObjects.Container; import Sprite = Phaser.GameObjects.Sprite; import {TextureError} from "../../Exception/TextureError"; @@ -23,7 +23,7 @@ const interactiveRadius = 35; export abstract class Character extends Container { private bubble: SpeechBubble|null = null; - private readonly playerName: BitmapText; + private readonly playerName: Text; public PlayerValue: string; public sprites: Map; private lastDirection: PlayerAnimationDirections = PlayerAnimationDirections.Down; @@ -55,9 +55,9 @@ export abstract class Character extends Container { this.addTextures(textures, frame); this.invisible = false }) - - this.playerName = new BitmapText(scene, 0, playerNameY, 'main_font', name, 7); - this.playerName.setOrigin(0.5).setCenterAlign().setDepth(DEPTH_INGAME_TEXT_INDEX); + + this.playerName = new Text(scene, 0, playerNameY, name, {fontFamily: '"Press Start 2P"', fontSize: '8px', strokeThickness: 2, stroke: "gray"}); + this.playerName.setOrigin(0.5).setDepth(DEPTH_INGAME_TEXT_INDEX); this.add(this.playerName); if (this.isClickable()) { diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 4de5ffd9..91286ba9 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -279,6 +279,14 @@ export class GameScene extends DirtyScene implements CenterListener { this.load.spritesheet('layout_modes', 'resources/objects/layout_modes.png', {frameWidth: 32, frameHeight: 32}); this.load.bitmapFont('main_font', 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); + //eslint-disable-next-line @typescript-eslint/no-explicit-any + (this.load as any).rexWebFont({ + custom: { + families: ['Press Start 2P'], + urls: ['/resources/fonts/fonts.css'], + testString: 'abcdefg' + }, + }); //this function must stay at the end of preload function addLoader(this); diff --git a/front/src/index.ts b/front/src/index.ts index 2cdcaa19..f9017c24 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -9,7 +9,7 @@ import {SelectCharacterScene} from "./Phaser/Login/SelectCharacterScene"; import {SelectCompanionScene} from "./Phaser/Login/SelectCompanionScene"; import {EnableCameraScene} from "./Phaser/Login/EnableCameraScene"; import {CustomizeScene} from "./Phaser/Login/CustomizeScene"; -import {ResizableScene} from "./Phaser/Login/ResizableScene"; +import WebFontLoaderPlugin from 'phaser3-rex-plugins/plugins/webfontloader-plugin.js'; import {EntryScene} from "./Phaser/Login/EntryScene"; import {coWebsiteManager} from "./WebRtc/CoWebsiteManager"; import {MenuScene} from "./Phaser/Menu/MenuScene"; @@ -107,6 +107,13 @@ const config: GameConfig = { roundPixels: true, antialias: false }, + plugins: { + global: [{ + key: 'rexWebFontLoader', + plugin: WebFontLoaderPlugin, + start: true + }] + }, physics: { default: "arcade", arcade: { diff --git a/front/src/rex-plugins.d.ts b/front/src/rex-plugins.d.ts index d5457702..2e160315 100644 --- a/front/src/rex-plugins.d.ts +++ b/front/src/rex-plugins.d.ts @@ -7,6 +7,10 @@ declare module 'phaser3-rex-plugins/plugins/gestures-plugin.js' { const content: any; // eslint-disable-line export default content; } +declare module 'phaser3-rex-plugins/plugins/webfontloader-plugin.js' { + const content: any; // eslint-disable-line + export default content; +} declare module 'phaser3-rex-plugins/plugins/gestures.js' { export const Pinch: any; // eslint-disable-line } diff --git a/front/style/fonts.scss b/front/style/fonts.scss new file mode 100644 index 00000000..5ef9b9b4 --- /dev/null +++ b/front/style/fonts.scss @@ -0,0 +1 @@ +@import "~@fontsource/press-start-2p/index.css"; \ No newline at end of file diff --git a/front/style/index.scss b/front/style/index.scss index 67e85c5b..47f13c3b 100644 --- a/front/style/index.scss +++ b/front/style/index.scss @@ -1,4 +1,5 @@ @import "cowebsite.scss"; @import "cowebsite-mobile.scss"; @import "style.css"; -@import "mobile-style.scss"; \ No newline at end of file +@import "mobile-style.scss"; +@import "fonts.scss"; \ No newline at end of file diff --git a/front/tests/Phaser/Connexion/LocalUserTest.ts b/front/tests/Phaser/Connexion/LocalUserTest.ts index 25b54005..4ba20745 100644 --- a/front/tests/Phaser/Connexion/LocalUserTest.ts +++ b/front/tests/Phaser/Connexion/LocalUserTest.ts @@ -19,8 +19,14 @@ describe("isUserNameValid()", () => { it("should not validate spaces", () => { expect(isUserNameValid(' ')).toBe(false); }); - it("should not validate special characters", () => { - expect(isUserNameValid('a&-')).toBe(false); + it("should validate special characters", () => { + expect(isUserNameValid('%&-')).toBe(true); + }); + it("should validate accents", () => { + expect(isUserNameValid('éàëè')).toBe(true); + }); + it("should validate chinese characters", () => { + expect(isUserNameValid('中文鍵盤')).toBe(true); }); }); diff --git a/front/webpack.config.ts b/front/webpack.config.ts index cc87572a..6ebf907f 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -102,9 +102,17 @@ module.exports = { } }, { - test: /\.(ttf|eot|svg|png|gif|jpg)$/, + test: /\.(eot|svg|png|gif|jpg)$/, exclude: /node_modules/, type: 'asset' + }, + { + test: /\.(woff(2)?|ttf)$/, + type: 'asset', + generator: { + filename: 'fonts/[name][ext]' + } + } ], }, diff --git a/front/yarn.lock b/front/yarn.lock index bbdf0e06..180c82bf 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -50,6 +50,11 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@fontsource/press-start-2p@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@fontsource/press-start-2p/-/press-start-2p-4.3.0.tgz#37124387f7fbfe7792b5fc9a1906b80d9aeda4c6" + integrity sha512-gmS4070EoZp5/6NUJ+tBnvtDiSmFcR+S+ClAOJ8NGFXDWOkO12yMnyGJEJaDCNCAMX0s2TQCcmr6qWKx5ad3RQ== + "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" From ee3097e6b068a095858bef361519705a3663c182 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 May 2021 13:41:07 +0000 Subject: [PATCH 080/203] Bump dns-packet from 1.3.1 to 1.3.4 in /front Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4. - [Release notes](https://github.com/mafintosh/dns-packet/releases) - [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md) - [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4) Signed-off-by: dependabot[bot] --- front/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/yarn.lock b/front/yarn.lock index 180c82bf..f625748d 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -1626,9 +1626,9 @@ dns-equal@^1.0.0: integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" From b3aa8975e94831adae820a3f163ade4ddb2468ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 28 May 2021 15:48:58 +0200 Subject: [PATCH 081/203] Switching the video feedback in Svelte --- front/dist/index.tmpl.html | 26 --------- front/src/Components/App.svelte | 2 + front/src/Components/MyCamera.svelte | 46 +++++++++++++++ front/src/Components/SoundMeterWidget.svelte | 36 ++++++++++++ front/src/WebRtc/MediaManager.ts | 60 +------------------- front/style/mobile-style.scss | 32 +++++------ front/style/style.css | 8 +-- 7 files changed, 107 insertions(+), 103 deletions(-) create mode 100644 front/src/Components/MyCamera.svelte create mode 100644 front/src/Components/SoundMeterWidget.svelte diff --git a/front/dist/index.tmpl.html b/front/dist/index.tmpl.html index 1da7fad6..d5b97023 100644 --- a/front/dist/index.tmpl.html +++ b/front/dist/index.tmpl.html @@ -47,32 +47,6 @@ -
-
- -
- - - - - -
-
-
-
diff --git a/front/src/Components/MyCamera.svelte b/front/src/Components/MyCamera.svelte new file mode 100644 index 00000000..6e1e50ef --- /dev/null +++ b/front/src/Components/MyCamera.svelte @@ -0,0 +1,46 @@ + + + +
+
+ + +
+
diff --git a/front/src/Components/SoundMeterWidget.svelte b/front/src/Components/SoundMeterWidget.svelte new file mode 100644 index 00000000..cff6be86 --- /dev/null +++ b/front/src/Components/SoundMeterWidget.svelte @@ -0,0 +1,36 @@ + + + +
0}> + 1}> + 2}> + 3}> + 4}> + 5}> +
diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 36f70918..bb86e70f 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -46,13 +46,6 @@ export class MediaManager { localStream: MediaStream|null = null; localScreenCapture: MediaStream|null = null; private remoteVideo: Map = new Map(); - myCamVideo: HTMLVideoElement; - /*cinemaClose: HTMLImageElement; - cinema: HTMLImageElement; - monitorClose: HTMLImageElement; - monitor: HTMLImageElement; - microphoneClose: HTMLImageElement; - microphone: HTMLImageElement;*/ webrtcInAudio: HTMLAudioElement; //FIX ME SOUNDMETER: check stalability of sound meter calculation //mySoundMeterElement: HTMLDivElement; @@ -63,10 +56,6 @@ export class MediaManager { showReportModalCallBacks : Set = new Set(); helpCameraSettingsCallBacks : Set = new Set(); -/* private microphoneBtn: HTMLDivElement; - private cinemaBtn: HTMLDivElement; - private monitorBtn: HTMLDivElement;*/ - private focused : boolean = true; private triggerCloseJistiFrame : Map = new Map(); @@ -80,54 +69,11 @@ export class MediaManager { constructor() { - this.myCamVideo = HtmlUtils.getElementByIdOrFail('myCamVideo'); this.webrtcInAudio = HtmlUtils.getElementByIdOrFail('audio-webrtc-in'); this.webrtcOutAudio = HtmlUtils.getElementByIdOrFail('audio-webrtc-out'); this.webrtcInAudio.volume = 0.2; this.webrtcOutAudio.volume = 0.2; - /*this.microphoneBtn = HtmlUtils.getElementByIdOrFail('btn-micro'); - this.microphoneClose = HtmlUtils.getElementByIdOrFail('microphone-close'); - this.microphoneClose.style.display = "none"; - this.microphoneClose.addEventListener('click', (e: MouseEvent) => { - e.preventDefault(); - requestedMicrophoneState.enableMicrophone(); - }); - this.microphone = HtmlUtils.getElementByIdOrFail('microphone'); - this.microphone.addEventListener('click', (e: MouseEvent) => { - e.preventDefault(); - requestedMicrophoneState.disableMicrophone(); - }); - - this.cinemaBtn = HtmlUtils.getElementByIdOrFail('btn-video'); - this.cinemaClose = HtmlUtils.getElementByIdOrFail('cinema-close'); - this.cinemaClose.style.display = "none"; - this.cinemaClose.addEventListener('click', (e: MouseEvent) => { - e.preventDefault(); - requestedCameraState.enableWebcam(); - }); - this.cinema = HtmlUtils.getElementByIdOrFail('cinema'); - this.cinema.addEventListener('click', (e: MouseEvent) => { - e.preventDefault(); - requestedCameraState.disableWebcam(); - }); - - this.monitorBtn = HtmlUtils.getElementByIdOrFail('btn-monitor'); - this.monitorClose = HtmlUtils.getElementByIdOrFail('monitor-close'); - this.monitorClose.style.display = "block"; - this.monitorClose.addEventListener('click', (e: MouseEvent) => { - e.preventDefault(); - //this.enableScreenSharing(); - requestedScreenSharingState.enableScreenSharing(); - }); - this.monitor = HtmlUtils.getElementByIdOrFail('monitor'); - this.monitor.style.display = "none"; - this.monitor.addEventListener('click', (e: MouseEvent) => { - e.preventDefault(); - //this.disableScreenSharing(); - requestedScreenSharingState.disableScreenSharing(); - });*/ - this.pingCameraStatus(); //FIX ME SOUNDMETER: check stability of sound meter calculation @@ -148,11 +94,11 @@ export class MediaManager { return; } - if (result.constraints.video !== false) { + /*if (result.constraints.video !== false) { HtmlUtils.getElementByIdOrFail('div-myCamVideo').classList.remove('hide'); } else { HtmlUtils.getElementByIdOrFail('div-myCamVideo').classList.add('hide'); - }/* + } if (result.constraints.audio !== false) { this.enableMicrophoneStyle(); } else { @@ -160,7 +106,7 @@ export class MediaManager { }*/ this.localStream = result.stream; - this.myCamVideo.srcObject = this.localStream; + //this.myCamVideo.srcObject = this.localStream; // TODO: migrate all listeners to the store directly. this.triggerUpdatedLocalStreamCallbacks(result.stream); diff --git a/front/style/mobile-style.scss b/front/style/mobile-style.scss index 21753ebd..1b37053a 100644 --- a/front/style/mobile-style.scss +++ b/front/style/mobile-style.scss @@ -1,9 +1,24 @@ +@media (hover: none) { + /** + * If we cannot hover over elements, let's display camera button in full. + */ + .btn-cam-action { + div { + transform: translateY(0px); + } + } +} + @media screen and (max-width: 700px), screen and (max-height: 700px){ - video#myCamVideo { + video.myCamVideo { width: 150px; } + .div-myCamVideo.hide { + right: -160px; + } + .sidebar { width: 20%; min-width: 200px; @@ -22,21 +37,6 @@ } } - .btn-cam-action { - min-width: 150px; - - &:hover{ - transform: translateY(20px); - } - div { - margin: 0 1%; - &:hover { - background-color: #666; - } - margin-bottom: 30px; - } - } - .main-section { position: absolute; width: 100%; diff --git a/front/style/style.css b/front/style/style.css index 50c842d0..525b517a 100644 --- a/front/style/style.css +++ b/front/style/style.css @@ -133,11 +133,11 @@ body .message-info.warning{ outline: none; } -.video-container#div-myCamVideo{ +.video-container.div-myCamVideo{ border: none; } -#div-myCamVideo { +.div-myCamVideo { position: absolute; right: 15px; bottom: 30px; @@ -146,11 +146,11 @@ body .message-info.warning{ transition: right 350ms; } -#div-myCamVideo.hide { +.div-myCamVideo.hide { right: -20vw; } -video#myCamVideo{ +video.myCamVideo{ width: 15vw; -webkit-transform: scaleX(-1); transform: scaleX(-1); From 679b5b6b7945476a2ee5313c9d9ecb10b64ec5ee Mon Sep 17 00:00:00 2001 From: kharhamel Date: Fri, 28 May 2021 17:51:18 +0200 Subject: [PATCH 082/203] FIX: better error text in LoginScene --- front/src/Phaser/Login/LoginScene.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/src/Phaser/Login/LoginScene.ts b/front/src/Phaser/Login/LoginScene.ts index 435592f2..1761f664 100644 --- a/front/src/Phaser/Login/LoginScene.ts +++ b/front/src/Phaser/Login/LoginScene.ts @@ -41,7 +41,7 @@ export class LoginScene extends ResizableScene { } pErrorElement.innerHTML = ''; if(inputElement.value && !isUserNameValid(inputElement.value)){ - pErrorElement.innerHTML = 'Invalid user name: only letters and numbers are allowed. No spaces.'; + pErrorElement.innerHTML = 'Invalid user name: No spaces are allowed.'; } if (event.key === 'Enter') { event.preventDefault(); From b7f14614057de0fabab0ea338dc248b8f7112ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sat, 29 May 2021 22:04:08 +0200 Subject: [PATCH 083/203] Removing listeners from MediaManager. SimplePeer now reacts only to stores. --- .../dist/resources/logos/microphone-close.svg | 27 +++++ front/src/WebRtc/MediaManager.ts | 101 ------------------ front/src/WebRtc/ScreenSharingPeer.ts | 16 +-- front/src/WebRtc/SimplePeer.ts | 96 ++++++++++------- 4 files changed, 90 insertions(+), 150 deletions(-) create mode 100644 front/dist/resources/logos/microphone-close.svg diff --git a/front/dist/resources/logos/microphone-close.svg b/front/dist/resources/logos/microphone-close.svg new file mode 100644 index 00000000..16731829 --- /dev/null +++ b/front/dist/resources/logos/microphone-close.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index bb86e70f..5ddc4905 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -44,13 +44,11 @@ export type HelpCameraSettingsCallBack = () => void; export class MediaManager { localStream: MediaStream|null = null; - localScreenCapture: MediaStream|null = null; private remoteVideo: Map = new Map(); webrtcInAudio: HTMLAudioElement; //FIX ME SOUNDMETER: check stalability of sound meter calculation //mySoundMeterElement: HTMLDivElement; private webrtcOutAudio: HTMLAudioElement; - updatedLocalStreamCallBacks : Set = new Set(); startScreenSharingCallBacks : Set = new Set(); stopScreenSharingCallBacks : Set = new Set(); showReportModalCallBacks : Set = new Set(); @@ -108,24 +106,8 @@ export class MediaManager { this.localStream = result.stream; //this.myCamVideo.srcObject = this.localStream; - // TODO: migrate all listeners to the store directly. - this.triggerUpdatedLocalStreamCallbacks(result.stream); }); - /*requestedCameraState.subscribe((enabled) => { - if (enabled) { - this.enableCameraStyle(); - } else { - this.disableCameraStyle(); - } - }); - requestedMicrophoneState.subscribe((enabled) => { - if (enabled) { - this.enableMicrophoneStyle(); - } else { - this.disableMicrophoneStyle(); - } - });*/ //let screenSharingStream : MediaStream|null; screenSharingLocalStreamStore.subscribe((result) => { if (result.type === 'error') { @@ -137,26 +119,13 @@ export class MediaManager { } if (result.stream !== null) { - //this.enableScreenSharingStyle(); - mediaManager.localScreenCapture = result.stream; - - // TODO: migrate this out of MediaManager - this.triggerStartedScreenSharingCallbacks(result.stream); - //screenSharingStream = result.stream; this.addScreenSharingActiveVideo('me', DivImportance.Normal); HtmlUtils.getElementByIdOrFail('screen-sharing-me').srcObject = result.stream; } else { - //this.disableScreenSharingStyle(); this.removeActiveScreenSharingVideo('me'); - // FIXME: we need the old stream that is being stopped! - if (this.localScreenCapture) { - this.triggerStoppedScreenSharingCallbacks(this.localScreenCapture); - this.localScreenCapture = null; - } - //screenSharingStream = null; } @@ -176,40 +145,6 @@ export class MediaManager { //this.updateSoudMeter(); } - public onUpdateLocalStream(callback: UpdatedLocalStreamCallback): void { - this.updatedLocalStreamCallBacks.add(callback); - } - - public onStartScreenSharing(callback: StartScreenSharingCallback): void { - this.startScreenSharingCallBacks.add(callback); - } - - public onStopScreenSharing(callback: StopScreenSharingCallback): void { - this.stopScreenSharingCallBacks.add(callback); - } - - removeUpdateLocalStreamEventListener(callback: UpdatedLocalStreamCallback): void { - this.updatedLocalStreamCallBacks.delete(callback); - } - - private triggerUpdatedLocalStreamCallbacks(stream: MediaStream|null): void { - for (const callback of this.updatedLocalStreamCallBacks) { - callback(stream); - } - } - - private triggerStartedScreenSharingCallbacks(stream: MediaStream): void { - for (const callback of this.startScreenSharingCallBacks) { - callback(stream); - } - } - - private triggerStoppedScreenSharingCallbacks(stream: MediaStream): void { - for (const callback of this.stopScreenSharingCallBacks) { - callback(stream); - } - } - public showGameOverlay(): void { const gameOverlay = HtmlUtils.getElementByIdOrFail('game-overlay'); gameOverlay.classList.add('active'); @@ -236,42 +171,6 @@ export class MediaManager { gameOverlayVisibilityStore.hideGameOverlay(); } - /*private enableCameraStyle(){ - this.cinemaClose.style.display = "none"; - this.cinemaBtn.classList.remove("disabled"); - this.cinema.style.display = "block"; - } - - private disableCameraStyle(){ - this.cinemaClose.style.display = "block"; - this.cinema.style.display = "none"; - this.cinemaBtn.classList.add("disabled"); - } - - private enableMicrophoneStyle(){ - this.microphoneClose.style.display = "none"; - this.microphone.style.display = "block"; - this.microphoneBtn.classList.remove("disabled"); - } - - private disableMicrophoneStyle(){ - this.microphoneClose.style.display = "block"; - this.microphone.style.display = "none"; - this.microphoneBtn.classList.add("disabled"); - } - - private enableScreenSharingStyle(){ - this.monitorClose.style.display = "none"; - this.monitor.style.display = "block"; - this.monitorBtn.classList.add("enabled"); - } - - private disableScreenSharingStyle(){ - this.monitorClose.style.display = "block"; - this.monitor.style.display = "none"; - this.monitorBtn.classList.remove("enabled"); - }*/ - addActiveVideo(user: UserSimplePeerInterface, userName: string = ""){ this.webrtcInAudio.play(); const userId = ''+user.userId diff --git a/front/src/WebRtc/ScreenSharingPeer.ts b/front/src/WebRtc/ScreenSharingPeer.ts index f1786ef3..947549eb 100644 --- a/front/src/WebRtc/ScreenSharingPeer.ts +++ b/front/src/WebRtc/ScreenSharingPeer.ts @@ -19,7 +19,7 @@ export class ScreenSharingPeer extends Peer { public _connected: boolean = false; private userId: number; - constructor(user: UserSimplePeerInterface, initiator: boolean, private connection: RoomConnection) { + constructor(user: UserSimplePeerInterface, initiator: boolean, private connection: RoomConnection, stream: MediaStream | null) { super({ initiator: initiator ? initiator : false, //reconnectTimer: 10000, @@ -81,7 +81,9 @@ export class ScreenSharingPeer extends Peer { this._onFinish(); }); - this.pushScreenSharingToRemoteUser(); + if (stream) { + this.addStream(stream); + } } private sendWebrtcScreenSharingSignal(data: unknown) { @@ -141,16 +143,6 @@ export class ScreenSharingPeer extends Peer { } } - private pushScreenSharingToRemoteUser() { - const localScreenCapture: MediaStream | null = mediaManager.localScreenCapture; - if(!localScreenCapture){ - return; - } - - this.addStream(localScreenCapture); - return; - } - public stopPushingScreenSharingToRemoteUser(stream: MediaStream) { this.removeStream(stream); this.write(new Buffer(JSON.stringify({type: MESSAGE_TYPE_CONSTRAINT, streamEnded: true}))); diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index 4633374d..ba2cb05e 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -15,7 +15,10 @@ import {connectionManager} from "../Connexion/ConnectionManager"; import {GameConnexionTypes} from "../Url/UrlManager"; import {blackListManager} from "./BlackListManager"; import {get} from "svelte/store"; -import {localStreamStore, obtainedMediaConstraintStore} from "../Stores/MediaStore"; +import {localStreamStore, LocalStreamStoreValue, obtainedMediaConstraintStore} from "../Stores/MediaStore"; +import {screenSharingLocalStreamStore} from "../Stores/ScreenSharingStore"; +import {DivImportance, layoutManager} from "./LayoutManager"; +import {HtmlUtils} from "./HtmlUtils"; export interface UserSimplePeerInterface{ userId: number; @@ -39,9 +42,9 @@ export class SimplePeer { private PeerScreenSharingConnectionArray: Map = new Map(); private PeerConnectionArray: Map = new Map(); - private readonly sendLocalVideoStreamCallback: UpdatedLocalStreamCallback; private readonly sendLocalScreenSharingStreamCallback: StartScreenSharingCallback; private readonly stopLocalScreenSharingStreamCallback: StopScreenSharingCallback; + private readonly unsubscribers: (() => void)[] = []; private readonly peerConnectionListeners: Array = new Array(); private readonly userId: number; private lastWebrtcUserName: string|undefined; @@ -49,13 +52,32 @@ export class SimplePeer { constructor(private Connection: RoomConnection, private enableReporting: boolean, private myName: string) { // We need to go through this weird bound function pointer in order to be able to "free" this reference later. - this.sendLocalVideoStreamCallback = this.sendLocalVideoStream.bind(this); this.sendLocalScreenSharingStreamCallback = this.sendLocalScreenSharingStream.bind(this); this.stopLocalScreenSharingStreamCallback = this.stopLocalScreenSharingStream.bind(this); - mediaManager.onUpdateLocalStream(this.sendLocalVideoStreamCallback); - mediaManager.onStartScreenSharing(this.sendLocalScreenSharingStreamCallback); - mediaManager.onStopScreenSharing(this.stopLocalScreenSharingStreamCallback); + this.unsubscribers.push(localStreamStore.subscribe((streamResult) => { + this.sendLocalVideoStream(streamResult); + })); + + let localScreenCapture: MediaStream|null = null; + + this.unsubscribers.push(screenSharingLocalStreamStore.subscribe((streamResult) => { + if (streamResult.type === 'error') { + // Let's ignore screen sharing errors, we will deal with those in a different way. + return; + } + + if (streamResult.stream !== null) { + localScreenCapture = streamResult.stream; + this.sendLocalScreenSharingStream(localScreenCapture); + } else { + if (localScreenCapture) { + this.stopLocalScreenSharingStream(localScreenCapture); + localScreenCapture = null; + } + } + })); + this.userId = Connection.getUserId(); this.initialise(); } @@ -155,8 +177,9 @@ export class SimplePeer { // When a connection is established to a video stream, and if a screen sharing is taking place, // the user sharing screen should also initiate a connection to the remote user! peer.on('connect', () => { - if (mediaManager.localScreenCapture) { - this.sendLocalScreenSharingStreamToUser(user.userId); + const streamResult = get(screenSharingLocalStreamStore); + if (streamResult.type === 'success' && streamResult.stream !== null) { + this.sendLocalScreenSharingStreamToUser(user.userId, streamResult.stream); } }); @@ -175,7 +198,7 @@ export class SimplePeer { /** * create peer connection to bind users */ - private createPeerScreenSharingConnection(user : UserSimplePeerInterface) : ScreenSharingPeer | null{ + private createPeerScreenSharingConnection(user : UserSimplePeerInterface, stream: MediaStream | null) : ScreenSharingPeer | null{ const peerConnection = this.PeerScreenSharingConnectionArray.get(user.userId); if(peerConnection){ if(peerConnection.destroyed){ @@ -204,7 +227,7 @@ export class SimplePeer { user.webRtcPassword = this.lastWebrtcPassword; } - const peer = new ScreenSharingPeer(user, user.initiator ? user.initiator : false, this.Connection); + const peer = new ScreenSharingPeer(user, user.initiator ? user.initiator : false, this.Connection, stream); this.PeerScreenSharingConnectionArray.set(user.userId, peer); for (const peerConnectionListener of this.peerConnectionListeners) { @@ -294,7 +317,9 @@ export class SimplePeer { * Unregisters any held event handler. */ public unregister() { - mediaManager.removeUpdateLocalStreamEventListener(this.sendLocalVideoStreamCallback); + for (const unsubscriber of this.unsubscribers) { + unsubscriber(); + } } // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -318,18 +343,26 @@ export class SimplePeer { private receiveWebrtcScreenSharingSignal(data: WebRtcSignalReceivedMessageInterface) { if (blackListManager.isBlackListed(data.userId)) return; console.log("receiveWebrtcScreenSharingSignal", data); + const streamResult = get(screenSharingLocalStreamStore); + let stream : MediaStream | null = null; + if (streamResult.type === 'success' && streamResult.stream !== null) { + stream = streamResult.stream; + } + try { //if offer type, create peer connection if(data.signal.type === "offer"){ - this.createPeerScreenSharingConnection(data); + this.createPeerScreenSharingConnection(data, stream); } const peer = this.PeerScreenSharingConnectionArray.get(data.userId); if (peer !== undefined) { peer.signal(data.signal); } else { console.error('Could not find peer whose ID is "'+data.userId+'" in receiveWebrtcScreenSharingSignal'); - console.info('tentative to create new peer connexion'); - this.sendLocalScreenSharingStreamToUser(data.userId); + console.info('Attempt to create new peer connexion'); + if (stream) { + this.sendLocalScreenSharingStreamToUser(data.userId, stream); + } } } catch (e) { console.error(`receiveWebrtcSignal => ${data.userId}`, e); @@ -339,21 +372,19 @@ export class SimplePeer { } } - private pushVideoToRemoteUser(userId : number) { + private pushVideoToRemoteUser(userId: number, streamResult: LocalStreamStoreValue) { try { const PeerConnection = this.PeerConnectionArray.get(userId); if (!PeerConnection) { throw new Error('While adding media, cannot find user with ID ' + userId); } - const result = get(localStreamStore); + PeerConnection.write(new Buffer(JSON.stringify({type: MESSAGE_TYPE_CONSTRAINT, ...streamResult.constraints}))); - PeerConnection.write(new Buffer(JSON.stringify({type: MESSAGE_TYPE_CONSTRAINT, ...result.constraints}))); - - if (result.type === 'error') { + if (streamResult.type === 'error') { return; } - const localStream: MediaStream | null = result.stream; + const localStream: MediaStream | null = streamResult.stream; if(!localStream){ return; @@ -370,15 +401,11 @@ export class SimplePeer { } } - private pushScreenSharingToRemoteUser(userId : number) { + private pushScreenSharingToRemoteUser(userId: number, localScreenCapture: MediaStream) { const PeerConnection = this.PeerScreenSharingConnectionArray.get(userId); if (!PeerConnection) { throw new Error('While pushing screen sharing, cannot find user with ID ' + userId); } - const localScreenCapture: MediaStream | null = mediaManager.localScreenCapture; - if(!localScreenCapture){ - return; - } for (const track of localScreenCapture.getTracks()) { PeerConnection.addTrack(track, localScreenCapture); @@ -386,23 +413,18 @@ export class SimplePeer { return; } - public sendLocalVideoStream(){ + public sendLocalVideoStream(streamResult: LocalStreamStoreValue){ for (const user of this.Users) { - this.pushVideoToRemoteUser(user.userId); + this.pushVideoToRemoteUser(user.userId, streamResult); } } /** * Triggered locally when clicking on the screen sharing button */ - public sendLocalScreenSharingStream() { - if (!mediaManager.localScreenCapture) { - console.error('Could not find localScreenCapture to share') - return; - } - + public sendLocalScreenSharingStream(localScreenCapture: MediaStream) { for (const user of this.Users) { - this.sendLocalScreenSharingStreamToUser(user.userId); + this.sendLocalScreenSharingStreamToUser(user.userId, localScreenCapture); } } @@ -415,11 +437,11 @@ export class SimplePeer { } } - private sendLocalScreenSharingStreamToUser(userId: number): void { + private sendLocalScreenSharingStreamToUser(userId: number, localScreenCapture: MediaStream): void { if (blackListManager.isBlackListed(userId)) return; // If a connection already exists with user (because it is already sharing a screen with us... let's use this connection) if (this.PeerScreenSharingConnectionArray.has(userId)) { - this.pushScreenSharingToRemoteUser(userId); + this.pushScreenSharingToRemoteUser(userId, localScreenCapture); return; } @@ -427,7 +449,7 @@ export class SimplePeer { userId, initiator: true }; - const PeerConnectionScreenSharing = this.createPeerScreenSharingConnection(screenSharingUser); + const PeerConnectionScreenSharing = this.createPeerScreenSharingConnection(screenSharingUser, localScreenCapture); if (!PeerConnectionScreenSharing) { return; } From 588e5566d0239f649aa60e733171cf63896cdf60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sat, 29 May 2021 22:05:47 +0200 Subject: [PATCH 084/203] Fixing buttons design Fixing the color of camera/microphone/screen sharing buttons that was broken following the migration to Svelte --- front/src/Components/CameraControls.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/src/Components/CameraControls.svelte b/front/src/Components/CameraControls.svelte index 98dfa4c5..bd35d230 100644 --- a/front/src/Components/CameraControls.svelte +++ b/front/src/Components/CameraControls.svelte @@ -35,21 +35,21 @@
-
+
{#if $requestedScreenSharingState} Start screen sharing {:else} Stop screen sharing {/if}
-
+
{#if $requestedCameraState} Turn on webcam {:else} Turn off webcam {/if}
-
+
{#if $requestedMicrophoneState} Turn on microphone {:else} From 90176da8886b4a311c05f5e0bef8f6e62acdfb2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sat, 29 May 2021 22:34:38 +0200 Subject: [PATCH 085/203] MediaManager cleanup - Removing the last reference to the local video stream. Everything is now fetched from the store. - Remvoing commented code --- front/src/WebRtc/MediaManager.ts | 43 -------------------------------- front/src/WebRtc/SimplePeer.ts | 26 +++++++++++++------ front/src/WebRtc/VideoPeer.ts | 7 +++--- 3 files changed, 22 insertions(+), 54 deletions(-) diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 5ddc4905..5ab603d2 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -8,33 +8,11 @@ import {SoundMeter} from "../Phaser/Components/SoundMeter"; import {DISABLE_NOTIFICATIONS} from "../Enum/EnvironmentVariable"; import { gameOverlayVisibilityStore, localStreamStore, - mediaStreamConstraintsStore, - requestedCameraState, - requestedMicrophoneState } from "../Stores/MediaStore"; import { - requestedScreenSharingState, - screenSharingAvailableStore, screenSharingLocalStreamStore } from "../Stores/ScreenSharingStore"; -declare const navigator:any; // eslint-disable-line @typescript-eslint/no-explicit-any - -const videoConstraint: boolean|MediaTrackConstraints = { - width: { min: 640, ideal: 1280, max: 1920 }, - height: { min: 400, ideal: 720 }, - frameRate: { ideal: localUserStore.getVideoQualityValue() }, - facingMode: "user", - resizeMode: 'crop-and-scale', - aspectRatio: 1.777777778 -}; -const audioConstraint: boolean|MediaTrackConstraints = { - //TODO: make these values configurable in the game settings menu and store them in localstorage - autoGainControl: false, - echoCancellation: true, - noiseSuppression: true -}; - export type UpdatedLocalStreamCallback = (media: MediaStream|null) => void; export type StartScreenSharingCallback = (media: MediaStream) => void; export type StopScreenSharingCallback = (media: MediaStream) => void; @@ -43,7 +21,6 @@ export type ShowReportCallBack = (userId: string, userName: string|undefined) => export type HelpCameraSettingsCallBack = () => void; export class MediaManager { - localStream: MediaStream|null = null; private remoteVideo: Map = new Map(); webrtcInAudio: HTMLAudioElement; //FIX ME SOUNDMETER: check stalability of sound meter calculation @@ -91,24 +68,8 @@ export class MediaManager { }, this.userInputManager); return; } - - /*if (result.constraints.video !== false) { - HtmlUtils.getElementByIdOrFail('div-myCamVideo').classList.remove('hide'); - } else { - HtmlUtils.getElementByIdOrFail('div-myCamVideo').classList.add('hide'); - } - if (result.constraints.audio !== false) { - this.enableMicrophoneStyle(); - } else { - this.disableMicrophoneStyle(); - }*/ - - this.localStream = result.stream; - //this.myCamVideo.srcObject = this.localStream; - }); - //let screenSharingStream : MediaStream|null; screenSharingLocalStreamStore.subscribe((result) => { if (result.type === 'error') { console.error(result.error); @@ -119,14 +80,10 @@ export class MediaManager { } if (result.stream !== null) { - //screenSharingStream = result.stream; - this.addScreenSharingActiveVideo('me', DivImportance.Normal); HtmlUtils.getElementByIdOrFail('screen-sharing-me').srcObject = result.stream; } else { this.removeActiveScreenSharingVideo('me'); - - //screenSharingStream = null; } }); diff --git a/front/src/WebRtc/SimplePeer.ts b/front/src/WebRtc/SimplePeer.ts index ba2cb05e..caec53c5 100644 --- a/front/src/WebRtc/SimplePeer.ts +++ b/front/src/WebRtc/SimplePeer.ts @@ -128,13 +128,19 @@ export class SimplePeer { if(!user.initiator){ return; } - this.createPeerConnection(user); + const streamResult = get(localStreamStore); + let stream : MediaStream | null = null; + if (streamResult.type === 'success' && streamResult.stream) { + stream = streamResult.stream; + } + + this.createPeerConnection(user, stream); } /** * create peer connection to bind users */ - private createPeerConnection(user : UserSimplePeerInterface) : VideoPeer | null { + private createPeerConnection(user : UserSimplePeerInterface, localStream: MediaStream | null) : VideoPeer | null { const peerConnection = this.PeerConnectionArray.get(user.userId) if (peerConnection) { if (peerConnection.destroyed) { @@ -144,11 +150,11 @@ export class SimplePeer { if (!peerConnexionDeleted) { throw 'Error to delete peer connection'; } - this.createPeerConnection(user); + //return this.createPeerConnection(user, localStream); } else { peerConnection.toClose = false; + return null; } - return null; } let name = user.name; @@ -166,7 +172,7 @@ export class SimplePeer { this.lastWebrtcUserName = user.webRtcUser; this.lastWebrtcPassword = user.webRtcPassword; - const peer = new VideoPeer(user, user.initiator ? user.initiator : false, this.Connection); + const peer = new VideoPeer(user, user.initiator ? user.initiator : false, this.Connection, localStream); //permit to send message mediaManager.addSendMessageCallback(user.userId,(message: string) => { @@ -208,7 +214,7 @@ export class SimplePeer { if(!peerConnexionDeleted){ throw 'Error to delete peer connection'; } - this.createPeerConnection(user); + this.createPeerConnection(user, stream); }else { peerConnection.toClose = false; } @@ -327,7 +333,13 @@ export class SimplePeer { try { //if offer type, create peer connection if(data.signal.type === "offer"){ - this.createPeerConnection(data); + const streamResult = get(localStreamStore); + let stream : MediaStream | null = null; + if (streamResult.type === 'success' && streamResult.stream) { + stream = streamResult.stream; + } + + this.createPeerConnection(data, stream); } const peer = this.PeerConnectionArray.get(data.userId); if (peer !== undefined) { diff --git a/front/src/WebRtc/VideoPeer.ts b/front/src/WebRtc/VideoPeer.ts index 32e8e97f..5ca8952c 100644 --- a/front/src/WebRtc/VideoPeer.ts +++ b/front/src/WebRtc/VideoPeer.ts @@ -27,7 +27,7 @@ export class VideoPeer extends Peer { private onBlockSubscribe: Subscription; private onUnBlockSubscribe: Subscription; - constructor(public user: UserSimplePeerInterface, initiator: boolean, private connection: RoomConnection) { + constructor(public user: UserSimplePeerInterface, initiator: boolean, private connection: RoomConnection, localStream: MediaStream | null) { super({ initiator: initiator ? initiator : false, //reconnectTimer: 10000, @@ -107,7 +107,7 @@ export class VideoPeer extends Peer { this._onFinish(); }); - this.pushVideoToRemoteUser(); + this.pushVideoToRemoteUser(localStream); this.onBlockSubscribe = blackListManager.onBlockStream.subscribe((userId) => { if (userId === this.userId) { this.toggleRemoteStream(false); @@ -190,9 +190,8 @@ export class VideoPeer extends Peer { } } - private pushVideoToRemoteUser() { + private pushVideoToRemoteUser(localStream: MediaStream | null) { try { - const localStream: MediaStream | null = mediaManager.localStream; this.write(new Buffer(JSON.stringify({type: MESSAGE_TYPE_CONSTRAINT, ...get(obtainedMediaConstraintStore)}))); if(!localStream){ From 645af32b4cc991b3e0828c71fb1dd412895ec2d9 Mon Sep 17 00:00:00 2001 From: GRL Date: Mon, 31 May 2021 10:20:30 +0200 Subject: [PATCH 086/203] correction of resize select character and companion --- front/dist/resources/html/CustomCharacterScene.html | 4 ++-- front/src/Phaser/Game/DirtyScene.ts | 2 +- front/src/Phaser/Game/Game.ts | 12 ++++++++++-- front/src/Phaser/Game/GameScene.ts | 4 ++-- front/src/Phaser/Login/CustomizeScene.ts | 4 ++-- front/src/Phaser/Login/LoginScene.ts | 2 +- front/src/Phaser/Login/ResizableScene.ts | 4 ++-- front/src/Phaser/Login/SelectCharacterScene.ts | 8 ++++---- front/src/Phaser/Login/SelectCompanionScene.ts | 6 +++--- front/src/Phaser/Menu/HelpCameraSettingsScene.ts | 6 ++++-- 10 files changed, 31 insertions(+), 21 deletions(-) diff --git a/front/dist/resources/html/CustomCharacterScene.html b/front/dist/resources/html/CustomCharacterScene.html index 0bc050ea..0bf3f753 100644 --- a/front/dist/resources/html/CustomCharacterScene.html +++ b/front/dist/resources/html/CustomCharacterScene.html @@ -10,8 +10,8 @@ color: #ebeeee; width: 42vw; height: 48vh; - /*max-width: 300px; - max-height: 48vh;*/ + max-width: 350px; + /*max-height: 48vh;*/ overflow: hidden; } #customizeScene h1 { diff --git a/front/src/Phaser/Game/DirtyScene.ts b/front/src/Phaser/Game/DirtyScene.ts index 2e94aa66..3e1f3cdf 100644 --- a/front/src/Phaser/Game/DirtyScene.ts +++ b/front/src/Phaser/Game/DirtyScene.ts @@ -69,7 +69,7 @@ export abstract class DirtyScene extends ResizableScene { return this.dirty || this.objectListChanged; } - public onResize(ev: UIEvent): void { + public onResize(): void { this.objectListChanged = true; } } diff --git a/front/src/Phaser/Game/Game.ts b/front/src/Phaser/Game/Game.ts index 01aecf9f..e267e80a 100644 --- a/front/src/Phaser/Game/Game.ts +++ b/front/src/Phaser/Game/Game.ts @@ -21,14 +21,22 @@ export class Game extends Phaser.Game { constructor(GameConfig: Phaser.Types.Core.GameConfig) { super(GameConfig); - window.addEventListener('resize', (event) => { + this.scale.on(Phaser.Scale.Events.RESIZE, () => { + for (const scene of this.scene.getScenes(true)) { + if (scene instanceof ResizableScene) { + scene.onResize(); + } + } + }) + + /*window.addEventListener('resize', (event) => { // Let's trigger the onResize method of any active scene that is a ResizableScene for (const scene of this.scene.getScenes(true)) { if (scene instanceof ResizableScene) { scene.onResize(event); } } - }); + });*/ } public step(time: number, delta: number) diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 4de5ffd9..2d34060f 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1452,8 +1452,8 @@ ${escapedMessage} this.connection?.emitActionableEvent(itemId, eventName, state, parameters); } - public onResize(ev: UIEvent): void { - super.onResize(ev); + public onResize(): void { + super.onResize(); this.reposition(); // Send new viewport to server diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index 8b9a9a7a..1892813c 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -52,7 +52,7 @@ export class CustomizeScene extends AbstractCharacterScene { create() { this.customizeSceneElement = this.add.dom(-1000, 0).createFromCache(customizeSceneKey); - this.centerXDomElement(this.customizeSceneElement, 150); + this.centerXDomElement(this.customizeSceneElement, 350); MenuScene.revealMenusAfterInit(this.customizeSceneElement, customizeSceneKey); this.customizeSceneElement.addListener('click'); @@ -270,7 +270,7 @@ export class CustomizeScene extends AbstractCharacterScene { this.Rectangle.x = this.cameras.main.worldView.x + this.cameras.main.width / 2; this.Rectangle.y = this.cameras.main.worldView.y + this.cameras.main.height / 3; - this.centerXDomElement(this.customizeSceneElement, 150); + this.centerXDomElement(this.customizeSceneElement, 350); } private nextSceneToCamera(){ diff --git a/front/src/Phaser/Login/LoginScene.ts b/front/src/Phaser/Login/LoginScene.ts index 435592f2..661ddeb4 100644 --- a/front/src/Phaser/Login/LoginScene.ts +++ b/front/src/Phaser/Login/LoginScene.ts @@ -80,7 +80,7 @@ export class LoginScene extends ResizableScene { } - public onResize(ev: UIEvent): void { + public onResize(): void { this.centerXDomElement(this.loginSceneElement, 200); } } diff --git a/front/src/Phaser/Login/ResizableScene.ts b/front/src/Phaser/Login/ResizableScene.ts index 39e2d74b..d06cb66c 100644 --- a/front/src/Phaser/Login/ResizableScene.ts +++ b/front/src/Phaser/Login/ResizableScene.ts @@ -2,7 +2,7 @@ import {Scene} from "phaser"; import DOMElement = Phaser.GameObjects.DOMElement; export abstract class ResizableScene extends Scene { - public abstract onResize(ev: UIEvent): void; + public abstract onResize(): void; /** * Centers the DOM element on the X axis. @@ -17,7 +17,7 @@ export abstract class ResizableScene extends Scene { && object.node && object.node.getBoundingClientRect().width > 0 ? (object.node.getBoundingClientRect().width / 2 / this.scale.zoom) - : (300 / this.scale.zoom) + : (defaultWidth / this.scale.zoom) ); } } diff --git a/front/src/Phaser/Login/SelectCharacterScene.ts b/front/src/Phaser/Login/SelectCharacterScene.ts index ecbb9c64..998a62e6 100644 --- a/front/src/Phaser/Login/SelectCharacterScene.ts +++ b/front/src/Phaser/Login/SelectCharacterScene.ts @@ -51,7 +51,7 @@ export class SelectCharacterScene extends AbstractCharacterScene { create() { this.selectCharacterSceneElement = this.add.dom(-1000, 0).createFromCache(selectCharacterKey); - this.centerXDomElement(this.selectCharacterSceneElement, 150); + this.centerXDomElement(this.selectCharacterSceneElement, 300); MenuScene.revealMenusAfterInit(this.selectCharacterSceneElement, selectCharacterKey); this.selectCharacterSceneElement.addListener('click'); @@ -211,7 +211,7 @@ export class SelectCharacterScene extends AbstractCharacterScene { const {playerX, playerY, playerScale, playserOpactity, playerVisible} = this.defineSetupPlayer(numero); player.setBounce(0.2); - player.setCollideWorldBounds(true); + player.setCollideWorldBounds(false); player.setVisible( playerVisible ); player.setScale(playerScale, playerScale); player.setAlpha(playserOpactity); @@ -240,10 +240,10 @@ export class SelectCharacterScene extends AbstractCharacterScene { update(time: number, delta: number): void { } - public onResize(ev: UIEvent): void { + public onResize(): void { //move position of user this.moveUser(); - this.centerXDomElement(this.selectCharacterSceneElement, 150); + this.centerXDomElement(this.selectCharacterSceneElement, 300); } } diff --git a/front/src/Phaser/Login/SelectCompanionScene.ts b/front/src/Phaser/Login/SelectCompanionScene.ts index 203fd557..0e32108a 100644 --- a/front/src/Phaser/Login/SelectCompanionScene.ts +++ b/front/src/Phaser/Login/SelectCompanionScene.ts @@ -43,7 +43,7 @@ export class SelectCompanionScene extends ResizableScene { create() { this.selectCompanionSceneElement = this.add.dom(-1000, 0).createFromCache(selectCompanionSceneKey); - this.centerXDomElement(this.selectCompanionSceneElement, 150); + this.centerXDomElement(this.selectCompanionSceneElement, 300); MenuScene.revealMenusAfterInit(this.selectCompanionSceneElement, selectCompanionSceneKey); this.selectCompanionSceneElement.addListener('click'); @@ -126,10 +126,10 @@ export class SelectCompanionScene extends ResizableScene { this.selectedCompanion = this.companions[this.currentCompanion]; } - public onResize(ev: UIEvent): void { + public onResize(): void { this.moveCompanion(); - this.centerXDomElement(this.selectCompanionSceneElement, 150); + this.centerXDomElement(this.selectCompanionSceneElement, 300); } private updateSelectedCompanion(): void { diff --git a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts index 6bc520c0..fcc7996a 100644 --- a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts +++ b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts @@ -109,8 +109,10 @@ export class HelpCameraSettingsScene extends DirtyScene { this.dirty = false; } - public onResize(ev: UIEvent): void { - super.onResize(ev); + public onResize(): void { + super.onResize( + + ); if (this.helpCameraSettingsOpened) { const middleX = this.getMiddleX(); const middleY = this.getMiddleY(); From 1ac108a9b8719781916265f03f33ea8edfbcff7b Mon Sep 17 00:00:00 2001 From: GRL Date: Mon, 31 May 2021 10:20:30 +0200 Subject: [PATCH 087/203] correction of resize select character and companion by David --- front/dist/resources/html/CustomCharacterScene.html | 4 ++-- front/dist/resources/html/SelectCompanionScene.html | 2 +- front/src/Phaser/Game/DirtyScene.ts | 2 +- front/src/Phaser/Game/Game.ts | 12 ++++++++++-- front/src/Phaser/Game/GameScene.ts | 4 ++-- front/src/Phaser/Login/CustomizeScene.ts | 4 ++-- front/src/Phaser/Login/LoginScene.ts | 2 +- front/src/Phaser/Login/ResizableScene.ts | 4 ++-- front/src/Phaser/Login/SelectCharacterScene.ts | 8 ++++---- front/src/Phaser/Login/SelectCompanionScene.ts | 6 +++--- front/src/Phaser/Menu/HelpCameraSettingsScene.ts | 6 ++++-- front/src/Phaser/Services/WaScaleManager.ts | 9 ++++++++- 12 files changed, 40 insertions(+), 23 deletions(-) diff --git a/front/dist/resources/html/CustomCharacterScene.html b/front/dist/resources/html/CustomCharacterScene.html index 0bc050ea..0bf3f753 100644 --- a/front/dist/resources/html/CustomCharacterScene.html +++ b/front/dist/resources/html/CustomCharacterScene.html @@ -10,8 +10,8 @@ color: #ebeeee; width: 42vw; height: 48vh; - /*max-width: 300px; - max-height: 48vh;*/ + max-width: 350px; + /*max-height: 48vh;*/ overflow: hidden; } #customizeScene h1 { diff --git a/front/dist/resources/html/SelectCompanionScene.html b/front/dist/resources/html/SelectCompanionScene.html index cffa7880..30c782cb 100644 --- a/front/dist/resources/html/SelectCompanionScene.html +++ b/front/dist/resources/html/SelectCompanionScene.html @@ -128,7 +128,7 @@
- No companion + No companion
diff --git a/front/src/Phaser/Game/DirtyScene.ts b/front/src/Phaser/Game/DirtyScene.ts index 2e94aa66..3e1f3cdf 100644 --- a/front/src/Phaser/Game/DirtyScene.ts +++ b/front/src/Phaser/Game/DirtyScene.ts @@ -69,7 +69,7 @@ export abstract class DirtyScene extends ResizableScene { return this.dirty || this.objectListChanged; } - public onResize(ev: UIEvent): void { + public onResize(): void { this.objectListChanged = true; } } diff --git a/front/src/Phaser/Game/Game.ts b/front/src/Phaser/Game/Game.ts index 01aecf9f..e267e80a 100644 --- a/front/src/Phaser/Game/Game.ts +++ b/front/src/Phaser/Game/Game.ts @@ -21,14 +21,22 @@ export class Game extends Phaser.Game { constructor(GameConfig: Phaser.Types.Core.GameConfig) { super(GameConfig); - window.addEventListener('resize', (event) => { + this.scale.on(Phaser.Scale.Events.RESIZE, () => { + for (const scene of this.scene.getScenes(true)) { + if (scene instanceof ResizableScene) { + scene.onResize(); + } + } + }) + + /*window.addEventListener('resize', (event) => { // Let's trigger the onResize method of any active scene that is a ResizableScene for (const scene of this.scene.getScenes(true)) { if (scene instanceof ResizableScene) { scene.onResize(event); } } - }); + });*/ } public step(time: number, delta: number) diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 4de5ffd9..2d34060f 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -1452,8 +1452,8 @@ ${escapedMessage} this.connection?.emitActionableEvent(itemId, eventName, state, parameters); } - public onResize(ev: UIEvent): void { - super.onResize(ev); + public onResize(): void { + super.onResize(); this.reposition(); // Send new viewport to server diff --git a/front/src/Phaser/Login/CustomizeScene.ts b/front/src/Phaser/Login/CustomizeScene.ts index 8b9a9a7a..1892813c 100644 --- a/front/src/Phaser/Login/CustomizeScene.ts +++ b/front/src/Phaser/Login/CustomizeScene.ts @@ -52,7 +52,7 @@ export class CustomizeScene extends AbstractCharacterScene { create() { this.customizeSceneElement = this.add.dom(-1000, 0).createFromCache(customizeSceneKey); - this.centerXDomElement(this.customizeSceneElement, 150); + this.centerXDomElement(this.customizeSceneElement, 350); MenuScene.revealMenusAfterInit(this.customizeSceneElement, customizeSceneKey); this.customizeSceneElement.addListener('click'); @@ -270,7 +270,7 @@ export class CustomizeScene extends AbstractCharacterScene { this.Rectangle.x = this.cameras.main.worldView.x + this.cameras.main.width / 2; this.Rectangle.y = this.cameras.main.worldView.y + this.cameras.main.height / 3; - this.centerXDomElement(this.customizeSceneElement, 150); + this.centerXDomElement(this.customizeSceneElement, 350); } private nextSceneToCamera(){ diff --git a/front/src/Phaser/Login/LoginScene.ts b/front/src/Phaser/Login/LoginScene.ts index 435592f2..661ddeb4 100644 --- a/front/src/Phaser/Login/LoginScene.ts +++ b/front/src/Phaser/Login/LoginScene.ts @@ -80,7 +80,7 @@ export class LoginScene extends ResizableScene { } - public onResize(ev: UIEvent): void { + public onResize(): void { this.centerXDomElement(this.loginSceneElement, 200); } } diff --git a/front/src/Phaser/Login/ResizableScene.ts b/front/src/Phaser/Login/ResizableScene.ts index 39e2d74b..d06cb66c 100644 --- a/front/src/Phaser/Login/ResizableScene.ts +++ b/front/src/Phaser/Login/ResizableScene.ts @@ -2,7 +2,7 @@ import {Scene} from "phaser"; import DOMElement = Phaser.GameObjects.DOMElement; export abstract class ResizableScene extends Scene { - public abstract onResize(ev: UIEvent): void; + public abstract onResize(): void; /** * Centers the DOM element on the X axis. @@ -17,7 +17,7 @@ export abstract class ResizableScene extends Scene { && object.node && object.node.getBoundingClientRect().width > 0 ? (object.node.getBoundingClientRect().width / 2 / this.scale.zoom) - : (300 / this.scale.zoom) + : (defaultWidth / this.scale.zoom) ); } } diff --git a/front/src/Phaser/Login/SelectCharacterScene.ts b/front/src/Phaser/Login/SelectCharacterScene.ts index ecbb9c64..998a62e6 100644 --- a/front/src/Phaser/Login/SelectCharacterScene.ts +++ b/front/src/Phaser/Login/SelectCharacterScene.ts @@ -51,7 +51,7 @@ export class SelectCharacterScene extends AbstractCharacterScene { create() { this.selectCharacterSceneElement = this.add.dom(-1000, 0).createFromCache(selectCharacterKey); - this.centerXDomElement(this.selectCharacterSceneElement, 150); + this.centerXDomElement(this.selectCharacterSceneElement, 300); MenuScene.revealMenusAfterInit(this.selectCharacterSceneElement, selectCharacterKey); this.selectCharacterSceneElement.addListener('click'); @@ -211,7 +211,7 @@ export class SelectCharacterScene extends AbstractCharacterScene { const {playerX, playerY, playerScale, playserOpactity, playerVisible} = this.defineSetupPlayer(numero); player.setBounce(0.2); - player.setCollideWorldBounds(true); + player.setCollideWorldBounds(false); player.setVisible( playerVisible ); player.setScale(playerScale, playerScale); player.setAlpha(playserOpactity); @@ -240,10 +240,10 @@ export class SelectCharacterScene extends AbstractCharacterScene { update(time: number, delta: number): void { } - public onResize(ev: UIEvent): void { + public onResize(): void { //move position of user this.moveUser(); - this.centerXDomElement(this.selectCharacterSceneElement, 150); + this.centerXDomElement(this.selectCharacterSceneElement, 300); } } diff --git a/front/src/Phaser/Login/SelectCompanionScene.ts b/front/src/Phaser/Login/SelectCompanionScene.ts index 203fd557..0e32108a 100644 --- a/front/src/Phaser/Login/SelectCompanionScene.ts +++ b/front/src/Phaser/Login/SelectCompanionScene.ts @@ -43,7 +43,7 @@ export class SelectCompanionScene extends ResizableScene { create() { this.selectCompanionSceneElement = this.add.dom(-1000, 0).createFromCache(selectCompanionSceneKey); - this.centerXDomElement(this.selectCompanionSceneElement, 150); + this.centerXDomElement(this.selectCompanionSceneElement, 300); MenuScene.revealMenusAfterInit(this.selectCompanionSceneElement, selectCompanionSceneKey); this.selectCompanionSceneElement.addListener('click'); @@ -126,10 +126,10 @@ export class SelectCompanionScene extends ResizableScene { this.selectedCompanion = this.companions[this.currentCompanion]; } - public onResize(ev: UIEvent): void { + public onResize(): void { this.moveCompanion(); - this.centerXDomElement(this.selectCompanionSceneElement, 150); + this.centerXDomElement(this.selectCompanionSceneElement, 300); } private updateSelectedCompanion(): void { diff --git a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts index 6bc520c0..fcc7996a 100644 --- a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts +++ b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts @@ -109,8 +109,10 @@ export class HelpCameraSettingsScene extends DirtyScene { this.dirty = false; } - public onResize(ev: UIEvent): void { - super.onResize(ev); + public onResize(): void { + super.onResize( + + ); if (this.helpCameraSettingsOpened) { const middleX = this.getMiddleX(); const middleY = this.getMiddleY(); diff --git a/front/src/Phaser/Services/WaScaleManager.ts b/front/src/Phaser/Services/WaScaleManager.ts index ca8b668d..8ca4ad20 100644 --- a/front/src/Phaser/Services/WaScaleManager.ts +++ b/front/src/Phaser/Services/WaScaleManager.ts @@ -2,6 +2,7 @@ import {HdpiManager} from "./HdpiManager"; import ScaleManager = Phaser.Scale.ScaleManager; import {coWebsiteManager} from "../../WebRtc/CoWebsiteManager"; import type {Game} from "../Game/Game"; +import {ResizableScene} from "../Login/ResizableScene"; class WaScaleManager { @@ -30,13 +31,19 @@ class WaScaleManager { const { game: gameSize, real: realSize } = this.hdpiManager.getOptimalGameSize({width: width * devicePixelRatio, height: height * devicePixelRatio}); this.actualZoom = realSize.width / gameSize.width / devicePixelRatio; - this.scaleManager.setZoom(realSize.width / gameSize.width / devicePixelRatio); + this.scaleManager.setZoom(realSize.width / gameSize.width / devicePixelRatio) this.scaleManager.resize(gameSize.width, gameSize.height); // Override bug in canvas resizing in Phaser. Let's resize the canvas ourselves const style = this.scaleManager.canvas.style; style.width = Math.ceil(realSize.width / devicePixelRatio) + 'px'; style.height = Math.ceil(realSize.height / devicePixelRatio) + 'px'; + // Note: onResize will be called twice (once here and once is Game.ts), but we have no better way. + for (const scene of this.game.scene.getScenes(true)) { + if (scene instanceof ResizableScene) { + scene.onResize(); + } + } this.game.markDirty(); } From b8873d127780b92425ee9b6110e0b42ed4405283 Mon Sep 17 00:00:00 2001 From: GRL Date: Mon, 31 May 2021 12:06:11 +0200 Subject: [PATCH 088/203] selectCompanionScene work with svelte --- .../resources/html/CustomCharacterScene.html | 3 - .../resources/html/EnableCameraScene.html | 3 - .../resources/html/SelectCompanionScene.html | 134 ------------------ front/dist/resources/html/gameMenu.html | 3 - front/dist/resources/html/gameMenuIcon.html | 3 - .../dist/resources/html/gameQualityMenu.html | 3 - front/dist/resources/html/gameReport.html | 3 - front/dist/resources/html/gameShare.html | 3 - .../resources/html/helpCameraSettings.html | 3 - front/dist/resources/html/loginScene.html | 3 - .../resources/html/selectCharacterScene.html | 3 - .../dist/resources/html/warningContainer.html | 3 - front/src/Components/App.svelte | 10 +- front/src/Phaser/Game/GameScene.ts | 2 + .../src/Phaser/Login/SelectCompanionScene.ts | 65 +++------ front/src/WebRtc/SimplePeer.ts | 2 +- front/src/index.ts | 4 +- front/style/fonts.scss | 6 +- 18 files changed, 42 insertions(+), 214 deletions(-) delete mode 100644 front/dist/resources/html/SelectCompanionScene.html diff --git a/front/dist/resources/html/CustomCharacterScene.html b/front/dist/resources/html/CustomCharacterScene.html index 0bf3f753..9a8aac4d 100644 --- a/front/dist/resources/html/CustomCharacterScene.html +++ b/front/dist/resources/html/CustomCharacterScene.html @@ -1,7 +1,4 @@ - - diff --git a/front/dist/resources/html/gameMenu.html b/front/dist/resources/html/gameMenu.html index 6abf2753..399cf349 100644 --- a/front/dist/resources/html/gameMenu.html +++ b/front/dist/resources/html/gameMenu.html @@ -1,7 +1,4 @@ \ No newline at end of file diff --git a/front/src/Stores/SelectCompanionStore.ts b/front/src/Stores/SelectCompanionStore.ts new file mode 100644 index 00000000..e66f5de3 --- /dev/null +++ b/front/src/Stores/SelectCompanionStore.ts @@ -0,0 +1,3 @@ +import { derived, writable, Writable } from "svelte/store"; + +export const selectCompanionSceneVisibleStore = writable(false); From 13d32273238f51100ee2da4b8e4e4d070a3943b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 31 May 2021 17:03:29 +0200 Subject: [PATCH 090/203] Migrating LoginScene to Svelte --- CHANGELOG.md | 4 + front/dist/resources/html/loginScene.html | 117 ----------------- front/src/Components/App.svelte | 5 + front/src/Components/Login/LoginScene.svelte | 119 ++++++++++++++++++ .../SelectCompanionScene.svelte | 5 +- front/src/Components/images/logo.png | Bin 0 -> 15822 bytes front/src/Connexion/LocalUser.ts | 2 +- front/src/Enum/EnvironmentVariable.ts | 1 + front/src/Phaser/Login/LoginScene.ts | 59 ++------- front/src/Stores/LoginSceneStore.ts | 3 + front/src/WebRtc/ScreenSharingPeer.ts | 1 + front/style/fonts.scss | 6 +- front/webpack.config.ts | 4 +- 13 files changed, 150 insertions(+), 176 deletions(-) delete mode 100644 front/dist/resources/html/loginScene.html create mode 100644 front/src/Components/Login/LoginScene.svelte create mode 100644 front/src/Components/images/logo.png create mode 100644 front/src/Stores/LoginSceneStore.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index d9afd71e..b9b0a926 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,10 @@ - Mouse wheel support to zoom in / out - Pinch support on mobile to zoom in / out - Improved virtual joystick size (adapts to the zoom level) +- Redesigned intermediate scenes + - Redesigned Select Companion scene + - Redesigned Enter Your Name scene + - Added a new `DISPLAY_TERMS_OF_USE` environment variable to trigger the display of terms of use - New scripting API features: - Use `WA.loadSound(): Sound` to load / play / stop a sound diff --git a/front/dist/resources/html/loginScene.html b/front/dist/resources/html/loginScene.html deleted file mode 100644 index 9c076693..00000000 --- a/front/dist/resources/html/loginScene.html +++ /dev/null @@ -1,117 +0,0 @@ - - - diff --git a/front/src/Components/App.svelte b/front/src/Components/App.svelte index f8a2589f..286b5687 100644 --- a/front/src/Components/App.svelte +++ b/front/src/Components/App.svelte @@ -7,12 +7,17 @@ import SelectCompanionScene from "./SelectCompanion/SelectCompanionScene.svelte"; import {selectCompanionSceneVisibleStore} from "../Stores/SelectCompanionStore"; import {Game} from "../Phaser/Game/Game"; + import LoginScene from "./Login/LoginScene.svelte"; + import {loginSceneVisibleStore} from "../Stores/LoginSceneStore"; export let game: Game;
+ {#if $loginSceneVisibleStore} + + {/if} {#if $selectCompanionSceneVisibleStore} {/if} diff --git a/front/src/Components/Login/LoginScene.svelte b/front/src/Components/Login/LoginScene.svelte new file mode 100644 index 00000000..6a05ba9f --- /dev/null +++ b/front/src/Components/Login/LoginScene.svelte @@ -0,0 +1,119 @@ + + +
+
+ WorkAdventure logo +
+
+

Enter your name

+
+ {startValidating = true}} class:is-error={name.trim() === '' && startValidating} /> +
+ {#if name.trim() === '' && startValidating } +

The name is empty

+ {/if} +
+ + {#if !DISPLAY_TERMS_OF_USE} +
+

By continuing, you are agreeing our terms of use, privacy policy and cookie policy.

+
+ {/if} +
+ +
+
+ + diff --git a/front/src/Components/SelectCompanion/SelectCompanionScene.svelte b/front/src/Components/SelectCompanion/SelectCompanionScene.svelte index 8638dc4d..9aaa0757 100644 --- a/front/src/Components/SelectCompanion/SelectCompanionScene.svelte +++ b/front/src/Components/SelectCompanion/SelectCompanionScene.svelte @@ -41,9 +41,6 @@ pointer-events: auto; color: #ebeeee; } - .selectCompanionScene button { - font-family: "Press Start 2P"; - } .selectCompanionScene section { margin: 10px; } @@ -80,4 +77,4 @@ } - \ No newline at end of file + diff --git a/front/src/Components/images/logo.png b/front/src/Components/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f4440ad51079b55755f5b1f510ed6da89907fcee GIT binary patch literal 15822 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 literal 0 HcmV?d00001 diff --git a/front/src/Connexion/LocalUser.ts b/front/src/Connexion/LocalUser.ts index 43b184cf..f5a4ac2a 100644 --- a/front/src/Connexion/LocalUser.ts +++ b/front/src/Connexion/LocalUser.ts @@ -10,7 +10,7 @@ export interface CharacterTexture { export const maxUserNameLength: number = MAX_USERNAME_LENGTH; export function isUserNameValid(value: unknown): boolean { - return typeof value === "string" && value.length > 0 && value.length < maxUserNameLength && value.indexOf(' ') === -1; + return typeof value === "string" && value.length > 0 && value.length <= maxUserNameLength && value.indexOf(' ') === -1; } export function areCharacterLayersValid(value: string[] | null): boolean { diff --git a/front/src/Enum/EnvironmentVariable.ts b/front/src/Enum/EnvironmentVariable.ts index 85b63335..73f6427c 100644 --- a/front/src/Enum/EnvironmentVariable.ts +++ b/front/src/Enum/EnvironmentVariable.ts @@ -14,6 +14,7 @@ const POSITION_DELAY = 200; // Wait 200ms between sending position events const MAX_EXTRAPOLATION_TIME = 100; // Extrapolate a maximum of 250ms if no new movement is sent by the player export const MAX_USERNAME_LENGTH = parseInt(process.env.MAX_USERNAME_LENGTH || '') || 8; export const MAX_PER_GROUP = parseInt(process.env.MAX_PER_GROUP || '4'); +export const DISPLAY_TERMS_OF_USE = process.env.DISPLAY_TERMS_OF_USE == 'true'; export const isMobile = ():boolean => ( ( window.innerWidth <= 800 ) || ( window.innerHeight <= 600 ) ); diff --git a/front/src/Phaser/Login/LoginScene.ts b/front/src/Phaser/Login/LoginScene.ts index 4b36e3d9..39a8f5f3 100644 --- a/front/src/Phaser/Login/LoginScene.ts +++ b/front/src/Phaser/Login/LoginScene.ts @@ -1,17 +1,12 @@ import {gameManager} from "../Game/GameManager"; import {SelectCharacterSceneName} from "./SelectCharacterScene"; import {ResizableScene} from "./ResizableScene"; -import { localUserStore } from "../../Connexion/LocalUserStore"; -import {MenuScene} from "../Menu/MenuScene"; -import { isUserNameValid } from "../../Connexion/LocalUser"; +import {loginSceneVisibleStore} from "../../Stores/LoginSceneStore"; export const LoginSceneName = "LoginScene"; -const loginSceneKey = 'loginScene'; - export class LoginScene extends ResizableScene { - private loginSceneElement!: Phaser.GameObjects.DOMElement; private name: string = ''; constructor() { @@ -22,65 +17,25 @@ export class LoginScene extends ResizableScene { } preload() { - this.load.html(loginSceneKey, 'resources/html/loginScene.html'); } create() { - this.loginSceneElement = this.add.dom(-1000, 0).createFromCache(loginSceneKey); - this.centerXDomElement(this.loginSceneElement, 200); - MenuScene.revealMenusAfterInit(this.loginSceneElement, loginSceneKey); - - const pErrorElement = this.loginSceneElement.getChildByID('errorLoginScene') as HTMLInputElement; - const inputElement = this.loginSceneElement.getChildByID('loginSceneName') as HTMLInputElement; - inputElement.value = localUserStore.getName() ?? ''; - inputElement.focus(); - inputElement.addEventListener('keypress', (event: KeyboardEvent) => { - if(inputElement.value.length > 7){ - event.preventDefault(); - return; - } - pErrorElement.innerHTML = ''; - if(inputElement.value && !isUserNameValid(inputElement.value)){ - pErrorElement.innerHTML = 'Invalid user name: No spaces are allowed.'; - } - if (event.key === 'Enter') { - event.preventDefault(); - this.login(inputElement); - return; - } - }); - - const continuingButton = this.loginSceneElement.getChildByID('loginSceneFormSubmit') as HTMLButtonElement; - continuingButton.addEventListener('click', (e) => { - e.preventDefault(); - this.login(inputElement); - }); + loginSceneVisibleStore.set(true); } - private login(inputElement: HTMLInputElement): void { - const pErrorElement = this.loginSceneElement.getChildByID('errorLoginScene') as HTMLInputElement; - this.name = inputElement.value; - if (this.name === '') { - pErrorElement.innerHTML = 'The name is empty'; - return - } - if(!isUserNameValid(this.name)){ - pErrorElement.innerHTML = 'Invalid user name: only letters and numbers are allowed. No spaces.'; - return - } - if (this.name === '') return - gameManager.setPlayerName(this.name); + public login(name: string): void { + name = name.trim(); + gameManager.setPlayerName(name); this.scene.stop(LoginSceneName) gameManager.tryResumingGame(this, SelectCharacterSceneName); - this.scene.remove(LoginSceneName) + this.scene.remove(LoginSceneName); + loginSceneVisibleStore.set(false); } update(time: number, delta: number): void { - } public onResize(): void { - this.centerXDomElement(this.loginSceneElement, 200); } } diff --git a/front/src/Stores/LoginSceneStore.ts b/front/src/Stores/LoginSceneStore.ts new file mode 100644 index 00000000..6e2ea18b --- /dev/null +++ b/front/src/Stores/LoginSceneStore.ts @@ -0,0 +1,3 @@ +import { writable } from "svelte/store"; + +export const loginSceneVisibleStore = writable(false); diff --git a/front/src/WebRtc/ScreenSharingPeer.ts b/front/src/WebRtc/ScreenSharingPeer.ts index 947549eb..d797f59b 100644 --- a/front/src/WebRtc/ScreenSharingPeer.ts +++ b/front/src/WebRtc/ScreenSharingPeer.ts @@ -60,6 +60,7 @@ export class ScreenSharingPeer extends Peer { const message = JSON.parse(chunk.toString('utf8')); if (message.streamEnded !== true) { console.error('Unexpected message on screen sharing peer connection'); + return; } mediaManager.removeActiveScreenSharingVideo("" + this.userId); }); diff --git a/front/style/fonts.scss b/front/style/fonts.scss index 748710fa..a49d3967 100644 --- a/front/style/fonts.scss +++ b/front/style/fonts.scss @@ -2,4 +2,8 @@ *{ font-family: PixelFont-7,monospace; -} \ No newline at end of file +} + +.nes-btn { + font-family: "Press Start 2P"; +} diff --git a/front/webpack.config.ts b/front/webpack.config.ts index 6ebf907f..99cbff77 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -7,6 +7,7 @@ import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import sveltePreprocess from 'svelte-preprocess'; import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin"; import NodePolyfillPlugin from 'node-polyfill-webpack-plugin'; +import {DISPLAY_TERMS_OF_USE} from "./src/Enum/EnvironmentVariable"; const mode = process.env.NODE_ENV ?? 'development'; const isProduction = mode === 'production'; @@ -175,7 +176,8 @@ module.exports = { 'JITSI_PRIVATE_MODE': null, 'START_ROOM_URL': null, 'MAX_USERNAME_LENGTH': 8, - 'MAX_PER_GROUP': 4 + 'MAX_PER_GROUP': 4, + 'DISPLAY_TERMS_OF_USE': false, }) ], From cb03580421de1cc24f628e6c2a2da2ea70079fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 31 May 2021 17:49:41 +0200 Subject: [PATCH 091/203] Partial migration of EnableCameraScene to Svelte --- .../resources/html/EnableCameraScene.html | 126 ------------------ front/src/Components/App.svelte | 7 +- .../EnableCamera/EnableCameraScene.svelte | 76 +++++++++++ front/src/Components/Login/LoginScene.svelte | 3 +- front/src/Phaser/Login/EnableCameraScene.ts | 29 +--- 5 files changed, 87 insertions(+), 154 deletions(-) delete mode 100644 front/dist/resources/html/EnableCameraScene.html create mode 100644 front/src/Components/EnableCamera/EnableCameraScene.svelte diff --git a/front/dist/resources/html/EnableCameraScene.html b/front/dist/resources/html/EnableCameraScene.html deleted file mode 100644 index 21c798b5..00000000 --- a/front/dist/resources/html/EnableCameraScene.html +++ /dev/null @@ -1,126 +0,0 @@ - - - diff --git a/front/src/Components/App.svelte b/front/src/Components/App.svelte index 286b5687..581c5673 100644 --- a/front/src/Components/App.svelte +++ b/front/src/Components/App.svelte @@ -1,7 +1,7 @@
@@ -21,6 +21,9 @@ {#if $selectCompanionSceneVisibleStore} {/if} + {#if $enableCameraSceneVisibilityStore} + + {/if} diff --git a/front/src/Components/EnableCamera/EnableCameraScene.svelte b/front/src/Components/EnableCamera/EnableCameraScene.svelte new file mode 100644 index 00000000..ac2cf992 --- /dev/null +++ b/front/src/Components/EnableCamera/EnableCameraScene.svelte @@ -0,0 +1,76 @@ + + +
+
+

Turn on your camera and microphone

+
+ +
+ +
+
+ + + diff --git a/front/src/Components/Login/LoginScene.svelte b/front/src/Components/Login/LoginScene.svelte index 6a05ba9f..ea824908 100644 --- a/front/src/Components/Login/LoginScene.svelte +++ b/front/src/Components/Login/LoginScene.svelte @@ -30,7 +30,7 @@

Enter your name

- {startValidating = true}} class:is-error={name.trim() === '' && startValidating} /> + {startValidating = true}} class:is-error={name.trim() === '' && startValidating} />
{#if name.trim() === '' && startValidating }

The name is empty

@@ -71,6 +71,7 @@ section.error-section { min-height: 2rem; + margin: 0; p { margin: 0; diff --git a/front/src/Phaser/Login/EnableCameraScene.ts b/front/src/Phaser/Login/EnableCameraScene.ts index 6002da7b..73fa7303 100644 --- a/front/src/Phaser/Login/EnableCameraScene.ts +++ b/front/src/Phaser/Login/EnableCameraScene.ts @@ -12,8 +12,8 @@ import { MenuScene } from "../Menu/MenuScene"; import {ResizableScene} from "./ResizableScene"; import { audioConstraintStore, - enableCameraSceneVisibilityStore, localStreamStore, + enableCameraSceneVisibilityStore, mediaStreamConstraintsStore, videoConstraintStore } from "../../Stores/MediaStore"; @@ -28,8 +28,6 @@ enum LoginTextures { arrowUp = "arrow_up" } -const enableCameraSceneKey = 'enableCameraScene'; - export class EnableCameraScene extends ResizableScene { private textField!: TextField; private cameraNameField!: TextField; @@ -45,8 +43,6 @@ export class EnableCameraScene extends ResizableScene { private soundMeterSprite!: SoundMeterSprite; private microphoneNameField!: TextField; - private enableCameraSceneElement!: Phaser.GameObjects.DOMElement; - private mobileTapZone!: Zone; private localStreamStoreUnsubscriber!: Unsubscriber; @@ -58,9 +54,6 @@ export class EnableCameraScene extends ResizableScene { } preload() { - - this.load.html(enableCameraSceneKey, 'resources/html/EnableCameraScene.html'); - this.load.image(LoginTextures.playButton, "resources/objects/play_button.png"); this.load.image(LoginTextures.arrowRight, "resources/objects/arrow_right.png"); this.load.image(LoginTextures.arrowUp, "resources/objects/arrow_up.png"); @@ -69,18 +62,6 @@ export class EnableCameraScene extends ResizableScene { } create() { - - this.enableCameraSceneElement = this.add.dom(-1000, 0).createFromCache(enableCameraSceneKey); - this.centerXDomElement(this.enableCameraSceneElement, 300); - - MenuScene.revealMenusAfterInit(this.enableCameraSceneElement, enableCameraSceneKey); - - const continuingButton = this.enableCameraSceneElement.getChildByID('enableCameraSceneFormSubmit') as HTMLButtonElement; - continuingButton.addEventListener('click', (e) => { - e.preventDefault(); - this.login(); - }); - if (touchScreenManager.supportTouchScreen) { new PinchManager(this); } @@ -272,19 +253,17 @@ export class EnableCameraScene extends ResizableScene { this.arrowUp.x = this.microphoneNameField.x - this.microphoneNameField.width / 2 - 16; this.arrowUp.y = this.microphoneNameField.y; - const actionBtn = document.querySelector('#enableCameraScene .action'); + /*const actionBtn = document.querySelector('#enableCameraScene .action'); if (actionBtn !== null) { actionBtn.style.top = (this.scale.height - 65) + 'px'; - } + }*/ } update(time: number, delta: number): void { this.soundMeterSprite.setVolume(this.soundMeter.getVolume()); - - this.centerXDomElement(this.enableCameraSceneElement, 300); } - private login(): void { + public login(): void { HtmlUtils.getElementByIdOrFail('webRtcSetup').style.display = 'none'; this.soundMeter.stop(); From 4923ce8b833b07daf19c834b0a2383d420c5c0f1 Mon Sep 17 00:00:00 2001 From: GRL Date: Mon, 31 May 2021 17:50:14 +0200 Subject: [PATCH 092/203] selectCharacterScene and customCharacterScene in svelte --- .../resources/html/CustomCharacterScene.html | 157 ------------------ .../resources/html/selectCharacterScene.html | 139 ---------------- front/dist/resources/objects/arrow_down.png | Bin 0 -> 4816 bytes front/dist/resources/objects/arrow_up.png | Bin 149 -> 4710 bytes front/src/Components/App.svelte | 14 +- .../CustomCharacterScene.svelte | 110 ++++++++++++ .../SelectCharacterScene.svelte | 84 ++++++++++ front/src/Phaser/Login/CustomizeScene.ts | 63 ++----- .../Login/SelectCharacterMobileScene.ts | 24 +-- .../src/Phaser/Login/SelectCharacterScene.ts | 43 ++--- front/src/Stores/CustomCharacterStore.ts | 3 + front/src/Stores/SelectCharacterStore.ts | 3 + 12 files changed, 249 insertions(+), 391 deletions(-) delete mode 100644 front/dist/resources/html/CustomCharacterScene.html delete mode 100644 front/dist/resources/html/selectCharacterScene.html create mode 100644 front/dist/resources/objects/arrow_down.png create mode 100644 front/src/Components/CustomCharacterScene/CustomCharacterScene.svelte create mode 100644 front/src/Components/selectCharacter/SelectCharacterScene.svelte create mode 100644 front/src/Stores/CustomCharacterStore.ts create mode 100644 front/src/Stores/SelectCharacterStore.ts diff --git a/front/dist/resources/html/CustomCharacterScene.html b/front/dist/resources/html/CustomCharacterScene.html deleted file mode 100644 index 9a8aac4d..00000000 --- a/front/dist/resources/html/CustomCharacterScene.html +++ /dev/null @@ -1,157 +0,0 @@ - - - diff --git a/front/dist/resources/html/selectCharacterScene.html b/front/dist/resources/html/selectCharacterScene.html deleted file mode 100644 index 88c84041..00000000 --- a/front/dist/resources/html/selectCharacterScene.html +++ /dev/null @@ -1,139 +0,0 @@ - - - diff --git a/front/dist/resources/objects/arrow_down.png b/front/dist/resources/objects/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..c89fb5f3fa79da69e2a67e763de0304e82f5c1f9 GIT binary patch literal 4816 zcmeHLX;c$g77h)Hg5ZXVic-Xdtt(YYD(euI07BFtLTp7vtt6FDN*0p>f;|e2zz8lh zwkxivh({Y76c-eCZ~?SI!P5#dHj0g+fIFk3%u7JUp8n%G)Bj9Py;R-hyZ3(YzIW;+ zBRnj`!ETftjYe~jga$=`-$CZ9Utch~KJUV5H0#hMvRPCFo&f0$Iu#j9KvbfhfCv+* zqR~vZpKO?OXtei$;I5Iu>B-}5fN=fB#x2^Sv&!b`TGl{Y^dW z*EPD$cI+#s=xQbNQp?j+7uE=>N;fTP(KEc@^}r;m@ZueT)scDC6|cy}8~rX`nNRLY z**?$X(9vnNtr;%y@8WmI@W$U5Hz~h8^I2i2Y0J*&fLlkK6-TL(v=gx!zj%3lt7=Bp z^gC&~(}Cg_C(f@y5pmP>!>L!THX{Ph7LSF4Q?12=m#*05XehI>DjDIP^xOKAd4^Xl z=QKU93bHBZ zwNyFUc#9dWhgPiZ@OneSBgOE#yahb%nhi#&0VNxcAW1I8?E;V zRBQRhq3!-2RpRA8DIdy{Zzaz}EAo-z+gA^iOzL}K8+65nNFDZA^)lmGc#Si=Iiqx2 zQObOufqfb_-B&qy(sCEy&n~p`t$4yNvFrC}lL4*)g}}Q?AafETG!1 zFP`?|*T`erzmJLu@PhH02@JAm0zyD_>8ntxEIWO*PlaT4L;A}piQ7kwsWnaD^tmB% zm=Yyt9yr|$Y8 zY5d5<7xq@c=b5={4mNaHUR8FiaXfSaUR*kDp18D;5zHBq!9Q zRzz<*=N)de~M~X`IfkX@$y2L<4E(wzQb2F5_)U=tb7qWjuGJ_e;q7!fq72Le2a=rI(f z7a~YPLINX!&CnUt2vZ;sASerAv0z{U8xyq@Zi2POab}2aj3C0OFpzqR)M+6zCN9^- zQ6f4W=%Ek!Y4lR*M|iEVhXud~V#4(ZlYt@{4bt1gNCn3Oke-D8)WawPTN4sN7Vh%=`r2@=uG@r6pAf>a7Ew>%yP7qC?X zOfXd{7{kFJ;L9->WwMoAjslb89A+;liPlKrS_NT-0^kf1;3!o*Hp=9)V3wQ>AlO_! zEXO!t;3&8l##J#tGy@5`5|8bjl^IG2pjdJ~rs8o`uv|efVGQG7uw1}q!5p3d z6X0AP%2Qz$D5XL;NoUaDU^+<+t|kz@R&7z32^R*0OGI=Q1N|fkkHsk!a1ha_lG-@a zCxwjE5RnvaW|PTfu`nLW!dRGqg`(_FM&A(zBj`jkCKF|_x>GPuix3n8h{er)3IHq~ zpcY}Efxs!9L8jBiisrw5TA+(zZfe z(H+Ey#}i6RAmG=nQpDg|H38OlPeXl>lYcT4kYw&|?mY32tb+-Ix7WRC*s*)g)mZ~NGRh8Dp_(R# zriaq{yQR}yE`2k(8albG!>{vB!TN1mJJzO5hdP@0uH*dQGQtn=ue~n1R~ts_V(asG z|H<=0pG%hH<)&pNH)`%Soyhh4{%o@&+M&F>_wnRqIbyDT>5dv+-Vdke>|AuUwcvEt z4O>VOU9L-B9=HGtxz!3c-l=J*Kcjy1?j23gVED1|*Z>5aP5a8HgapyL%-@}-@_z!7 z{`$};BaP-*X1=V}dpnK>LR(5A4YqCWS$?yq@Xd~ mHh**C&9Exzo+0fatu`e&ey<#IejfY)`nk!ZS literal 0 HcmV?d00001 diff --git a/front/dist/resources/objects/arrow_up.png b/front/dist/resources/objects/arrow_up.png index b9f81ebc21b9be4af3c5f85ddeb5947ec958c7c1..6e948ae216bdbc1f31a4d1e7db53bc69de9db514 100644 GIT binary patch literal 4710 zcmeHLdsGu=7LRX4Kv1zRMi>SkfF_wdNoI*W0z!%bgeVVnbuyX20C|`U5CJJ-*&-@n zEmWx%5m2`lsSB>++XX5rT3xlS4-imPiV7%QSzDI<5)koh|M8sde`L-~X71y6@BQ8T zeJ7L6p}_&xmJXIQ8qHc7=obdQZB3`eL~wO_HGt7*V|!BMkyIF#4C(Y*6`4Rl)OsBO z5k^u)qZ#i$FI<^Rcee5$i1IJYP;b4WcXbR)%5Q%XR=Ms^u9 z>Qgoo3Xe2YI7HKYUtMx(8kbh^Bxaqx?M-oGuJw<{=gb$BbC0cXyl4}>_h4*Z)si1W z##z{8)>BST(;7wq=qv+a>Vw>l{+-Nf&$(l7c~o=iVxgevrRpm!amc#kM%azQulQ3ds_)hWT@YV4 z9D8xP7mbAqmN=jyEUUhkV zMW^3KT-%3!kY)>QTG2;UPrsPYoG_g#!tOKT@_7#kFcCrqn73rctc}i-Sh<^fKx&Jf5H+1rbAP z#BkTivoJ&|#c%{)hRAdhB9;tH(G%e*!E!t$9v3NLuf>+0Mic<32?~RZ>I97eHHu*~ zE(-2VVipXUO{jP=94QNhBw9TI@t8a&!tgheNgQ~wCFH4Bs?adMB|{M4NestQln!OF zl9Q8}$y}yZAH!mcL?RZ#VR1MNV8Jk~*HD;|p)t6aAOqVIXeg5x1pN?+FpQxTaWOu@;VM)@-UukE#z0{joG?KFa3%?G2#%7A;Fyx3Bya%1V{;io zA&4hEn3_60Kg1fp(H=EQVm|G%;p{iEz{>R4Rr!Oyr#;Gy$Vjz(EWzB{hl0 zcM3VFCc-Jq#3oz7;qW{Vj*!o1^F8<@yjKu<1DHe;CL3XL1_?2>1qHu# z!5{`KiBOsY0lz^N9*b#W2(Z3~2I{Sx{HU65oUN(TPY+@023mTsLNJ zX8if{dG+6H+ER7c=5Qv|H>U0J&^Y*(v?>tt-3eYRW%~&HtV(y z*}axiA#}z1sCkPQIC48O>+)7bc&0zxZHQ{w<;>l+bAgTBmYVr1igvckwi$DT-^QWs zQ{3{FUtPKTsAAWxu8V7CH9lQV_U!KdJaZY;-6nK$@&1JwdPsQn^^u1+gJ}a?UAf1v z-X=Sjrpm+pC-Dm&u>0v#RBi96BR)LezXD8vG??W9Y8W! z7Z_!r(QN8W=a_{_dEaq delta 121 zcmaE+GL>
+ {#if $selectCharacterSceneVisibleStore} + + {/if} + {#if $customCharacterSceneVisibleStore} + + {/if} {#if $selectCompanionSceneVisibleStore} - + {/if} +
+ Refresh + +
+ + + + diff --git a/front/dist/resources/objects/help-setting-camera-permission-chrome.png b/front/src/Components/HelpCameraSettings/images/help-setting-camera-permission-chrome.png similarity index 100% rename from front/dist/resources/objects/help-setting-camera-permission-chrome.png rename to front/src/Components/HelpCameraSettings/images/help-setting-camera-permission-chrome.png diff --git a/front/dist/resources/objects/help-setting-camera-permission-firefox.png b/front/src/Components/HelpCameraSettings/images/help-setting-camera-permission-firefox.png similarity index 100% rename from front/dist/resources/objects/help-setting-camera-permission-firefox.png rename to front/src/Components/HelpCameraSettings/images/help-setting-camera-permission-firefox.png diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index 2a1d3d8a..e1b969fc 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -7,6 +7,9 @@ import {LoginSceneName} from "../Login/LoginScene"; import {SelectCharacterSceneName} from "../Login/SelectCharacterScene"; import {EnableCameraSceneName} from "../Login/EnableCameraScene"; import {localUserStore} from "../../Connexion/LocalUserStore"; +import {get} from "svelte/store"; +import {requestedCameraState, requestedMicrophoneState} from "../../Stores/MediaStore"; +import {helpCameraSettingsVisibleStore} from "../../Stores/HelpCameraSettingsStore"; export interface HasMovedEvent { direction: string; @@ -89,7 +92,12 @@ export class GameManager { console.log('starting '+ (this.currentGameSceneName || this.startRoom.id)) scenePlugin.start(this.currentGameSceneName || this.startRoom.id); scenePlugin.launch(MenuSceneName); - scenePlugin.launch(HelpCameraSettingsSceneName);//700 + //scenePlugin.launch(HelpCameraSettingsSceneName);//700 + + if(!localUserStore.getHelpCameraSettingsShown() && (!get(requestedMicrophoneState) || !get(requestedCameraState))){ + helpCameraSettingsVisibleStore.set(true); + localUserStore.setHelpCameraSettingsShown(); + } } public gameSceneIsCreated(scene: GameScene) { diff --git a/front/src/Stores/HelpCameraSettingsStore.ts b/front/src/Stores/HelpCameraSettingsStore.ts new file mode 100644 index 00000000..88373dab --- /dev/null +++ b/front/src/Stores/HelpCameraSettingsStore.ts @@ -0,0 +1,3 @@ +import { writable } from "svelte/store"; + +export const helpCameraSettingsVisibleStore = writable(false); diff --git a/front/src/WebRtc/MediaManager.ts b/front/src/WebRtc/MediaManager.ts index 29973e46..180b5746 100644 --- a/front/src/WebRtc/MediaManager.ts +++ b/front/src/WebRtc/MediaManager.ts @@ -12,6 +12,7 @@ import { import { screenSharingLocalStreamStore } from "../Stores/ScreenSharingStore"; +import {helpCameraSettingsVisibleStore} from "../Stores/HelpCameraSettingsStore"; export type UpdatedLocalStreamCallback = (media: MediaStream|null) => void; export type StartScreenSharingCallback = (media: MediaStream) => void; @@ -29,7 +30,6 @@ export class MediaManager { startScreenSharingCallBacks : Set = new Set(); stopScreenSharingCallBacks : Set = new Set(); showReportModalCallBacks : Set = new Set(); - helpCameraSettingsCallBacks : Set = new Set(); private focused : boolean = true; @@ -64,7 +64,7 @@ export class MediaManager { if (result.type === 'error') { console.error(result.error); layoutManager.addInformation('warning', 'Camera access denied. Click here and check your browser permissions.', () => { - this.showHelpCameraSettingsCallBack(); + helpCameraSettingsVisibleStore.set(true); }, this.userInputManager); return; } @@ -74,7 +74,7 @@ export class MediaManager { if (result.type === 'error') { console.error(result.error); layoutManager.addInformation('warning', 'Screen sharing denied. Click here and check your browser permissions.', () => { - this.showHelpCameraSettingsCallBack(); + helpCameraSettingsVisibleStore.set(true); }, this.userInputManager); return; } @@ -395,16 +395,6 @@ export class MediaManager { this.showReportModalCallBacks.add(callback); } - public setHelpCameraSettingsCallBack(callback: HelpCameraSettingsCallBack){ - this.helpCameraSettingsCallBacks.add(callback); - } - - private showHelpCameraSettingsCallBack(){ - for(const callBack of this.helpCameraSettingsCallBacks){ - callBack(); - } - } - //FIX ME SOUNDMETER: check stalability of sound meter calculation /*updateSoudMeter(){ try{ From 9063ba2a1fa7b23b415e04f3a2163a1d6745123d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 1 Jun 2021 09:12:31 +0200 Subject: [PATCH 097/203] Removing call to removed method --- front/src/Phaser/Menu/HelpCameraSettingsScene.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts index fcc7996a..7d684df2 100644 --- a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts +++ b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts @@ -47,10 +47,6 @@ export class HelpCameraSettingsScene extends DirtyScene { this.openHelpCameraSettingsOpened(); localUserStore.setHelpCameraSettingsShown(); } - - mediaManager.setHelpCameraSettingsCallBack(() => { - this.openHelpCameraSettingsOpened(); - }); } private openHelpCameraSettingsOpened(): void{ From 5839e0b270ae0589b27ba553daae316d1a6fe4f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 1 Jun 2021 09:17:01 +0200 Subject: [PATCH 098/203] Throwing exceptions into store subscribers is wreaking havok --- front/src/Phaser/Login/EnableCameraScene.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/front/src/Phaser/Login/EnableCameraScene.ts b/front/src/Phaser/Login/EnableCameraScene.ts index 73fa7303..3eabe4d7 100644 --- a/front/src/Phaser/Login/EnableCameraScene.ts +++ b/front/src/Phaser/Login/EnableCameraScene.ts @@ -111,8 +111,10 @@ export class EnableCameraScene extends ResizableScene { this.localStreamStoreUnsubscriber = localStreamStore.subscribe((result) => { if (result.type === 'error') { - // TODO: proper handling of the error - throw result.error; + // TODO: we could handle the error in a specific way on the EnableCameraScene page. + // TODO: we could handle the error in a specific way on the EnableCameraScene page. + return; + //throw result.error; } this.getDevices(); From 9a5300dd2dd6853c8c662f4bd629754b18b3c3db Mon Sep 17 00:00:00 2001 From: GRL Date: Tue, 1 Jun 2021 11:07:52 +0200 Subject: [PATCH 099/203] helpCameraSettingPopup in svelte with nes-css --- .../resources/html/helpCameraSettings.html | 106 ------------- .../HelpCameraSettingsPopup.svelte | 116 ++++---------- front/src/Phaser/Game/GameManager.ts | 2 - .../Phaser/Menu/HelpCameraSettingsScene.ts | 150 ------------------ front/src/index.ts | 3 +- 5 files changed, 29 insertions(+), 348 deletions(-) delete mode 100644 front/dist/resources/html/helpCameraSettings.html delete mode 100644 front/src/Phaser/Menu/HelpCameraSettingsScene.ts diff --git a/front/dist/resources/html/helpCameraSettings.html b/front/dist/resources/html/helpCameraSettings.html deleted file mode 100644 index 8c4e63c4..00000000 --- a/front/dist/resources/html/helpCameraSettings.html +++ /dev/null @@ -1,106 +0,0 @@ - - -
-
- Refresh - -
- diff --git a/front/src/Components/HelpCameraSettings/HelpCameraSettingsPopup.svelte b/front/src/Components/HelpCameraSettings/HelpCameraSettingsPopup.svelte index 44ebde3d..fc6656a0 100644 --- a/front/src/Components/HelpCameraSettings/HelpCameraSettingsPopup.svelte +++ b/front/src/Components/HelpCameraSettings/HelpCameraSettingsPopup.svelte @@ -3,6 +3,7 @@ import firefoxImg from "./images/help-setting-camera-permission-firefox.png"; import chromeImg from "./images/help-setting-camera-permission-chrome.png"; + let isAndroid = window.navigator.userAgent.includes('Android'); let isFirefox = window.navigator.userAgent.includes('Firefox'); let isChrome = window.navigator.userAgent.includes('Chrome'); @@ -16,115 +17,54 @@ -
-

Camera/Microphone access needed

-
-
Camera/Microphone access needed
-

Permission denied

-

You must allow camera and microphone access in your browser.

-
    -
  • Please click on the lock or camera symbol on the side of the URL in the address bar. Here you can grant "always allow" access to your input devices.
  • -
  • Please ensure that you have a camera AND microphone plugged into your computer.
  • -
-

Once you've followed these steps, please refresh this page.

-

If you prefer to continue without allowing camera and microphone access, click on Continue

+ +
+

Camera/Microphone access needed

+

Permission denied

+

You must allow camera and microphone access in your browser.

{#if isFirefox } - - {:else if isChrome } - +

Please click the "Remember this decision" checkbox, if you don't want Firefox to keep asking you the authorization.

+ + {:else if isChrome && !isAndroid } + {/if}

- -
- Refresh - +
+ +
diff --git a/front/src/Phaser/Game/GameManager.ts b/front/src/Phaser/Game/GameManager.ts index e1b969fc..8c38a626 100644 --- a/front/src/Phaser/Game/GameManager.ts +++ b/front/src/Phaser/Game/GameManager.ts @@ -2,7 +2,6 @@ import {GameScene} from "./GameScene"; import {connectionManager} from "../../Connexion/ConnectionManager"; import type {Room} from "../../Connexion/Room"; import {MenuScene, MenuSceneName} from "../Menu/MenuScene"; -import {HelpCameraSettingsScene, HelpCameraSettingsSceneName} from "../Menu/HelpCameraSettingsScene"; import {LoginSceneName} from "../Login/LoginScene"; import {SelectCharacterSceneName} from "../Login/SelectCharacterScene"; import {EnableCameraSceneName} from "../Login/EnableCameraScene"; @@ -92,7 +91,6 @@ export class GameManager { console.log('starting '+ (this.currentGameSceneName || this.startRoom.id)) scenePlugin.start(this.currentGameSceneName || this.startRoom.id); scenePlugin.launch(MenuSceneName); - //scenePlugin.launch(HelpCameraSettingsSceneName);//700 if(!localUserStore.getHelpCameraSettingsShown() && (!get(requestedMicrophoneState) || !get(requestedCameraState))){ helpCameraSettingsVisibleStore.set(true); diff --git a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts b/front/src/Phaser/Menu/HelpCameraSettingsScene.ts deleted file mode 100644 index 7d684df2..00000000 --- a/front/src/Phaser/Menu/HelpCameraSettingsScene.ts +++ /dev/null @@ -1,150 +0,0 @@ -import {mediaManager} from "../../WebRtc/MediaManager"; -import {HtmlUtils} from "../../WebRtc/HtmlUtils"; -import {localUserStore} from "../../Connexion/LocalUserStore"; -import {DirtyScene} from "../Game/DirtyScene"; -import {get} from "svelte/store"; -import {requestedCameraState, requestedMicrophoneState} from "../../Stores/MediaStore"; - -export const HelpCameraSettingsSceneName = 'HelpCameraSettingsScene'; -const helpCameraSettings = 'helpCameraSettings'; -/** - * The scene that show how to permit Camera and Microphone access if there are not already allowed - */ -export class HelpCameraSettingsScene extends DirtyScene { - private helpCameraSettingsElement!: Phaser.GameObjects.DOMElement; - private helpCameraSettingsOpened: boolean = false; - - constructor() { - super({key: HelpCameraSettingsSceneName}); - } - - preload() { - this.load.html(helpCameraSettings, 'resources/html/helpCameraSettings.html'); - } - - create(){ - this.createHelpCameraSettings(); - } - - private createHelpCameraSettings() : void { - const middleX = this.getMiddleX(); - this.helpCameraSettingsElement = this.add.dom(middleX, -800, undefined, {overflow: 'scroll'}).createFromCache(helpCameraSettings); - this.revealMenusAfterInit(this.helpCameraSettingsElement, helpCameraSettings); - this.helpCameraSettingsElement.addListener('click'); - this.helpCameraSettingsElement.on('click', (event:MouseEvent) => { - if((event?.target as HTMLInputElement).id === 'mailto') { - return; - } - event.preventDefault(); - if((event?.target as HTMLInputElement).id === 'helpCameraSettingsFormRefresh') { - window.location.reload(); - }else if((event?.target as HTMLInputElement).id === 'helpCameraSettingsFormContinue') { - this.closeHelpCameraSettingsOpened(); - } - }); - - if(!localUserStore.getHelpCameraSettingsShown() && (!get(requestedMicrophoneState) || !get(requestedCameraState))){ - this.openHelpCameraSettingsOpened(); - localUserStore.setHelpCameraSettingsShown(); - } - } - - private openHelpCameraSettingsOpened(): void{ - HtmlUtils.getElementByIdOrFail('webRtcSetup').style.display = 'none'; - this.helpCameraSettingsOpened = true; - try{ - if(window.navigator.userAgent.includes('Firefox')){ - HtmlUtils.getElementByIdOrFail('browserHelpSetting').innerHTML =''; - }else if(window.navigator.userAgent.includes('Chrome')){ - HtmlUtils.getElementByIdOrFail('browserHelpSetting').innerHTML =''; - } - }catch(err) { - console.error('openHelpCameraSettingsOpened => getElementByIdOrFail => error', err); - } - const middleY = this.getMiddleY(); - const middleX = this.getMiddleX(); - this.tweens.add({ - targets: this.helpCameraSettingsElement, - y: middleY, - x: middleX, - duration: 1000, - ease: 'Power3', - overflow: 'scroll' - }); - - this.dirty = true; - } - - private closeHelpCameraSettingsOpened(): void{ - const middleX = this.getMiddleX(); - /*const helpCameraSettingsInfo = this.helpCameraSettingsElement.getChildByID('helpCameraSettings') as HTMLParagraphElement; - helpCameraSettingsInfo.innerText = ''; - helpCameraSettingsInfo.style.display = 'none';*/ - this.helpCameraSettingsOpened = false; - this.tweens.add({ - targets: this.helpCameraSettingsElement, - y: -1000, - x: middleX, - duration: 1000, - ease: 'Power3', - overflow: 'scroll' - }); - - this.dirty = true; - } - - private revealMenusAfterInit(menuElement: Phaser.GameObjects.DOMElement, rootDomId: string) { - //Dom elements will appear inside the viewer screen when creating before being moved out of it, which create a flicker effect. - //To prevent this, we put a 'hidden' attribute on the root element, we remove it only after the init is done. - setTimeout(() => { - (menuElement.getChildByID(rootDomId) as HTMLElement).hidden = false; - }, 250); - } - - update(time: number, delta: number): void { - this.dirty = false; - } - - public onResize(): void { - super.onResize( - - ); - if (this.helpCameraSettingsOpened) { - const middleX = this.getMiddleX(); - const middleY = this.getMiddleY(); - this.tweens.add({ - targets: this.helpCameraSettingsElement, - x: middleX, - y: middleY, - duration: 1000, - ease: 'Power3' - }); - this.dirty = true; - } - } - - private getMiddleX() : number{ - return (this.scale.width / 2) - - ( - this.helpCameraSettingsElement - && this.helpCameraSettingsElement.node - && this.helpCameraSettingsElement.node.getBoundingClientRect().width > 0 - ? (this.helpCameraSettingsElement.node.getBoundingClientRect().width / (2 * this.scale.zoom)) - : (400 / 2) - ); - } - - private getMiddleY() : number{ - const middleY = ((this.scale.height) - ( - (this.helpCameraSettingsElement - && this.helpCameraSettingsElement.node - && this.helpCameraSettingsElement.node.getBoundingClientRect().height > 0 - ? this.helpCameraSettingsElement.node.getBoundingClientRect().height : 400 /*FIXME to use a const will be injected in HTMLElement*/)/this.scale.zoom)) / 2; - return (middleY > 0 ? middleY : 0); - } - - public isDirty(): boolean { - return this.dirty; - } -} - diff --git a/front/src/index.ts b/front/src/index.ts index bc435ee1..90d4c612 100644 --- a/front/src/index.ts +++ b/front/src/index.ts @@ -13,7 +13,6 @@ import WebFontLoaderPlugin from 'phaser3-rex-plugins/plugins/webfontloader-plugi import {EntryScene} from "./Phaser/Login/EntryScene"; import {coWebsiteManager} from "./WebRtc/CoWebsiteManager"; import {MenuScene} from "./Phaser/Menu/MenuScene"; -import {HelpCameraSettingsScene} from "./Phaser/Menu/HelpCameraSettingsScene"; import {localUserStore} from "./Connexion/LocalUserStore"; import {ErrorScene} from "./Phaser/Reconnecting/ErrorScene"; import {iframeListener} from "./Api/IframeListener"; @@ -96,7 +95,7 @@ const config: GameConfig = { ErrorScene, CustomizeScene, MenuScene, - HelpCameraSettingsScene], + ], //resolution: window.devicePixelRatio / 2, fps: fps, dom: { From 47555d59558f8c324368d4fe155bbe09a6f98684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Tue, 1 Jun 2021 11:19:46 +0200 Subject: [PATCH 100/203] Migrating cam to Svelte on Camera setup screen --- front/dist/index.tmpl.html | 4 -- .../EnableCamera/EnableCameraScene.svelte | 66 +++++++++++++++++++ front/src/Phaser/Login/EnableCameraScene.ts | 15 ++--- front/style/style.css | 33 ---------- 4 files changed, 71 insertions(+), 47 deletions(-) diff --git a/front/dist/index.tmpl.html b/front/dist/index.tmpl.html index 9c251bf3..279609e8 100644 --- a/front/dist/index.tmpl.html +++ b/front/dist/index.tmpl.html @@ -94,10 +94,6 @@
-
- - -
diff --git a/front/src/Components/EnableCamera/EnableCameraScene.svelte b/front/src/Components/EnableCamera/EnableCameraScene.svelte index ac2cf992..f8b2867e 100644 --- a/front/src/Components/EnableCamera/EnableCameraScene.svelte +++ b/front/src/Components/EnableCamera/EnableCameraScene.svelte @@ -1,6 +1,8 @@

Turn on your camera and microphone

+
+ + +
+ - {#if $gameOverlayVisibilityStore} - - - {/if} {#if $helpCameraSettingsVisibleStore} {/if}
- +
From 9e35f96ce5284c9e6a7d5807ee72ac05315e8af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 2 Jun 2021 09:58:00 +0200 Subject: [PATCH 111/203] Fixing absolute/relative layouts of Svelte layers --- front/src/Components/App.svelte | 47 ++++++++++------ front/src/Components/CameraControls.svelte | 44 +++++++-------- .../EnableCamera/EnableCameraScene.svelte | 54 ++++++++++++------- front/style/style.scss | 10 ++-- 4 files changed, 97 insertions(+), 58 deletions(-) diff --git a/front/src/Components/App.svelte b/front/src/Components/App.svelte index cba741fe..d1a18f21 100644 --- a/front/src/Components/App.svelte +++ b/front/src/Components/App.svelte @@ -22,31 +22,48 @@
-{#if $gameOverlayVisibilityStore} - - -{/if} -
{#if $loginSceneVisibleStore} - +
+ +
{/if} {#if $selectCharacterSceneVisibleStore} - +
+ +
{/if} {#if $customCharacterSceneVisibleStore} - +
+ +
{/if} {#if $selectCompanionSceneVisibleStore} - +
+ +
{/if} {#if $enableCameraSceneVisibilityStore} - +
+ +
+ {/if} + + + {#if $gameOverlayVisibilityStore} +
+ + +
{/if} - {#if $helpCameraSettingsVisibleStore} - +
+ +
{/if}
-
diff --git a/front/src/Components/CameraControls.svelte b/front/src/Components/CameraControls.svelte index bd35d230..5c17a9fe 100644 --- a/front/src/Components/CameraControls.svelte +++ b/front/src/Components/CameraControls.svelte @@ -34,26 +34,28 @@ -
-
- {#if $requestedScreenSharingState} - Start screen sharing - {:else} - Stop screen sharing - {/if} -
-
- {#if $requestedCameraState} - Turn on webcam - {:else} - Turn off webcam - {/if} -
-
- {#if $requestedMicrophoneState} - Turn on microphone - {:else} - Turn off microphone - {/if} +
+
+
+ {#if $requestedScreenSharingState} + Start screen sharing + {:else} + Stop screen sharing + {/if} +
+
+ {#if $requestedCameraState} + Turn on webcam + {:else} + Turn off webcam + {/if} +
+
+ {#if $requestedMicrophoneState} + Turn on microphone + {:else} + Turn off microphone + {/if} +
diff --git a/front/src/Components/EnableCamera/EnableCameraScene.svelte b/front/src/Components/EnableCamera/EnableCameraScene.svelte index 36e31cf6..b5b2748a 100644 --- a/front/src/Components/EnableCamera/EnableCameraScene.svelte +++ b/front/src/Components/EnableCamera/EnableCameraScene.svelte @@ -11,6 +11,8 @@ import {onDestroy} from "svelte"; import HorizontalSoundMeterWidget from "./HorizontalSoundMeterWidget.svelte"; import cinemaCloseImg from "../images/cinema-close.svg"; + import cinemaImg from "../images/cinema.svg"; + import microphoneImg from "../images/microphone.svg"; export let game: Game; let selectedCamera : string|null = null; @@ -86,27 +88,33 @@
{#if $cameraListStore.length > 1 } -
- -
+
+ Camera +
+ +
+
{/if} {#if $microphoneListStore.length > 1 } -
- -
+
+ Microphone +
+ +
+
{/if}
@@ -190,6 +198,16 @@ font-size: 200%; } + .control-group { + display: flex; + flex-direction: row; + + img { + width: 30px; + margin-right: 10px; + } + } + .webrtcsetup{ /*position: absolute; top: 140px; diff --git a/front/style/style.scss b/front/style/style.scss index 78cfcc66..ef3df5c5 100644 --- a/front/style/style.scss +++ b/front/style/style.scss @@ -1212,13 +1212,15 @@ div.action.danger p.action-body{ height: 100%; pointer-events: none; - .absolute-overlay { - position: absolute; + & > div { + position: relative; width: 100%; height: 100%; - & > * { - position: relative; + & > div { + position: absolute; + width: 100%; + height: 100%; } } } From ea576477cdb21383598ae0778b51430a68ec8c92 Mon Sep 17 00:00:00 2001 From: GRL Date: Wed, 2 Jun 2021 09:58:34 +0200 Subject: [PATCH 112/203] Border on videocam in enable camera scene --- front/src/Components/App.svelte | 52 +++++++------- .../EnableCamera/EnableCameraScene.svelte | 71 +++++-------------- 2 files changed, 45 insertions(+), 78 deletions(-) diff --git a/front/src/Components/App.svelte b/front/src/Components/App.svelte index cba741fe..6bf45e82 100644 --- a/front/src/Components/App.svelte +++ b/front/src/Components/App.svelte @@ -22,31 +22,31 @@
-{#if $gameOverlayVisibilityStore} - - -{/if} -
- {#if $loginSceneVisibleStore} - - {/if} - {#if $selectCharacterSceneVisibleStore} - - {/if} - {#if $customCharacterSceneVisibleStore} - - {/if} - {#if $selectCompanionSceneVisibleStore} - - {/if} - {#if $enableCameraSceneVisibilityStore} - - {/if} - - {#if $helpCameraSettingsVisibleStore} - + {#if $gameOverlayVisibilityStore} + + {/if} -
+
+ {#if $loginSceneVisibleStore} + + {/if} + {#if $selectCharacterSceneVisibleStore} + + {/if} + {#if $customCharacterSceneVisibleStore} + + {/if} + {#if $selectCompanionSceneVisibleStore} + + {/if} + {#if $enableCameraSceneVisibilityStore} + + {/if} + + {#if $helpCameraSettingsVisibleStore} + + {/if} +
diff --git a/front/src/Components/EnableCamera/EnableCameraScene.svelte b/front/src/Components/EnableCamera/EnableCameraScene.svelte index 36e31cf6..ddb31b1d 100644 --- a/front/src/Components/EnableCamera/EnableCameraScene.svelte +++ b/front/src/Components/EnableCamera/EnableCameraScene.svelte @@ -77,10 +77,13 @@

Turn on your camera and microphone

-
- - -
+ {#if $localStreamStore.stream} + + {:else } +
+ +
+ {/if}
@@ -110,21 +113,6 @@ {/if}
- - -
@@ -132,23 +120,10 @@ diff --git a/front/src/Components/UI/images/megaphone.svg b/front/src/Components/UI/images/megaphone.svg new file mode 100644 index 00000000..708f860c --- /dev/null +++ b/front/src/Components/UI/images/megaphone.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 10a038ba..fff6912c 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -280,7 +280,7 @@ export class GameScene extends DirtyScene implements CenterListener { this.load.spritesheet('layout_modes', 'resources/objects/layout_modes.png', {frameWidth: 32, frameHeight: 32}); this.load.bitmapFont('main_font', 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); //eslint-disable-next-line @typescript-eslint/no-explicit-any - (this.load as any).rexWebFont({ + (this.load as any).rexWebFont({ custom: { families: ['Press Start 2P'], urls: ['/resources/fonts/fonts.css'], diff --git a/front/src/Phaser/Game/SoundManager.ts b/front/src/Phaser/Game/SoundManager.ts index f0210494..47614fca 100644 --- a/front/src/Phaser/Game/SoundManager.ts +++ b/front/src/Phaser/Game/SoundManager.ts @@ -17,7 +17,9 @@ class SoundManager { return res(sound); } loadPlugin.audio(soundUrl, soundUrl); - loadPlugin.once('filecomplete-audio-' + soundUrl, () => res(soundManager.add(soundUrl))); + loadPlugin.once('filecomplete-audio-' + soundUrl, () => { + res(soundManager.add(soundUrl)); + }); loadPlugin.start(); }); this.soundPromises.set(soundUrl,soundPromise); diff --git a/front/src/Stores/SoundPlayingStore.ts b/front/src/Stores/SoundPlayingStore.ts new file mode 100644 index 00000000..cf1d681c --- /dev/null +++ b/front/src/Stores/SoundPlayingStore.ts @@ -0,0 +1,22 @@ +import { writable } from "svelte/store"; + +/** + * A store that contains the URL of the sound currently playing + */ +function createSoundPlayingStore() { + const { subscribe, set, update } = writable(null); + + return { + subscribe, + playSound: (url: string) => { + set(url); + }, + soundEnded: () => { + set(null); + } + + + }; +} + +export const soundPlayingStore = createSoundPlayingStore(); diff --git a/front/style/style.scss b/front/style/style.scss index 883f63bb..f43fb240 100644 --- a/front/style/style.scss +++ b/front/style/style.scss @@ -810,35 +810,6 @@ input[type=range]:focus::-ms-fill-upper { } - -/*audio html when audio message playing*/ -.main-container .audio-playing { - position: absolute; - width: 200px; - height: 54px; - right: -210px; - top: 40px; - transition: all 0.1s ease-out; - background-color: black; - border-radius: 30px 0 0 30px; - display: inline-flex; -} - -.main-container .audio-playing.active{ - right: 0; -} -.main-container .audio-playing img{ - /*width: 30px;*/ - border-radius: 50%; - background-color: #ffda01; - padding: 10px; -} -.main-container .audio-playing p{ - color: white; - margin-left: 10px; - margin-top: 14px; -} - /* VIDEO QUALITY */ .main-console div.setting h1{ color: white; diff --git a/front/webpack.config.ts b/front/webpack.config.ts index 5ff37028..3a69b74a 100644 --- a/front/webpack.config.ts +++ b/front/webpack.config.ts @@ -94,6 +94,7 @@ module.exports = { // See https://github.com/sveltejs/svelte/issues/4946#issuecomment-662168782 if (warning.code === 'a11y-no-onchange') { return } + if (warning.code === 'a11y-autofocus') { return } // process as usual handleWarning(warning); From d43633e936448bc44740ebdb3f21164c2a135ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 2 Jun 2021 16:52:25 +0200 Subject: [PATCH 119/203] Added an animation when audio message played --- front/src/Components/UI/AudioPlaying.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front/src/Components/UI/AudioPlaying.svelte b/front/src/Components/UI/AudioPlaying.svelte index 1001c5b2..a2c6d321 100644 --- a/front/src/Components/UI/AudioPlaying.svelte +++ b/front/src/Components/UI/AudioPlaying.svelte @@ -1,4 +1,5 @@ -
+
Audio playing

Audio message

>1UI)0*AB+L@4jl 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�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 literal 0 HcmV?d00001 diff --git a/maps/tests/SoundScript.js b/maps/tests/SoundScript.js new file mode 100644 index 00000000..f90dfe0f --- /dev/null +++ b/maps/tests/SoundScript.js @@ -0,0 +1,44 @@ +var zonePlaySound = "PlaySound"; +var zonePlaySoundLoop = "playSoundLoop"; +var stopSound = "StopSound"; +var loopConfig ={ + volume : 0.5, + loop : true +} +var configBase = { + volume : 0.5, + loop : false +} +var enterSoundUrl = "webrtc-in.mp3"; +var exitSoundUrl = "webrtc-out.mp3"; +var winSoundUrl = "Win.ogg"; +var enterSound; +var exitSound; +var winSound; +loadAllSounds(); +winSound.play(configBase); +WA.onEnterZone(zonePlaySound, () => { +enterSound.play(configBase); +}) + +WA.onEnterZone(zonePlaySoundLoop, () => { +winSound.play(loopConfig); +}) + +WA.onLeaveZone(zonePlaySoundLoop, () => { + winSound.stop(); +}) + +WA.onEnterZone('popupZone', () => { + +}); + +WA.onLeaveZone('popupZone', () => { + +}) + + function loadAllSounds(){ + winSound = WA.loadSound(winSoundUrl); + enterSound = WA.loadSound(enterSoundUrl); + exitSound = WA.loadSound(exitSoundUrl); + } diff --git a/maps/tests/SoundTest.json b/maps/tests/SoundTest.json new file mode 100644 index 00000000..fd04ed70 --- /dev/null +++ b/maps/tests/SoundTest.json @@ -0,0 +1,134 @@ +{ "compressionlevel":-1, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"start", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":20, + "x":0, + "y":0 + }, + { + "data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + "height":20, + "id":4, + "name":"floor", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":20, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":3, + "name":"playSound", + "opacity":1, + "properties":[ + { + "name":"zone", + "type":"string", + "value":"PlaySound" + }], + "type":"tilelayer", + "visible":true, + "width":20, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":6, + "name":"playSoundLoop", + "opacity":1, + "properties":[ + { + "name":"zone", + "type":"string", + "value":"playSoundLoop" + }], + "type":"tilelayer", + "visible":true, + "width":20, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":7, + "name":"stopSound", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":20, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":5, + "name":"floorLayer", + "objects":[ + { + "height":19.296875, + "id":2, + "name":"", + "rotation":0, + "text": + { + "text":"Play Sound", + "wrap":true + }, + "type":"", + "visible":true, + "width":107.109375, + "x":258.4453125, + "y":197.018229166667 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":8, + "nextobjectid":3, + "orientation":"orthogonal", + "properties":[ + { + "name":"script", + "type":"string", + "value":"SoundScript.js" + }], + "renderorder":"right-down", + "tiledversion":"1.5.0", + "tileheight":32, + "tilesets":[ + { + "columns":11, + "firstgid":1, + "image":"tileset1.png", + "imageheight":352, + "imagewidth":352, + "margin":0, + "name":"tileset1", + "spacing":0, + "tilecount":121, + "tileheight":32, + "tilewidth":32 + }], + "tilewidth":32, + "type":"map", + "version":1.5, + "width":20 +} \ No newline at end of file diff --git a/maps/tests/Win.ogg b/maps/tests/Win.ogg new file mode 100644 index 0000000000000000000000000000000000000000..43880a77051f50d5a10e1dff7b119d8563cdc64f GIT binary patch literal 36858 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