refactor(auth-mw): reduce cognitive complexity in auth-express-middleware index#85
refactor(auth-mw): reduce cognitive complexity in auth-express-middleware index#85
Conversation
…ware index Extract private methods (sendGeneralMessage, sendNonGeneralMessage, handleWellKnownAuth, handleGeneralMessage, handleUnauthenticated, setupAuthenticatedResponse, hijackResponse, scheduleNextOrCertificateWait, registerCertificateListener, handleCertificatesForPeer) to break up five S3776 violations (complexity 17–32 → well below 15 each). Move writeBodyToWriter, writeUrlToWriter, writeRequestHeadersToWriter, writeHeaderPair, convertValueToArray, getLogMethod, isLogLevelEnabled into authMiddlewareHelpers.ts. Hoist LOG_LEVELS and LOG_METHOD_MAP to module-level constants. Deduplicate header serialization by routing writeRequestHeadersToWriter through writeHeaderPair. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…atch alerts - Validate header/query parameters are strings before use (CodeQL: js/type-confusion-through-parameter-tampering) - Constrain log method dispatch to a closed set (CodeQL: js/unvalidated-dynamic-method-call)
Express returns header values as string|string[]|undefined. Direct equality comparison silently fails for repeated headers (CodeQL: js/type-confusion-through-parameter-tampering). Normalize via local helper to preserve first-value semantics.
Prior fix used a closure helper which CodeQL couldn't see through. Inline narrowing makes the dataflow explicit at the comparison site, clearing js/type-confusion-through-parameter-tampering alerts.
CodeQL noteTwo critical CodeQL alerts (#103, #106) for
The remaining alerts appear to be false positives of the CodeQL query: Suggest: triage the two alerts as false-positive at merge time, or merge as-is and have CodeQL re-evaluate against |
|


Summary
Wave 2 cognitive complexity refactor — clear 5 S3776 violations in
packages/middleware/auth-express-middleware/src/index.ts.Approach
send()(complexity 18→2): ExtractedsendGeneralMessageandsendNonGeneralMessageprivate methods; extractedreadResponseHeadershelperhandleIncomingRequest()(complexity 32→5): ExtractedhandleWellKnownAuth,handleGeneralMessage, andhandleUnauthenticatedprivate methodshandleWellKnownAuthinner callbacks (complexity 23→split): ExtractedregisterCertificateListenerandhandleCertificatesForPeerprivate methodssetupAuthenticatedResponse,hijackResponse, andscheduleNextOrCertificateWaitprivate methodswriteBodyToWriter(complexity 28→7): Moved toauthMiddlewareHelpers.tswith early-return pattern replacing nested if-else chainbuildAuthMessageFromRequest(complexity 17→5): ExtractedwriteUrlToWriterandwriteRequestHeadersToWriterinto helpers; replaced dual debug-log calls withmakeDebugLoggerclosuresrc/authMiddlewareHelpers.ts: HousesisLogLevelEnabled,getLogMethod,writeBodyToWriter,writeUrlToWriter,writeRequestHeadersToWriter,writeHeaderPair,convertValueToArray,makeDebugLogger;LOG_LEVELSandLOG_METHOD_MAPhoisted to module-level constants (efficiency);writeRequestHeadersToWriterdeduped to usewriteHeaderPairVerification
pnpm --filter @bsv/auth-express-middleware run build✅pnpm --filter @bsv/auth-express-middleware run test✅Refs #38 #44