spitfirepm
Version:
Client API Tools for Spitfire Project Management
148 lines • 7.48 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BrowserExtensionChecker = void 0;
class BrowserExtensionChecker {
static SuggestedExtensionLink() {
return BrowserExtensionChecker.MetaWebstoreLink;
}
// always returns false the first time
HasDotNetApplicationExtension() {
if (top && self !== top)
return top.ClickOnceExtension.HasDotNetApplicationExtension();
if (!this._ClickOnceExtensionHasBeenChecked) {
var result = sessionStorage.getItem(this._SessionStorageCacheKey);
if (result === null) {
if (BrowserExtensionChecker.browser.isWindowsOS) {
if (BrowserExtensionChecker.browser.chrome) {
if (!this._ClickOnceExtensionAvailable)
this._CheckForMeta4ClickOnceLauncherExtension();
if (!this._ClickOnceExtensionAvailable)
this._CheckForWindowsRemixClickonceExtension();
if (!this._ClickOnceExtensionAvailable)
this._CheckForBreezClickOnceLauncherExtension();
}
}
this._ClickOnceExtensionHasBeenChecked = true;
}
else {
var ExtInfo = result.split(";");
this._ExtensionDetected(ExtInfo[0], ExtInfo[1], true);
}
}
return this._ClickOnceExtensionAvailable;
}
IgnoreMissingExtension() {
this._ExtensionDetected("dgpgholdldjjbcmpeckiephjigdpikan", "FAKE - User clicked Ignore Button", false);
}
_ExtensionDetected(id, ExtName, previously) {
if (this._ClickOnceExtensionAvailable)
return true;
this._ClickOnceExtensionAvailable = true;
this.DetectedID = id;
this.DetectedName = ExtName;
console.log("Detected click once helper extension: " + ExtName, previously ? " - this session " : " - just now");
sessionStorage.setItem(this._SessionStorageCacheKey, "{0};{1}".sfFormat(id, ExtName));
return true;
}
// find resource using chrome-extension://cmkpnegkacdeagdmnbbhjbgdpndmlkgj/manifest.json
// create the correct elment type
_CheckForWindowsRemixClickonceExtension() {
var ExtName = "Windows Remix ClickOnce Helper";
var ExtID = "dgpgholdldjjbcmpeckiephjigdpikan";
if (top?.CLICKONCE_EXTENSION_IS_INSTALLED)
return this._ExtensionDetected(ExtID, ExtName, false);
var s = document.createElement('script');
return this._GenericExtensionDetector(ExtID, ExtName, s, "detect.js");
}
_CheckForBreezClickOnceLauncherExtension() {
var ExtName = "Breez ClickOnce Launcher";
var ExtID = "cmkpnegkacdeagdmnbbhjbgdpndmlkgj";
var s = document.createElement('script');
return this._GenericExtensionDetector(ExtID, ExtName, s, "modalHelper.js"); // manifest.json for list
}
_CheckForMeta4ClickOnceLauncherExtension() {
var ExtName = "Meta4 ClickOnce Launcher";
var ExtID = "jkncabbipkgbconhaajbapbhokpbgkdc";
var s = new Image(); //document.createElement('script');
return this._GenericExtensionDetector(ExtID, ExtName, s, "images/download_all.png");
}
_GenericExtensionDetector(ExtID, ExtName, s, testResource) {
var PARENT = this;
s.id = "SFExtensionCheck" + ExtID;
s.src = 'chrome-extension://' + ExtID + '/' + testResource;
s.onload = function () { PARENT._ExtensionDetected(ExtID, ExtName, false); };
s.onerror = function () {
};
try {
document.body.appendChild(s);
s.remove();
//$("SCRIPT#SFExtensionCheck" + ExtID).remove();
}
catch (e) {
// "Caught: Extension not installed: {0}".sfFormat(ExtName);
console.warn(e);
}
return this._ClickOnceExtensionAvailable;
}
_uaMatch(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua) ||
[];
return {
browser: match[1] || "",
version: match[2] || "0"
};
}
constructor() {
this.DetectedID = "";
this.DetectedName = "";
this.Version = "2.2";
this._ClickOnceExtensionAvailable = false;
this._ClickOnceExtensionHasBeenChecked = false;
this._SessionStorageCacheKey = "SFClickOnceExtensionDetected";
if (!BrowserExtensionChecker.browser.detected) {
var matched;
var userAgent = navigator.userAgent || "";
// Based on jQuery.browser, which is ancient and is frowned upon.
// More details: http://api.jquery.com/jQuery.browser
matched = this._uaMatch(userAgent);
if (matched.browser) {
BrowserExtensionChecker.browser[matched.browser] = true;
}
//proprietary sf
//FYI: $ likely not defined
BrowserExtensionChecker.browser.isTouch = ('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0);
BrowserExtensionChecker.browser.sfAgent = false;
BrowserExtensionChecker.browser.isEdge = navigator.userAgent.match(/Edg/i) !== null || navigator.userAgent.match(/Edge/i) !== null;
BrowserExtensionChecker.browser.iPad = navigator.userAgent.match(/iPad/i) !== null;
BrowserExtensionChecker.browser.isWindowsOS = navigator.userAgent.match(/Windows/i) !== null;
BrowserExtensionChecker.browser.isMacOS = navigator.userAgent.match(/Mac OS/i) !== null || navigator.userAgent.match(/Macintosh/i) !== null;
BrowserExtensionChecker.browser.isiOS = navigator.userAgent.match(/iOS/i) !== null || navigator.userAgent.match(/Macintosh/i) !== null;
if (userAgent.indexOf(' Trident/') > 0)
BrowserExtensionChecker.browser.msie = true;
else if (userAgent.indexOf(' Edg/') > 0)
BrowserExtensionChecker.browser.msEdge = true;
//this.browser.msieLegacy = (this.browser.msie && window.attachEvent && !window.addEventListener);
}
this.HasDotNetApplicationExtension();
}
}
exports.BrowserExtensionChecker = BrowserExtensionChecker;
BrowserExtensionChecker.browser = {
detected: false,
isTouch: false,
sfAgent: false,
isEdge: false,
iPad: false,
isWindowsOS: false,
isMacOS: false
};
BrowserExtensionChecker.ChromeWebstoreLink = "https://chromewebstore.google.com";
BrowserExtensionChecker.WRemixWebstoreLink = `${BrowserExtensionChecker.ChromeWebstoreLink}/detail/wremix-clickonce/dgpgholdldjjbcmpeckiephjigdpikan`;
BrowserExtensionChecker.BreezWebstoreLink = `${BrowserExtensionChecker.ChromeWebstoreLink}/detail/breez-clickonce/cmkpnegkacdeagdmnbbhjbgdpndmlkgj`;
BrowserExtensionChecker.MetaWebstoreLink = `${BrowserExtensionChecker.ChromeWebstoreLink}/detail/cegid-peoplenet-clickonce/jkncabbipkgbconhaajbapbhokpbgkdc?`;
//# sourceMappingURL=BrowserExtensionChecker.js.map