Merge branch 'master' into dependabot/nuget/pac-man-board-game/Microsoft.TypeScript.MSBuild-5.2.2

This commit is contained in:
Martin Berg Alstad 2023-10-26 23:13:07 +02:00 committed by GitHub
commit e45306b410
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 360 additions and 287 deletions

View File

@ -29,30 +29,17 @@ public class ActionServiceTests
{ {
_spawns = CreateQueue(); _spawns = CreateQueue();
_game = new pacMan.Services.Game(_spawns); _game = new pacMan.Services.Game(_spawns);
_whiteMessage = new ActionMessage _whiteMessage = new ActionMessage { Action = GameAction.JoinGame, Data = SerializeData(_whitePlayer.Username) };
{ _blackMessage = new ActionMessage { Action = GameAction.JoinGame, Data = SerializeData(_blackPlayer.Username) };
Action = GameAction.JoinGame, _redMessage = new ActionMessage { Action = GameAction.JoinGame, Data = SerializeData(_redPlayer.Username) };
Data = SerializeData(_whitePlayer.Username)
};
_blackMessage = new ActionMessage
{
Action = GameAction.JoinGame,
Data = SerializeData(_blackPlayer.Username)
};
_redMessage = new ActionMessage
{
Action = GameAction.JoinGame,
Data = SerializeData(_redPlayer.Username)
};
_gameService = Substitute.For<GameService>(Substitute.For<ILogger<GameService>>()); _gameService = Substitute.For<GameService>(Substitute.For<ILogger<GameService>>());
_service = new ActionService(Substitute.For<ILogger<ActionService>>(), _gameService); _service = new ActionService(Substitute.For<ILogger<ActionService>>(), _gameService);
} }
private JsonElement SerializeData(string username) => private JsonElement SerializeData(string username) =>
JsonDocument.Parse(JsonSerializer.Serialize( JsonDocument.Parse(JsonSerializer.Serialize(
new JoinGameData { Username = username, GameId = _game.Id } new JoinGameData { Username = username, GameId = _game.Id }
) )).RootElement;
).RootElement;
private static Queue<DirectionalPosition> CreateQueue() => private static Queue<DirectionalPosition> CreateQueue() =>
new(new[] new(new[]
@ -94,13 +81,8 @@ public class ActionServiceTests
[Test] [Test]
public void PlayerInfo_DataIsNotJoinGameData() public void PlayerInfo_DataIsNotJoinGameData()
{ {
var serialized = var serialized = JsonDocument.Parse(JsonSerializer.Serialize(new Box { Colour = "white" }));
JsonDocument.Parse(JsonSerializer.Serialize(new Box { Colour = "white" })); var message = new ActionMessage { Action = GameAction.JoinGame, Data = serialized.RootElement };
var message = new ActionMessage
{
Action = GameAction.JoinGame,
Data = serialized.RootElement
};
Assert.Throws<JsonException>(() => _service.FindGame(message.Data)); Assert.Throws<JsonException>(() => _service.FindGame(message.Data));
} }
@ -176,28 +158,29 @@ public class ActionServiceTests
var result = _service.Ready(); var result = _service.Ready();
// If selected the state is changed to InGame // If selected the state is changed to InGame
_whitePlayer.State = State.InGame; _whitePlayer.State = State.InGame;
var players = result.GetType().GetProperty("Players")?.GetValue(result) as IEnumerable<Player>; Assert.That(result.Players.First().Username, Is.EqualTo(_whitePlayer.Username));
Assert.That(players?.First().Username, Is.EqualTo(_whitePlayer.Username));
} }
[Test] [Test]
public void Ready_TwoReady() public void Ready_TwoReady()
{ {
var group = new pacMan.Services.Game(new Queue<DirectionalPosition>()) var group = new pacMan.Services.Game(new Queue<DirectionalPosition>())
{ Players = { _blackPlayer, _whitePlayer } }; {
Players = { _blackPlayer, _whitePlayer }
};
_service.Game = group; _service.Game = group;
_service.Player = _blackPlayer; _service.Player = _blackPlayer;
var result = _service.Ready(); var result = _service.Ready();
Assert.That(result.GetType().GetProperty("AllReady")?.GetValue(result), Is.EqualTo(false)); Assert.That(result.AllReady, Is.EqualTo(false));
_service.Player = _whitePlayer; _service.Player = _whitePlayer;
result = _service.Ready(); result = _service.Ready();
var players = result.GetType().GetProperty("Players")?.GetValue(result) as IEnumerable<Player>; Assert.That(result.Players.First().Username,
Assert.That(players?.First().Username, Is.EqualTo(_blackPlayer.Username).Or.EqualTo(_whitePlayer.Username)); Is.EqualTo(_blackPlayer.Username).Or.EqualTo(_whitePlayer.Username));
} }
#endregion #endregion
@ -216,8 +199,8 @@ public class ActionServiceTests
{ {
_service.Game = _service.Game =
new pacMan.Services.Game(new Queue<DirectionalPosition>( new pacMan.Services.Game(new Queue<DirectionalPosition>(
new[] { new DirectionalPosition { At = new Position { X = 3, Y = 3 }, Direction = Direction.Up } })) new[] { new DirectionalPosition { At = new Position { X = 3, Y = 3 }, Direction = Direction.Up } }
{ Players = { _whitePlayer } }; )) { Players = { _whitePlayer } };
var name = _service.FindNextPlayer(); var name = _service.FindNextPlayer();
Assert.That(name, Is.EqualTo(_whitePlayer.Username)); Assert.That(name, Is.EqualTo(_whitePlayer.Username));

View File

@ -123,9 +123,9 @@ public class GameTests
[Test] [Test]
public void AddPlayer_WhenNameExists() public void AddPlayer_WhenNameExists()
{ {
var redClone = _redPlayer.Clone(); var redClone = _redPlayer.Clone() as Player;
_game.AddPlayer(_redPlayer); _game.AddPlayer(_redPlayer);
Assert.DoesNotThrow(() => _game.AddPlayer(redClone)); Assert.DoesNotThrow(() => _game.AddPlayer(redClone!));
} }
[Test] [Test]

View File

@ -26,13 +26,4 @@ internal static class Players
{ {
Colour = colour Colour = colour
}; };
internal static Player Clone(this Player player) =>
new()
{
Box = player.Box,
Colour = player.Colour,
Username = player.Username,
PacMan = player.PacMan
};
} }

27
README.md Normal file
View File

@ -0,0 +1,27 @@
# Pac-Man The Board Game
Work in progress.
## Development
```bash
cd pac-man-board-game/ClientApp
pnpm install
cd ..
dotnet run
```
## Stack
- Frontend
- [TypeScript](https://www.typescriptlang.org/)
- [React](https://reactjs.org/)
- [Jotai](https://jotai.org/)
- [Vite](https://vitejs.dev/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Jest](https://jestjs.io/)
- Backend
- [.NET 7](https://dotnet.microsoft.com/)
- [C#](https://docs.microsoft.com/en-us/dotnet/csharp/)
- [ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-7.0)
- [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)

View File

@ -15,21 +15,21 @@
"web-vitals": "^3.4.0" "web-vitals": "^3.4.0"
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^18.2.20", "@types/react": "^18.2.33",
"@types/react-dom": "^18.2.7", "@types/react-dom": "^18.2.14",
"@vitejs/plugin-react": "^4.0.4", "@vitejs/plugin-react": "^4.0.4",
"@vitest/coverage-c8": "^0.33.0", "@vitest/coverage-c8": "^0.33.0",
"autoprefixer": "^10.4.15", "autoprefixer": "^10.4.16",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"happy-dom": "^10.10.4", "happy-dom": "^12.9.1",
"postcss": "^8.4.28", "postcss": "^8.4.31",
"tailwindcss": "^3.3.3", "tailwindcss": "^3.3.3",
"typescript": "^5.1.6", "typescript": "^5.1.6",
"vite": "^4.4.9", "vite": "^4.4.9",
"vite-plugin-node-polyfills": "^0.11.2", "vite-plugin-node-polyfills": "^0.15.0",
"vite-plugin-svgr": "^3.2.0", "vite-plugin-svgr": "^3.2.0",
"vite-tsconfig-paths": "^4.2.0", "vite-tsconfig-paths": "^4.2.0",
"vitest": "^0.34.2" "vitest": "^0.34.6"
}, },
"resolutions": { "resolutions": {
"css-what": "^5.0.1", "css-what": "^5.0.1",

View File

@ -8,86 +8,84 @@ overrides:
css-what: ^5.0.1 css-what: ^5.0.1
nth-check: ^3.0.1 nth-check: ^3.0.1
importers: dependencies:
'@emotion/react':
specifier: ^11.11.1
version: 11.11.1(@types/react@18.2.33)(react@18.2.0)
'@headlessui/react':
specifier: ^1.7.17
version: 1.7.17(react-dom@18.2.0)(react@18.2.0)
'@heroicons/react':
specifier: ^2.0.18
version: 2.0.18(react@18.2.0)
jotai:
specifier: ^2.3.1
version: 2.3.1(@types/react@18.2.33)(react@18.2.0)
jotai-devtools:
specifier: ^0.6.2
version: 0.6.2(@emotion/react@11.11.1)(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1)
oidc-client:
specifier: ^1.11.5
version: 1.11.5
react:
specifier: ^18.2.0
version: 18.2.0
react-dom:
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
react-router-dom:
specifier: ^6.15.0
version: 6.15.0(react-dom@18.2.0)(react@18.2.0)
web-vitals:
specifier: ^3.4.0
version: 3.4.0
.: devDependencies:
dependencies: '@types/react':
'@emotion/react': specifier: ^18.2.33
specifier: ^11.11.1 version: 18.2.33
version: 11.11.1(@types/react@18.2.20)(react@18.2.0) '@types/react-dom':
'@headlessui/react': specifier: ^18.2.14
specifier: ^1.7.17 version: 18.2.14
version: 1.7.17(react-dom@18.2.0)(react@18.2.0) '@vitejs/plugin-react':
'@heroicons/react': specifier: ^4.0.4
specifier: ^2.0.18 version: 4.0.4(vite@4.4.9)
version: 2.0.18(react@18.2.0) '@vitest/coverage-c8':
jotai: specifier: ^0.33.0
specifier: ^2.3.1 version: 0.33.0(vitest@0.34.6)
version: 2.3.1(@types/react@18.2.20)(react@18.2.0) autoprefixer:
jotai-devtools: specifier: ^10.4.16
specifier: ^0.6.2 version: 10.4.16(postcss@8.4.31)
version: 0.6.2(@emotion/react@11.11.1)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1) cross-env:
oidc-client: specifier: ^7.0.3
specifier: ^1.11.5 version: 7.0.3
version: 1.11.5 happy-dom:
react: specifier: ^12.9.1
specifier: ^18.2.0 version: 12.9.1
version: 18.2.0 postcss:
react-dom: specifier: ^8.4.31
specifier: ^18.2.0 version: 8.4.31
version: 18.2.0(react@18.2.0) tailwindcss:
react-router-dom: specifier: ^3.3.3
specifier: ^6.15.0 version: 3.3.3
version: 6.15.0(react-dom@18.2.0)(react@18.2.0) typescript:
web-vitals: specifier: ^5.1.6
specifier: ^3.4.0 version: 5.1.6
version: 3.4.0 vite:
devDependencies: specifier: ^4.4.9
'@types/react': version: 4.4.9(@types/node@20.4.5)
specifier: ^18.2.20 vite-plugin-node-polyfills:
version: 18.2.20 specifier: ^0.15.0
'@types/react-dom': version: 0.15.0(vite@4.4.9)
specifier: ^18.2.7 vite-plugin-svgr:
version: 18.2.7 specifier: ^3.2.0
'@vitejs/plugin-react': version: 3.2.0(vite@4.4.9)
specifier: ^4.0.4 vite-tsconfig-paths:
version: 4.0.4(vite@4.4.9) specifier: ^4.2.0
'@vitest/coverage-c8': version: 4.2.0(typescript@5.1.6)(vite@4.4.9)
specifier: ^0.33.0 vitest:
version: 0.33.0(vitest@0.34.2) specifier: ^0.34.6
autoprefixer: version: 0.34.6(happy-dom@12.9.1)
specifier: ^10.4.15
version: 10.4.15(postcss@8.4.28)
cross-env:
specifier: ^7.0.3
version: 7.0.3
happy-dom:
specifier: ^10.10.4
version: 10.10.4
postcss:
specifier: ^8.4.28
version: 8.4.28
tailwindcss:
specifier: ^3.3.3
version: 3.3.3
typescript:
specifier: ^5.1.6
version: 5.1.6
vite:
specifier: ^4.4.9
version: 4.4.9(@types/node@20.4.5)
vite-plugin-node-polyfills:
specifier: ^0.11.2
version: 0.11.2(vite@4.4.9)
vite-plugin-svgr:
specifier: ^3.2.0
version: 3.2.0(vite@4.4.9)
vite-tsconfig-paths:
specifier: ^4.2.0
version: 4.2.0(typescript@5.1.6)(vite@4.4.9)
vitest:
specifier: ^0.34.2
version: 0.34.2(happy-dom@10.10.4)
packages: packages:
@ -104,6 +102,14 @@ packages:
'@jridgewell/trace-mapping': 0.3.18 '@jridgewell/trace-mapping': 0.3.18
dev: true dev: true
/@babel/code-frame@7.22.13:
resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.22.20
chalk: 2.4.2
dev: true
/@babel/code-frame@7.22.5: /@babel/code-frame@7.22.5:
resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -127,7 +133,7 @@ packages:
'@babel/helpers': 7.22.6 '@babel/helpers': 7.22.6
'@babel/parser': 7.22.7 '@babel/parser': 7.22.7
'@babel/template': 7.22.5 '@babel/template': 7.22.5
'@babel/traverse': 7.22.8 '@babel/traverse': 7.23.2
'@babel/types': 7.22.5 '@babel/types': 7.22.5
convert-source-map: 1.9.0 convert-source-map: 1.9.0
debug: 4.3.4 debug: 4.3.4
@ -148,6 +154,16 @@ packages:
jsesc: 2.5.2 jsesc: 2.5.2
dev: true dev: true
/@babel/generator@7.23.0:
resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.0
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.18
jsesc: 2.5.2
dev: true
/@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9):
resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -162,24 +178,29 @@ packages:
semver: 6.3.1 semver: 6.3.1
dev: true dev: true
/@babel/helper-environment-visitor@7.22.20:
resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-environment-visitor@7.22.5: /@babel/helper-environment-visitor@7.22.5:
resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@babel/helper-function-name@7.22.5: /@babel/helper-function-name@7.23.0:
resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/template': 7.22.5 '@babel/template': 7.22.15
'@babel/types': 7.22.5 '@babel/types': 7.23.0
dev: true dev: true
/@babel/helper-hoist-variables@7.22.5: /@babel/helper-hoist-variables@7.22.5:
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.22.5 '@babel/types': 7.23.0
dev: true dev: true
/@babel/helper-module-imports@7.22.5: /@babel/helper-module-imports@7.22.5:
@ -218,13 +239,18 @@ packages:
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.22.5 '@babel/types': 7.23.0
dev: true dev: true
/@babel/helper-string-parser@7.22.5: /@babel/helper-string-parser@7.22.5:
resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
/@babel/helper-validator-identifier@7.22.20:
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-validator-identifier@7.22.5: /@babel/helper-validator-identifier@7.22.5:
resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -239,12 +265,21 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/template': 7.22.5 '@babel/template': 7.22.5
'@babel/traverse': 7.22.8 '@babel/traverse': 7.23.2
'@babel/types': 7.22.5 '@babel/types': 7.22.5
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/@babel/highlight@7.22.20:
resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.22.20
chalk: 2.4.2
js-tokens: 4.0.0
dev: true
/@babel/highlight@7.22.5: /@babel/highlight@7.22.5:
resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -261,6 +296,14 @@ packages:
'@babel/types': 7.22.5 '@babel/types': 7.22.5
dev: true dev: true
/@babel/parser@7.23.0:
resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
'@babel/types': 7.23.0
dev: true
/@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9): /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9):
resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -288,6 +331,15 @@ packages:
regenerator-runtime: 0.13.11 regenerator-runtime: 0.13.11
dev: false dev: false
/@babel/template@7.22.15:
resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.22.13
'@babel/parser': 7.23.0
'@babel/types': 7.23.0
dev: true
/@babel/template@7.22.5: /@babel/template@7.22.5:
resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -297,18 +349,18 @@ packages:
'@babel/types': 7.22.5 '@babel/types': 7.22.5
dev: true dev: true
/@babel/traverse@7.22.8: /@babel/traverse@7.23.2:
resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/code-frame': 7.22.5 '@babel/code-frame': 7.22.13
'@babel/generator': 7.22.9 '@babel/generator': 7.23.0
'@babel/helper-environment-visitor': 7.22.5 '@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.22.5 '@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5 '@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.22.7 '@babel/parser': 7.23.0
'@babel/types': 7.22.5 '@babel/types': 7.23.0
debug: 4.3.4 debug: 4.3.4
globals: 11.12.0 globals: 11.12.0
transitivePeerDependencies: transitivePeerDependencies:
@ -323,6 +375,15 @@ packages:
'@babel/helper-validator-identifier': 7.22.5 '@babel/helper-validator-identifier': 7.22.5
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
/@babel/types@7.23.0:
resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.22.5
'@babel/helper-validator-identifier': 7.22.20
to-fast-properties: 2.0.0
dev: true
/@bcoe/v8-coverage@0.2.3: /@bcoe/v8-coverage@0.2.3:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true dev: true
@ -361,7 +422,7 @@ packages:
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
dev: false dev: false
/@emotion/react@11.11.1(@types/react@18.2.20)(react@18.2.0): /@emotion/react@11.11.1(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==}
peerDependencies: peerDependencies:
'@types/react': '*' '@types/react': '*'
@ -377,7 +438,7 @@ packages:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
'@emotion/utils': 1.2.1 '@emotion/utils': 1.2.1
'@emotion/weak-memoize': 0.3.1 '@emotion/weak-memoize': 0.3.1
'@types/react': 18.2.20 '@types/react': 18.2.33
hoist-non-react-statics: 3.3.2 hoist-non-react-statics: 3.3.2
react: 18.2.0 react: 18.2.0
dev: false dev: false
@ -721,7 +782,7 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/sourcemap-codec': 1.4.14
dev: true dev: true
/@mantine/core@6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): /@mantine/core@6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-SvMZCOgCc315SIg6hkuLM0ZnBaAac4VFDHZ0BM5LIE4MPJUpe4QOLsg/5RGxOa5s7JRCtu/dawH3/9frvfDrhw==} resolution: {integrity: sha512-SvMZCOgCc315SIg6hkuLM0ZnBaAac4VFDHZ0BM5LIE4MPJUpe4QOLsg/5RGxOa5s7JRCtu/dawH3/9frvfDrhw==}
peerDependencies: peerDependencies:
'@mantine/hooks': 6.0.19 '@mantine/hooks': 6.0.19
@ -735,8 +796,8 @@ packages:
'@radix-ui/react-scroll-area': 1.0.2(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-scroll-area': 1.0.2(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
react-remove-scroll: 2.5.6(@types/react@18.2.20)(react@18.2.0) react-remove-scroll: 2.5.6(@types/react@18.2.33)(react@18.2.0)
react-textarea-autosize: 8.3.4(@types/react@18.2.20)(react@18.2.0) react-textarea-autosize: 8.3.4(@types/react@18.2.33)(react@18.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@emotion/react' - '@emotion/react'
- '@types/react' - '@types/react'
@ -758,7 +819,7 @@ packages:
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
dependencies: dependencies:
'@mantine/core': 6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) '@mantine/core': 6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 6.0.19(react@18.2.0) '@mantine/hooks': 6.0.19(react@18.2.0)
'@mantine/utils': 6.0.19(react@18.2.0) '@mantine/utils': 6.0.19(react@18.2.0)
prism-react-renderer: 1.3.5(react@18.2.0) prism-react-renderer: 1.3.5(react@18.2.0)
@ -773,7 +834,7 @@ packages:
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
dependencies: dependencies:
'@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) '@emotion/react': 11.11.1(@types/react@18.2.33)(react@18.2.0)
clsx: 1.1.1 clsx: 1.1.1
csstype: 3.0.9 csstype: 3.0.9
react: 18.2.0 react: 18.2.0
@ -1126,14 +1187,14 @@ packages:
/@types/prop-types@15.7.5: /@types/prop-types@15.7.5:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
/@types/react-dom@18.2.7: /@types/react-dom@18.2.14:
resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==}
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
dev: true dev: true
/@types/react@18.2.20: /@types/react@18.2.33:
resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} resolution: {integrity: sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==}
dependencies: dependencies:
'@types/prop-types': 15.7.5 '@types/prop-types': 15.7.5
'@types/scheduler': 0.16.3 '@types/scheduler': 0.16.3
@ -1157,7 +1218,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@vitest/coverage-c8@0.33.0(vitest@0.34.2): /@vitest/coverage-c8@0.33.0(vitest@0.34.6):
resolution: {integrity: sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==} resolution: {integrity: sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==}
peerDependencies: peerDependencies:
vitest: '>=0.30.0 <1' vitest: '>=0.30.0 <1'
@ -1167,41 +1228,41 @@ packages:
magic-string: 0.30.2 magic-string: 0.30.2
picocolors: 1.0.0 picocolors: 1.0.0
std-env: 3.3.3 std-env: 3.3.3
vitest: 0.34.2(happy-dom@10.10.4) vitest: 0.34.6(happy-dom@12.9.1)
dev: true dev: true
/@vitest/expect@0.34.2: /@vitest/expect@0.34.6:
resolution: {integrity: sha512-EZm2dMNlLyIfDMha17QHSQcg2KjeAZaXd65fpPzXY5bvnfx10Lcaz3N55uEe8PhF+w4pw+hmrlHLLlRn9vkBJg==} resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==}
dependencies: dependencies:
'@vitest/spy': 0.34.2 '@vitest/spy': 0.34.6
'@vitest/utils': 0.34.2 '@vitest/utils': 0.34.6
chai: 4.3.7 chai: 4.3.10
dev: true dev: true
/@vitest/runner@0.34.2: /@vitest/runner@0.34.6:
resolution: {integrity: sha512-8ydGPACVX5tK3Dl0SUwxfdg02h+togDNeQX3iXVFYgzF5odxvaou7HnquALFZkyVuYskoaHUOqOyOLpOEj5XTA==} resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==}
dependencies: dependencies:
'@vitest/utils': 0.34.2 '@vitest/utils': 0.34.6
p-limit: 4.0.0 p-limit: 4.0.0
pathe: 1.1.1 pathe: 1.1.1
dev: true dev: true
/@vitest/snapshot@0.34.2: /@vitest/snapshot@0.34.6:
resolution: {integrity: sha512-qhQ+xy3u4mwwLxltS4Pd4SR+XHv4EajiTPNY3jkIBLUApE6/ce72neJPSUQZ7bL3EBuKI+NhvzhGj3n5baRQUQ==} resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==}
dependencies: dependencies:
magic-string: 0.30.2 magic-string: 0.30.2
pathe: 1.1.1 pathe: 1.1.1
pretty-format: 29.6.2 pretty-format: 29.6.2
dev: true dev: true
/@vitest/spy@0.34.2: /@vitest/spy@0.34.6:
resolution: {integrity: sha512-yd4L9OhfH6l0Av7iK3sPb3MykhtcRN5c5K5vm1nTbuN7gYn+yvUVVsyvzpHrjqS7EWqn9WsPJb7+0c3iuY60tA==} resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==}
dependencies: dependencies:
tinyspy: 2.1.1 tinyspy: 2.1.1
dev: true dev: true
/@vitest/utils@0.34.2: /@vitest/utils@0.34.6:
resolution: {integrity: sha512-Lzw+kAsTPubhoQDp1uVAOP6DhNia1GMDsI9jgB0yMn+/nDaPieYQ88lKqz/gGjSHL4zwOItvpehec9OY+rS73w==} resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==}
dependencies: dependencies:
diff-sequences: 29.4.3 diff-sequences: 29.4.3
loupe: 2.3.6 loupe: 2.3.6
@ -1296,19 +1357,19 @@ packages:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
dev: true dev: true
/autoprefixer@10.4.15(postcss@8.4.28): /autoprefixer@10.4.16(postcss@8.4.31):
resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
postcss: ^8.1.0 postcss: ^8.1.0
dependencies: dependencies:
browserslist: 4.21.10 browserslist: 4.21.10
caniuse-lite: 1.0.30001520 caniuse-lite: 1.0.30001554
fraction.js: 4.2.0 fraction.js: 4.3.7
normalize-range: 0.1.2 normalize-range: 0.1.2
picocolors: 1.0.0 picocolors: 1.0.0
postcss: 8.4.28 postcss: 8.4.31
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
dev: true dev: true
@ -1409,8 +1470,9 @@ packages:
randombytes: 2.1.0 randombytes: 2.1.0
dev: true dev: true
/browserify-sign@4.2.1: /browserify-sign@4.2.2:
resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==}
engines: {node: '>= 4'}
dependencies: dependencies:
bn.js: 5.2.1 bn.js: 5.2.1
browserify-rsa: 4.1.0 browserify-rsa: 4.1.0
@ -1434,7 +1496,7 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001520 caniuse-lite: 1.0.30001554
electron-to-chromium: 1.4.477 electron-to-chromium: 1.4.477
node-releases: 2.0.13 node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.10) update-browserslist-db: 1.0.11(browserslist@4.21.10)
@ -1507,18 +1569,18 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/caniuse-lite@1.0.30001520: /caniuse-lite@1.0.30001554:
resolution: {integrity: sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==} resolution: {integrity: sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==}
dev: true dev: true
/chai@4.3.7: /chai@4.3.10:
resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
engines: {node: '>=4'} engines: {node: '>=4'}
dependencies: dependencies:
assertion-error: 1.1.0 assertion-error: 1.1.0
check-error: 1.0.2 check-error: 1.0.3
deep-eql: 4.1.3 deep-eql: 4.1.3
get-func-name: 2.0.0 get-func-name: 2.0.2
loupe: 2.3.6 loupe: 2.3.6
pathval: 1.1.1 pathval: 1.1.1
type-detect: 4.0.8 type-detect: 4.0.8
@ -1540,8 +1602,10 @@ packages:
supports-color: 7.2.0 supports-color: 7.2.0
dev: false dev: false
/check-error@1.0.2: /check-error@1.0.3:
resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
dependencies:
get-func-name: 2.0.2
dev: true dev: true
/chokidar@3.5.3: /chokidar@3.5.3:
@ -1713,7 +1777,7 @@ packages:
resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==}
dependencies: dependencies:
browserify-cipher: 1.0.1 browserify-cipher: 1.0.1
browserify-sign: 4.2.1 browserify-sign: 4.2.2
create-ecdh: 4.0.4 create-ecdh: 4.0.4
create-hash: 1.2.0 create-hash: 1.2.0
create-hmac: 1.1.7 create-hmac: 1.1.7
@ -1725,8 +1789,8 @@ packages:
randomfill: 1.0.4 randomfill: 1.0.4
dev: true dev: true
/crypto-js@4.1.1: /crypto-js@4.2.0:
resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==} resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
dev: false dev: false
/css.escape@1.5.1: /css.escape@1.5.1:
@ -1958,8 +2022,8 @@ packages:
signal-exit: 3.0.7 signal-exit: 3.0.7
dev: true dev: true
/fraction.js@4.2.0: /fraction.js@4.3.7:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true dev: true
/fs.realpath@1.0.0: /fs.realpath@1.0.0:
@ -1987,8 +2051,8 @@ packages:
engines: {node: 6.* || 8.* || >= 10.*} engines: {node: 6.* || 8.* || >= 10.*}
dev: true dev: true
/get-func-name@2.0.0: /get-func-name@2.0.2:
resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
dev: true dev: true
/get-intrinsic@1.2.1: /get-intrinsic@1.2.1:
@ -2056,8 +2120,8 @@ packages:
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
dev: true dev: true
/happy-dom@10.10.4: /happy-dom@12.9.1:
resolution: {integrity: sha512-aEEFGSSs4DEJbxXvSMsIvJvvdsZbJZQEgtHsU4GgwNKbSbFxtgu6vXHmn4XoXnuElIbXV0xhbJiiQTxPnTmJcw==} resolution: {integrity: sha512-UvQ3IwKn1G3iiNCdTrhijdLGqf8Vj7d3OpmYcPwlKakjFy83oYbW6TmOKDLMTVLO9whmOC1HIpS09wf/14k7cA==}
dependencies: dependencies:
css.escape: 1.5.1 css.escape: 1.5.1
entities: 4.5.0 entities: 4.5.0
@ -2297,15 +2361,15 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/jotai-devtools@0.6.2(@emotion/react@11.11.1)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1): /jotai-devtools@0.6.2(@emotion/react@11.11.1)(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1):
resolution: {integrity: sha512-iHKYt8V2T2Gh2DtGRpvpv2daVoFoHRJXqk5/LHnhFkJy9rMQuIGo4XgVu/v1ZMSvMzwDXdU3hDOQkfQWlDErUQ==} resolution: {integrity: sha512-iHKYt8V2T2Gh2DtGRpvpv2daVoFoHRJXqk5/LHnhFkJy9rMQuIGo4XgVu/v1ZMSvMzwDXdU3hDOQkfQWlDErUQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
'@emotion/react': '>=11.0.0' '@emotion/react': '>=11.0.0'
react: '>=17.0.0' react: '>=17.0.0'
dependencies: dependencies:
'@emotion/react': 11.11.1(@types/react@18.2.20)(react@18.2.0) '@emotion/react': 11.11.1(@types/react@18.2.33)(react@18.2.0)
'@mantine/core': 6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) '@mantine/core': 6.0.19(@emotion/react@11.11.1)(@mantine/hooks@6.0.19)(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0)
'@mantine/hooks': 6.0.19(react@18.2.0) '@mantine/hooks': 6.0.19(react@18.2.0)
'@mantine/prism': 6.0.19(@mantine/core@6.0.19)(@mantine/hooks@6.0.19)(react-dom@18.2.0)(react@18.2.0) '@mantine/prism': 6.0.19(@mantine/core@6.0.19)(@mantine/hooks@6.0.19)(react-dom@18.2.0)(react@18.2.0)
'@redux-devtools/extension': 3.2.5(redux@4.2.1) '@redux-devtools/extension': 3.2.5(redux@4.2.1)
@ -2313,7 +2377,7 @@ packages:
jsondiffpatch: 0.5.0 jsondiffpatch: 0.5.0
react: 18.2.0 react: 18.2.0
react-error-boundary: 4.0.11(react@18.2.0) react-error-boundary: 4.0.11(react@18.2.0)
react-json-tree: 0.18.0(@types/react@18.2.20)(react@18.2.0) react-json-tree: 0.18.0(@types/react@18.2.33)(react@18.2.0)
react-resizable-panels: 0.0.54(react-dom@18.2.0)(react@18.2.0) react-resizable-panels: 0.0.54(react-dom@18.2.0)(react@18.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/react' - '@types/react'
@ -2321,7 +2385,7 @@ packages:
- redux - redux
dev: false dev: false
/jotai@2.3.1(@types/react@18.2.20)(react@18.2.0): /jotai@2.3.1(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-pXhx8/MeRUAHbzayerEUf9NHvP+Ba3q9WAvIMjaSwwuSCKEFhb8UW4XuZPC+Bv4u2ufvlyrxIZ+vy5UJ3f8JsQ==} resolution: {integrity: sha512-pXhx8/MeRUAHbzayerEUf9NHvP+Ba3q9WAvIMjaSwwuSCKEFhb8UW4XuZPC+Bv4u2ufvlyrxIZ+vy5UJ3f8JsQ==}
engines: {node: '>=12.20.0'} engines: {node: '>=12.20.0'}
peerDependencies: peerDependencies:
@ -2333,7 +2397,7 @@ packages:
react: react:
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
dev: false dev: false
@ -2374,6 +2438,7 @@ packages:
chalk: 3.0.0 chalk: 3.0.0
diff-match-patch: 1.0.5 diff-match-patch: 1.0.5
dev: false dev: false
bundledDependencies: []
/lilconfig@2.1.0: /lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
@ -2409,7 +2474,7 @@ packages:
/loupe@2.3.6: /loupe@2.3.6:
resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
dependencies: dependencies:
get-func-name: 2.0.0 get-func-name: 2.0.2
dev: true dev: true
/lru-cache@5.1.1: /lru-cache@5.1.1:
@ -2596,7 +2661,7 @@ packages:
acorn: 7.4.1 acorn: 7.4.1
base64-js: 1.5.1 base64-js: 1.5.1
core-js: 3.32.0 core-js: 3.32.0
crypto-js: 4.1.1 crypto-js: 4.2.0
serialize-javascript: 4.0.0 serialize-javascript: 4.0.0
dev: false dev: false
@ -2739,29 +2804,29 @@ packages:
pathe: 1.1.1 pathe: 1.1.1
dev: true dev: true
/postcss-import@15.1.0(postcss@8.4.28): /postcss-import@15.1.0(postcss@8.4.31):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
postcss: ^8.0.0 postcss: ^8.0.0
dependencies: dependencies:
postcss: 8.4.28 postcss: 8.4.31
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
read-cache: 1.0.0 read-cache: 1.0.0
resolve: 1.22.2 resolve: 1.22.2
dev: true dev: true
/postcss-js@4.0.1(postcss@8.4.28): /postcss-js@4.0.1(postcss@8.4.31):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16} engines: {node: ^12 || ^14 || >= 16}
peerDependencies: peerDependencies:
postcss: ^8.4.21 postcss: ^8.4.21
dependencies: dependencies:
camelcase-css: 2.0.1 camelcase-css: 2.0.1
postcss: 8.4.28 postcss: 8.4.31
dev: true dev: true
/postcss-load-config@4.0.1(postcss@8.4.28): /postcss-load-config@4.0.1(postcss@8.4.31):
resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
peerDependencies: peerDependencies:
@ -2774,17 +2839,17 @@ packages:
optional: true optional: true
dependencies: dependencies:
lilconfig: 2.1.0 lilconfig: 2.1.0
postcss: 8.4.28 postcss: 8.4.31
yaml: 2.3.1 yaml: 2.3.1
dev: true dev: true
/postcss-nested@6.0.1(postcss@8.4.28): /postcss-nested@6.0.1(postcss@8.4.31):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'} engines: {node: '>=12.0'}
peerDependencies: peerDependencies:
postcss: ^8.2.14 postcss: ^8.2.14
dependencies: dependencies:
postcss: 8.4.28 postcss: 8.4.31
postcss-selector-parser: 6.0.13 postcss-selector-parser: 6.0.13
dev: true dev: true
@ -2800,8 +2865,8 @@ packages:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
dev: true dev: true
/postcss@8.4.28: /postcss@8.4.31:
resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
dependencies: dependencies:
nanoid: 3.3.6 nanoid: 3.3.6
@ -2913,7 +2978,7 @@ packages:
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
dev: true dev: true
/react-json-tree@0.18.0(@types/react@18.2.20)(react@18.2.0): /react-json-tree@0.18.0(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==} resolution: {integrity: sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==}
peerDependencies: peerDependencies:
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
@ -2921,7 +2986,7 @@ packages:
dependencies: dependencies:
'@babel/runtime': 7.22.6 '@babel/runtime': 7.22.6
'@types/lodash': 4.14.196 '@types/lodash': 4.14.196
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
react-base16-styling: 0.9.1 react-base16-styling: 0.9.1
dev: false dev: false
@ -2931,7 +2996,7 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/react-remove-scroll-bar@2.3.4(@types/react@18.2.20)(react@18.2.0): /react-remove-scroll-bar@2.3.4(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
@ -2941,13 +3006,13 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.33)(react@18.2.0)
tslib: 2.6.1 tslib: 2.6.1
dev: false dev: false
/react-remove-scroll@2.5.6(@types/react@18.2.20)(react@18.2.0): /react-remove-scroll@2.5.6(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==} resolution: {integrity: sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
@ -2957,13 +3022,13 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
react-remove-scroll-bar: 2.3.4(@types/react@18.2.20)(react@18.2.0) react-remove-scroll-bar: 2.3.4(@types/react@18.2.33)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.33)(react@18.2.0)
tslib: 2.6.1 tslib: 2.6.1
use-callback-ref: 1.3.0(@types/react@18.2.20)(react@18.2.0) use-callback-ref: 1.3.0(@types/react@18.2.33)(react@18.2.0)
use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.33)(react@18.2.0)
dev: false dev: false
/react-resizable-panels@0.0.54(react-dom@18.2.0)(react@18.2.0): /react-resizable-panels@0.0.54(react-dom@18.2.0)(react@18.2.0):
@ -2999,7 +3064,7 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/react-style-singleton@2.2.1(@types/react@18.2.20)(react@18.2.0): /react-style-singleton@2.2.1(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
@ -3009,14 +3074,14 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
get-nonce: 1.0.1 get-nonce: 1.0.1
invariant: 2.2.4 invariant: 2.2.4
react: 18.2.0 react: 18.2.0
tslib: 2.6.1 tslib: 2.6.1
dev: false dev: false
/react-textarea-autosize@8.3.4(@types/react@18.2.20)(react@18.2.0): /react-textarea-autosize@8.3.4(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
@ -3025,7 +3090,7 @@ packages:
'@babel/runtime': 7.22.6 '@babel/runtime': 7.22.6
react: 18.2.0 react: 18.2.0
use-composed-ref: 1.3.0(react@18.2.0) use-composed-ref: 1.3.0(react@18.2.0)
use-latest: 1.2.1(@types/react@18.2.20)(react@18.2.0) use-latest: 1.2.1(@types/react@18.2.33)(react@18.2.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/react' - '@types/react'
dev: false dev: false
@ -3320,11 +3385,11 @@ packages:
normalize-path: 3.0.0 normalize-path: 3.0.0
object-hash: 3.0.0 object-hash: 3.0.0
picocolors: 1.0.0 picocolors: 1.0.0
postcss: 8.4.28 postcss: 8.4.31
postcss-import: 15.1.0(postcss@8.4.28) postcss-import: 15.1.0(postcss@8.4.31)
postcss-js: 4.0.1(postcss@8.4.28) postcss-js: 4.0.1(postcss@8.4.31)
postcss-load-config: 4.0.1(postcss@8.4.28) postcss-load-config: 4.0.1(postcss@8.4.31)
postcss-nested: 6.0.1(postcss@8.4.28) postcss-nested: 6.0.1(postcss@8.4.31)
postcss-selector-parser: 6.0.13 postcss-selector-parser: 6.0.13
resolve: 1.22.2 resolve: 1.22.2
sucrase: 3.34.0 sucrase: 3.34.0
@ -3444,7 +3509,7 @@ packages:
qs: 6.11.2 qs: 6.11.2
dev: true dev: true
/use-callback-ref@1.3.0(@types/react@18.2.20)(react@18.2.0): /use-callback-ref@1.3.0(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
@ -3454,7 +3519,7 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
tslib: 2.6.1 tslib: 2.6.1
dev: false dev: false
@ -3467,7 +3532,7 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/use-isomorphic-layout-effect@1.1.2(@types/react@18.2.20)(react@18.2.0): /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
peerDependencies: peerDependencies:
'@types/react': '*' '@types/react': '*'
@ -3476,11 +3541,11 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
dev: false dev: false
/use-latest@1.2.1(@types/react@18.2.20)(react@18.2.0): /use-latest@1.2.1(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
peerDependencies: peerDependencies:
'@types/react': '*' '@types/react': '*'
@ -3489,12 +3554,12 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
react: 18.2.0 react: 18.2.0
use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.20)(react@18.2.0) use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.33)(react@18.2.0)
dev: false dev: false
/use-sidecar@1.1.2(@types/react@18.2.20)(react@18.2.0): /use-sidecar@1.1.2(@types/react@18.2.33)(react@18.2.0):
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
@ -3504,7 +3569,7 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
dependencies: dependencies:
'@types/react': 18.2.20 '@types/react': 18.2.33
detect-node-es: 1.1.0 detect-node-es: 1.1.0
react: 18.2.0 react: 18.2.0
tslib: 2.6.1 tslib: 2.6.1
@ -3533,8 +3598,8 @@ packages:
convert-source-map: 1.9.0 convert-source-map: 1.9.0
dev: true dev: true
/vite-node@0.34.2(@types/node@20.4.5): /vite-node@0.34.6(@types/node@20.4.5):
resolution: {integrity: sha512-JtW249Zm3FB+F7pQfH56uWSdlltCo1IOkZW5oHBzeQo0iX4jtC7o1t9aILMGd9kVekXBP2lfJBEQt9rBh07ebA==} resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==}
engines: {node: '>=v14.18.0'} engines: {node: '>=v14.18.0'}
hasBin: true hasBin: true
dependencies: dependencies:
@ -3555,15 +3620,15 @@ packages:
- terser - terser
dev: true dev: true
/vite-plugin-node-polyfills@0.11.2(vite@4.4.9): /vite-plugin-node-polyfills@0.15.0(vite@4.4.9):
resolution: {integrity: sha512-KaMZ5Pgi5dT7Br21upTWNgkgyBPBBGHl9gQcv6fPfUa73v10mRgi88Rh7aLauvmdyqsLBmhJmRBbI9dmbVG9sA==} resolution: {integrity: sha512-IF9aTSPV9zebrcC6ezJA3Ym4r4U1C3jKUAnG16Sq7+UPtisNEOcNOAu3p5wcgFFOuuUwAUjQlIeJHMcnSXXemQ==}
peerDependencies: peerDependencies:
vite: ^2.0.0 || ^3.0.0 || ^4.0.0 vite: ^2.0.0 || ^3.0.0 || ^4.0.0
dependencies: dependencies:
'@rollup/plugin-inject': 5.0.3 '@rollup/plugin-inject': 5.0.3
buffer-polyfill: /buffer@6.0.3 buffer-polyfill: /buffer@6.0.3
node-stdlib-browser: 1.2.0 node-stdlib-browser: 1.2.0
process-polyfill: /process@0.11.10 process: 0.11.10
vite: 4.4.9(@types/node@20.4.5) vite: 4.4.9(@types/node@20.4.5)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
@ -3630,14 +3695,14 @@ packages:
dependencies: dependencies:
'@types/node': 20.4.5 '@types/node': 20.4.5
esbuild: 0.18.17 esbuild: 0.18.17
postcss: 8.4.28 postcss: 8.4.31
rollup: 3.27.2 rollup: 3.27.2
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true
/vitest@0.34.2(happy-dom@10.10.4): /vitest@0.34.6(happy-dom@12.9.1):
resolution: {integrity: sha512-WgaIvBbjsSYMq/oiMlXUI7KflELmzM43BEvkdC/8b5CAod4ryAiY2z8uR6Crbi5Pjnu5oOmhKa9sy7uk6paBxQ==} resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==}
engines: {node: '>=v14.18.0'} engines: {node: '>=v14.18.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -3670,17 +3735,17 @@ packages:
'@types/chai': 4.3.5 '@types/chai': 4.3.5
'@types/chai-subset': 1.3.3 '@types/chai-subset': 1.3.3
'@types/node': 20.4.5 '@types/node': 20.4.5
'@vitest/expect': 0.34.2 '@vitest/expect': 0.34.6
'@vitest/runner': 0.34.2 '@vitest/runner': 0.34.6
'@vitest/snapshot': 0.34.2 '@vitest/snapshot': 0.34.6
'@vitest/spy': 0.34.2 '@vitest/spy': 0.34.6
'@vitest/utils': 0.34.2 '@vitest/utils': 0.34.6
acorn: 8.10.0 acorn: 8.10.0
acorn-walk: 8.2.0 acorn-walk: 8.2.0
cac: 6.7.14 cac: 6.7.14
chai: 4.3.7 chai: 4.3.10
debug: 4.3.4 debug: 4.3.4
happy-dom: 10.10.4 happy-dom: 12.9.1
local-pkg: 0.4.3 local-pkg: 0.4.3
magic-string: 0.30.2 magic-string: 0.30.2
pathe: 1.1.1 pathe: 1.1.1
@ -3690,7 +3755,7 @@ packages:
tinybench: 2.5.0 tinybench: 2.5.0
tinypool: 0.7.0 tinypool: 0.7.0
vite: 4.4.9(@types/node@20.4.5) vite: 4.4.9(@types/node@20.4.5)
vite-node: 0.34.2(@types/node@20.4.5) vite-node: 0.34.6(@types/node@20.4.5)
why-is-node-running: 2.2.2 why-is-node-running: 2.2.2
transitivePeerDependencies: transitivePeerDependencies:
- less - less

View File

@ -1,5 +1,5 @@
import React, {FC, useEffect} from "react"; import React, {FC} from "react";
import {Route, Routes, useNavigate} from "react-router-dom"; import {Navigate, Route, Routes} from "react-router-dom";
import Layout from "./components/layout"; import Layout from "./components/layout";
import AppRoutes from "./AppRoutes"; import AppRoutes from "./AppRoutes";
import "./index.css"; import "./index.css";
@ -23,20 +23,14 @@ export const App: FC = () => (
* @param secured Whether or not the page is secured. * @param secured Whether or not the page is secured.
* @constructor The Secured component. * @constructor The Secured component.
*/ */
const Secured: FC<{ secured: boolean } & ChildProps> = ({children, secured}) => { const Secured: FC<{
secured: boolean
} & ChildProps> = ({children, secured}) => {
const player = useAtomValue(thisPlayerAtom); const player = useAtomValue(thisPlayerAtom);
const navigate = useNavigate();
const redirect = secured && player === undefined
useEffect(() => { if (secured && player === undefined) {
if (redirect) { return <Navigate to={"/login"} replace/>
navigate("/login");
}
});
if (!redirect) {
return (
<>{children}</>
)
} }
return <>{children}</>
} }

View File

@ -27,6 +27,10 @@ const AppRoutes = [
{ {
path: "/login", path: "/login",
element: <LoginPage/> element: <LoginPage/>
},
{
path: "*",
element: <p>Page not found</p>
} }
]; ];

View File

@ -33,6 +33,7 @@ type DirectionalPosition = {
type Path = { type Path = {
path?: Position[] | null, path?: Position[] | null,
// TODO replace with DirectionalPosition
end: Position, end: Position,
direction: import("../game/direction").Direction direction: import("../game/direction").Direction
} }

View File

@ -105,17 +105,15 @@ function joinGame(data?: PlayerProps[]): void { // TODO missing data when refres
store.set(playersAtom, playerProps.map(p => new Player(p))); store.set(playersAtom, playerProps.map(p => new Player(p)));
} }
type ReadyData = { allReady: boolean, players: PlayerProps[] } | string; type ReadyData = { allReady: boolean, players: PlayerProps[] };
function ready(data?: ReadyData): void { function ready(data?: ReadyData): void {
if (data && typeof data !== "string") { if (data) {
const players = data.players.map(p => new Player(p)); const players = data.players.map(p => new Player(p));
store.set(playersAtom, players); store.set(playersAtom, players);
if (data.allReady) { if (data.allReady) {
store.set(currentPlayerNameAtom, data.players[0].username); store.set(currentPlayerNameAtom, data.players[0].username);
} }
} else {
console.error("Error:", data);
} }
} }

View File

@ -52,7 +52,8 @@ public abstract class GenericController : ControllerBase
} while (true); } while (true);
var disconnectSegment = Disconnect(); var disconnectSegment = Disconnect();
if (disconnectSegment != null) SendDisconnectMessage((ArraySegment<byte>)disconnectSegment); if (disconnectSegment != null)
SendDisconnectMessage((ArraySegment<byte>)disconnectSegment);
await _webSocketService.Close(WebSocket, result.CloseStatus.Value, result.CloseStatusDescription); await _webSocketService.Close(WebSocket, result.CloseStatus.Value, result.CloseStatusDescription);
} }

View File

@ -11,7 +11,7 @@ public enum State
Disconnected Disconnected
} }
public class Player : IEquatable<Player> public class Player : IEquatable<Player>, ICloneable
{ {
[JsonPropertyName("username")] public required string Username { get; init; } [JsonPropertyName("username")] public required string Username { get; init; }
@ -23,6 +23,12 @@ public class Player : IEquatable<Player>
[JsonPropertyName("state")] public State State { get; set; } = State.WaitingForPlayers; [JsonPropertyName("state")] public State State { get; set; } = State.WaitingForPlayers;
public object Clone() =>
new Player
{
Username = Username, Colour = Colour, PacMan = PacMan, Box = Box, State = State
};
public bool Equals(Player? other) public bool Equals(Player? other)
{ {
if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(null, other)) return false;

View File

@ -4,13 +4,13 @@ using System.Text.RegularExpressions;
namespace pacMan.Utils; namespace pacMan.Utils;
public static class Extensions public static partial class Extensions
{ {
public static string GetString(this byte[] bytes, int length) public static string GetString(this byte[] bytes, int length)
{ {
var s = Encoding.UTF8.GetString(bytes, 0, length); var s = Encoding.UTF8.GetString(bytes, 0, length);
// Removes invalid characters from the string // Removes invalid characters from the string
return Regex.Replace(s, @"\p{C}+", ""); return InvalidCharacters().Replace(s, "");
} }
public static ArraySegment<byte> ToArraySegment(this object obj) public static ArraySegment<byte> ToArraySegment(this object obj)
@ -19,4 +19,7 @@ public static class Extensions
var bytes = Encoding.UTF8.GetBytes(json); var bytes = Encoding.UTF8.GetBytes(json);
return new ArraySegment<byte>(bytes, 0, json.Length); return new ArraySegment<byte>(bytes, 0, json.Length);
} }
}
[GeneratedRegex("\\p{C}+")]
private static partial Regex InvalidCharacters();
}

View File

@ -21,7 +21,7 @@
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="System.ServiceModel.Primitives" Version="6.0.0" /> <PackageReference Include="System.ServiceModel.Primitives" Version="6.1.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>