unlock.js raw

   1  (()=>{var W={8244(g,m){var o,k;typeof globalThis<"u"?globalThis:typeof self<"u"&&self,void 0!==(k="function"==typeof(o=function(R){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)R.exports=globalThis.browser;else{const E="The message port closed before a response was received.";R.exports=(d=>{const T={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(T).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class C extends WeakMap{constructor(r,n=void 0){super(n),this.createItem=r}get(r){return this.has(r)||this.set(r,this.createItem(r)),super.get(r)}}const F=(e,r)=>(...n)=>{d.runtime.lastError?e.reject(new Error(d.runtime.lastError.message)):e.resolve(r.singleCallbackArg||n.length<=1&&!1!==r.singleCallbackArg?n[0]:n)},y=e=>1==e?"argument":"arguments",N=(e,r,n)=>new Proxy(r,{apply:(t,i,c)=>n.call(i,e,...c)});let w=Function.call.bind(Object.prototype.hasOwnProperty);const v=(e,r={},n={})=>{let t=Object.create(null),i={has:(u,s)=>s in e||s in t,get(u,s,x){if(s in t)return t[s];if(!(s in e))return;let a=e[s];if("function"==typeof a)if("function"==typeof r[s])a=N(e,e[s],r[s]);else if(w(n,s)){let B=((e,r)=>function(t,...i){if(i.length<r.minArgs)throw new Error(`Expected at least ${r.minArgs} ${y(r.minArgs)} for ${e}(), got ${i.length}`);if(i.length>r.maxArgs)throw new Error(`Expected at most ${r.maxArgs} ${y(r.maxArgs)} for ${e}(), got ${i.length}`);return new Promise((c,u)=>{if(r.fallbackToNoCallback)try{t[e](...i,F({resolve:c,reject:u},r))}catch(s){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,s),t[e](...i),r.fallbackToNoCallback=!1,r.noCallback=!0,c()}else r.noCallback?(t[e](...i),c()):t[e](...i,F({resolve:c,reject:u},r))})})(s,n[s]);a=N(e,e[s],B)}else a=a.bind(e);else if("object"==typeof a&&null!==a&&(w(r,s)||w(n,s)))a=v(a,r[s],n[s]);else{if(!w(n,"*"))return Object.defineProperty(t,s,{configurable:!0,enumerable:!0,get:()=>e[s],set(B){e[s]=B}}),a;a=v(a,r[s],n["*"])}return t[s]=a,a},set:(u,s,x,a)=>(s in t?t[s]=x:e[s]=x,!0),defineProperty:(u,s,x)=>Reflect.defineProperty(t,s,x),deleteProperty:(u,s)=>Reflect.deleteProperty(t,s)},c=Object.create(e);return new Proxy(c,i)},l=e=>({addListener(r,n,...t){r.addListener(e.get(n),...t)},hasListener:(r,n)=>r.hasListener(e.get(n)),removeListener(r,n){r.removeListener(e.get(n))}}),f=new C(e=>"function"!=typeof e?e:function(n){const t=v(n,{},{getContent:{minArgs:0,maxArgs:0}});e(t)}),M=new C(e=>"function"!=typeof e?e:function(n,t,i){let u,x,c=!1,s=new Promise(I=>{u=function(h){c=!0,I(h)}});try{x=e(n,t,u)}catch(I){x=Promise.reject(I)}const a=!0!==x&&(e=>e&&"object"==typeof e&&"function"==typeof e.then)(x);return!(!0!==x&&!a&&!c||((a?x:s).then(h=>{i(h)},h=>{let j;j=h&&(h instanceof Error||"string"==typeof h.message)?h.message:"An unexpected error occurred",i({__mozWebExtensionPolyfillReject__:!0,message:j})}).catch(h=>{console.error("Failed to send onMessage rejected reply",h)}),0))}),L=({reject:e,resolve:r},n)=>{d.runtime.lastError?d.runtime.lastError.message===E?r():e(new Error(d.runtime.lastError.message)):n&&n.__mozWebExtensionPolyfillReject__?e(new Error(n.message)):r(n)},_=(e,r,n,...t)=>{if(t.length<r.minArgs)throw new Error(`Expected at least ${r.minArgs} ${y(r.minArgs)} for ${e}(), got ${t.length}`);if(t.length>r.maxArgs)throw new Error(`Expected at most ${r.maxArgs} ${y(r.maxArgs)} for ${e}(), got ${t.length}`);return new Promise((i,c)=>{const u=L.bind(null,{resolve:i,reject:c});t.push(u),n.sendMessage(...t)})},S={devtools:{network:{onRequestFinished:l(f)}},runtime:{onMessage:l(M),onMessageExternal:l(M),sendMessage:_.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:_.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},p={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return T.privacy={network:{"*":p},services:{"*":p},websites:{"*":p}},v(d,S,T)})(chrome)}})?o.apply(m,[g]):o)&&(g.exports=k)}},D={};function b(g){var m=D[g];if(void 0!==m)return m.exports;var o=D[g]={exports:{}};return W[g].call(o.exports,o,o.exports,b),o.exports}b.n=g=>{var m=g&&g.__esModule?()=>g.default:()=>g;return b.d(m,{a:m}),m},b.d=(g,m)=>{for(var o in m)b.o(m,o)&&!b.o(g,o)&&Object.defineProperty(g,o,{enumerable:!0,get:m[o]})},b.o=(g,m)=>Object.prototype.hasOwnProperty.call(g,m),(()=>{"use strict";function g(l,f,M,L,_,S,p){try{var e=l[S](p),r=e.value}catch(n){return void M(n)}e.done?f(r):Promise.resolve(r).then(L,_)}var o=b(8244),O=b.n(o);const k=new URLSearchParams(location.search),R=k.get("id"),E=k.get("host"),A=document.getElementById("passwordInput"),d=document.getElementById("togglePassword"),T=document.getElementById("unlockBtn"),C=document.getElementById("derivingOverlay"),P=document.getElementById("errorAlert"),F=document.getElementById("errorMessage"),y=document.getElementById("hostInfo"),$=document.getElementById("hostSpan");function N(){return w.apply(this,arguments)}function w(){return w=function m(l){return function(){var f=this,M=arguments;return new Promise(function(L,_){var S=l.apply(f,M);function p(r){g(S,L,_,p,e,"next",r)}function e(r){g(S,L,_,p,e,"throw",r)}p(void 0)})}}(function*(){if(!A?.value)return;C?.classList.remove("hidden"),P?.classList.add("hidden");const l={type:"unlock-request",id:R,password:A.value};try{const f=yield O().runtime.sendMessage(l);f.success?window.close():(C?.classList.add("hidden"),v(f.error||"Invalid password"))}catch(f){console.error("Failed to send unlock message:",f),C?.classList.add("hidden"),v("Failed to unlock vault")}}),w.apply(this,arguments)}function v(l){P&&F&&(F.innerText=l,P.classList.remove("hidden"),setTimeout(()=>{P.classList.add("hidden")},3e3))}E&&y&&$&&($.innerText=E,y.classList.remove("hidden")),d?.addEventListener("click",()=>{"password"===A.type?(A.type="text",d.innerHTML='<i class="bi bi-eye-slash"></i>'):(A.type="password",d.innerHTML='<i class="bi bi-eye"></i>')}),A?.addEventListener("input",()=>{T.disabled=!A.value}),A?.addEventListener("keyup",l=>{"Enter"===l.key&&A.value&&N()}),T?.addEventListener("click",N),document.addEventListener("DOMContentLoaded",()=>{A?.focus()})})()})();