From 756b6b8b0ec4abbce3a938e083a5f94f2fecbc68 Mon Sep 17 00:00:00 2001 From: Kukhyeon Heo Date: Fri, 30 Oct 2020 04:11:20 +0900 Subject: [PATCH] fix: "cannot access variable before initialization" errors in route2 (#8978) Co-authored-by: Jennifer Shehane --- .../net-stubbing/events/request-received.ts | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/packages/driver/src/cy/net-stubbing/events/request-received.ts b/packages/driver/src/cy/net-stubbing/events/request-received.ts index 827b4210da..33ea3b201a 100644 --- a/packages/driver/src/cy/net-stubbing/events/request-received.ts +++ b/packages/driver/src/cy/net-stubbing/events/request-received.ts @@ -47,50 +47,12 @@ export const onRequestReceived: HandlerFn = const route = getRoute(frame.routeHandlerId) const { req, requestId, routeHandlerId } = frame - const sendContinueFrame = () => { - if (continueSent) { - throw new Error('sendContinueFrame called twice in handler') - } - - continueSent = true - - if (request) { - request.state = 'Intercepted' - } - - if (continueFrame) { - // copy changeable attributes of userReq to req in frame - // @ts-ignore - continueFrame.req = { - ..._.pick(userReq, SERIALIZABLE_REQ_PROPS), - } - - _.merge(request.request, continueFrame.req) - - emitNetEvent('http:request:continue', continueFrame) - } - } - - if (!route) { - return sendContinueFrame() - } - const request: Partial = { id: requestId, request: req, state: 'Received', } - request.log = getRequestLog(route, request as Omit) - - // TODO: this misnomer is a holdover from XHR, should be numRequests - route.log.set('numResponses', (route.log.get('numResponses') || 0) + 1) - route.requests[requestId] = request as Request - - if (frame.notificationOnly) { - return - } - const continueFrame: Partial = { routeHandlerId, requestId, @@ -98,9 +60,6 @@ export const onRequestReceived: HandlerFn = let resolved = false let replyCalled = false - let continueSent = false - - route.hitCount++ const userReq: CyHttpMessages.IncomingHttpRequest = { ...req, @@ -154,6 +113,48 @@ export const onRequestReceived: HandlerFn = }, } + let continueSent = false + + const sendContinueFrame = () => { + if (continueSent) { + throw new Error('sendContinueFrame called twice in handler') + } + + continueSent = true + + if (request) { + request.state = 'Intercepted' + } + + if (continueFrame) { + // copy changeable attributes of userReq to req in frame + // @ts-ignore + continueFrame.req = { + ..._.pick(userReq, SERIALIZABLE_REQ_PROPS), + } + + _.merge(request.request, continueFrame.req) + + emitNetEvent('http:request:continue', continueFrame) + } + } + + if (!route) { + return sendContinueFrame() + } + + request.log = getRequestLog(route, request as Omit) + + // TODO: this misnomer is a holdover from XHR, should be numRequests + route.log.set('numResponses', (route.log.get('numResponses') || 0) + 1) + route.requests[requestId] = request as Request + + if (frame.notificationOnly) { + return + } + + route.hitCount++ + if (!_.isFunction(route.handler)) { return sendContinueFrame() }