From 2edfdca87228cd8b012f8141667e1df3522f5c78 Mon Sep 17 00:00:00 2001 From: cha0s Date: Thu, 14 Jan 2021 01:22:53 -0600 Subject: [PATCH] flow --- app/.neutrinorc.js | 1 + app/src/react/components/humus.jsx | 29 ++- .../react/components/renderers/room-view.jsx | 44 ++++ app/src/react/components/room/index.jsx | 10 + app/src/react/components/room/index.scss | 0 app/src/react/components/universe/index.jsx | 17 +- app/yarn.lock | 214 +++++++++--------- config/package/package.json | 2 +- package.json | 2 +- packages/universe/package.json | 3 +- packages/universe/src/client/index.js | 23 +- packages/universe/src/client/packets/index.js | 5 - packages/universe/src/client/packets/join.js | 3 + .../universe/src/client/packets/locate.js | 9 - packages/universe/src/index.js | 9 +- packages/universe/src/packets/join.js | 10 +- packages/universe/src/packets/locate.js | 18 -- packages/universe/src/player.js | 13 ++ packages/universe/src/resources/index.js | 5 - packages/universe/src/resources/universe.js | 39 +++- packages/universe/src/server/index.js | 14 +- packages/universe/src/server/packets/index.js | 5 - packages/universe/src/server/packets/join.js | 40 ++++ .../universe/src/server/packets/locate.js | 11 - packages/universe/src/state/universe.js | 11 +- packages/universe/src/traits/informed.js | 50 ++++ packages/universe/src/traits/universed.js | 14 +- packages/universe/yarn.lock | 104 ++++----- 28 files changed, 438 insertions(+), 267 deletions(-) create mode 100644 app/src/react/components/renderers/room-view.jsx create mode 100644 app/src/react/components/room/index.jsx create mode 100644 app/src/react/components/room/index.scss delete mode 100644 packages/universe/src/client/packets/index.js create mode 100644 packages/universe/src/client/packets/join.js delete mode 100644 packages/universe/src/client/packets/locate.js delete mode 100644 packages/universe/src/packets/locate.js create mode 100644 packages/universe/src/player.js delete mode 100644 packages/universe/src/resources/index.js delete mode 100644 packages/universe/src/server/packets/index.js create mode 100644 packages/universe/src/server/packets/join.js delete mode 100644 packages/universe/src/server/packets/locate.js create mode 100644 packages/universe/src/traits/informed.js diff --git a/app/.neutrinorc.js b/app/.neutrinorc.js index 51f8d4f..18efaab 100644 --- a/app/.neutrinorc.js +++ b/app/.neutrinorc.js @@ -84,6 +84,7 @@ module.exports = { options.nodeArgs.push(profArg); } options.nodeArgs.push('--experimental-repl-await'); + options.nodeArgs.push('--unhandled-rejections=strict'); return args; }); } diff --git a/app/src/react/components/humus.jsx b/app/src/react/components/humus.jsx index 38591cd..29e99bb 100644 --- a/app/src/react/components/humus.jsx +++ b/app/src/react/components/humus.jsx @@ -5,6 +5,7 @@ import {hot} from 'react-hot-loader'; // TODO should be betta import 'pixi.js-legacy'; +import {LatusContext, useLatus} from '@latus/react/client'; import {ConnectedRouter} from 'connected-react-router'; import PropTypes from 'prop-types'; import React from 'react'; @@ -20,8 +21,10 @@ import { import Dumb from 'components/renderers/dumb'; import Login from 'components/login'; +import Room from 'components/room'; import Stage from 'components/stage'; -import Stupid from 'components/renderers/stupid'; +import RoomView from 'components/renderers/room-view'; +// import Stupid from 'components/renderers/stupid'; import Title from 'components/title'; import Ui from 'components/ui'; import Universe from 'components/universe'; @@ -35,18 +38,21 @@ const isLoggedIn = true; const RoutedStage = () => { const location = useLocation(); + const latus = useLatus(); return ( - <__RouterContext.Provider value={{location}}> - - - - - - - - - + + <__RouterContext.Provider value={{location}}> + + + + + + + + + + ); }; @@ -63,6 +69,7 @@ const Humus = ({history}) => { {isLoggedIn ? : Login} + {isNative ? </Route> : <Redirect to="/universe" />} </Switch> diff --git a/app/src/react/components/renderers/room-view.jsx b/app/src/react/components/renderers/room-view.jsx new file mode 100644 index 0000000..ec03ea9 --- /dev/null +++ b/app/src/react/components/renderers/room-view.jsx @@ -0,0 +1,44 @@ +import React, {useState} from 'react'; + +import {Container} from '@avocado/graphics'; +import {resource} from '@avocado/resource'; +import {RoomView} from '@avocado/topdown'; +import {PixiComponent} from '@inlet/react-pixi'; +import {useLatus} from '@latus/react/client'; +import {useSocketPacket} from '@latus/socket'; + +const container = new Container(); + +const Component = PixiComponent('RoomView', { + create: () => container.internal, + applyProps: (instance, oldProps, newProps) => { + if (oldProps.room) { + container.removeAllChildren(); + } + if (newProps.room) { + container.addChild(new RoomView(newProps.room)); + } + }, +}); + +export default () => { + const latus = useLatus(); + const [room, setRoom] = useState(); + const {config: {'%synchronizer': synchronizer}} = latus; + useSocketPacket((packet) => { + const {constructor: {s13nType}} = packet; + if ('create' === s13nType) { + const {fromResourceType: {Room}} = resource(latus); + const {type, id} = packet.data.synchronized; + switch (type) { + // Track room. + case Room.resourceId: { + setRoom(synchronizer.synchronized(type, id)); + break; + } + default: + } + } + }); + return <Component room={room} />; +}; diff --git a/app/src/react/components/room/index.jsx b/app/src/react/components/room/index.jsx new file mode 100644 index 0000000..d070f9e --- /dev/null +++ b/app/src/react/components/room/index.jsx @@ -0,0 +1,10 @@ +import './index.scss'; + +import {hot} from 'react-hot-loader'; +import React from 'react'; + +const Room = () => ( + <div className="room" /> +); + +export default hot(module)(Room); diff --git a/app/src/react/components/room/index.scss b/app/src/react/components/room/index.scss new file mode 100644 index 0000000..e69de29 diff --git a/app/src/react/components/universe/index.jsx b/app/src/react/components/universe/index.jsx index ff313b4..0496abe 100644 --- a/app/src/react/components/universe/index.jsx +++ b/app/src/react/components/universe/index.jsx @@ -2,19 +2,25 @@ import './index.scss'; import {universesByLocalitySelector, universesSelector} from '@humus/universe'; import {useSelector} from '@latus/redux'; +import {useSocket} from '@latus/socket'; import PropTypes from 'prop-types'; import React from 'react'; import { Link, Redirect, + useHistory, + useLocation, } from 'react-router-dom'; import useIsNative from 'hooks/use-is-native'; const Universe = ({match: {params: {uuid}}}) => { + const history = useHistory(); const isNative = useIsNative(); + const {pathname} = useLocation(); const universes = useSelector(universesSelector); const remoteUniverses = useSelector((state) => universesByLocalitySelector(state, false)); + const socket = useSocket(); const uuids = Object.keys(remoteUniverses); if (!uuid && uuids.length === 0) { return <Redirect to="/" />; @@ -63,7 +69,16 @@ const Universe = ({match: {params: {uuid}}}) => { Have fun! <3 </p> </div> - <Link className="button universe__play" to={({pathname}) => `${pathname}/play`}>Play</Link> + <button + className="button universe__play" + onClick={async () => { + await socket.send(['Join', 'asd']); + history.push(`${pathname}/play`); + }} + type="button" + > + Play + </button> </div> </div> ); diff --git a/app/yarn.lock b/app/yarn.lock index 62c54b0..6eb3806 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -4,8 +4,8 @@ "@avocado/behavior@2.0.0", "@avocado/behavior@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fbehavior/-/behavior-2.0.0.tgz#484d6c3ffd1fc62986b22edc727b19249e0c03f5" - integrity sha512-JqAdhyB9ozTGAroJUUo507MHhmR2zmMLO3tFV4mDYHtlIkWBQUk3gIEK+9WvvnpP57e6vYb8LBDC2xe5jOro+A== + resolved "https://npm.i12e.cha0s.io/@avocado%2fbehavior/-/behavior-2.0.0.tgz#34cf4235cb85165f4b4bdee108d1efacc6732330" + integrity sha512-wQnnjXp69RW9EWeovUjH3goMoYyD6EHKyiCnkdJMb/Z9h9rwARpYqKTmq1iNgliOJ/8KpJelNi/v1+dvmlJxYA== dependencies: "@avocado/core" "2.0.0" "@avocado/traits" "^2.0.0" @@ -16,15 +16,15 @@ "@avocado/core@2.0.0", "@avocado/core@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fcore/-/core-2.0.0.tgz#26d548a708ebe174e1014e21996db7ca4efd1f7b" - integrity sha512-4T5veeYVxsBIMJqQYbaumYvViPLIShmtQW8qReLjuQCTt23cOG1IG4kcetKeOA5Gke3qrw4JNzakYEg2GqJoMQ== + resolved "https://npm.i12e.cha0s.io/@avocado%2fcore/-/core-2.0.0.tgz#69c736d6a1d8b25d0cc57f07fabdef3f467a5636" + integrity sha512-XqLqDST/gLCbyBNQuZnzj8WN05aEgko8Kh/45pN0cSNA5DRMgkZSynBZh0NMEtiYfC5Od6v6y7FF5uvuzh4+gg== dependencies: debug "4.3.1" "@avocado/entity@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fentity/-/entity-2.0.0.tgz#20c01a9b63bbcf70ef03b5333ae76827749a839b" - integrity sha512-YM+OKG8O4SubTC3UKWKvs0UNFiO+g6v8fzDViiTPh5/t2Srpngklqu7GKXogu4HFKFOb9GPV3Kk/sMoRAZOQkQ== + resolved "https://npm.i12e.cha0s.io/@avocado%2fentity/-/entity-2.0.0.tgz#d758beff5ad6e1069e03529ffce64f04923a0be0" + integrity sha512-ujDS8uWx1aYzmkaq+MPutB4PCtTEH/6LptH5rG4F0YIJHaPKNhl3vaYvRivhqu3FPtT8RFS8DqYr4GvWXm4bGA== dependencies: "@avocado/behavior" "2.0.0" "@avocado/core" "2.0.0" @@ -42,8 +42,8 @@ "@avocado/graphics@2.0.0", "@avocado/graphics@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fgraphics/-/graphics-2.0.0.tgz#87f9028143b3a42f16daac6bf76cecc21e00ec74" - integrity sha512-WRrJvkkhUReMIjhOmXTSkb+EYry5tzKhehRfBHQHMyIDEOnrO5rfkAzKaYTffW7cMiVSA1FfwKHtvv+SDKD3Hw== + resolved "https://npm.i12e.cha0s.io/@avocado%2fgraphics/-/graphics-2.0.0.tgz#340660152bddd49a03da787924f431d639f639d3" + integrity sha512-NRj2iQBafrXkhn+4IQnu0uxUQrapGp8OCtwde6Qp4xdbQLlpkndaENLKg6/Q7qxt05yMv8XtI81V7yX3xzsAoQ== dependencies: "@avocado/core" "2.0.0" "@avocado/input" "2.0.0" @@ -66,8 +66,8 @@ "@avocado/input@2.0.0", "@avocado/input@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2finput/-/input-2.0.0.tgz#65b21fc4e86258a34ecf01c765fea39e83aed1d7" - integrity sha512-dXBBnMz3jMQ1PiU1b8N4eM80axpoB99xqjQiYisRwCAaMCNgYcy6vfGNwna0+ibvUCI6aN7GOq0hsl4MiUuIcg== + resolved "https://npm.i12e.cha0s.io/@avocado%2finput/-/input-2.0.0.tgz#bdd839a2c977c3414fd3590a14dde2ef1cb8067e" + integrity sha512-KtGGH82WLdT0699+/Fw9bhimIOsZEhE9hhr5OuXxWDp8JVVzrrD/1jytC6Ue3012Na0rVKtdkMGewoAB0Fv0GQ== dependencies: "@latus/core" "2.0.0" "@latus/socket" "2.0.0" @@ -75,8 +75,8 @@ "@avocado/math@2.0.0", "@avocado/math@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fmath/-/math-2.0.0.tgz#f38ff5e452f0e4d14706c2f76c260c93c39a5629" - integrity sha512-NRopi3FjG2T3Zh9KqhR+bj/3mkyuWXK2+XYHzMpxZXssRSBrCgY4fW0pq37HAwuybDHVlPXWPinNHTiBFDN2gQ== + resolved "https://npm.i12e.cha0s.io/@avocado%2fmath/-/math-2.0.0.tgz#9e3fb073d93799f8f86a1abbaaabd5021fc753ad" + integrity sha512-vIgwR0p7I9jnXqUr/6cD9i2k/Z8GJuWqNIxksmPF8Odw1SON/4ItbLYk3D5+Z/KnDOeIa2N2Db9IoymcOofBgw== dependencies: "@avocado/core" "2.0.0" "@latus/core" "^2.0.0" @@ -85,8 +85,8 @@ "@avocado/physics@^1.0.0": version "1.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fphysics/-/physics-1.0.0.tgz#9affe9ff670d109493dc090586c575ffdd0e21c3" - integrity sha512-mL0EwysQoeDKiuhG3OQI6v/qEVmiFAmB83WQ/zOwZ33EKjxEkiGOEEZXJBJ12k/QrZ3FV/022LANQgLqc9jk5Q== + resolved "https://npm.i12e.cha0s.io/@avocado%2fphysics/-/physics-1.0.0.tgz#6f9b38d1c81d6be989018a96a6ab95e7562e5336" + integrity sha512-BjTD2Q4/ZYW6Ui/qLFGteeC2xqXCz7yrjjjvmtiNbwKbrB92S6wfhPo6N6/qjZpPFwHEWMQEPTJJMgY73PseoA== dependencies: "@avocado/behavior" "^2.0.0" "@avocado/core" "^2.0.0" @@ -108,8 +108,8 @@ "@avocado/resource@2.0.0", "@avocado/resource@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fresource/-/resource-2.0.0.tgz#cf10ec82c7eb4b6e69c62ef8878e050b7bdc3977" - integrity sha512-g6DEXo9Mc81+7zg13t3CY6PFZLqr7/Xw9o1rYhr+nf8kKvX/iSf58lpOXTWSKFM7KB2C9u6kZZZjZgfAjD2w7w== + resolved "https://npm.i12e.cha0s.io/@avocado%2fresource/-/resource-2.0.0.tgz#9eadafaf1ce7a8d6308c59bfa92290830cf91e30" + integrity sha512-85osPtux7MZ+9dAFGrLKzIv1vAPuSBfxEwPZOvKaHMSBa6mnzysC7c2FbU4zfSioDl8ozqknE9ZYZB1bjdw0Hg== dependencies: "@avocado/core" "2.0.0" "@latus/core" "2.0.0" @@ -119,9 +119,10 @@ "@avocado/s13n@2.0.0", "@avocado/s13n@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fs13n/-/s13n-2.0.0.tgz#4653b99b953b57ece31e68ebd721df55fb090c34" - integrity sha512-KkRbOXukKxoOFx5vW7Zzf66mkGrljuV576oVt4LLVa6jCLVVNP5Yx3VyQ3CwE5GzAcGNu7aN9cIFlZn/vizkmg== + resolved "https://npm.i12e.cha0s.io/@avocado%2fs13n/-/s13n-2.0.0.tgz#2b0ea781520f5c41dcd6c3bfc1a6cd52ce181c69" + integrity sha512-TkxxmQQRS7NbpvNxLQ1RME+7vIpGm198sPSNcDfBLMwcQ2Icl8jTx5HFaIaCLh6XezFN/MhQzDjZ62XVqxWEeg== dependencies: + "@avocado/resource" "^2.0.0" "@latus/core" "2.0.0" "@latus/socket" "2.0.0" debug "4.3.1" @@ -129,18 +130,19 @@ "@avocado/sound@^1.0.0": version "1.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fsound/-/sound-1.0.0.tgz#94fcc1ae3b12c23aa479a8525e1eb63283bd90a4" - integrity sha512-DH9g57GdfukghkT1T2Hg2wAgK9WNAmOl/Q2CpsBXr3uaf6QE3RfoTMRvo/m3oNEyFF5qmahSANpwTIYW9rf1Tg== + resolved "https://npm.i12e.cha0s.io/@avocado%2fsound/-/sound-1.0.0.tgz#c16a44e0d1fdb6d7d51425dc51a7e12a09767f4f" + integrity sha512-YM/268A4ZfLwJn43MwT5ZbpAqGyPvNPFf8uMXupmn6eeWS5kueiRL6xd2hBdfN/LBJNUTqTKkJHhJ6Fn1Xg6Tw== dependencies: "@avocado/resource" "^2.0.0" "@avocado/traits" "^2.0.0" + "@latus/core" "^2.0.0" debug "4.3.1" howler "2.1.2" "@avocado/timing@2.0.0", "@avocado/timing@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2ftiming/-/timing-2.0.0.tgz#91cb2a67d0d50cba53a51cf40028bcae098c2bae" - integrity sha512-NwEbsXTYb6mUCYWKG4JhsuFaEnumIWsuQcKllihVA3zz4l27APHC3ZZ81TNX/BeGHr5QZa1AXOpMD6JmKIkF1w== + resolved "https://npm.i12e.cha0s.io/@avocado%2ftiming/-/timing-2.0.0.tgz#9c7ddb24d9f99822a59b6927fcaa09e8614785b0" + integrity sha512-zlLLjrKvYzCRyvtYWDJniM0AtLzmpOxWeEL7U8uPbA9n1fDEdAv90rhpw8rdFOAtGBNi6q2YxcaIJH0vQzs5Iw== dependencies: "@avocado/core" "2.0.0" "@avocado/graphics" "2.0.0" @@ -154,8 +156,8 @@ "@avocado/topdown@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2ftopdown/-/topdown-2.0.0.tgz#99e695c806d1c667895e1cacb9cad2587ab2e041" - integrity sha512-BslSYt1dylBaaQ8YzCov0fxq/vhyDeMYg7QeBrTOsbmMYrs2rzCY2fLPMuYEBq1sc981LSPuitcB5rhreeKw1w== + resolved "https://npm.i12e.cha0s.io/@avocado%2ftopdown/-/topdown-2.0.0.tgz#570b9f142ac07703300169a0b00d0bf41da12969" + integrity sha512-gH6LPfBh2lDSJWgx+zs3uXH5PnOIsSqN3vN16tPN/weTpgqydN2h/O5i0Br0Opy4WlM/eNymA0itC1LKZ0pUdQ== dependencies: "@avocado/core" "2.0.0" "@avocado/entity" "^2.0.0" @@ -170,8 +172,8 @@ "@avocado/traits@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2ftraits/-/traits-2.0.0.tgz#257e7c00e4b47c837f5b7bacdac526b182669f40" - integrity sha512-jSep7qESSCSQXosVtx+UI5VN9yDrQtlcGIQ9cNCTDylf5vh82lBpcZdIfAsjQwdS03tDy8HGIEevT/74GM9F+A== + resolved "https://npm.i12e.cha0s.io/@avocado%2ftraits/-/traits-2.0.0.tgz#369ce54e55b6a32c1591efcf31e19785f827b943" + integrity sha512-0+CatzN3YFm1HBUQ1n0a2j2/cmtNo6hjNtjiJINFkqEUmpwGnoub+yB4x7HW837IjnqvLeD53Mu6YUxC9nOstQ== dependencies: "@avocado/core" "^2.0.0" "@avocado/resource" "^2.0.0" @@ -1088,11 +1090,18 @@ "@humus/universe@^1.0.0": version "1.0.0" - resolved "https://npm.i12e.cha0s.io/@humus%2funiverse/-/universe-1.0.0.tgz#7072c22ea3dbaf94dc1aae4f374fa334f2387d05" - integrity sha512-a8axM6QtzS2V0fcA2dh5FUrGVToMYYz+JAmkPA/N+4yLRChVpTVyFIWu6qwrsy1rPbEaMuvo7ZT844zeytQ0aw== + resolved "https://npm.i12e.cha0s.io/@humus%2funiverse/-/universe-1.0.0.tgz#60bea50fa7fd138e363650fc8f56f52464095e64" + integrity sha512-/Llpu6YFvJ4Gj4KtMQ3sRnw1WwUNF0VRsu+7LLcGkL5X9+n4H0EUsLuVdMWshVQrqu3A08rl1EtN8zr0yS6g8A== dependencies: + "@avocado/math" "^2.0.0" + "@avocado/resource" "^2.0.0" + "@avocado/s13n" "^2.0.0" + "@avocado/traits" "^2.0.0" + "@latus/core" "^2.0.0" "@latus/redux" "^2.0.0" + "@latus/socket" "^2.0.0" debug "4.3.1" + glob "^7.1.6" "@inlet/react-pixi@^6.0.7": version "6.0.7" @@ -1105,8 +1114,8 @@ "@latus/core@2.0.0", "@latus/core@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fcore/-/core-2.0.0.tgz#47e23fb0df38d8eced598de7126cce146859fd9d" - integrity sha512-Iaejj6IihNcWz1iAgC3s01mlwqOd0YLXM319UGtc+9BUcQ3kAwTV24QSWjsTlJGh3bPK5vKpjGAkzXwBMqYqfA== + resolved "https://npm.i12e.cha0s.io/@latus%2fcore/-/core-2.0.0.tgz#8d51f43916b14ac4640eefb5800e97720717389c" + integrity sha512-eejB41S7d/Vv3oSV3nw9toIBiI6RzEu1MBkIQy/L1ZYNxuHRtHO3o1ed1Re09+Jg378XWUeOEKUiavRUwAL3Cw== dependencies: debug "4.3.1" js-yaml "3.14.0" @@ -1114,8 +1123,8 @@ "@latus/db@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fdb/-/db-2.0.0.tgz#d0a64da1f5269ad4aa2490605e4b2763f26452bf" - integrity sha512-VLJ17QxrByag7IaO/+80PO5ZMQk/eBj65K0wuZHX8/wMobP4GzNKqbCgT0ASQS3MXCN6NiS8akTRFxCgH9p7jw== + resolved "https://npm.i12e.cha0s.io/@latus%2fdb/-/db-2.0.0.tgz#21bddda5c5b8427bf3a5249937c99dd8da3bbbf6" + integrity sha512-cOn4EOP1swprHBfHr/QWV1E9zS8BK77GEux8I3pJHprNNSOjxem/rk4RaMJdgLmHk7UZks7Obk7a3Y+TJ09E8A== dependencies: "@latus/core" "2.0.0" debug "4.3.1" @@ -1125,16 +1134,16 @@ "@latus/governor@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fgovernor/-/governor-2.0.0.tgz#938c50afd1b9970941f9c8b67f295dd0110da0da" - integrity sha512-OLnlD5S4w2MNDvWzcpZkA6fed0HgaUWvvY4zoY6Pdb2NeDWn6vo0onOTzQwHiTrxXdNZ22tUMESxo+K2dbm1TQ== + resolved "https://npm.i12e.cha0s.io/@latus%2fgovernor/-/governor-2.0.0.tgz#5a767db126731183920ae921d0725a4a250c6cd8" + integrity sha512-qGFEkGtmE+uChSd4igMkwMRy4fCTvVHa/OSr3I7EtLZyRzcReR2rWRzfa6PyhKzFsHG9jMSn6lAff4CDmnMSPg== dependencies: debug "4.3.1" rate-limiter-flexible "^2.1.13" "@latus/http@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fhttp/-/http-2.0.0.tgz#c34fd19001a451ac0986fb30da8f0db21dc74880" - integrity sha512-I3vt+qnXHLh1+e5cOKcNyS/avEvJYWanemZ91J21s08qcbmhSKdyDbfJkDCRoFSTDSOjhITFU9te+bcOWW/Ldg== + resolved "https://npm.i12e.cha0s.io/@latus%2fhttp/-/http-2.0.0.tgz#b7015392035281b38c437ad69318e1427b56f04e" + integrity sha512-2XqfbmF2Bff8NLX9bdP9/zk5s8WnaPqw2BcVpUh1nPP+ZEdvhVYZWevJ05p1FGYnH62JDkFtK4CCEr0IcVoLew== dependencies: "@latus/core" "2.0.0" "@neutrinojs/web" "^9.1.0" @@ -1153,8 +1162,8 @@ "@latus/react@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2freact/-/react-2.0.0.tgz#ec1308884af7a234c3f7dc02b2e5d059e9c37579" - integrity sha512-KMmgdPFQ2i43u/ePR1JbQLs+1tZWpt2DPIg+tE8eRrzuBKYKfuGtoT46knqus0P9GGxNDDfM9TLCBE2CQkqSyA== + resolved "https://npm.i12e.cha0s.io/@latus%2freact/-/react-2.0.0.tgz#09f4699218a73c19ff0c7c299a6c48f053316512" + integrity sha512-HZN9THHkZSWUwDDh8S2k+FiLfrmRbT4eUTs+ZJsQuWCdS6NQpBoTp2kjGe5wG/h0HoHwFfh+tjs728BXZXlLNQ== dependencies: "@hot-loader/react-dom" "^17.0.1" "@neutrinojs/react" "^9.4.0" @@ -1168,8 +1177,8 @@ "@latus/redis@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fredis/-/redis-2.0.0.tgz#64cc87516a07b96d7d8478f55534157d9f03bcd0" - integrity sha512-sZ4L3VsGGrHialyt0JYulwkHHeEOq9XTszxqOoYaAxxFavRNEaZo6JIEhEk7UaeGx40QSEs4sZkItxuRZmvXUQ== + resolved "https://npm.i12e.cha0s.io/@latus%2fredis/-/redis-2.0.0.tgz#a7abe8718d9481712bf987e387cbe8fbd6b5c7f0" + integrity sha512-QY+VirXt9EIKOYT+kqCJeb4dNxVNRuXxltQnUZlKjn+V2BNQEXPPB6jLIRzYZRByIFxqa6F79qrU2ax/T9aoUg== dependencies: connect-redis "^5.0.0" debug "4.3.1" @@ -1180,8 +1189,8 @@ "@latus/redux@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fredux/-/redux-2.0.0.tgz#10fee1fd1073ef12fff02294ee09c5362d2cc8b7" - integrity sha512-4DfJbZAfOOR7QV0Y9lcJ8MZhBWc+kYG5ngH6fWAhzhG41XIcOE/H3E6K3J6xX5Y/RCr9/qcuSSDwE3ReEkYT/Q== + resolved "https://npm.i12e.cha0s.io/@latus%2fredux/-/redux-2.0.0.tgz#0b87e7ea3fff1cac7cacffd8b7d8b0f60130b245" + integrity sha512-MiHDXKGUwoJp/GPEY89shWNNG3W4PsaCFs27YLGH2XCTu0oRCkkHKwNSBrEhi5UPSoW1FdQQpbvmvVsJmG7NlQ== dependencies: "@latus/core" "2.0.0" "@reduxjs/toolkit" "^1.5.0" @@ -1194,15 +1203,15 @@ "@latus/repl@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2frepl/-/repl-2.0.0.tgz#ee220133c7cce98b466f3f728b3744c92e0d45e0" - integrity sha512-UGykc1D6QNLIBRX4HsFzLEoCL4omMmymQYRihGGnNuhsQ/l9wuwM9zFZZzBGkmud4dzfOIdlM3r3HShpSuJsBg== + resolved "https://npm.i12e.cha0s.io/@latus%2frepl/-/repl-2.0.0.tgz#012f09ae88a193027b06a3f49806deadb3fd4c16" + integrity sha512-Tur6aho5RtcAmMVhXbOhZq7l7WzH0PuxRpuNTKlvf4C8fsXVwWoBpo6w4eCn7BKbH/29Tft6fa8lf7Rf5HXHog== dependencies: debug "4.3.1" "@latus/socket@2.0.0", "@latus/socket@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fsocket/-/socket-2.0.0.tgz#9183d1f349033a6ca76f8403fbd743163bb691e9" - integrity sha512-KuMofkVXMTvg5HJTQDq/1BZAoPk+VzpWZ2yAcj741luwOvS/fZeywyQc5WYwvc13LZdSQ8dim2JMOevTBqDAcA== + resolved "https://npm.i12e.cha0s.io/@latus%2fsocket/-/socket-2.0.0.tgz#4ecc80bb593f32d20c8bd6c532ae8014044add48" + integrity sha512-aSyzH8XMKyjBDPFlam7CjV2zk7s4JpcP27nGl/toGnfJYAFMydpruFm8cmGJE7/SuHcStCyVcI4ejUDgaPqvUw== dependencies: "@latus/core" "2.0.0" "@latus/http" "2.0.0" @@ -1215,8 +1224,8 @@ "@latus/user@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fuser/-/user-2.0.0.tgz#d59fa8b56131766e811e4406b124eaf11ffb2231" - integrity sha512-GYukwYQCbzJP3AWQRU8uCA45SCOrh/JM5VCvnGlkqWlX2qITyKY6hblUa+5qf/JH/n5Tsei6WZ6atRESMMbSZQ== + resolved "https://npm.i12e.cha0s.io/@latus%2fuser/-/user-2.0.0.tgz#7ddbda613d99147771f4290410bbb91c30bfcaf5" + integrity sha512-+QSOHQzgxm0/gFGez4p3l7YDP9pFGj0xcWMEnl65269QKLcuYL/1pG2+KKqVRsGJyrmzfpgGRtq8kHqE6e3hCA== dependencies: bcrypt "^5.0.0" debug "4.3.1" @@ -1868,9 +1877,9 @@ integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== "@types/node@^12.0.12": - version "12.19.12" - resolved "https://npm.i12e.cha0s.io/@types%2fnode/-/node-12.19.12.tgz#04793c2afa4ce833a9972e4c476432e30f9df47b" - integrity sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw== + version "12.19.13" + resolved "https://npm.i12e.cha0s.io/@types%2fnode/-/node-12.19.13.tgz#888e2b34159fb91496589484ec169618212b51b7" + integrity sha512-qdixo2f0U7z6m0UJUugTJqVF94GNDkdgQhfBtMs8t5898JE7G/D2kJYw4rc1nzjIPLVAsDkY2MdABnLAP5lM1w== "@types/source-list-map@*": version "0.1.2" @@ -1899,9 +1908,9 @@ source-map "^0.7.3" "@types/webpack@^4.4.31", "@types/webpack@^4.41.8": - version "4.41.25" - resolved "https://npm.i12e.cha0s.io/@types%2fwebpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" - integrity sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ== + version "4.41.26" + resolved "https://npm.i12e.cha0s.io/@types%2fwebpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -2578,9 +2587,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://npm.i12e.cha0s.io/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://npm.i12e.cha0s.io/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" @@ -2862,12 +2871,12 @@ cacheable-request@^6.0.0: responselike "^1.0.2" call-bind@^1.0.0: - version "1.0.0" - resolved "https://npm.i12e.cha0s.io/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + version "1.0.2" + resolved "https://npm.i12e.cha0s.io/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" - get-intrinsic "^1.0.0" + get-intrinsic "^1.0.2" caller-callsite@^2.0.0: version "2.0.0" @@ -2938,9 +2947,9 @@ camelcase@^6.0.0: integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001173: - version "1.0.30001173" - resolved "https://npm.i12e.cha0s.io/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz#3c47bbe3cd6d7a9eda7f50ac016d158005569f56" - integrity sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw== + version "1.0.30001176" + resolved "https://npm.i12e.cha0s.io/caniuse-lite/-/caniuse-lite-1.0.30001176.tgz#e44bac506d4656bae4944a1417f41597bd307335" + integrity sha512-VWdkYmqdkDLRe0lvfJlZQ43rnjKqIGKHWhWWRbkqMsJIUaYDNf/K/sdZZcVO6YKQklubokdkJY+ujArsuJ5cag== caseless@~0.12.0: version "0.12.0" @@ -3917,14 +3926,14 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.634: - version "1.3.634" - resolved "https://npm.i12e.cha0s.io/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz#82ea400f520f739c4f6ff00c1f7524827a917d25" - integrity sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw== + version "1.3.637" + resolved "https://npm.i12e.cha0s.io/electron-to-chromium/-/electron-to-chromium-1.3.637.tgz#be46f77acc217cdecf633bbd25292f6a36cc689b" + integrity sha512-924WXYMYquYybc+7pNApGlhY2RWg3MY3he4BrZ5BUmM2n1MGBsrS+PZxrlo6UAsWuNl4NE66fqFdwsWkBUGgkA== electron@^11.1.1: - version "11.1.1" - resolved "https://npm.i12e.cha0s.io/electron/-/electron-11.1.1.tgz#188f036f8282798398dca9513e9bb3b10213e3aa" - integrity sha512-tlbex3xosJgfileN6BAQRotevPRXB/wQIq48QeQ08tUJJrXwE72c8smsM/hbHx5eDgnbfJ2G3a60PmRjHU2NhA== + version "11.2.0" + resolved "https://npm.i12e.cha0s.io/electron/-/electron-11.2.0.tgz#f8577ea4c9ba94068850256145be26b0b89a5dd7" + integrity sha512-weszOPAJPoPu6ozL7vR9enXmaDSqH+KE9iZODfbGdnFgtVfVdfyedjlvEGIUJkLMPXM1y/QWwCl2dINzr0Jq5Q== dependencies: "@electron/get" "^1.0.1" "@types/node" "^12.0.12" @@ -4024,10 +4033,10 @@ enhanced-resolve@^0.9.1: memory-fs "^0.2.0" tapable "^0.1.8" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://npm.i12e.cha0s.io/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== +enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://npm.i12e.cha0s.io/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" @@ -4932,7 +4941,7 @@ get-caller-file@^2.0.1: resolved "https://npm.i12e.cha0s.io/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.0, get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: version "1.0.2" resolved "https://npm.i12e.cha0s.io/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== @@ -6550,7 +6559,7 @@ mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": resolved "https://npm.i12e.cha0s.io/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.28, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.28" resolved "https://npm.i12e.cha0s.io/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== @@ -8082,9 +8091,9 @@ range-parser@^1.2.1, range-parser@~1.2.1: integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== rate-limiter-flexible@^2.1.13: - version "2.1.16" - resolved "https://npm.i12e.cha0s.io/rate-limiter-flexible/-/rate-limiter-flexible-2.1.16.tgz#992485931945a825442a9e461b21a75fb0b71816" - integrity sha512-ag2ZQLS0g7+QrMpmMQf37EJ/9drSOsrslQXnOJ3OpqIgUwdjQpChu8CLNz4GWOr9sJq+RGVYDwAcJjYK8hHCqA== + version "2.2.1" + resolved "https://npm.i12e.cha0s.io/rate-limiter-flexible/-/rate-limiter-flexible-2.2.1.tgz#acb81a3d92a0f26bf7e9767e0f96de3a89ecb3a6" + integrity sha512-rxCP6kDDdn0cZmVqVlF06yLU+mG3TuwaHV/fUIw3OQyYhza7pzVBtdMhUmfXbBzMS+O464XP+x33pfTDGRGYVA== raw-body@2.4.0: version "2.4.0" @@ -8413,9 +8422,9 @@ regjsgen@^0.5.1: integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.4" - resolved "https://npm.i12e.cha0s.io/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + version "0.6.6" + resolved "https://npm.i12e.cha0s.io/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" + integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== dependencies: jsesc "~0.5.0" @@ -8700,9 +8709,9 @@ sass-graph@2.2.5: yargs "^13.3.2" sass-loader@^10.1.0: - version "10.1.0" - resolved "https://npm.i12e.cha0s.io/sass-loader/-/sass-loader-10.1.0.tgz#1727fcc0c32ab3eb197cda61d78adf4e9174a4b3" - integrity sha512-ZCKAlczLBbFd3aGAhowpYEy69Te3Z68cg8bnHHl6WnSCvnKpbM6pQrz957HWMa8LKVuhnD9uMplmMAHwGQtHeg== + version "10.1.1" + resolved "https://npm.i12e.cha0s.io/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" + integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== dependencies: klona "^2.0.4" loader-utils "^2.0.0" @@ -9045,9 +9054,9 @@ socket.io-client@2.3.0: to-array "0.1.4" socket.io-parser@~3.3.0: - version "3.3.1" - resolved "https://npm.i12e.cha0s.io/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" - integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== + version "3.3.2" + resolved "https://npm.i12e.cha0s.io/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" @@ -9893,9 +9902,9 @@ upper-case@^1.1.1: integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: - version "4.4.0" - resolved "https://npm.i12e.cha0s.io/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + version "4.4.1" + resolved "https://npm.i12e.cha0s.io/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -10097,20 +10106,21 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-middleware@^4.0.2: - version "4.0.2" - resolved "https://npm.i12e.cha0s.io/webpack-dev-middleware/-/webpack-dev-middleware-4.0.2.tgz#1436ae6cacee78475bd6bc1fbf063dfbfd6e577d" - integrity sha512-xyAICqIugWtT1RRH5aMMmZlPhDhEqPTDL0TWhmMZsuZ+cFlAvRxv4thCbuxdk9MW+OYK4c9BkfmgdQ1/7imkJA== + version "4.0.4" + resolved "https://npm.i12e.cha0s.io/webpack-dev-middleware/-/webpack-dev-middleware-4.0.4.tgz#ebe1e4ad2cca8d33389f89b25d2b7ef7d621bc3f" + integrity sha512-6dKe7cufta6TXUwcQqFJNDoGtS3ZdlfQstPJM22V5aNT8qTVd2bWwfEC62vOQOh19eazLDczU+82FgxLHYCmlQ== dependencies: + colorette "^1.2.1" mem "^8.0.0" memfs "^3.2.0" - mime-types "^2.1.27" + mime-types "^2.1.28" range-parser "^1.2.1" schema-utils "^3.0.0" webpack-dev-server@^3.11.0: - version "3.11.1" - resolved "https://npm.i12e.cha0s.io/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" - integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== + version "3.11.2" + resolved "https://npm.i12e.cha0s.io/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" @@ -10183,9 +10193,9 @@ webpack-virtual-modules@^0.4.1: integrity sha512-BH/RKOHk223WdBDLFqghztx3DF5AqR3CKg3ue1KN9S1SAaXP68Kj/4rF0lsdysxXaanzx7aWl1u0+lnfj7+OtQ== webpack@^4: - version "4.44.2" - resolved "https://npm.i12e.cha0s.io/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + version "4.46.0" + resolved "https://npm.i12e.cha0s.io/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -10195,7 +10205,7 @@ webpack@^4: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" diff --git a/config/package/package.json b/config/package/package.json index 2a80705..3e40ead 100644 --- a/config/package/package.json +++ b/config/package/package.json @@ -11,7 +11,7 @@ "forcepub": "npm unpublish --force $(node -e 'const {name, version} = require(`./package.json`); process.stdout.write(`${name}@${version}`)') && npm publish", "link": "node -e \"Object.keys(require('./package.json').dependencies).filter((m) => 0 === m.indexOf('@latus/')).forEach((m) => require('child_process').spawn('yarn', ['link', m]));\"", "lint": "NODE_PATH=./node_modules eslint --format codeframe --ext mjs,js .", - "test": "NODE_PATH=./node_modules mocha --config ../../config/.mocharc.js", + "test": "yarn --silent run build --display none && mocha --colors test.js", "unlink": "node -e \"Object.keys(require('./package.json').dependencies).filter((m) => 0 === m.indexOf('@latus/')).forEach((m) => require('child_process').spawn('yarn', ['unlink', m]));\" && yarn install --force", "watch": "NODE_PATH=./node_modules webpack --watch --mode development" }, diff --git a/package.json b/package.json index 43d8010..61d14e1 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "forcepub": "lerna run forcepub", "link": "lerna run link", "lint": "lerna run lint", - "test": "lerna run test", + "test": "lerna run test --no-bail -- --silent", "unlink": "lerna run unlink", "watch": "lerna run watch --parallel" }, diff --git a/packages/universe/package.json b/packages/universe/package.json index 6f80865..ae9c2e7 100644 --- a/packages/universe/package.json +++ b/packages/universe/package.json @@ -11,7 +11,7 @@ "forcepub": "npm unpublish --force $(node -e 'const {name, version} = require(`./package.json`); process.stdout.write(`${name}@${version}`)') && npm publish", "link": "node -e \"Object.keys(require('./package.json').dependencies).filter((m) => 0 === m.indexOf('@latus/')).forEach((m) => require('child_process').spawn('yarn', ['link', m]));\"", "lint": "NODE_PATH=./node_modules eslint --format codeframe --ext mjs,js .", - "test": "NODE_PATH=./node_modules mocha --config ../../config/.mocharc.js", + "test": "yarn --silent run build --display none && mocha --colors test.js", "unlink": "node -e \"Object.keys(require('./package.json').dependencies).filter((m) => 0 === m.indexOf('@latus/')).forEach((m) => require('child_process').spawn('yarn', ['unlink', m]));\" && yarn install --force", "watch": "NODE_PATH=./node_modules webpack --watch --mode development" }, @@ -28,6 +28,7 @@ "dependencies": { "@avocado/math": "^2.0.0", "@avocado/resource": "^2.0.0", + "@avocado/s13n": "^2.0.0", "@avocado/traits": "^2.0.0", "@latus/core": "^2.0.0", "@latus/redux": "^2.0.0", diff --git a/packages/universe/src/client/index.js b/packages/universe/src/client/index.js index 89a4dae..82e61a2 100644 --- a/packages/universe/src/client/index.js +++ b/packages/universe/src/client/index.js @@ -1,16 +1,17 @@ -// import {join} from 'path'; - -// import {Resource} from '@avocado/resource'; - -import Packets from './packets'; +import {ReceiverSynchronizer} from '@avocado/s13n'; +import {gatherWithLatus} from '@latus/core'; +import {socket} from '@latus/socket'; export default { hooks: { - '@latus/socket/packets': Packets, - // '@latus/core/started': async ({config: {'@humus/universe/client': {uuid}}}) => { - // if (uuid) { - // Resource.root = join('/', 'universe', uuid); - // } - // }, + '@latus/http/client/up': (latus) => { + const synchronizer = new ReceiverSynchronizer(); + // eslint-disable-next-line no-param-reassign + latus.config['%synchronizer'] = synchronizer; + socket(latus).on('packet', synchronizer.acceptPacket, synchronizer); + }, + '@latus/socket/packets': gatherWithLatus( + require.context('./packets', false, /\.js$/), + ), }, }; diff --git a/packages/universe/src/client/packets/index.js b/packages/universe/src/client/packets/index.js deleted file mode 100644 index bc19aa8..0000000 --- a/packages/universe/src/client/packets/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import Locate from './locate'; - -export default () => ({ - Locate: Locate(), -}); diff --git a/packages/universe/src/client/packets/join.js b/packages/universe/src/client/packets/join.js new file mode 100644 index 0000000..c9080ee --- /dev/null +++ b/packages/universe/src/client/packets/join.js @@ -0,0 +1,3 @@ +import Join from '../../packets/join'; + +export default () => class ClientJoin extends Join() {}; diff --git a/packages/universe/src/client/packets/locate.js b/packages/universe/src/client/packets/locate.js deleted file mode 100644 index e48eaaa..0000000 --- a/packages/universe/src/client/packets/locate.js +++ /dev/null @@ -1,9 +0,0 @@ -import Locate from '../../packets/locate'; - -export default () => class ClientLocate extends Locate() { - - // static respond() { - // return new super.constructor(); - // } - -}; diff --git a/packages/universe/src/index.js b/packages/universe/src/index.js index c11edf3..a55684b 100644 --- a/packages/universe/src/index.js +++ b/packages/universe/src/index.js @@ -1,11 +1,16 @@ -import Resources from './resources'; +import {gatherWithLatus} from '@latus/core'; import {universes} from './state'; export * from './state'; export default { hooks: { - '@avocado/resource/resources': Resources, + '@avocado/resource/resources': gatherWithLatus( + require.context('./resources', false, /\.js$/), + ), + '@avocado/traits': gatherWithLatus( + require.context('./traits', false, /\.js$/), + ), '@latus/redux/slices': () => ({ universes, }), diff --git a/packages/universe/src/packets/join.js b/packages/universe/src/packets/join.js index a858c79..b4bd2e7 100644 --- a/packages/universe/src/packets/join.js +++ b/packages/universe/src/packets/join.js @@ -1,11 +1,3 @@ import {Packet} from '@latus/socket'; -export default () => class Join extends Packet { - - static get data() { - return { - universe: 'string', - }; - } - -}; +export default () => class Join extends Packet {}; diff --git a/packages/universe/src/packets/locate.js b/packages/universe/src/packets/locate.js deleted file mode 100644 index a0ad290..0000000 --- a/packages/universe/src/packets/locate.js +++ /dev/null @@ -1,18 +0,0 @@ -import {Vector} from '@avocado/math'; -import {compose} from '@latus/core'; -import {Packet} from '@latus/socket'; - -const decorate = compose( - Vector.Packer('position'), -); - -export default () => class Locate extends decorate(Packet) { - - static get data() { - return { - ...this.data, - room: 'string', - }; - } - -}; diff --git a/packages/universe/src/player.js b/packages/universe/src/player.js new file mode 100644 index 0000000..bfd8cc0 --- /dev/null +++ b/packages/universe/src/player.js @@ -0,0 +1,13 @@ +export default class Player { + + constructor({entity, socket, user} = {}) { + this.entity = entity; + this.socket = socket; + this.user = user; + } + + inform() { + this.entity.inform(this.socket); + } + +} diff --git a/packages/universe/src/resources/index.js b/packages/universe/src/resources/index.js deleted file mode 100644 index 395b35e..0000000 --- a/packages/universe/src/resources/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import Universe from './universe'; - -export default (latus) => ({ - Universe: Universe(latus), -}); diff --git a/packages/universe/src/resources/universe.js b/packages/universe/src/resources/universe.js index 7c44e3c..45cdd1e 100644 --- a/packages/universe/src/resources/universe.js +++ b/packages/universe/src/resources/universe.js @@ -1,16 +1,21 @@ import {dirname, join} from 'path'; - import {promisify} from 'util'; import {resource, JsonResource} from '@avocado/resource'; import glob from 'glob'; +import Player from '../player'; + const pglob = promisify(glob); export default (latus) => class Universe extends JsonResource { + #informLoopHandle = null; + #mainLoopHandle = null; + #players = []; + #rooms = {}; #roomsFlat = []; @@ -25,6 +30,13 @@ export default (latus) => class Universe extends JsonResource { this.#tps = tps; } + addPlayer({entity, socket, user}) { + const room = this.room(entity.currentRoom); + room.addEntityToLayer(entity, 0); + entity.addSynchronized(room); + this.#players.push(new Player({entity, socket, user})); + } + addRoom(uri, room) { this.#rooms[uri] = room; this.#roomsFlat.push(room); @@ -56,6 +68,19 @@ export default (latus) => class Universe extends JsonResource { return extended; } + playerForUser(userId) { + return this.#players.find(({user}) => user.id === userId); + } + + inform() { + for (let i = 0; i < this.#players.length; ++i) { + this.#players[i].inform(); + } + for (let i = 0; i < this.#roomsFlat.length; i++) { + this.#roomsFlat[i].cleanPackets(); + } + } + static async load(json = {}) { if (!json.extends) { throw new Error('Universe::extendJSON needs a URI'); @@ -68,6 +93,14 @@ export default (latus) => class Universe extends JsonResource { } start() { + if (!this.#informLoopHandle) { + this.#informLoopHandle = setInterval( + () => { + this.inform(); + }, + 1000 / 60, + ); + } if (!this.#mainLoopHandle) { // eslint-disable-next-line no-eval const {performance} = eval('require')('perf_hooks'); @@ -85,6 +118,10 @@ export default (latus) => class Universe extends JsonResource { } stop() { + if (this.#informLoopHandle) { + clearInterval(this.#informLoopHandle); + this.#informLoopHandle = null; + } if (this.#mainLoopHandle) { clearInterval(this.#mainLoopHandle); this.#mainLoopHandle = null; diff --git a/packages/universe/src/server/index.js b/packages/universe/src/server/index.js index 21c8e88..41b7f22 100644 --- a/packages/universe/src/server/index.js +++ b/packages/universe/src/server/index.js @@ -1,12 +1,5 @@ -// import fs from 'fs'; -// import {join} from 'path'; -// import {promisify} from 'util'; - import {resource} from '@avocado/resource'; - -import Packets from './packets'; - -// const access = promisify(fs.access).bind(fs); +import {gatherWithLatus} from '@latus/core'; export default { hooks: { @@ -21,6 +14,7 @@ export default { // eslint-disable-next-line no-param-reassign latus.config['%universe'] = universe; universe.start(); + // eslint-disable-next-line no-console console.log(`Universe ${running} up and running!`); } catch (error) { @@ -30,7 +24,9 @@ export default { '@latus/http/plugins': (req, {config: {'@humus/universe': {uuid}}}) => ({ '@humus/universe/client': {uuid}, }), - '@latus/socket/packets': Packets, + '@latus/socket/packets': gatherWithLatus( + require.context('./packets', false, /\.js$/), + ), }, }; diff --git a/packages/universe/src/server/packets/index.js b/packages/universe/src/server/packets/index.js deleted file mode 100644 index bc19aa8..0000000 --- a/packages/universe/src/server/packets/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import Locate from './locate'; - -export default () => ({ - Locate: Locate(), -}); diff --git a/packages/universe/src/server/packets/join.js b/packages/universe/src/server/packets/join.js new file mode 100644 index 0000000..df9ce06 --- /dev/null +++ b/packages/universe/src/server/packets/join.js @@ -0,0 +1,40 @@ +import {dirname, join} from 'path'; + +import {resource} from '@avocado/resource'; +// import {ValidationError} from '@latus/socket'; + +import Join from '../../packets/join'; + +export default (latus) => class ServerJoin extends Join() { + + // static async validate(packet, {req: {user}}) { + // // if (!user) { + // // throw new ValidationError({code: 401, reason: 'unauthenticated'}); + // // } + // } + + static async respond(packet, socket) { + // eslint-disable-next-line no-unused-vars + const {req: {user}} = socket; + const { + config: { + '%universe': universe, + }, + } = latus; + const player = universe.playerForUser(user ? user.id : 0); + if (player) { + return player.entity.instanceUuid; + } + const {fromResourceType: {Entity}} = resource(latus); + const entity = await Entity.load( + {extends: join(dirname(universe.uri), 'players', user ? user.name : 'cha0s', 'index.entity.json')}, + ); + universe.addPlayer({ + entity, + socket, + user, + }); + return entity.instanceUuid; + } + +}; diff --git a/packages/universe/src/server/packets/locate.js b/packages/universe/src/server/packets/locate.js deleted file mode 100644 index ebfd3fb..0000000 --- a/packages/universe/src/server/packets/locate.js +++ /dev/null @@ -1,11 +0,0 @@ -import {ValidationError} from '@latus/socket'; - -import Locate from '../../packets/locate'; - -export default () => class ServerLocate extends Locate() { - - static validate() { - throw new ValidationError({code: 500, reason: 'protocol'}); - } - -}; diff --git a/packages/universe/src/state/universe.js b/packages/universe/src/state/universe.js index d58af05..4a9061d 100644 --- a/packages/universe/src/state/universe.js +++ b/packages/universe/src/state/universe.js @@ -18,12 +18,7 @@ export const roomSelector = createSelector( export const playUniverse = createAsyncThunk( 'humus/universe/play', async (uuid, {extra: latus}) => { - const {data: {room, selfEntityUuid}} = await socket(latus).send(['Join', uuid]); - const {fromResourceType: {Room}} = resource(latus); - return { - room: await Room.load(room), - selfEntityUuid, - }; + await socket(latus).send(['Join', uuid]); }, ); @@ -36,10 +31,6 @@ const slice = createSlice({ }, /* eslint-disable no-param-reassign */ extraReducers: { - [playUniverse.fulfilled]: (state, {payload: {room, selfEntityUuid}}) => { - state.room = room; - state.selfEntityUuid = selfEntityUuid; - }, }, reducers: { }, diff --git a/packages/universe/src/traits/informed.js b/packages/universe/src/traits/informed.js new file mode 100644 index 0000000..e25cd38 --- /dev/null +++ b/packages/universe/src/traits/informed.js @@ -0,0 +1,50 @@ +import {Rectangle, Vector} from '@avocado/math'; +import {Trait} from '@avocado/traits'; +import {SenderSynchronizer} from '@avocado/s13n'; + +export default (latus) => class Informed extends Trait { + + static type() { + return 'informed'; + } + + #synchronizer = new SenderSynchronizer(latus); + + destroy() { + this.#synchronizer.destroy(); + } + + get areaToInform() { + // Reduce entity list to visible. + const {camera} = this.entity; + // Blow up camera rectangle to compensate for camera desync. + const size = Rectangle.size(camera.rectangle); + return Rectangle.expand( + camera.rectangle, + Vector.scale(size, 0.5), + ); + } + + methods() { + return { + + inform: (socket) => { + this.#synchronizer.send(socket, this.entity); + }, + + addSynchronized: (synchronized) => { + this.#synchronizer.addSynchronized(synchronized); + }, + + queuePacket: (packet) => { + this.#synchronizer.queuePacket(packet); + }, + + removeSynchronized: (synchronized) => { + this.#synchronizer.removeSynchronized(synchronized); + }, + + }; + } + +}; diff --git a/packages/universe/src/traits/universed.js b/packages/universe/src/traits/universed.js index 6b92a8e..192dfce 100644 --- a/packages/universe/src/traits/universed.js +++ b/packages/universe/src/traits/universed.js @@ -1,11 +1,17 @@ -import {Trait} from '@avocado/traits'; +import {StateProperty, Trait} from '@avocado/traits'; -export default class Universed extends Trait { +import {compose} from '@latus/core'; + +const decorate = compose( + StateProperty('currentRoom'), +); + +export default () => class Universed extends decorate(Trait) { static defaultState() { return { - in: '/rooms/town.room.json', + currentRoom: 'rooms/town.room.json', }; } -} +}; diff --git a/packages/universe/yarn.lock b/packages/universe/yarn.lock index 42fe007..605ebea 100644 --- a/packages/universe/yarn.lock +++ b/packages/universe/yarn.lock @@ -11,8 +11,8 @@ "@avocado/math@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fmath/-/math-2.0.0.tgz#f38ff5e452f0e4d14706c2f76c260c93c39a5629" - integrity sha512-NRopi3FjG2T3Zh9KqhR+bj/3mkyuWXK2+XYHzMpxZXssRSBrCgY4fW0pq37HAwuybDHVlPXWPinNHTiBFDN2gQ== + resolved "https://npm.i12e.cha0s.io/@avocado%2fmath/-/math-2.0.0.tgz#9150d00b973faa60bb3e9cc023dca892c1920b32" + integrity sha512-LKrgS6kS0SAKaZfS4i1zUU5/PbQs5GH9yKuwZot71D3AFwaWP2rlRdBdZn9+vpf2udMCBfuUFhS7oKzxUEigOQ== dependencies: "@avocado/core" "2.0.0" "@latus/core" "^2.0.0" @@ -32,9 +32,10 @@ "@avocado/s13n@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fs13n/-/s13n-2.0.0.tgz#61bbaf0ac4fa5940ec871e171f6c46c3f14e6569" - integrity sha512-wsOdmJcKvTMmOgsxeYG12PLYXxYsMDOo1i7+Ex67EmwGfqQlNSnF6bfxgjdDVW5D6nKzEU+UnHgtERYTxfiK8Q== + resolved "https://npm.i12e.cha0s.io/@avocado%2fs13n/-/s13n-2.0.0.tgz#f18a1507db07cf66ea9afdc7c435a4d550e20992" + integrity sha512-uOMJIY7JTu4IAu/XvipVGXX39DwmT2mVPUKMGWYjEV+lt2SGrlPpfxHXLEcim5oJ1UBPtRUxOGkdEkhpklNW5Q== dependencies: + "@avocado/resource" "^2.0.0" "@latus/core" "2.0.0" "@latus/socket" "2.0.0" debug "4.3.1" @@ -42,8 +43,8 @@ "@avocado/traits@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2ftraits/-/traits-2.0.0.tgz#be6ef23b30221c344311e3eca7abd075c08e3379" - integrity sha512-fkwuUcXc2h0ZF7Kxb9yz7gM2ttF3vIceV3dnvAG4q3r1d+ShDE49XGP76MOI5+2On3hvXd/W+DuZslOV4gw8Nw== + resolved "https://npm.i12e.cha0s.io/@avocado%2ftraits/-/traits-2.0.0.tgz#8fe4e6781ea1082cb140111c33f299f8fbe7fa0d" + integrity sha512-sGbcGJwp3jfX5wUnGGIZXnRcGRh4EiXu8EMp34rZVCKdRsBL9WUTcmef0WUrX4XCWLtGGSUa2TFvZ+PvZx8f0g== dependencies: "@avocado/core" "^2.0.0" "@avocado/resource" "^2.0.0" @@ -943,8 +944,8 @@ "@latus/core@2.0.0", "@latus/core@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fcore/-/core-2.0.0.tgz#47e23fb0df38d8eced598de7126cce146859fd9d" - integrity sha512-Iaejj6IihNcWz1iAgC3s01mlwqOd0YLXM319UGtc+9BUcQ3kAwTV24QSWjsTlJGh3bPK5vKpjGAkzXwBMqYqfA== + resolved "https://npm.i12e.cha0s.io/@latus%2fcore/-/core-2.0.0.tgz#b98b3cecd37e11cfecc3dd25c900b34232c98cf9" + integrity sha512-mVAuCJJzkyXDZjCcZ97+vuForcZl7lIiaxwqHdm73Fo/CgKoCqNXge96LfJ8ZHx+3ypx5Zz3C2+0em1dvEvFLw== dependencies: debug "4.3.1" js-yaml "3.14.0" @@ -952,8 +953,8 @@ "@latus/http@2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fhttp/-/http-2.0.0.tgz#c34fd19001a451ac0986fb30da8f0db21dc74880" - integrity sha512-I3vt+qnXHLh1+e5cOKcNyS/avEvJYWanemZ91J21s08qcbmhSKdyDbfJkDCRoFSTDSOjhITFU9te+bcOWW/Ldg== + resolved "https://npm.i12e.cha0s.io/@latus%2fhttp/-/http-2.0.0.tgz#5d389daa114968b100ffbe2b34323463cc2b761b" + integrity sha512-o0hqr/Mw5Ax8b0wbxQSbQo53PO2Hz4OBIHGzF/H8qypsw3W+vugC2Z7XWG9mDEmHUyXK7NP74Ral4bgjMFZcwQ== dependencies: "@latus/core" "2.0.0" "@neutrinojs/web" "^9.1.0" @@ -986,8 +987,8 @@ "@latus/socket@2.0.0", "@latus/socket@^2.0.0": version "2.0.0" - resolved "https://npm.i12e.cha0s.io/@latus%2fsocket/-/socket-2.0.0.tgz#9183d1f349033a6ca76f8403fbd743163bb691e9" - integrity sha512-KuMofkVXMTvg5HJTQDq/1BZAoPk+VzpWZ2yAcj741luwOvS/fZeywyQc5WYwvc13LZdSQ8dim2JMOevTBqDAcA== + resolved "https://npm.i12e.cha0s.io/@latus%2fsocket/-/socket-2.0.0.tgz#93991b3bbbb33723210550d5c1ddc63ff3c98792" + integrity sha512-++chVOPPFF1/QJzQqjDOmEqNTM0Mx+Cfc3nQyQGvr+m9dNpq4PGl/MPEtOw4wj/OHJL23ajjTapqHndld6z8Ww== dependencies: "@latus/core" "2.0.0" "@latus/http" "2.0.0" @@ -1207,9 +1208,9 @@ source-map "^0.7.3" "@types/webpack@^4.4.31", "@types/webpack@^4.41.8": - version "4.41.25" - resolved "https://npm.i12e.cha0s.io/@types%2fwebpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" - integrity sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ== + version "4.41.26" + resolved "https://npm.i12e.cha0s.io/@types%2fwebpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -1763,9 +1764,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://npm.i12e.cha0s.io/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://npm.i12e.cha0s.io/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bindings@^1.5.0: version "1.5.0" @@ -2024,12 +2025,12 @@ cache-base@^1.0.1: unset-value "^1.0.0" call-bind@^1.0.0: - version "1.0.0" - resolved "https://npm.i12e.cha0s.io/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + version "1.0.2" + resolved "https://npm.i12e.cha0s.io/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" - get-intrinsic "^1.0.0" + get-intrinsic "^1.0.2" callsite@1.0.0: version "1.0.0" @@ -2068,9 +2069,9 @@ camelcase@^6.0.0: integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001173: - version "1.0.30001173" - resolved "https://npm.i12e.cha0s.io/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz#3c47bbe3cd6d7a9eda7f50ac016d158005569f56" - integrity sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw== + version "1.0.30001176" + resolved "https://npm.i12e.cha0s.io/caniuse-lite/-/caniuse-lite-1.0.30001176.tgz#e44bac506d4656bae4944a1417f41597bd307335" + integrity sha512-VWdkYmqdkDLRe0lvfJlZQ43rnjKqIGKHWhWWRbkqMsJIUaYDNf/K/sdZZcVO6YKQklubokdkJY+ujArsuJ5cag== chai@4.2.0: version "4.2.0" @@ -2856,9 +2857,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.634: - version "1.3.635" - resolved "https://npm.i12e.cha0s.io/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz#8d1591eeca6b257d380061a2c04f0b3cc6c9e33b" - integrity sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ== + version "1.3.637" + resolved "https://npm.i12e.cha0s.io/electron-to-chromium/-/electron-to-chromium-1.3.637.tgz#be46f77acc217cdecf633bbd25292f6a36cc689b" + integrity sha512-924WXYMYquYybc+7pNApGlhY2RWg3MY3he4BrZ5BUmM2n1MGBsrS+PZxrlo6UAsWuNl4NE66fqFdwsWkBUGgkA== elliptic@^6.5.3: version "6.5.3" @@ -2949,10 +2950,10 @@ enhanced-resolve@^0.9.1: memory-fs "^0.2.0" tapable "^0.1.8" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://npm.i12e.cha0s.io/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== +enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://npm.i12e.cha0s.io/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" @@ -3701,7 +3702,7 @@ get-func-name@^2.0.0: resolved "https://npm.i12e.cha0s.io/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= -get-intrinsic@^1.0.0, get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: version "1.0.2" resolved "https://npm.i12e.cha0s.io/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== @@ -4880,7 +4881,7 @@ mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": resolved "https://npm.i12e.cha0s.io/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== -mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: +mime-types@^2.1.27, mime-types@^2.1.28, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.28" resolved "https://npm.i12e.cha0s.io/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== @@ -6120,9 +6121,9 @@ regjsgen@^0.5.1: integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.4" - resolved "https://npm.i12e.cha0s.io/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + version "0.6.6" + resolved "https://npm.i12e.cha0s.io/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" + integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== dependencies: jsesc "~0.5.0" @@ -6549,9 +6550,9 @@ socket.io-client@2.3.0: to-array "0.1.4" socket.io-parser@~3.3.0: - version "3.3.1" - resolved "https://npm.i12e.cha0s.io/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" - integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== + version "3.3.2" + resolved "https://npm.i12e.cha0s.io/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" @@ -7184,9 +7185,9 @@ upper-case@^1.1.1: integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: - version "4.4.0" - resolved "https://npm.i12e.cha0s.io/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + version "4.4.1" + resolved "https://npm.i12e.cha0s.io/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -7357,13 +7358,14 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-middleware@^4.0.2: - version "4.0.2" - resolved "https://npm.i12e.cha0s.io/webpack-dev-middleware/-/webpack-dev-middleware-4.0.2.tgz#1436ae6cacee78475bd6bc1fbf063dfbfd6e577d" - integrity sha512-xyAICqIugWtT1RRH5aMMmZlPhDhEqPTDL0TWhmMZsuZ+cFlAvRxv4thCbuxdk9MW+OYK4c9BkfmgdQ1/7imkJA== + version "4.0.3" + resolved "https://npm.i12e.cha0s.io/webpack-dev-middleware/-/webpack-dev-middleware-4.0.3.tgz#71a846f825cf44999edd3a58a07d8cafae0c2283" + integrity sha512-mjZrPmR6b55A6nHZY6ylh+ncwK7PXbx7KJ4uU02ThXPFlpDj/PN8YlCl12uhe4OZU94lx1rjy9a4UH99IZbWQA== dependencies: + colorette "^1.2.1" mem "^8.0.0" memfs "^3.2.0" - mime-types "^2.1.27" + mime-types "^2.1.28" range-parser "^1.2.1" schema-utils "^3.0.0" @@ -7438,9 +7440,9 @@ webpack-virtual-modules@^0.4.1: integrity sha512-BH/RKOHk223WdBDLFqghztx3DF5AqR3CKg3ue1KN9S1SAaXP68Kj/4rF0lsdysxXaanzx7aWl1u0+lnfj7+OtQ== webpack@^4: - version "4.45.0" - resolved "https://npm.i12e.cha0s.io/webpack/-/webpack-4.45.0.tgz#bcdc1ddb43959adb47f8974e60d944027267c1be" - integrity sha512-JhDaVi4CbRcwLLAoqC7eugMSMJnZbIfE2AyjaZ19pnOIh/R2O/lXOiXA2tQFN0iXEcxgpPJsPJHW2wOWqiTLcw== + version "4.46.0" + resolved "https://npm.i12e.cha0s.io/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -7450,7 +7452,7 @@ webpack@^4: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0"