@sentry/core
Version:
Base implementation for all Sentry JavaScript SDKs
45 lines (42 loc) • 2.1 kB
JavaScript
import { getClient } from '../currentScopes.js';
import { getServeTunnelForwarder, normalizeTunnelBasePath, setServedTunnel, getTunnelIgnoreSpanFilters } from './tunnel.js';
let managedTunnelDefaults;
const tunnelForwarders = /* @__PURE__ */ new WeakMap();
const installedSpanFilters = /* @__PURE__ */ new WeakMap();
function setManagedTunnelDefaults(defaults) {
managedTunnelDefaults = {
...managedTunnelDefaults,
...defaults.tunnel && { tunnel: defaults.tunnel, forward: defaults.forward },
...defaults.basePath !== void 0 && { basePath: defaults.basePath }
};
applyManagedTunnelDefaults(getClient());
}
function enableManagedTunnel(client, tunnelOptions, forward) {
client.getOptions()._managedTunnel = { ...tunnelOptions };
tunnelForwarders.set(client, forward);
applyManagedTunnelDefaults(client);
}
function applyManagedTunnelDefaults(client) {
const options = client?.getOptions();
const tunnelOptions = options?._managedTunnel ?? managedTunnelDefaults?.tunnel;
const forward = client && (tunnelForwarders.get(client) ?? getServeTunnelForwarder(client) ?? managedTunnelDefaults?.forward);
if (!client || !options || !tunnelOptions || !forward) {
return;
}
const basePath = normalizeTunnelBasePath(managedTunnelDefaults?.basePath);
const resolved = tunnelOptions.basePath === void 0 && !tunnelOptions.path && basePath ? { ...tunnelOptions, basePath } : tunnelOptions;
options._managedTunnel = resolved;
const { paths } = setServedTunnel(client, resolved, forward);
const previousFilters = installedSpanFilters.get(client) ?? [];
const spanFilters = getTunnelIgnoreSpanFilters(resolved, paths);
options.ignoreSpans = [
...(options.ignoreSpans ?? []).filter((filter) => !previousFilters.includes(filter)),
...spanFilters
];
installedSpanFilters.set(client, spanFilters);
}
function _INTERNAL_resetManagedTunnelDefaults() {
managedTunnelDefaults = void 0;
}
export { _INTERNAL_resetManagedTunnelDefaults, applyManagedTunnelDefaults, enableManagedTunnel, setManagedTunnelDefaults };
//# sourceMappingURL=managedTunnelDefaults.js.map