1"""Local dev server for dist/ that serves extensionless routes like Cloudflare does.2SPDX-License-Identifier: AGPL-3.0-or-later3"""4import sys, http.server, functools5from pathlib import Path6root = Path(__file__).resolve().parent.parent / 'dist'7class Handler(http.server.SimpleHTTPRequestHandler):8 def translate_path(self, path):9 p = super().translate_path(path)10 q = Path(p)11 if not q.exists() and q.with_suffix('.html').exists(): return str(q.with_suffix('.html'))12 return p13 def guess_type(self, path):14 if path.endswith('.mjs'): return 'text/javascript'15 if path.endswith('.wasm'): return 'application/wasm'16 if path.endswith('.webmanifest'): return 'application/manifest+json'17 return super().guess_type(path)18port = int(sys.argv[1]) if len(sys.argv) > 1 else 876519http.server.ThreadingHTTPServer(('127.0.0.1', port), functools.partial(Handler, directory=str(root))).serve_forever()