Skip to content

Commit 977ad73

Browse files
committed
refactor: use fromInnerResponse
1 parent e2652b7 commit 977ad73

3 files changed

Lines changed: 32 additions & 52 deletions

File tree

lib/cache/cache.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
const { kConstruct } = require('./symbols')
44
const { urlEquals, fieldValues: getFieldValues } = require('./util')
55
const { kEnumerableProperty, isDisturbed } = require('../core/util')
6-
const { kHeadersList } = require('../core/symbols')
76
const { webidl } = require('../fetch/webidl')
8-
const { Response, cloneResponse } = require('../fetch/response')
7+
const { Response, cloneResponse, fromInnerResponse } = require('../fetch/response')
98
const { Request, fromInnerRequest } = require('../fetch/request')
10-
const { Headers } = require('../fetch/headers')
11-
const { kState, kHeaders, kGuard } = require('../fetch/symbols')
9+
const { kState } = require('../fetch/symbols')
1210
const { fetching } = require('../fetch/index')
1311
const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')
1412
const assert = require('assert')
@@ -783,11 +781,7 @@ class Cache {
783781
// 5.5.2
784782
for (const response of responses) {
785783
// 5.5.2.1
786-
const responseObject = new Response(kConstruct)
787-
responseObject[kState] = response
788-
responseObject[kHeaders] = new Headers(kConstruct)
789-
responseObject[kHeaders][kHeadersList] = response.headersList
790-
responseObject[kHeaders][kGuard] = 'immutable'
784+
const responseObject = fromInnerResponse(response, 'immutable')
791785

792786
responseList.push(responseObject.clone())
793787

lib/fetch/index.js

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
'use strict'
44

55
const {
6-
Response,
76
makeNetworkError,
87
makeAppropriateNetworkError,
98
filterResponse,
10-
makeResponse
9+
makeResponse,
10+
fromInnerResponse
1111
} = require('./response')
12-
const { Headers, HeadersList } = require('./headers')
12+
const { HeadersList } = require('./headers')
1313
const { Request, makeRequest } = require('./request')
1414
const zlib = require('zlib')
1515
const {
@@ -45,7 +45,7 @@ const {
4545
simpleRangeHeaderValue,
4646
buildContentRange
4747
} = require('./util')
48-
const { kState, kHeaders, kGuard, kRealm } = require('./symbols')
48+
const { kState } = require('./symbols')
4949
const assert = require('assert')
5050
const { safelyExtractBody, extractBody } = require('./body')
5151
const {
@@ -55,7 +55,6 @@ const {
5555
requestBodyHeader,
5656
subresourceSet
5757
} = require('./constants')
58-
const { kHeadersList, kConstruct } = require('../core/symbols')
5958
const EE = require('events')
6059
const { Readable, pipeline } = require('stream')
6160
const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor, bufferToLowerCasedHeaderName } = require('../core/util')
@@ -232,13 +231,7 @@ function fetch (input, init = undefined) {
232231

233232
// 4. Set responseObject to the result of creating a Response object,
234233
// given response, "immutable", and relevantRealm.
235-
responseObject = new Response(kConstruct)
236-
responseObject[kState] = response
237-
responseObject[kRealm] = relevantRealm
238-
responseObject[kHeaders] = new Headers(kConstruct)
239-
responseObject[kHeaders][kHeadersList] = response.headersList
240-
responseObject[kHeaders][kGuard] = 'immutable'
241-
responseObject[kHeaders][kRealm] = relevantRealm
234+
responseObject = fromInnerResponse(response, 'immutable', relevantRealm)
242235

243236
// 5. Resolve p with responseObject.
244237
p.resolve(responseObject)

lib/fetch/response.js

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,8 @@ class Response {
3838
// The static error() method steps are to return the result of creating a
3939
// Response object, given a new network error, "immutable", and this’s
4040
// relevant Realm.
41-
const responseObject = new Response(kConstruct)
42-
responseObject[kState] = makeNetworkError()
43-
responseObject[kRealm] = relevantRealm
44-
responseObject[kHeaders] = new Headers(kConstruct)
45-
responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList
46-
responseObject[kHeaders][kGuard] = 'immutable'
47-
responseObject[kHeaders][kRealm] = relevantRealm
41+
const responseObject = fromInnerResponse(makeNetworkError(), 'immutable', relevantRealm)
42+
4843
return responseObject
4944
}
5045

@@ -67,13 +62,7 @@ class Response {
6762
// 3. Let responseObject be the result of creating a Response object, given a new response,
6863
// "response", and this’s relevant Realm.
6964
const relevantRealm = { settingsObject: {} }
70-
const responseObject = new Response(kConstruct)
71-
responseObject[kState] = makeResponse({})
72-
responseObject[kRealm] = relevantRealm
73-
responseObject[kHeaders] = new Headers(kConstruct)
74-
responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList
75-
responseObject[kHeaders][kGuard] = 'response'
76-
responseObject[kHeaders][kRealm] = relevantRealm
65+
const responseObject = fromInnerResponse(makeResponse({}), 'response', relevantRealm)
7766

7867
// 4. Perform initialize a response given responseObject, init, and (body, "application/json").
7968
initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })
@@ -111,13 +100,7 @@ class Response {
111100

112101
// 4. Let responseObject be the result of creating a Response object,
113102
// given a new response, "immutable", and this’s relevant Realm.
114-
const responseObject = new Response(kConstruct)
115-
responseObject[kState] = makeResponse({})
116-
responseObject[kRealm] = relevantRealm
117-
responseObject[kHeaders] = new Headers(kConstruct)
118-
responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList
119-
responseObject[kHeaders][kGuard] = 'immutable'
120-
responseObject[kHeaders][kRealm] = relevantRealm
103+
const responseObject = fromInnerResponse(makeResponse({}), 'immutable', relevantRealm)
121104

122105
// 5. Set responseObject’s response’s status to status.
123106
responseObject[kState].status = status
@@ -269,15 +252,7 @@ class Response {
269252

270253
// 3. Return the result of creating a Response object, given
271254
// clonedResponse, this’s headers’s guard, and this’s relevant Realm.
272-
const clonedResponseObject = new Response(kConstruct)
273-
clonedResponseObject[kState] = clonedResponse
274-
clonedResponseObject[kRealm] = this[kRealm]
275-
clonedResponseObject[kHeaders] = new Headers(kConstruct)
276-
clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList
277-
clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]
278-
clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]
279-
280-
return clonedResponseObject
255+
return fromInnerResponse(clonedResponse, this[kHeaders][kRealm], this[kRealm])
281256
}
282257
}
283258

@@ -512,6 +487,23 @@ function initializeResponse (response, init, body) {
512487
}
513488
}
514489

490+
/**
491+
* @param {any} innerResponse
492+
* @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard
493+
* @param {any} [realm]
494+
* @returns {Response}
495+
*/
496+
function fromInnerResponse (innerResponse, guard, realm) {
497+
const response = new Response(kConstruct)
498+
response[kState] = innerResponse
499+
response[kRealm] = realm
500+
response[kHeaders] = new Headers(kConstruct)
501+
response[kHeaders][kHeadersList] = innerResponse.headersList
502+
response[kHeaders][kGuard] = guard
503+
response[kHeaders][kRealm] = realm
504+
return response
505+
}
506+
515507
webidl.converters.ReadableStream = webidl.interfaceConverter(
516508
ReadableStream
517509
)
@@ -588,5 +580,6 @@ module.exports = {
588580
makeAppropriateNetworkError,
589581
filterResponse,
590582
Response,
591-
cloneResponse
583+
cloneResponse,
584+
fromInnerResponse
592585
}

0 commit comments

Comments
 (0)