46 lines
1.0 KiB
JavaScript
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,
|
|
};
|