MCPcopy Create free account
hub / github.com/nodejs/node / #requestMatchesCachedItem

Method #requestMatchesCachedItem

deps/undici/src/lib/web/cache/cache.js:699–744  ·  view source on GitHub ↗

* @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm * @param {any} requestQuery * @param {any} request * @param {any | null} response * @param {import('../../../types/cache').CacheQueryOptions | undefined} options * @returns {boolean}

(requestQuery, request, response = null, options)

Source from the content-addressed store, hash-verified

697 * @returns {boolean}
698 */
699 #requestMatchesCachedItem (requestQuery, request, response = null, options) {
700 // if (options?.ignoreMethod === false && request.method === 'GET') {
701 // return false
702 // }
703
704 const queryURL = new URL(requestQuery.url)
705
706 const cachedURL = new URL(request.url)
707
708 if (options?.ignoreSearch) {
709 cachedURL.search = ''
710
711 queryURL.search = ''
712 }
713
714 if (!urlEquals(queryURL, cachedURL, true)) {
715 return false
716 }
717
718 if (
719 response == null ||
720 options?.ignoreVary ||
721 !response.headersList.contains('vary')
722 ) {
723 return true
724 }
725
726 const fieldValues = getFieldValues(response.headersList.get('vary'))
727
728 for (const fieldValue of fieldValues) {
729 if (fieldValue === '*') {
730 return false
731 }
732
733 const requestValue = request.headersList.get(fieldValue)
734 const queryValue = requestQuery.headersList.get(fieldValue)
735
736 // If one has the header and the other doesn't, or one has
737 // a different value than the other, return false
738 if (requestValue !== queryValue) {
739 return false
740 }
741 }
742
743 return true
744 }
745
746 #internalMatchAll (request, options, maxResponses = Infinity) {
747 // 1.

Callers 1

#queryCacheMethod · 0.95

Calls 4

urlEqualsFunction · 0.85
getFieldValuesFunction · 0.85
getMethod · 0.65
containsMethod · 0.45

Tested by

no test coverage detected