@sentry/utils
Version:
Utilities for all Sentry JavaScript SDKs
30 lines (24 loc) • 1.15 kB
JavaScript
import { getGlobalObject } from '../worldwide.js';
// Based on https://github.com/angular/angular.js/pull/13945/files
// eslint-disable-next-line deprecation/deprecation
const WINDOW = getGlobalObject();
/**
* Tells whether current environment supports History API
* {@link supportsHistory}.
*
* @returns Answer to the given question.
*/
function supportsHistory() {
// NOTE: in Chrome App environment, touching history.pushState, *even inside
// a try/catch block*, will cause Chrome to output an error to console.error
// borrowed from: https://github.com/angular/angular.js/pull/13945/files
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const chrome = (WINDOW ).chrome;
const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;
return !isChromePackagedApp && hasHistoryApi;
}
export { supportsHistory };
//# sourceMappingURL=supportsHistory.js.map