{"version":3,"sources":["Navbar/logo.svg","Navbar/index.js","Spacer/index.js","Header/index.js","HeaderCenter/index.js","Button/index.js","ButtonGroup/index.js","Content/index.js","Footer/index.js","GetInTouch/logos/discord.svg","GetInTouch/logos/discourse.svg","GetInTouch/logos/github.svg","GetInTouch/index.js","App/index.js","serviceWorker.js","index.js"],"names":["Navbar","className","alt","src","logo","href","Spacer","children","Header","HeaderCenter","Button","primary","ButtonGroup","Content","Footer","GetInTouch","discord","discourse","github","App","secondary","id","autoPlay","loop","muted","playsInline","type","Boolean","window","location","hostname","match","rootElement","document","getElementById","hasChildNodes","ReactDOM","hydrate","StrictMode","render","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console","message"],"mappings":"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","file":"static/js/main.defaf6ea.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logo.596d3326.svg\";","import React from \"react\";\nimport \"./style.css\";\n\nimport logo from \"./logo.svg\";\n\nexport default function Navbar() {\n return (\n \n );\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function Spacer({ children }) {\n return
{children}
;\n}\n","import React from \"react\";\nimport \"./style.css\";\nimport Navbar from \"../Navbar\";\nimport Spacer from \"../Spacer\";\n\nexport default function Header({ children }) {\n return (\n
\n \n \n {children}\n \n
\n );\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function HeaderCenter({ children }) {\n return (\n
\n
{children}
\n
\n );\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function Button({ children, primary }) {\n return (\n \n );\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function ButtonGroup({ children }) {\n return
{children}
;\n}\n","import React from \"react\";\nimport \"./style.css\";\nimport Spacer from \"../Spacer\";\n\nexport default function Content({ children }) {\n return (\n
\n {children}\n
\n );\n}\n","import React from \"react\";\nimport \"./style.css\";\nimport Spacer from \"../Spacer\";\n\nexport default function Footer() {\n return (\n \n );\n}\n","export default __webpack_public_path__ + \"static/media/discord.09c992b5.svg\";","export default __webpack_public_path__ + \"static/media/discourse.388c6ec4.svg\";","export default __webpack_public_path__ + \"static/media/github.255db585.svg\";","import React from \"react\";\nimport \"./style.css\";\nimport Spacer from \"../Spacer\";\n\nimport discord from \"./logos/discord.svg\";\nimport discourse from \"./logos/discourse.svg\";\nimport github from \"./logos/github.svg\";\n\nexport default function GetInTouch() {\n return (\n
\n \n

Get in touch

\n

\n You can reach out to the Wilfred devs and community via multiple\n channels.\n

\n \n
\n
\n );\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nimport Header from \"../Header\";\nimport HeaderCenter from \"../HeaderCenter\";\nimport Button from \"../Button\";\nimport ButtonGroup from \"../ButtonGroup\";\nimport Content from \"../Content\";\nimport Footer from \"../Footer\";\nimport GetInTouch from \"../GetInTouch\";\n\nexport default function App() {\n return (\n
\n
\n \n

Wilfred

\n

\n An advanced Docker-based CLI tool to manage and create game servers.\n

\n \n \n \n \n \n \n \n \n
\n
\n \n

What is Wilfred?

\n

\n Wilfred is a command-line interface for running and managing game\n servers locally. It uses Docker to run game servers in containers,\n which means they are completely separated. Wilfred can run any game\n that can run in Docker.\n

\n\n

Highlights

\n \n\n

Supported games

\n

\n As long as your server can run in Docker, it can probably run using\n Wilfred (after some tinkering). These are the games supported by\n default. You can submit new games to{\" \"}\n \n wilfred-dev/images.\n \n

\n \n

Installation

\n

\n Please refer to the{\" \"}\n \n official documentation\n {\" \"}\n for further installation instructions and documentation.\n

\n

Quickstart

\n

\n Make sure you have Docker installed (see the official documentation\n for more info). The recommended way of installing Wilfred is via{\" \"}\n Homebrew. Once brew is installed,\n Wilfred can easily be installed from the official tap.\n

\n
\n          brew tap wilfred-dev/wilfred\n          brew install wilfred\n        
\n

\n Want the bleeding edge? You can install the latest commit using\n --HEAD (bugs are to be expected, don't use in production\n environments!).\n

\n
\n          brew tap wilfred-dev/wilfred\n          brew install --HEAD wilfred\n        
\n

\n Wilfred can also be installed using pip. You need to use{\" \"}\n Python 3.7 or newer to run Wilfred.\n

\n
\n          pip install wilfred --upgrade\n        
\n

\n Once you got Wilfred installed, run wilfred setup to set\n a path for Wilfred to use to store server files.\n

\n \n \n \n \n

\n To create your first server, use wilfred create. Most\n values have a default value, where you can just press return to use\n them.\n

\n

\n Wilfred will ask you which \"image\" to use. An image is a set of\n configuration files that defines a specific game within Wilfred. These\n images are not to be confused with Docker images, Wilfred images sort\n of wrap around the Docker images. A couple of games are already built\n into Wilfred, but you can also create your own.\n

\n

\n Then, Wilfred will ask you to set any environment variables (if\n available for that image). The environment variables differ from game\n to game and most of them have a default value.\n

\n

\n Once the server is created, you can use wilfred servers{\" \"}\n to list available servers. To start it, use{\" \"}\n \n wilfred start {\"<\"}name{\">\"}\n \n . To attach to the server console, you can use{\" \"}\n \n wilfred console {\"<\"}\n name{\">\"}\n \n . If you want to start the server and attach to the server console in\n a single command, you can use{\" \"}\n \n wilfred start {\"<\"}name{\">\"} --console\n {\" \"}\n (it will start the server and then immediately attach to the server\n console).\n

\n

\n Read more in the{\" \"}\n documentation\n

\n
\n \n
\n );\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App/index.js\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nconst rootElement = document.getElementById(\"root\");\n\n// this is because of https://github.com/stereobooster/react-snap\nif (rootElement.hasChildNodes()) {\n ReactDOM.hydrate(\n \n \n ,\n rootElement\n );\n} else {\n ReactDOM.render(\n \n \n ,\n rootElement\n );\n}\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}