gitextract_hy_6v4bz/ ├── .devcontainer/ │ ├── Dockerfile │ └── devcontainer.json ├── .empty_module.js ├── .eslintignore ├── .eslintrc ├── .github/ │ ├── FUNDING.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── npm-publish.yml │ └── test.yml ├── .gitignore ├── .lintstagedrc ├── .prettierignore ├── .prettierrc ├── AUTHORS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── babel.config.js ├── benchmark/ │ └── index.js ├── docs/ │ ├── CNAME │ ├── documentation/ │ │ ├── .nojekyll │ │ ├── CHANGELOG.md │ │ ├── api/ │ │ │ ├── Client.md │ │ │ ├── Game.md │ │ │ ├── Lobby.md │ │ │ └── Server.md │ │ ├── chat.md │ │ ├── concepts.md │ │ ├── debugging.md │ │ ├── deployment.md │ │ ├── events.md │ │ ├── immutability.md │ │ ├── index.html │ │ ├── multiplayer.md │ │ ├── notable_projects.md │ │ ├── phases.md │ │ ├── plugins.md │ │ ├── random.md │ │ ├── secret-state.md │ │ ├── sidebar.md │ │ ├── snippets/ │ │ │ ├── example-1/ │ │ │ │ └── index.html │ │ │ ├── example-1.c952ec6d.js │ │ │ ├── example-2/ │ │ │ │ └── index.html │ │ │ ├── example-2.e4675089.js │ │ │ ├── example-3/ │ │ │ │ └── index.html │ │ │ ├── example-3.1fa4f5db.js │ │ │ ├── multiplayer/ │ │ │ │ └── index.html │ │ │ ├── multiplayer.54b541fd.js │ │ │ ├── phases-1/ │ │ │ │ └── index.html │ │ │ ├── phases-1.0d4500d6.js │ │ │ ├── phases-1.490dcd4c.css │ │ │ ├── phases-2/ │ │ │ │ └── index.html │ │ │ ├── phases-2.a59f38ac.js │ │ │ ├── phases-2.fa21cb61.css │ │ │ ├── stages-1/ │ │ │ │ └── index.html │ │ │ ├── stages-1.1524ef02.js │ │ │ └── stages-1.bcf7ab84.css │ │ ├── stages.md │ │ ├── storage.md │ │ ├── testing.md │ │ ├── theme.css │ │ ├── turn-order.md │ │ ├── tutorial.md │ │ ├── typescript.md │ │ └── undo.md │ ├── index.css │ └── index.html ├── examples/ │ ├── react-native/ │ │ ├── .gitignore │ │ ├── .watchmanconfig │ │ ├── App.js │ │ ├── README.md │ │ ├── app.json │ │ ├── board.js │ │ ├── game.js │ │ ├── package.json │ │ └── rn-cli.config.js │ ├── react-web/ │ │ ├── .gitignore │ │ ├── package.json │ │ ├── server.js │ │ └── src/ │ │ ├── app.css │ │ ├── app.js │ │ ├── app.test.js │ │ ├── chess/ │ │ │ ├── board.js │ │ │ ├── chat.js │ │ │ ├── checkerboard.js │ │ │ ├── checkerboard.test.js │ │ │ ├── game.js │ │ │ ├── grid.js │ │ │ ├── index.js │ │ │ ├── multiplayer.js │ │ │ ├── pieces/ │ │ │ │ ├── CREDITS │ │ │ │ ├── bishop.js │ │ │ │ ├── king.js │ │ │ │ ├── knight.js │ │ │ │ ├── pawn.js │ │ │ │ ├── queen.js │ │ │ │ └── rook.js │ │ │ ├── singleplayer.js │ │ │ └── token.js │ │ ├── index.html │ │ ├── index.js │ │ ├── li-navlink.js │ │ ├── lobby/ │ │ │ ├── index.js │ │ │ ├── lobby.css │ │ │ ├── lobby.js │ │ │ └── routes.js │ │ ├── random/ │ │ │ ├── board.js │ │ │ ├── game.js │ │ │ └── index.js │ │ ├── redacted-move/ │ │ │ ├── board.css │ │ │ ├── board.js │ │ │ ├── game.js │ │ │ ├── index.js │ │ │ └── multiview.js │ │ ├── routes.js │ │ ├── secret-state/ │ │ │ ├── board.css │ │ │ ├── board.js │ │ │ ├── game.js │ │ │ ├── index.js │ │ │ └── multiview.js │ │ ├── simulator/ │ │ │ ├── example-all-once.js │ │ │ ├── example-all.js │ │ │ ├── example-others-once.js │ │ │ ├── example-others.js │ │ │ ├── index.js │ │ │ ├── simulator.css │ │ │ └── simulator.js │ │ ├── threejs/ │ │ │ ├── index.js │ │ │ └── main.css │ │ ├── tic-tac-toe/ │ │ │ ├── advanced-ai.js │ │ │ ├── authenticated.js │ │ │ ├── board.css │ │ │ ├── board.js │ │ │ ├── bots.js │ │ │ ├── game.js │ │ │ ├── index.js │ │ │ ├── multiplayer.js │ │ │ ├── singleplayer.js │ │ │ └── spectator.js │ │ └── undo/ │ │ ├── board.js │ │ ├── game.js │ │ └── index.js │ └── snippets/ │ ├── .gitignore │ ├── README.md │ ├── install.sh │ ├── package.json │ └── src/ │ ├── example-1/ │ │ ├── index.html │ │ └── index.js │ ├── example-2/ │ │ ├── index.html │ │ └── index.js │ ├── example-3/ │ │ ├── index.html │ │ └── index.js │ ├── multiplayer/ │ │ ├── index.html │ │ └── index.js │ ├── phases-1/ │ │ ├── App.svelte │ │ ├── Player.svelte │ │ ├── game.js │ │ ├── index.html │ │ └── index.js │ ├── phases-2/ │ │ ├── App.svelte │ │ ├── Player.svelte │ │ ├── game.js │ │ ├── index.html │ │ └── index.js │ └── stages-1/ │ ├── App.svelte │ ├── Player.svelte │ ├── game.js │ ├── index.html │ └── index.js ├── integration/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ └── index.html │ └── src/ │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── board.css │ ├── board.js │ ├── game.js │ ├── index.css │ └── index.js ├── package.json ├── packages/ │ ├── ai.ts │ ├── client.ts │ ├── core.ts │ ├── debug.ts │ ├── internal.ts │ ├── main.js │ ├── master.ts │ ├── multiplayer.ts │ ├── plugins.ts │ ├── react-native.ts │ ├── react.ts │ ├── server.ts │ └── testing.ts ├── python/ │ ├── .gitignore │ ├── boardgameio.py │ ├── examples/ │ │ └── tic-tac-toe/ │ │ └── tictactoebot.py │ └── test_boardgameio.py ├── roadmap.md ├── rollup.config.js ├── scripts/ │ ├── changelog.js │ ├── clean.js │ ├── dev-client.js │ ├── install-examples.js │ ├── integration.js │ └── proxy-dirs.js ├── src/ │ ├── ai/ │ │ ├── ai.test.ts │ │ ├── ai.ts │ │ ├── bot.ts │ │ ├── mcts-bot.ts │ │ └── random-bot.ts │ ├── client/ │ │ ├── client.test.ts │ │ ├── client.ts │ │ ├── debug/ │ │ │ ├── Debug.svelte │ │ │ ├── Menu.svelte │ │ │ ├── ai/ │ │ │ │ ├── AI.svelte │ │ │ │ └── Options.svelte │ │ │ ├── info/ │ │ │ │ ├── Info.svelte │ │ │ │ └── Item.svelte │ │ │ ├── log/ │ │ │ │ ├── Log.svelte │ │ │ │ ├── LogEvent.svelte │ │ │ │ ├── LogMetadata.svelte │ │ │ │ ├── PhaseMarker.svelte │ │ │ │ └── TurnMarker.svelte │ │ │ ├── main/ │ │ │ │ ├── ClientSwitcher.svelte │ │ │ │ ├── Controls.svelte │ │ │ │ ├── Hotkey.svelte │ │ │ │ ├── InteractiveFunction.svelte │ │ │ │ ├── Main.svelte │ │ │ │ ├── Move.svelte │ │ │ │ └── PlayerInfo.svelte │ │ │ ├── mcts/ │ │ │ │ ├── Action.svelte │ │ │ │ ├── MCTS.svelte │ │ │ │ └── Table.svelte │ │ │ ├── tests/ │ │ │ │ ├── JSONTree.mock.svelte │ │ │ │ └── debug.test.ts │ │ │ └── utils/ │ │ │ ├── shortcuts.js │ │ │ └── shortcuts.test.js │ │ ├── manager.ts │ │ ├── react-native.js │ │ ├── react-native.test.js │ │ ├── react.ssr.test.tsx │ │ ├── react.test.tsx │ │ ├── react.tsx │ │ └── transport/ │ │ ├── dummy.ts │ │ ├── local.test.ts │ │ ├── local.ts │ │ ├── socketio.test.ts │ │ ├── socketio.ts │ │ ├── transport.test.ts │ │ └── transport.ts │ ├── core/ │ │ ├── action-creators.ts │ │ ├── action-types.ts │ │ ├── backwards-compatibility.ts │ │ ├── constants.ts │ │ ├── errors.ts │ │ ├── flow.test.ts │ │ ├── flow.ts │ │ ├── game-methods.ts │ │ ├── game.test.ts │ │ ├── game.ts │ │ ├── initialize.ts │ │ ├── logger.test.js │ │ ├── logger.ts │ │ ├── player-view.test.ts │ │ ├── player-view.ts │ │ ├── reducer.test.ts │ │ ├── reducer.ts │ │ ├── turn-order.test.ts │ │ └── turn-order.ts │ ├── lobby/ │ │ ├── client.test.ts │ │ ├── client.ts │ │ ├── connection.test.ts │ │ ├── connection.ts │ │ ├── create-match-form.tsx │ │ ├── login-form.tsx │ │ ├── match-instance.tsx │ │ ├── react.ssr.test.tsx │ │ ├── react.test.tsx │ │ └── react.tsx │ ├── master/ │ │ ├── filter-player-view.test.ts │ │ ├── filter-player-view.ts │ │ ├── master.test.ts │ │ └── master.ts │ ├── plugins/ │ │ ├── events/ │ │ │ ├── events.test.ts │ │ │ └── events.ts │ │ ├── main.test.ts │ │ ├── main.ts │ │ ├── plugin-events.ts │ │ ├── plugin-immer.test.ts │ │ ├── plugin-immer.ts │ │ ├── plugin-log.test.ts │ │ ├── plugin-log.ts │ │ ├── plugin-player.test.ts │ │ ├── plugin-player.ts │ │ ├── plugin-random.ts │ │ ├── plugin-serializable.test.ts │ │ ├── plugin-serializable.ts │ │ └── random/ │ │ ├── random.alea.ts │ │ ├── random.test.ts │ │ └── random.ts │ ├── server/ │ │ ├── api.test.ts │ │ ├── api.ts │ │ ├── auth.test.ts │ │ ├── auth.ts │ │ ├── cors.test.ts │ │ ├── cors.ts │ │ ├── db/ │ │ │ ├── base.ts │ │ │ ├── flatfile.test.ts │ │ │ ├── flatfile.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── inmemory.test.ts │ │ │ ├── inmemory.ts │ │ │ ├── localstorage.test.ts │ │ │ └── localstorage.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ ├── transport/ │ │ │ ├── pubsub/ │ │ │ │ ├── generic-pub-sub.ts │ │ │ │ ├── in-memory-pub-sub.test.ts │ │ │ │ └── in-memory-pub-sub.ts │ │ │ ├── socketio-simultaneous.test.ts │ │ │ ├── socketio.test.ts │ │ │ └── socketio.ts │ │ └── util.ts │ ├── testing/ │ │ ├── mock-random.test.ts │ │ └── mock-random.ts │ └── types.ts ├── subpackages.js └── tsconfig.json