2025-04-02 06:50:39 -04:00

46 lines
1.0 KiB
JavaScript

'use strict';
const assert = require('node:assert');
const { URLSerializer } = require('../fetch/data-url');
const { isValidHeaderName } = require('../fetch/util');
/**
* @see https://url.spec.whatwg.org/#concept-url-equals
* @param {URL} A
* @param {URL} B
* @param {boolean | undefined} excludeFragment
* @returns {boolean}
*/
function urlEquals(A, B, excludeFragment = false) {
const serializedA = URLSerializer(A, excludeFragment);
const serializedB = URLSerializer(B, excludeFragment);
return serializedA === serializedB;
}
/**
* @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262
* @param {string} header
*/
function getFieldValues(header) {
assert(header !== null);
const values = [];
for (let value of header.split(',')) {
value = value.trim();
if (isValidHeaderName(value)) {
values.push(value);
}
}
return values;
}
module.exports = {
urlEquals,
getFieldValues,
};