diff --git a/package.json b/package.json index 9bfe8b8..48da415 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,14 @@ "version": "1.5.0", "private": true, "dependencies": { + "@babylonjs/core": "^4.1.0", + "@babylonjs/loaders": "^4.1.0", "@msgpack/msgpack": "^1.12.1", "@stripe/stripe-js": "^1.3.2", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", "ammo.js": "kripken/ammo.js#aab297a4164779c3a9d8dc8d9da26958de3cb778", - "babylonjs": "^4.1.0", - "babylonjs-loaders": "^4.1.0", "case": "^1.6.3", "dexie": "^2.0.4", "fake-indexeddb": "^3.0.0", @@ -37,11 +37,13 @@ "simplebar-react": "^2.1.0", "simplify-js": "^1.2.4", "socket.io-client": "^2.3.0", + "source-map-explorer": "^2.4.2", "theme-ui": "^0.3.1", "use-image": "^1.0.5", "webrtc-adapter": "^7.5.1" }, "scripts": { + "analyze": "source-map-explorer 'build/static/js/*.js'", "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", diff --git a/src/components/dice/DiceInteraction.js b/src/components/dice/DiceInteraction.js index 846b66d..a786a6b 100644 --- a/src/components/dice/DiceInteraction.js +++ b/src/components/dice/DiceInteraction.js @@ -1,7 +1,19 @@ import React, { useRef, useEffect } from "react"; -import * as BABYLON from "babylonjs"; +import { Engine } from "@babylonjs/core/Engines/engine"; +import { Scene } from "@babylonjs/core/scene"; +import { Vector3, Color4, Matrix } from "@babylonjs/core/Maths/math"; +import { AmmoJSPlugin } from "@babylonjs/core/Physics/Plugins/ammoJSPlugin"; +import { TargetCamera } from "@babylonjs/core/Cameras/targetCamera"; import * as AMMO from "ammo.js"; -import "babylonjs-loaders"; + +import "@babylonjs/core/Physics/physicsEngineComponent"; +import "@babylonjs/core/Lights/Shadows/shadowGeneratorSceneComponent"; +import "@babylonjs/core/Materials/Textures/Loaders/ddsTextureLoader"; +import "@babylonjs/core/Meshes/Builders/boxBuilder"; +import "@babylonjs/core/Actions/actionManager"; +import "@babylonjs/core/Culling/ray"; +import "@babylonjs/loaders/glTF"; + import ReactResizeDetector from "react-resize-detector"; import usePreventTouch from "../../helpers/usePreventTouch"; @@ -16,25 +28,18 @@ function DiceInteraction({ onSceneMount, onPointerDown, onPointerUp }) { useEffect(() => { const canvas = canvasRef.current; - const engine = new BABYLON.Engine(canvas, true, { + const engine = new Engine(canvas, true, { preserveDrawingBuffer: true, stencil: true, }); - const scene = new BABYLON.Scene(engine); - scene.clearColor = new BABYLON.Color4(0, 0, 0, 0); + const scene = new Scene(engine); + scene.clearColor = new Color4(0, 0, 0, 0); // Enable physics - scene.enablePhysics( - new BABYLON.Vector3(0, -98, 0), - new BABYLON.AmmoJSPlugin(true, AMMO) - ); + scene.enablePhysics(new Vector3(0, -98, 0), new AmmoJSPlugin(true, AMMO)); - let camera = new BABYLON.TargetCamera( - "camera", - new BABYLON.Vector3(0, 33.5, 0), - scene - ); + let camera = new TargetCamera("camera", new Vector3(0, 33.5, 0), scene); camera.fov = 0.65; - camera.setTarget(BABYLON.Vector3.Zero()); + camera.setTarget(Vector3.Zero()); onSceneMount && onSceneMount({ scene, engine, canvas }); @@ -48,7 +53,7 @@ function DiceInteraction({ onSceneMount, onPointerDown, onPointerUp }) { const ray = scene.createPickingRay( scene.pointerX, scene.pointerY, - BABYLON.Matrix.Identity(), + Matrix.Identity(), camera ); const currentPosition = selectedMesh.getAbsolutePosition(); @@ -79,12 +84,8 @@ function DiceInteraction({ onSceneMount, onPointerDown, onPointerUp }) { if (scene) { const pickInfo = scene.pick(scene.pointerX, scene.pointerY); if (pickInfo.hit && pickInfo.pickedMesh.name !== "dice_tray") { - pickInfo.pickedMesh.physicsImpostor.setLinearVelocity( - BABYLON.Vector3.Zero() - ); - pickInfo.pickedMesh.physicsImpostor.setAngularVelocity( - BABYLON.Vector3.Zero() - ); + pickInfo.pickedMesh.physicsImpostor.setLinearVelocity(Vector3.Zero()); + pickInfo.pickedMesh.physicsImpostor.setAngularVelocity(Vector3.Zero()); selectedMeshRef.current = pickInfo.pickedMesh; } } @@ -97,7 +98,7 @@ function DiceInteraction({ onSceneMount, onPointerDown, onPointerUp }) { const scene = sceneRef.current; if (selectedMesh && scene) { // Average velocity window - let velocity = BABYLON.Vector3.Zero(); + let velocity = Vector3.Zero(); for (let v of velocityWindow) { velocity.addInPlace(v); } diff --git a/src/components/dice/DiceTrayOverlay.js b/src/components/dice/DiceTrayOverlay.js index a2e925d..5a44556 100644 --- a/src/components/dice/DiceTrayOverlay.js +++ b/src/components/dice/DiceTrayOverlay.js @@ -5,7 +5,10 @@ import React, { useContext, useState, } from "react"; -import * as BABYLON from "babylonjs"; +import { Vector3 } from "@babylonjs/core/Maths/math"; +import { DirectionalLight } from "@babylonjs/core/Lights/directionalLight"; +import { ShadowGenerator } from "@babylonjs/core/Lights/Shadows/shadowGenerator"; +import { CubeTexture } from "@babylonjs/core/Materials/Textures/cubeTexture"; import { Box } from "theme-ui"; import environment from "../../dice/environment.dds"; @@ -102,20 +105,20 @@ function DiceTrayOverlay({ async function initializeScene(scene) { handleAssetLoadStart(); - let light = new BABYLON.DirectionalLight( + let light = new DirectionalLight( "DirectionalLight", - new BABYLON.Vector3(-0.5, -1, -0.5), + new Vector3(-0.5, -1, -0.5), scene ); - light.position = new BABYLON.Vector3(5, 10, 5); + light.position = new Vector3(5, 10, 5); light.shadowMinZ = 1; light.shadowMaxZ = 50; - let shadowGenerator = new BABYLON.ShadowGenerator(1024, light); + let shadowGenerator = new ShadowGenerator(1024, light); shadowGenerator.useCloseExponentialShadowMap = true; shadowGenerator.darkness = 0.7; shadowGeneratorRef.current = shadowGenerator; - scene.environmentTexture = BABYLON.CubeTexture.CreateFromPrefilteredData( + scene.environmentTexture = CubeTexture.CreateFromPrefilteredData( environment, scene ); diff --git a/src/dice/Dice.js b/src/dice/Dice.js index e40e352..21dcbfa 100644 --- a/src/dice/Dice.js +++ b/src/dice/Dice.js @@ -1,4 +1,7 @@ -import * as BABYLON from "babylonjs"; +import { Vector3 } from "@babylonjs/core/Maths/math"; +import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader"; +import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial"; +import { PhysicsImpostor } from "@babylonjs/core/Physics/physicsImpostor"; import d4Source from "./shared/d4.glb"; import d6Source from "./shared/d6.glb"; @@ -35,9 +38,8 @@ class Dice { } static async loadMesh(source, material, scene) { - let mesh = ( - await BABYLON.SceneLoader.ImportMeshAsync("", source, "", scene) - ).meshes[1]; + let mesh = (await SceneLoader.ImportMeshAsync("", source, "", scene)) + .meshes[1]; mesh.setParent(null); mesh.material = material; @@ -48,7 +50,7 @@ class Dice { } static async loadMaterial(materialName, textures, scene) { - let pbr = new BABYLON.PBRMaterial(materialName, scene); + let pbr = new PBRMaterial(materialName, scene); pbr.albedoTexture = await importTextureAsync(textures.albedo); pbr.normalTexture = await importTextureAsync(textures.normal); pbr.metallicTexture = await importTextureAsync(textures.metalRoughness); @@ -68,9 +70,9 @@ class Dice { instance.addChild(locator); } - instance.physicsImpostor = new BABYLON.PhysicsImpostor( + instance.physicsImpostor = new PhysicsImpostor( instance, - BABYLON.PhysicsImpostor.ConvexHullImpostor, + PhysicsImpostor.ConvexHullImpostor, physicalProperties, scene ); @@ -99,8 +101,8 @@ class Dice { } static roll(instance) { - instance.physicsImpostor.setLinearVelocity(BABYLON.Vector3.Zero()); - instance.physicsImpostor.setAngularVelocity(BABYLON.Vector3.Zero()); + instance.physicsImpostor.setLinearVelocity(Vector3.Zero()); + instance.physicsImpostor.setAngularVelocity(Vector3.Zero()); const scene = instance.getScene(); const diceTraySingle = scene.getNodeByID("dice_tray_single"); @@ -110,7 +112,7 @@ class Dice { : diceTrayDouble; const trayBounds = visibleDiceTray.getBoundingInfo().boundingBox; - const position = new BABYLON.Vector3( + const position = new Vector3( trayBounds.center.x + (Math.random() * 2 - 1), 8, trayBounds.center.z + (Math.random() * 2 - 1) @@ -122,13 +124,13 @@ class Dice { Math.random() * Math.PI * 2 ); - const throwTarget = new BABYLON.Vector3( + const throwTarget = new Vector3( lerp(trayBounds.minimumWorld.x, trayBounds.maximumWorld.x, Math.random()), 5, lerp(trayBounds.minimumWorld.z, trayBounds.maximumWorld.z, Math.random()) ); - const impulse = new BABYLON.Vector3(0, 0, 0) + const impulse = new Vector3(0, 0, 0) .subtract(throwTarget) .normalizeToNew() .scale(lerp(minDiceRollSpeed, maxDiceRollSpeed, Math.random())); diff --git a/src/dice/diceTray/DiceTray.js b/src/dice/diceTray/DiceTray.js index 0e32e8b..72bd936 100644 --- a/src/dice/diceTray/DiceTray.js +++ b/src/dice/diceTray/DiceTray.js @@ -1,4 +1,7 @@ -import * as BABYLON from "babylonjs"; +import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader"; +import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial"; +import { PhysicsImpostor } from "@babylonjs/core/Physics/physicsImpostor"; +import { Mesh } from "@babylonjs/core/Meshes/mesh"; import singleMeshSource from "./single.glb"; import doubleMeshSource from "./double.glb"; @@ -55,19 +58,19 @@ class DiceTray { } createCollision(name, x, y, z, friction) { - let collision = BABYLON.Mesh.CreateBox( + let collision = Mesh.CreateBox( name, this.collisionSize, this.scene, true, - BABYLON.Mesh.DOUBLESIDE + Mesh.DOUBLESIDE ); collision.position.x = x; collision.position.y = y; collision.position.z = z; - collision.physicsImpostor = new BABYLON.PhysicsImpostor( + collision.physicsImpostor = new PhysicsImpostor( collision, - BABYLON.PhysicsImpostor.BoxImpostor, + PhysicsImpostor.BoxImpostor, { mass: 0, friction: friction }, this.scene ); @@ -115,19 +118,11 @@ class DiceTray { async loadMeshes() { this.singleMesh = ( - await BABYLON.SceneLoader.ImportMeshAsync( - "", - singleMeshSource, - "", - this.scene - ) + await SceneLoader.ImportMeshAsync("", singleMeshSource, "", this.scene) ).meshes[1]; this.singleMesh.id = "dice_tray_single"; this.singleMesh.name = "dice_tray"; - let singleMaterial = new BABYLON.PBRMaterial( - "dice_tray_mat_single", - this.scene - ); + let singleMaterial = new PBRMaterial("dice_tray_mat_single", this.scene); singleMaterial.albedoTexture = await importTextureAsync(singleAlbedo); singleMaterial.normalTexture = await importTextureAsync(singleNormal); singleMaterial.metallicTexture = await importTextureAsync( @@ -143,19 +138,11 @@ class DiceTray { this.singleMesh.isVisible = this.size === "single"; this.doubleMesh = ( - await BABYLON.SceneLoader.ImportMeshAsync( - "", - doubleMeshSource, - "", - this.scene - ) + await SceneLoader.ImportMeshAsync("", doubleMeshSource, "", this.scene) ).meshes[1]; this.doubleMesh.id = "dice_tray_double"; this.doubleMesh.name = "dice_tray"; - let doubleMaterial = new BABYLON.PBRMaterial( - "dice_tray_mat_double", - this.scene - ); + let doubleMaterial = new PBRMaterial("dice_tray_mat_double", this.scene); doubleMaterial.albedoTexture = await importTextureAsync(doubleAlbedo); doubleMaterial.normalTexture = await importTextureAsync(doubleNormal); doubleMaterial.metallicTexture = await importTextureAsync( diff --git a/src/dice/gemstone/GemstoneDice.js b/src/dice/gemstone/GemstoneDice.js index 347c489..fc20df7 100644 --- a/src/dice/gemstone/GemstoneDice.js +++ b/src/dice/gemstone/GemstoneDice.js @@ -1,4 +1,5 @@ -import * as BABYLON from "babylonjs"; +import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial"; +import { Color3 } from "@babylonjs/core/Maths/math"; import Dice from "../Dice"; @@ -18,7 +19,7 @@ class GemstoneDice extends Dice { } static async loadMaterial(materialName, textures, scene) { - let pbr = new BABYLON.PBRMaterial(materialName, scene); + let pbr = new PBRMaterial(materialName, scene); pbr.albedoTexture = await importTextureAsync(textures.albedo); pbr.normalTexture = await importTextureAsync(textures.normal); pbr.metallicTexture = await importTextureAsync(textures.metalRoughness); @@ -30,7 +31,7 @@ class GemstoneDice extends Dice { pbr.subSurface.translucencyIntensity = 1.0; pbr.subSurface.minimumThickness = 5; pbr.subSurface.maximumThickness = 10; - pbr.subSurface.tintColor = new BABYLON.Color3(190 / 255, 0, 220 / 255); + pbr.subSurface.tintColor = new Color3(190 / 255, 0, 220 / 255); return pbr; } diff --git a/src/dice/glass/GlassDice.js b/src/dice/glass/GlassDice.js index 50de8f3..2631f53 100644 --- a/src/dice/glass/GlassDice.js +++ b/src/dice/glass/GlassDice.js @@ -1,4 +1,5 @@ -import * as BABYLON from "babylonjs"; +import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial"; +import { Color3 } from "@babylonjs/core/Maths/math"; import Dice from "../Dice"; @@ -18,7 +19,7 @@ class GlassDice extends Dice { } static async loadMaterial(materialName, textures, scene) { - let pbr = new BABYLON.PBRMaterial(materialName, scene); + let pbr = new PBRMaterial(materialName, scene); pbr.albedoTexture = await importTextureAsync(textures.albedo); pbr.normalTexture = await importTextureAsync(textures.normal); pbr.roughness = 0.25; @@ -30,7 +31,7 @@ class GlassDice extends Dice { pbr.subSurface.translucencyIntensity = 2.5; pbr.subSurface.minimumThickness = 10; pbr.subSurface.maximumThickness = 10; - pbr.subSurface.tintColor = new BABYLON.Color3(43 / 255, 1, 115 / 255); + pbr.subSurface.tintColor = new Color3(43 / 255, 1, 115 / 255); pbr.subSurface.thicknessTexture = await importTextureAsync(textures.mask); pbr.subSurface.useMaskFromThicknessTexture = true; diff --git a/src/helpers/babylon.js b/src/helpers/babylon.js index 82d735b..a70c79c 100644 --- a/src/helpers/babylon.js +++ b/src/helpers/babylon.js @@ -1,9 +1,9 @@ -import * as BABYLON from "babylonjs"; +import { Texture } from "@babylonjs/core/Materials/Textures/texture"; // Turn texture load into an async function so it can be awaited export async function importTextureAsync(url) { return new Promise((resolve, reject) => { - let texture = new BABYLON.Texture( + let texture = new Texture( url, null, undefined, diff --git a/src/helpers/dice.js b/src/helpers/dice.js index 2093148..d30cab8 100644 --- a/src/helpers/dice.js +++ b/src/helpers/dice.js @@ -1,4 +1,4 @@ -import * as BABYLON from "babylonjs"; +import { Vector3 } from "@babylonjs/core/Maths/math"; /** * Find the number facing up on a mesh instance of a dice @@ -12,7 +12,7 @@ export function getDiceInstanceRoll(instance) { .getAbsolutePosition() .subtract(instance.getAbsolutePosition()); let direction = dif.normalize(); - const dot = BABYLON.Vector3.Dot(direction, BABYLON.Vector3.Up()); + const dot = Vector3.Dot(direction, Vector3.Up()); if (dot > highestDot) { highestDot = dot; highestLocator = locator; diff --git a/yarn.lock b/yarn.lock index 5747944..b64d26d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -917,6 +917,22 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babylonjs/core@4.1.0", "@babylonjs/core@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@babylonjs/core/-/core-4.1.0.tgz#63e390862debf81f8cf248496187029c42ea5eda" + integrity sha512-4pEKPEu14qRdqH5qatfmns/iHFHmujDI22SXkHIlJhTT0WgJH4I8IN1fPw9sU6jSCH2ul76Lpbi2zREvfrEDQA== + dependencies: + tslib "^1.10.0" + +"@babylonjs/loaders@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@babylonjs/loaders/-/loaders-4.1.0.tgz#1b40f8c07b46228ae4cf6dbda2d0856293f4db80" + integrity sha512-stK/QygoNhdrJ9q8yNyZ7iE8Eu+dpwBviSoEigLX5IwHFJUmyxeI0LIZpjRAP2GRB96kqLrBsIBdWEwk076w/g== + dependencies: + "@babylonjs/core" "4.1.0" + babylonjs-gltf2interface "4.1.0" + tslib "^1.10.0" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -2447,6 +2463,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -2665,19 +2686,6 @@ babylonjs-gltf2interface@4.1.0: resolved "https://registry.yarnpkg.com/babylonjs-gltf2interface/-/babylonjs-gltf2interface-4.1.0.tgz#95ec994e352ac5cb74869e238218a1b4df18e2f4" integrity sha512-H2obg+4t8bcmLyzGiOQqmUaTQqTu+6mJUlsMWZvmRBf0k2fQVeTdAkH7aDy6HVIz/THvpIx4ntG1Lsyquvmc5Q== -babylonjs-loaders@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/babylonjs-loaders/-/babylonjs-loaders-4.1.0.tgz#b056423b98c1e3a3962491ec72dce5e0b8852295" - integrity sha512-gNC+XEVI5cLJLVRTlkFHVfSY4EZS0VzWzEmNb8M49ZMFNuqOuHsVnQZg4Vms9e4LgvNtws4Z0SWrRanZnkIX5g== - dependencies: - babylonjs "4.1.0" - babylonjs-gltf2interface "4.1.0" - -babylonjs@4.1.0, babylonjs@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/babylonjs/-/babylonjs-4.1.0.tgz#a2d1d6765795e9d44f002831554d63d6275394bd" - integrity sha512-MnaH1BQIL+PYgqGaAvGVdP8yd7nM1j6sbQi/K/6+RlkHPxIETW2NbjqxiW7Sywgy7r3PwqWT/gxG4Bz95Z6/yA== - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -2942,6 +2950,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -3294,6 +3307,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -4271,6 +4293,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +ejs@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.3.tgz#514d967a8894084d18d3d47bd169a1c0560f093d" + integrity sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg== + dependencies: + jake "^10.6.1" + electron-to-chromium@^1.3.341, electron-to-chromium@^1.3.349: version "1.3.349" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.349.tgz#663f26a69d348a462df47b4d7ab162a2f29bbcb7" @@ -4429,7 +4458,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -escape-html@~1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= @@ -4926,6 +4955,13 @@ file-uri-to-path@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== +filelist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" + integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + dependencies: + minimatch "^3.0.4" + filesize@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" @@ -4993,7 +5029,7 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@4.1.0, find-up@^4.0.0: +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5342,7 +5378,7 @@ gud@^1.0.0: resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== -gzip-size@5.1.1: +gzip-size@5.1.1, gzip-size@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== @@ -6303,6 +6339,16 @@ istanbul-reports@^2.2.6: dependencies: html-escaper "^2.0.0" +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-changed-files@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" @@ -7830,6 +7876,14 @@ open@^7.0.2: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^7.0.3: + version "7.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.1.0.tgz#68865f7d3cb238520fa1225a63cf28bcf8368a1c" + integrity sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -9890,7 +9944,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -10385,6 +10439,24 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-explorer@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.4.2.tgz#fb23f86c3112eacde5683f24efaf4ddc9f677985" + integrity sha512-3ECQLffCFV8QgrTqcmddLkWL4/aQs6ljYfgWCLselo5QtizOfOeUCKnS4rFn7MIrdeZLM6TZrseOtsrWZhWKoQ== + dependencies: + btoa "^1.2.1" + chalk "^3.0.0" + convert-source-map "^1.7.0" + ejs "^3.0.2" + escape-html "^1.0.3" + glob "^7.1.6" + gzip-size "^5.1.1" + lodash "^4.17.15" + open "^7.0.3" + source-map "^0.7.3" + temp "^0.9.1" + yargs "^15.3.1" + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -10419,6 +10491,11 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -10632,7 +10709,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.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -10844,6 +10921,13 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +temp@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" + integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== + dependencies: + rimraf "~2.6.2" + terser-webpack-plugin@2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.4.tgz#ac045703bd8da0936ce910d8fb6350d0e1dee5fe" @@ -11054,6 +11138,11 @@ ts-pnp@1.1.5, ts-pnp@^1.1.2: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== +tslib@^1.10.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" @@ -11849,6 +11938,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -11954,6 +12052,14 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -11988,6 +12094,23 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.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 "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"