WIP: ECS / Network System #1
			
				
			
		
		
		
	|  | @ -1,13 +1,8 @@ | |||
| import structlog | ||||
| from fastapi import FastAPI | ||||
| from fastapi.templating import Jinja2Templates | ||||
| 
 | ||||
| app = FastAPI( | ||||
|     servers = [ | ||||
|         {"url": "https://kennel.hatecomputers.club", "description": "prod"} | ||||
|     ] | ||||
|     servers=[{"url": "https://kennel.hatecomputers.club", "description": "prod"}] | ||||
| ) | ||||
| 
 | ||||
| logger = structlog.get_logger() | ||||
| 
 | ||||
| templates = Jinja2Templates(directory="templates") | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ from fastapi import ( | |||
|     Cookie, | ||||
|     Depends, | ||||
| ) | ||||
| from fastapi.responses import FileResponse | ||||
| from fastapi.staticfiles import StaticFiles | ||||
| from kennel.engine.systems.system import SystemType | ||||
| from kennel.engine.systems.network import Event, Publishable, EventType | ||||
|  | @ -18,14 +19,15 @@ from kennel.kennel import ( | |||
|     entity_manager, | ||||
|     create_session_controllable_entities, | ||||
| ) | ||||
| from kennel.app import app, templates, logger | ||||
| from kennel.app import app, logger | ||||
| from kennel.kennelcats import KennelCatService | ||||
| from kennel.middleware import logger_middleware | ||||
| from kennel.config import config | ||||
| import asyncio | ||||
| import uuid | ||||
| 
 | ||||
| app.mount("/static", StaticFiles(directory="static"), name="static") | ||||
| app.mount("/static", StaticFiles(directory="static/dist"), name="static") | ||||
| 
 | ||||
| 
 | ||||
| loop = asyncio.get_event_loop() | ||||
| 
 | ||||
|  | @ -46,7 +48,7 @@ async def shutdown_event(): | |||
| 
 | ||||
| @app.get("/") | ||||
| async def index(request: Request): | ||||
|     return templates.TemplateResponse(request=request, name="index.html") | ||||
|     return FileResponse("static/dist/index.html", media_type="text/html") | ||||
| 
 | ||||
| 
 | ||||
| @app.get("/assign") | ||||
|  |  | |||
|  | @ -375,13 +375,13 @@ socks = ["socksio (==1.*)"] | |||
| 
 | ||||
| [[package]] | ||||
| name = "idna" | ||||
| version = "3.7" | ||||
| version = "3.8" | ||||
| description = "Internationalized Domain Names in Applications (IDNA)" | ||||
| optional = false | ||||
| python-versions = ">=3.5" | ||||
| python-versions = ">=3.6" | ||||
| files = [ | ||||
|     {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, | ||||
|     {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, | ||||
|     {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, | ||||
|     {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -395,92 +395,6 @@ files = [ | |||
|     {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "jinja2" | ||||
| version = "3.1.4" | ||||
| description = "A very fast and expressive template engine." | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
| files = [ | ||||
|     {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, | ||||
|     {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, | ||||
| ] | ||||
| 
 | ||||
| [package.dependencies] | ||||
| MarkupSafe = ">=2.0" | ||||
| 
 | ||||
| [package.extras] | ||||
| i18n = ["Babel (>=2.7)"] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "markupsafe" | ||||
| version = "2.1.5" | ||||
| description = "Safely add untrusted strings to HTML/XML markup." | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
| files = [ | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, | ||||
|     {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, | ||||
|     {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "packaging" | ||||
| version = "24.1" | ||||
|  | @ -1116,4 +1030,4 @@ files = [ | |||
| [metadata] | ||||
| lock-version = "2.0" | ||||
| python-versions = "^3.12" | ||||
| content-hash = "70e11aa5a88ef265d9d5adaf31cfc22a8e422ec11d636cfff027d609d4ff57e8" | ||||
| content-hash = "a4fd1897aa81d377f838e0b8fdd273781f385d8a33c12a2c043e30661f67dc21" | ||||
|  |  | |||
|  | @ -11,7 +11,6 @@ python = "^3.12" | |||
| fastapi = "^0.108.0" | ||||
| structlog = "^23.2.0" | ||||
| uvicorn = { extras = ["standard"], version = "^0.25.0" } | ||||
| jinja2 = "^3.1.4" | ||||
| python-dotenv = "^1.0.1" | ||||
| websockets = "^12.0" | ||||
| requests = "^2.32.3" | ||||
|  |  | |||
|  | @ -0,0 +1,24 @@ | |||
| # Logs | ||||
| logs | ||||
| *.log | ||||
| npm-debug.log* | ||||
| yarn-debug.log* | ||||
| yarn-error.log* | ||||
| pnpm-debug.log* | ||||
| lerna-debug.log* | ||||
| 
 | ||||
| node_modules | ||||
| dist | ||||
| dist-ssr | ||||
| *.local | ||||
| 
 | ||||
| # Editor directories and files | ||||
| .vscode/* | ||||
| !.vscode/extensions.json | ||||
| .idea | ||||
| .DS_Store | ||||
| *.suo | ||||
| *.ntvs* | ||||
| *.njsproj | ||||
| *.sln | ||||
| *.sw? | ||||
|  | @ -0,0 +1,15 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|   <meta charset="UTF-8"> | ||||
|   <link rel="icon" href= | ||||
|   "data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🐶</text></svg>"> | ||||
|   <meta name="viewport" content= | ||||
|   "width=device-width, initial-scale=1.0"> | ||||
|   <title>the kennel.</title> | ||||
| </head> | ||||
| <body> | ||||
|   <div id="app"></div> | ||||
|   <script type="module" src="/src/main.ts"></script> | ||||
| </body> | ||||
| </html> | ||||
|  | @ -1,12 +0,0 @@ | |||
| window.onload = () => { | ||||
|   const ws = new WebSocket("/ws"); | ||||
|   ws.onopen = () => { | ||||
|     console.log("connected"); | ||||
|   }; | ||||
|   ws.onmessage = (e) => { | ||||
|     console.log(e); | ||||
|   }; | ||||
|   ws.onclose = (e) => { | ||||
|     console.log("disconnected", e); | ||||
|   }; | ||||
| }; | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -0,0 +1,23 @@ | |||
| { | ||||
|   "name": "kennel", | ||||
|   "private": true, | ||||
|   "version": "0.1.0", | ||||
|   "type": "module", | ||||
|   "scripts": { | ||||
|     "dev": "vite", | ||||
|     "build": "tsc && vite build", | ||||
|     "preview": "vite preview", | ||||
|     "watch": "./node_modules/nodemon/bin/nodemon.js --watch './src/**/*' -e ts,html --exec \"npm run build\"" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@rollup/plugin-inject": "^5.0.5", | ||||
|     "@types/jquery": "^3.5.30", | ||||
|     "nodemon": "^3.1.4", | ||||
|     "typescript": "^5.5.3", | ||||
|     "vite": "^5.4.1", | ||||
|     "vite-plugin-dynamic-base": "^1.1.0" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "jquery": "^3.7.1" | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg> | ||||
| After Width: | Height: | Size: 1.5 KiB | 
|  | @ -0,0 +1,18 @@ | |||
| import $ from "jquery"; | ||||
| 
 | ||||
| $(document).ready(async () => { | ||||
|   await fetch("/assign", { | ||||
|     credentials: "include", | ||||
|   }); | ||||
| 
 | ||||
|   const ws = new WebSocket("/ws"); | ||||
|   ws.onopen = () => { | ||||
|     console.log("connected"); | ||||
|   }; | ||||
|   ws.onmessage = ({ data }) => { | ||||
|     console.log(JSON.parse(data)); | ||||
|   }; | ||||
|   ws.onclose = (e) => { | ||||
|     console.log("disconnected", e); | ||||
|   }; | ||||
| }); | ||||
|  | @ -0,0 +1,3 @@ | |||
| h1 { | ||||
|   color: red; | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| /// <reference types="vite/client" />
 | ||||
|  | @ -0,0 +1,23 @@ | |||
| { | ||||
|   "compilerOptions": { | ||||
|     "target": "ES2020", | ||||
|     "useDefineForClassFields": true, | ||||
|     "module": "ESNext", | ||||
|     "lib": ["ES2020", "DOM", "DOM.Iterable"], | ||||
|     "skipLibCheck": true, | ||||
| 
 | ||||
|     /* Bundler mode */ | ||||
|     "moduleResolution": "bundler", | ||||
|     "allowImportingTsExtensions": true, | ||||
|     "isolatedModules": true, | ||||
|     "moduleDetection": "force", | ||||
|     "noEmit": true, | ||||
| 
 | ||||
|     /* Linting */ | ||||
|     "strict": true, | ||||
|     "noUnusedLocals": true, | ||||
|     "noUnusedParameters": true, | ||||
|     "noFallthroughCasesInSwitch": true | ||||
|   }, | ||||
|   "include": ["src"] | ||||
| } | ||||
|  | @ -0,0 +1,27 @@ | |||
| import { fileURLToPath, URL } from "node:url"; | ||||
| import { dynamicBase } from "vite-plugin-dynamic-base"; | ||||
| import { defineConfig } from "vite"; | ||||
| import inject from "@rollup/plugin-inject"; | ||||
| 
 | ||||
| // https://vitejs.dev/config/
 | ||||
| export default defineConfig({ | ||||
|   plugins: [ | ||||
|     dynamicBase({ | ||||
|       // dynamic public path var string, default window.__dynamic_base__
 | ||||
|       publicPath: "", | ||||
|       // dynamic load resources on index.html, default false. maybe change default true
 | ||||
|       transformIndexHtml: false, | ||||
|     }), | ||||
|     inject({ | ||||
|       // => that should be first under plugins array
 | ||||
|       $: "jquery", | ||||
|       jQuery: "jquery", | ||||
|     }), | ||||
|   ], | ||||
|   resolve: { | ||||
|     alias: { | ||||
|       "@": fileURLToPath(new URL("./src", import.meta.url)), | ||||
|     }, | ||||
|   }, | ||||
|   base: "/static/", | ||||
| }); | ||||
|  | @ -1,14 +0,0 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
|   <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||||
|     <title>Kennel Club</title> | ||||
|     <script src='https://unpkg.com/panzoom@9.4.0/dist/panzoom.min.js'></script> | ||||
|   </head> | ||||
|   <body> | ||||
|     <div id="kennel-window"></div> | ||||
|     <script src="{{ url_for('static', path='/index.js') }}"></script> | ||||
|   </body> | ||||
| </html> | ||||
		Loading…
	
		Reference in New Issue