refactor(server side): split index.ts into focused modules - #1
Open
diplexion wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hey deyo i really interesting of ur project cuz i need something like for testing my servers but ngrok is ass 🗡️ so and i decided help u with develop and make this refactoring <3
Result of refactoring
Why
server/src/index.tswas 635 lines and mixed several unrelated concerns:routing, subdomain/host utilities, the binary WS envelope protocol, the
TunnelDOdurable object (the actual tunnel logic), and ~250 lines ofinline HTML templates. This made the core tunnel logic hard to find and
hard to unit-test in isolation from Cloudflare-specific types.
What changed
Pure code move, no behavior change:
types.ts—Env,PendingRequest,ProxyResponsesubdomain.ts— host/subdomain parsing, sanitization, shardingenvelope.ts— binary request/response envelope (de)serializationtunnel-do.ts—TunnelDOdurable object (WS lifecycle, proxying, auth)html/root.ts/html/offline.ts— inline HTML templatesindex.ts— thinfetchhandler / routing only (~60 lines)Testing
npx tsc --noEmitpasses with no errorsnpx wrangler deploy --dry-runbundles successfully and resolves theTunnelDOdurable object binding correctly