UNPKG

@microblink/blinkid-in-browser-sdk

Version:

A simple ID scanning library for WebAssembly-enabled browsers.

67 lines (62 loc) 2.01 kB
/** * Copyright (c) Microblink Ltd. All rights reserved. */ /** * Checks if browser is supported by the SDK. The minimum requirements for the browser is * the support for WebAssembly. If your browser does not support executing WebAssembly, * this function will return `false`. */ export function isBrowserSupported(): boolean { // based on https://stackoverflow.com/a/47880734 try { if ( typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function" ) { const module = new WebAssembly.Module( Uint8Array.of( 0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00 ) ); if ( module instanceof WebAssembly.Module ) return new WebAssembly.Instance( module ) instanceof WebAssembly.Instance; } } catch ( ignored ) { return false; } return false; } /** * Check if current browser is in-app / embedded. * Detects Instagram, Facebook, LinkedIn, Twitter, WeChat, Whatsapp, and Tiktok. * @returns Boolean whether the browser is in-app or not */ export function isInAppBrowser(): boolean { const inAppRegex = /(instagram|fbav|linkedinapp|twitter|micromessenger|whatsapp|tiktok)[/\s]?([\w.]*)/i; const userAgent = navigator.userAgent || navigator.vendor; return !!inAppRegex.exec( userAgent ); } /** * Check if browser supports ES6, which is prerequisite for this SDK to execute. * * IMPORTANT: it's not possible to run this function from MicroblinkSDK if browser doesn't support * ES6 since this file won't be able to load. * * This function is here as a placeholder so it can be copied to standalone JS file or directly into 'index.html'. */ // export function isES6Supported(): boolean // { // if ( typeof Symbol === "undefined" ) // { // return false; // } // try // { // eval( "class Foo {}" ); // eval( "var bar = (x) => x+1" ); // } // catch ( e ) // { // return false; // } // return true; // }