woolball-client
Version:
Client-side library for Woolball enabling secure browser resource sharing for distributed AI task processing
52 lines (51 loc) • 1.96 kB
JavaScript
;
/**
* Browser compatibility detection module
* Provides utilities to check if the browser is compatible with browser-node
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.initBrowserCompatibility = exports.verifyBrowserCompatibility = exports.isChromeBased = exports.BrowserCompatibilityError = void 0;
/**
* Error thrown when browser is not compatible with browser-node
*/
class BrowserCompatibilityError extends Error {
constructor(message) {
super(message);
this.name = 'BrowserCompatibilityError';
}
}
exports.BrowserCompatibilityError = BrowserCompatibilityError;
/**
* Checks if the current browser is Chrome-based
* @returns {boolean} True if browser is Chrome-based, false otherwise
*/
function isChromeBased() {
if (typeof window === 'undefined' || !window.navigator) {
// Not in a browser environment
return false;
}
const userAgent = window.navigator.userAgent.toLowerCase();
return (userAgent.includes('chrome') ||
userAgent.includes('chromium') ||
userAgent.includes('edge'));
}
exports.isChromeBased = isChromeBased;
/**
* Verifies browser compatibility and throws an error if not compatible
* @throws {BrowserCompatibilityError} If browser is not Chrome-based
*/
function verifyBrowserCompatibility() {
if (!isChromeBased()) {
throw new BrowserCompatibilityError('browser-node is only compatible with Chrome-based browsers. ' +
'Please use Chrome, Chromium, Edge, or another Chrome-based browser.');
}
}
exports.verifyBrowserCompatibility = verifyBrowserCompatibility;
// Automatically verify browser compatibility when the library is loaded
// Skip verification during testing
function initBrowserCompatibility() {
if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'test') {
verifyBrowserCompatibility();
}
}
exports.initBrowserCompatibility = initBrowserCompatibility;