util.js 1020 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use strict'
  2. const assert = require('node:assert')
  3. const { URLSerializer } = require('../fetch/data-url')
  4. const { isValidHeaderName } = require('../fetch/util')
  5. /**
  6. * @see https://url.spec.whatwg.org/#concept-url-equals
  7. * @param {URL} A
  8. * @param {URL} B
  9. * @param {boolean | undefined} excludeFragment
  10. * @returns {boolean}
  11. */
  12. function urlEquals (A, B, excludeFragment = false) {
  13. const serializedA = URLSerializer(A, excludeFragment)
  14. const serializedB = URLSerializer(B, excludeFragment)
  15. return serializedA === serializedB
  16. }
  17. /**
  18. * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262
  19. * @param {string} header
  20. */
  21. function getFieldValues (header) {
  22. assert(header !== null)
  23. const values = []
  24. for (let value of header.split(',')) {
  25. value = value.trim()
  26. if (isValidHeaderName(value)) {
  27. values.push(value)
  28. }
  29. }
  30. return values
  31. }
  32. module.exports = {
  33. urlEquals,
  34. getFieldValues
  35. }