25 lines
861 B
JavaScript
25 lines
861 B
JavaScript
// Generated, do not edit. sha256:ae316d9b957c83f15f4beedd3c718d48727175efe4b7a269554f9584d612e439
|
|
import { CONFIG } from './config.js';
|
|
|
|
export function originOf(url) {
|
|
try { return new URL(url).origin; } catch { return null; }
|
|
}
|
|
|
|
const NETWORK_ORIGIN = /^(https?|wss?):\/\/[^\s;,'"]+$/;
|
|
const networkOriginOf = (url) => {
|
|
const o = originOf(url);
|
|
return o && NETWORK_ORIGIN.test(o) ? o : null;
|
|
};
|
|
|
|
export function connectSrcOrigins(explorerUrls = []) {
|
|
return [...new Set([CONFIG.PRICE_SOURCES.MEMPOOL_PUBLIC_BASE, ...explorerUrls]
|
|
.map(networkOriginOf).filter(Boolean))];
|
|
}
|
|
|
|
export function originAllowedByCsp(url, eigenOrigin = null, explorerUrls = []) {
|
|
const origin = originOf(url);
|
|
if (!origin) return false;
|
|
if (eigenOrigin && origin === originOf(eigenOrigin)) return true;
|
|
return connectSrcOrigins(explorerUrls).includes(origin);
|
|
}
|