@fkn/lib 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{background-Bu7dBd_Z.cjs → background-Bgznrosz.cjs} +1 -1
- package/{background-DLnt6fYS.js → background-EwGRMga_.js} +1 -1
- package/cloud-C-QB3sIK.js +127 -0
- package/cloud-Gs4fvw2S.cjs +1 -0
- package/cloud.cjs +1 -1
- package/cloud.js +2 -2
- package/{extension-DVHdBvOz.cjs → extension-BeARgX1g.cjs} +1 -1
- package/{extension-4ib5y95s.js → extension-CgXBc_iM.js} +1 -1
- package/extension.cjs +1 -1
- package/extension.js +2 -2
- package/index.cjs +1 -1
- package/index.js +3 -3
- package/package.json +1 -1
- package/{proxy-Du95zAKk.cjs → proxy-Bo-8GoRU.cjs} +2 -2
- package/{proxy-Cusnx9Ex.js → proxy-CuuSsVoC.js} +165 -136
- package/cloud-CIO9w9MV.cjs +0 -1
- package/cloud-D2s-dPZy.js +0 -126
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Du95zAKk.cjs");let n=require("osra");var r=e.t(((e,t)=>{(function(n,r){if(typeof define==`function`&&define.amd)define(`webextension-polyfill`,[`module`],r);else if(e!==void 0)r(t);else{var i={exports:{}};r(i),n.browser=i.exports}})(typeof globalThis<`u`?globalThis:typeof self<`u`?self:e,function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw Error(`This script should only be loaded in a browser extension.`);globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id?e.exports=globalThis.browser:e.exports=(e=>{let 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(Object.keys(t).length===0)throw Error(`api-metadata.json has not been included in browser-polyfill`);class n extends WeakMap{constructor(e,t=void 0){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}let r=e=>e&&typeof e==`object`&&typeof e.then==`function`,i=(t,n)=>(...r)=>{e.runtime.lastError?t.reject(Error(e.runtime.lastError.message)):n.singleCallbackArg||r.length<=1&&n.singleCallbackArg!==!1?t.resolve(r[0]):t.resolve(r)},a=e=>e==1?`argument`:`arguments`,o=(e,t)=>function(n,...r){if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((a,o)=>{if(t.fallbackToNoCallback)try{n[e](...r,i({resolve:a,reject:o},t))}catch(i){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,i),n[e](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,a()}else t.noCallback?(n[e](...r),a()):n[e](...r,i({resolve:a,reject:o},t))})},s=(e,t,n)=>new Proxy(t,{apply(t,r,i){return n.call(r,e,...i)}}),c=Function.call.bind(Object.prototype.hasOwnProperty),l=(e,t={},n={})=>{let r=Object.create(null),i={has(t,n){return n in e||n in r},get(i,a,u){if(a in r)return r[a];if(!(a in e))return;let d=e[a];if(typeof d==`function`)if(typeof t[a]==`function`)d=s(e,e[a],t[a]);else if(c(n,a)){let t=o(a,n[a]);d=s(e,e[a],t)}else d=d.bind(e);else if(typeof d==`object`&&d&&(c(t,a)||c(n,a)))d=l(d,t[a],n[a]);else if(c(n,`*`))d=l(d,t[a],n[`*`]);else return Object.defineProperty(r,a,{configurable:!0,enumerable:!0,get(){return e[a]},set(t){e[a]=t}}),d;return r[a]=d,d},set(t,n,i,a){return n in r?r[n]=i:e[n]=i,!0},defineProperty(e,t,n){return Reflect.defineProperty(r,t,n)},deleteProperty(e,t){return Reflect.deleteProperty(r,t)}},a=Object.create(e);return new Proxy(a,i)},u=e=>({addListener(t,n,...r){t.addListener(e.get(n),...r)},hasListener(t,n){return t.hasListener(e.get(n))},removeListener(t,n){t.removeListener(e.get(n))}}),d=new n(e=>typeof e==`function`?function(t){e(l(t,{},{getContent:{minArgs:0,maxArgs:0}}))}:e),f=new n(e=>typeof e==`function`?function(t,n,i){let a=!1,o,s=new Promise(e=>{o=function(t){a=!0,e(t)}}),c;try{c=e(t,n,o)}catch(e){c=Promise.reject(e)}let l=c!==!0&&r(c);return c!==!0&&!l&&!a?!1:((e=>{e.then(e=>{i(e)},e=>{let t;t=e&&(e instanceof Error||typeof e.message==`string`)?e.message:`An unexpected error occurred`,i({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error(`Failed to send onMessage rejected reply`,e)})})(l?c:s),!0)}:e),p=({reject:t,resolve:n},r)=>{e.runtime.lastError?e.runtime.lastError.message===`The message port closed before a response was received.`?n():t(Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?t(Error(r.message)):n(r)},m=(e,t,n,...r)=>{if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((e,t)=>{let i=p.bind(null,{resolve:e,reject:t});r.push(i),n.sendMessage(...r)})},h={devtools:{network:{onRequestFinished:u(d)}},runtime:{onMessage:u(f),onMessageExternal:u(f),sendMessage:m.bind(null,`sendMessage`,{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,`sendMessage`,{minArgs:2,maxArgs:3})}},g={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":g},services:{"*":g},websites:{"*":g}},l(e,h,t)})(chrome)})}))(),i=`FKN_WEB_EXTENSION_BACKGROUND_COMMUNICATION_OSRA_KEY`,a=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`,o=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY`,s=e=>t.b(e)&&e.FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY===!0&&typeof e.from==`string`&&t.b(e.message),c=new Map,l=e=>{let i=c.get(e);if(i)return i;let{promise:s,resolve:l}=Promise.withResolvers(),{promise:u,resolve:d}=Promise.withResolvers(),f={resolvers:(0,n.expose)(O,{key:a,revivableModules:t.L,transport:{isJson:!0,receive:e=>l(e),emit:t=>{r.runtime.sendMessage({[o]:!0,target:e,message:t}).catch(()=>{})}}}),listener:s,stale:u,markStale:d};return c.set(e,f),f};r.runtime.onMessage.addListener((e,t)=>{s(e)&&(0,n.checkOsraMessageKey)(e.message,`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`)&&l(e.from).listener.then(n=>n(e.message,{sender:t}))}),t._(e=>{let t=c.get(e);t&&(t.markStale(),c.delete(e))});var u=async e=>{let t=l(e);return{resolvers:await Promise.race([t.resolvers,t.stale.then(()=>{throw Error(`peer ${e} became stale before connect completed`)})]),stale:t.stale}},d=[`position: fixed`,`border: 2px solid oklch(63% 0.24 25)`,`border-radius: 4px`,`background: oklch(63% 0.24 25 / 0.12)`,`box-shadow: 0 0 0 2px oklch(63% 0.24 25 / 0.5), 0 0 0 100vmax oklch(0% 0 0 / 0.5)`,`z-index: 2147483647`,`pointer-events: none`,`box-sizing: border-box`],f=(e,t)=>{let n=t.getBoundingClientRect();e.setAttribute(`style`,[...d,`left: ${n.left}px`,`top: ${n.top}px`,`width: ${n.width}px`,`height: ${n.height}px`].map(e=>`${e} !important`).join(`; `))},p=e=>{let t=e.getBoundingClientRect();return{clientX:t.left+t.width/2,clientY:t.top+t.height/2}},m=0,h=e=>{m^=1;let{clientX:t,clientY:n}=p(e),r={bubbles:!0,cancelable:!0,composed:!0,clientX:t+m,clientY:n};e.dispatchEvent(new PointerEvent(`pointermove`,{...r,pointerType:`mouse`,pointerId:1,isPrimary:!0})),e.dispatchEvent(new MouseEvent(`mousemove`,r))},g=[[PointerEvent,`pointerover`,!0],[PointerEvent,`pointerenter`,!1],[MouseEvent,`mouseover`,!0],[MouseEvent,`mouseenter`,!1]],_=[[PointerEvent,`pointerout`,!0],[PointerEvent,`pointerleave`,!1],[MouseEvent,`mouseout`,!0],[MouseEvent,`mouseleave`,!1]],v=(e,t)=>t.forEach(([t,n,r])=>e.dispatchEvent(new t(n,{bubbles:r,cancelable:!0,composed:!0,...p(e)}))),y=e=>{v(e,g),h(e)},b=e=>v(e,_),x=null,S=e=>{C();try{e.scrollIntoView({block:`center`,inline:`center`})}catch{}let t=document.createElement(`div`);(document.body??document.documentElement).appendChild(t),y(e);let n=requestAnimationFrame(function r(){f(t,e),n=requestAnimationFrame(r)}),r=window.setInterval(()=>h(e),300);x={stop:()=>{cancelAnimationFrame(n),clearInterval(r),b(e),t.remove()}}},C=()=>{x?.stop(),x=null},w={[t.p]:t.f,[t.h]:t.m},T=e=>{let t=w[e.locatorType];if(!t)throw Error(`Unknown locator kind: "${e.locatorType}"`);let n=t.selectorModules.find(t=>t.type===e.type);if(!n)throw Error(`Unknown selector: "${e.locatorType}.${e.type}"`);return n},E=e=>e.reduce((e,t)=>T(t).resolve({elements:e},...t.args),[document.documentElement]),D=e=>{for(let t=0;t<e.length;t++){let n=T(e[t]);if(n.resolvePeer)return{module:n,index:t}}return null},O={contentScriptDummy:()=>{},executeLocator:async(e,n,r)=>{let i=D(e);if(i){let t=await i.module.resolvePeer({parts:e,selfIndex:i.index,resolveLocal:E}),{resolvers:a,stale:o}=await u(t),s=e.slice(i.index+1);return Promise.race([a.executeLocator(s,n,r),o.then(()=>{throw Error(`peer ${t} became stale during call, retrying`)})])}if(n===`__fkn_highlight`){if(r[0]?.on){let n=E(e)[0];n&&(t.g(!0),S(n))}else C(),t.g(!1);return}let a=[...t.f.operationModules,...t.m.operationModules].find(e=>e.type===n);if(!a)throw Error(`Unknown operation: "${n}"`);return a.resolve({elements:E(e)},...r)}},k=(globalThis.browser??globalThis.chrome).runtime,A=(0,n.expose)(O,{key:i,transport:{isJson:!0,receive:k.onMessage,emit:k}});exports.backgroundResolvers=A;
|
|
1
|
+
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Bo-8GoRU.cjs");let n=require("osra");var r=e.t(((e,t)=>{(function(n,r){if(typeof define==`function`&&define.amd)define(`webextension-polyfill`,[`module`],r);else if(e!==void 0)r(t);else{var i={exports:{}};r(i),n.browser=i.exports}})(typeof globalThis<`u`?globalThis:typeof self<`u`?self:e,function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw Error(`This script should only be loaded in a browser extension.`);globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id?e.exports=globalThis.browser:e.exports=(e=>{let 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(Object.keys(t).length===0)throw Error(`api-metadata.json has not been included in browser-polyfill`);class n extends WeakMap{constructor(e,t=void 0){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}let r=e=>e&&typeof e==`object`&&typeof e.then==`function`,i=(t,n)=>(...r)=>{e.runtime.lastError?t.reject(Error(e.runtime.lastError.message)):n.singleCallbackArg||r.length<=1&&n.singleCallbackArg!==!1?t.resolve(r[0]):t.resolve(r)},a=e=>e==1?`argument`:`arguments`,o=(e,t)=>function(n,...r){if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((a,o)=>{if(t.fallbackToNoCallback)try{n[e](...r,i({resolve:a,reject:o},t))}catch(i){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,i),n[e](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,a()}else t.noCallback?(n[e](...r),a()):n[e](...r,i({resolve:a,reject:o},t))})},s=(e,t,n)=>new Proxy(t,{apply(t,r,i){return n.call(r,e,...i)}}),c=Function.call.bind(Object.prototype.hasOwnProperty),l=(e,t={},n={})=>{let r=Object.create(null),i={has(t,n){return n in e||n in r},get(i,a,u){if(a in r)return r[a];if(!(a in e))return;let d=e[a];if(typeof d==`function`)if(typeof t[a]==`function`)d=s(e,e[a],t[a]);else if(c(n,a)){let t=o(a,n[a]);d=s(e,e[a],t)}else d=d.bind(e);else if(typeof d==`object`&&d&&(c(t,a)||c(n,a)))d=l(d,t[a],n[a]);else if(c(n,`*`))d=l(d,t[a],n[`*`]);else return Object.defineProperty(r,a,{configurable:!0,enumerable:!0,get(){return e[a]},set(t){e[a]=t}}),d;return r[a]=d,d},set(t,n,i,a){return n in r?r[n]=i:e[n]=i,!0},defineProperty(e,t,n){return Reflect.defineProperty(r,t,n)},deleteProperty(e,t){return Reflect.deleteProperty(r,t)}},a=Object.create(e);return new Proxy(a,i)},u=e=>({addListener(t,n,...r){t.addListener(e.get(n),...r)},hasListener(t,n){return t.hasListener(e.get(n))},removeListener(t,n){t.removeListener(e.get(n))}}),d=new n(e=>typeof e==`function`?function(t){e(l(t,{},{getContent:{minArgs:0,maxArgs:0}}))}:e),f=new n(e=>typeof e==`function`?function(t,n,i){let a=!1,o,s=new Promise(e=>{o=function(t){a=!0,e(t)}}),c;try{c=e(t,n,o)}catch(e){c=Promise.reject(e)}let l=c!==!0&&r(c);return c!==!0&&!l&&!a?!1:((e=>{e.then(e=>{i(e)},e=>{let t;t=e&&(e instanceof Error||typeof e.message==`string`)?e.message:`An unexpected error occurred`,i({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error(`Failed to send onMessage rejected reply`,e)})})(l?c:s),!0)}:e),p=({reject:t,resolve:n},r)=>{e.runtime.lastError?e.runtime.lastError.message===`The message port closed before a response was received.`?n():t(Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?t(Error(r.message)):n(r)},m=(e,t,n,...r)=>{if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((e,t)=>{let i=p.bind(null,{resolve:e,reject:t});r.push(i),n.sendMessage(...r)})},h={devtools:{network:{onRequestFinished:u(d)}},runtime:{onMessage:u(f),onMessageExternal:u(f),sendMessage:m.bind(null,`sendMessage`,{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,`sendMessage`,{minArgs:2,maxArgs:3})}},g={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":g},services:{"*":g},websites:{"*":g}},l(e,h,t)})(chrome)})}))(),i=`FKN_WEB_EXTENSION_BACKGROUND_COMMUNICATION_OSRA_KEY`,a=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`,o=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY`,s=e=>t.b(e)&&e.FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY===!0&&typeof e.from==`string`&&t.b(e.message),c=new Map,l=e=>{let i=c.get(e);if(i)return i;let{promise:s,resolve:l}=Promise.withResolvers(),{promise:u,resolve:d}=Promise.withResolvers(),f={resolvers:(0,n.expose)(O,{key:a,revivableModules:t.L,transport:{isJson:!0,receive:e=>l(e),emit:t=>{r.runtime.sendMessage({[o]:!0,target:e,message:t}).catch(()=>{})}}}),listener:s,stale:u,markStale:d};return c.set(e,f),f};r.runtime.onMessage.addListener((e,t)=>{s(e)&&(0,n.checkOsraMessageKey)(e.message,`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`)&&l(e.from).listener.then(n=>n(e.message,{sender:t}))}),t._(e=>{let t=c.get(e);t&&(t.markStale(),c.delete(e))});var u=async e=>{let t=l(e);return{resolvers:await Promise.race([t.resolvers,t.stale.then(()=>{throw Error(`peer ${e} became stale before connect completed`)})]),stale:t.stale}},d=[`position: fixed`,`border: 2px solid oklch(63% 0.24 25)`,`border-radius: 4px`,`background: oklch(63% 0.24 25 / 0.12)`,`box-shadow: 0 0 0 2px oklch(63% 0.24 25 / 0.5), 0 0 0 100vmax oklch(0% 0 0 / 0.5)`,`z-index: 2147483647`,`pointer-events: none`,`box-sizing: border-box`],f=(e,t)=>{let n=t.getBoundingClientRect();e.setAttribute(`style`,[...d,`left: ${n.left}px`,`top: ${n.top}px`,`width: ${n.width}px`,`height: ${n.height}px`].map(e=>`${e} !important`).join(`; `))},p=e=>{let t=e.getBoundingClientRect();return{clientX:t.left+t.width/2,clientY:t.top+t.height/2}},m=0,h=e=>{m^=1;let{clientX:t,clientY:n}=p(e),r={bubbles:!0,cancelable:!0,composed:!0,clientX:t+m,clientY:n};e.dispatchEvent(new PointerEvent(`pointermove`,{...r,pointerType:`mouse`,pointerId:1,isPrimary:!0})),e.dispatchEvent(new MouseEvent(`mousemove`,r))},g=[[PointerEvent,`pointerover`,!0],[PointerEvent,`pointerenter`,!1],[MouseEvent,`mouseover`,!0],[MouseEvent,`mouseenter`,!1]],_=[[PointerEvent,`pointerout`,!0],[PointerEvent,`pointerleave`,!1],[MouseEvent,`mouseout`,!0],[MouseEvent,`mouseleave`,!1]],v=(e,t)=>t.forEach(([t,n,r])=>e.dispatchEvent(new t(n,{bubbles:r,cancelable:!0,composed:!0,...p(e)}))),y=e=>{v(e,g),h(e)},b=e=>v(e,_),x=null,S=e=>{C();try{e.scrollIntoView({block:`center`,inline:`center`})}catch{}let t=document.createElement(`div`);(document.body??document.documentElement).appendChild(t),y(e);let n=requestAnimationFrame(function r(){f(t,e),n=requestAnimationFrame(r)}),r=window.setInterval(()=>h(e),300);x={stop:()=>{cancelAnimationFrame(n),clearInterval(r),b(e),t.remove()}}},C=()=>{x?.stop(),x=null},w={[t.p]:t.f,[t.h]:t.m},T=e=>{let t=w[e.locatorType];if(!t)throw Error(`Unknown locator kind: "${e.locatorType}"`);let n=t.selectorModules.find(t=>t.type===e.type);if(!n)throw Error(`Unknown selector: "${e.locatorType}.${e.type}"`);return n},E=e=>e.reduce((e,t)=>T(t).resolve({elements:e},...t.args),[document.documentElement]),D=e=>{for(let t=0;t<e.length;t++){let n=T(e[t]);if(n.resolvePeer)return{module:n,index:t}}return null},O={contentScriptDummy:()=>{},executeLocator:async(e,n,r)=>{let i=D(e);if(i){let t=await i.module.resolvePeer({parts:e,selfIndex:i.index,resolveLocal:E}),{resolvers:a,stale:o}=await u(t),s=e.slice(i.index+1);return Promise.race([a.executeLocator(s,n,r),o.then(()=>{throw Error(`peer ${t} became stale during call, retrying`)})])}if(n===`__fkn_highlight`){if(r[0]?.on){let n=E(e)[0];n&&(t.g(!0),S(n))}else C(),t.g(!1);return}let a=[...t.f.operationModules,...t.m.operationModules].find(e=>e.type===n);if(!a)throw Error(`Unknown operation: "${n}"`);return a.resolve({elements:E(e)},...r)}},k=(globalThis.browser??globalThis.chrome).runtime,A=(0,n.expose)(O,{key:i,transport:{isJson:!0,receive:k.onMessage,emit:k}});exports.backgroundResolvers=A;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-DF993M8W.js";
|
|
2
|
-
import { L as t, _ as n, b as r, f as i, g as a, h as o, m as s, p as c } from "./proxy-
|
|
2
|
+
import { L as t, _ as n, b as r, f as i, g as a, h as o, m as s, p as c } from "./proxy-CuuSsVoC.js";
|
|
3
3
|
import { checkOsraMessageKey as l, expose as u } from "osra";
|
|
4
4
|
//#endregion
|
|
5
5
|
//#region node_modules/@mfkn/web-extension/lib/background/constants.js
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { n as e } from "./rolldown-runtime-DF993M8W.js";
|
|
2
|
+
import { L as t, l as n, s as r, t as i, v as a, y as o } from "./proxy-CuuSsVoC.js";
|
|
3
|
+
import { n as s, t as c } from "./api--bnCFd4w.js";
|
|
4
|
+
import { t as l } from "./dns.js";
|
|
5
|
+
import { t as u } from "./cloud/fs.js";
|
|
6
|
+
import { s as d } from "./net-BFYMbE4N.js";
|
|
7
|
+
import { i as f } from "./dgram-CKRbKVzG.js";
|
|
8
|
+
import { t as p } from "./http.js";
|
|
9
|
+
import { expose as m } from "osra";
|
|
10
|
+
//#region src/lib/cloud/frame.ts
|
|
11
|
+
var h = (e) => e, g = "autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write", _ = 2e4, v = 65e3, y = 3e4, b = 5e3, x = /* @__PURE__ */ new Set(), S = () => "https://fkn.app", C = (e) => !e || e === "about:blank", w = (e) => e ? "" : `incognito-${crypto.randomUUID()}`, T = ({ target: e, session: t }) => {
|
|
12
|
+
let n = new URL("/attach-frame", S());
|
|
13
|
+
return e && n.searchParams.set("url", e), t && n.searchParams.set("session", t), n.href;
|
|
14
|
+
}, E = (e, t, n) => {
|
|
15
|
+
let r, i = new Promise((e, i) => {
|
|
16
|
+
r = setTimeout(() => i(Error(n)), t);
|
|
17
|
+
});
|
|
18
|
+
return Promise.race([e, i]).finally(() => clearTimeout(r));
|
|
19
|
+
}, D = (e, t) => {
|
|
20
|
+
let n = () => {
|
|
21
|
+
a(), t();
|
|
22
|
+
}, r = e.parentNode, i = new MutationObserver(() => {
|
|
23
|
+
(!e.isConnected || e.parentNode !== r) && (a(), t());
|
|
24
|
+
}), a = () => {
|
|
25
|
+
window.removeEventListener("pagehide", n), i.disconnect();
|
|
26
|
+
};
|
|
27
|
+
window.addEventListener("pagehide", n, { once: !0 }), r && i.observe(r, { childList: !0 }), e.isConnected || (a(), t());
|
|
28
|
+
}, O = () => Object.assign(/* @__PURE__ */ Error("cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe"), { name: a }), k = (e, t) => {
|
|
29
|
+
let n = [...e.split(";"), ...t.split(";")].map((e) => e.trim()).filter(Boolean);
|
|
30
|
+
return [...new Set(n)].join("; ");
|
|
31
|
+
}, A = [
|
|
32
|
+
300,
|
|
33
|
+
1200,
|
|
34
|
+
4e3
|
|
35
|
+
], j = (e) => {
|
|
36
|
+
let t = () => {
|
|
37
|
+
if (!e.isConnected) return;
|
|
38
|
+
let t = e.style.height, n = e.getBoundingClientRect();
|
|
39
|
+
n.height && (e.style.height = `${n.height - 1}px`, setTimeout(() => {
|
|
40
|
+
e.style.height = t;
|
|
41
|
+
}, 50));
|
|
42
|
+
};
|
|
43
|
+
t();
|
|
44
|
+
for (let e of A) setTimeout(t, e);
|
|
45
|
+
}, M = (e) => {
|
|
46
|
+
let t = e.getAttribute("sandbox");
|
|
47
|
+
if (t === null) return;
|
|
48
|
+
let n = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), r = ["allow-scripts", "allow-same-origin"].filter((e) => !n.has(e));
|
|
49
|
+
if (r.length) throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(" and ")} for the render proxy to load`);
|
|
50
|
+
}, N = async ({ iframe: e, domains: i = [], syncCookies: a = !0, lockdown: s = !1 }) => {
|
|
51
|
+
if (typeof window > "u") throw Error("cloud.attachFrame needs a window realm");
|
|
52
|
+
if (s) throw Error("cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame");
|
|
53
|
+
if (!e.isConnected) throw Error("cloud.attachFrame: the iframe must be connected to the document before attaching");
|
|
54
|
+
M(e);
|
|
55
|
+
let c = e.getAttribute("src") ?? "", l = (() => {
|
|
56
|
+
if (C(c)) return null;
|
|
57
|
+
try {
|
|
58
|
+
return new URL(e.src || c, location.href);
|
|
59
|
+
} catch {
|
|
60
|
+
throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${c}`);
|
|
61
|
+
}
|
|
62
|
+
})();
|
|
63
|
+
if (l) {
|
|
64
|
+
let e = new URL("/attach-frame", S());
|
|
65
|
+
if (l.origin === e.origin && l.pathname === e.pathname) throw Error("cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe");
|
|
66
|
+
}
|
|
67
|
+
let u = l?.href ?? "";
|
|
68
|
+
u && n(u);
|
|
69
|
+
let d = u, f = w(a), p = new AbortController(), A = e.referrerPolicy, N = e.allow;
|
|
70
|
+
if (e.referrerPolicy = "origin", e.allow = k(g, e.allow), e.src = T({
|
|
71
|
+
target: u,
|
|
72
|
+
session: f
|
|
73
|
+
}), !e.contentWindow) throw Error("cloud.attachFrame: the iframe window is not available");
|
|
74
|
+
try {
|
|
75
|
+
let n = await E(m({}, {
|
|
76
|
+
key: "fkn-attach-frame",
|
|
77
|
+
origin: S(),
|
|
78
|
+
transport: {
|
|
79
|
+
receive: window,
|
|
80
|
+
emit: e.contentWindow
|
|
81
|
+
},
|
|
82
|
+
unregisterSignal: p.signal,
|
|
83
|
+
revivableModules: h(t)
|
|
84
|
+
}), _, "cloud.attachFrame: timed out connecting to the render proxy page");
|
|
85
|
+
await E(n.ready(), v, "cloud.attachFrame: the render proxy never became ready"), u && j(e), D(e, () => p.abort());
|
|
86
|
+
let i = e.contentWindow, a = () => {
|
|
87
|
+
if (!(!p.signal.aborted && e.isConnected && e.contentWindow === i)) throw p.abort(), O();
|
|
88
|
+
};
|
|
89
|
+
return r({
|
|
90
|
+
executeLocator: (e, t, r) => x.has(t) ? Promise.reject(o(t, "cloud")) : (a(), n.executeLocator(e, t, r)),
|
|
91
|
+
ensurePermission: async () => {},
|
|
92
|
+
goto: async (t, r = {}) => {
|
|
93
|
+
let i = new URL(t, location.href).href;
|
|
94
|
+
a();
|
|
95
|
+
let { timeoutMs: o } = r;
|
|
96
|
+
await E(n.goto(i, r), (o ?? y) + b, "cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded"), d = i, j(e);
|
|
97
|
+
},
|
|
98
|
+
url: () => d
|
|
99
|
+
});
|
|
100
|
+
} catch (t) {
|
|
101
|
+
throw p.abort(), e.referrerPolicy = A, e.allow = N, e.src = u || "about:blank", t;
|
|
102
|
+
}
|
|
103
|
+
}, P = () => typeof window < "u" && !0, F = async () => {
|
|
104
|
+
let e = await c.then((e) => e.cloud.quota());
|
|
105
|
+
return {
|
|
106
|
+
premium: e.premium,
|
|
107
|
+
overQuota: e.overQuota,
|
|
108
|
+
throttled: e.overQuota && !e.premium,
|
|
109
|
+
usedBytes: e.usedBytes,
|
|
110
|
+
limitBytes: e.limitBytes,
|
|
111
|
+
remainingBytes: e.remaining,
|
|
112
|
+
bytesPerSecond: e.bytesPerSecond,
|
|
113
|
+
bitsPerSecond: e.bytesPerSecond * 8
|
|
114
|
+
};
|
|
115
|
+
}, I = /* @__PURE__ */ e({
|
|
116
|
+
attachFrame: () => N,
|
|
117
|
+
available: () => L,
|
|
118
|
+
dgram: () => f,
|
|
119
|
+
dns: () => l,
|
|
120
|
+
fetch: () => i,
|
|
121
|
+
fs: () => u,
|
|
122
|
+
http: () => p,
|
|
123
|
+
net: () => d,
|
|
124
|
+
quota: () => F
|
|
125
|
+
}), L = () => s;
|
|
126
|
+
//#endregion
|
|
127
|
+
export { P as a, N as i, I as n, F as r, L as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Bo-8GoRU.cjs"),n=require("./api-DD5v1qP9.cjs"),r=require("./dns.cjs"),i=require("./cloud/fs.cjs"),a=require("./net-BPpdNdpy.cjs"),o=require("./dgram-DcvdNkg6.cjs"),s=require("./http.cjs");let c=require("osra");var l=e=>e,u=`autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write`,d=2e4,f=65e3,p=3e4,m=5e3,h=new Set,g=()=>`https://fkn.app`,_=e=>!e||e===`about:blank`,v=e=>e?``:`incognito-${crypto.randomUUID()}`,y=({target:e,session:t})=>{let n=new URL(`/attach-frame`,g());return e&&n.searchParams.set(`url`,e),t&&n.searchParams.set(`session`,t),n.href},b=(e,t,n)=>{let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(n)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))},x=(e,t)=>{let n=()=>{a(),t()},r=e.parentNode,i=new MutationObserver(()=>{(!e.isConnected||e.parentNode!==r)&&(a(),t())}),a=()=>{window.removeEventListener(`pagehide`,n),i.disconnect()};window.addEventListener(`pagehide`,n,{once:!0}),r&&i.observe(r,{childList:!0}),e.isConnected||(a(),t())},S=()=>Object.assign(Error(`cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe`),{name:t.v}),C=(e,t)=>{let n=[...e.split(`;`),...t.split(`;`)].map(e=>e.trim()).filter(Boolean);return[...new Set(n)].join(`; `)},w=[300,1200,4e3],T=e=>{let t=()=>{if(!e.isConnected)return;let t=e.style.height,n=e.getBoundingClientRect();n.height&&(e.style.height=`${n.height-1}px`,setTimeout(()=>{e.style.height=t},50))};t();for(let e of w)setTimeout(t,e)},E=e=>{let t=e.getAttribute(`sandbox`);if(t===null)return;let n=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),r=[`allow-scripts`,`allow-same-origin`].filter(e=>!n.has(e));if(r.length)throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(` and `)} for the render proxy to load`)},D=async({iframe:e,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);if(i)throw Error(`cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame`);if(!e.isConnected)throw Error(`cloud.attachFrame: the iframe must be connected to the document before attaching`);E(e);let a=e.getAttribute(`src`)??``,o=(()=>{if(_(a))return null;try{return new URL(e.src||a,location.href)}catch{throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${a}`)}})();if(o){let e=new URL(`/attach-frame`,g());if(o.origin===e.origin&&o.pathname===e.pathname)throw Error(`cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe`)}let s=o?.href??``;s&&t.l(s);let w=s,D=v(r),O=new AbortController,k=e.referrerPolicy,A=e.allow;if(e.referrerPolicy=`origin`,e.allow=C(u,e.allow),e.src=y({target:s,session:D}),!e.contentWindow)throw Error(`cloud.attachFrame: the iframe window is not available`);try{let n=await b((0,c.expose)({},{key:`fkn-attach-frame`,origin:g(),transport:{receive:window,emit:e.contentWindow},unregisterSignal:O.signal,revivableModules:l(t.L)}),d,`cloud.attachFrame: timed out connecting to the render proxy page`);await b(n.ready(),f,`cloud.attachFrame: the render proxy never became ready`),s&&T(e),x(e,()=>O.abort());let r=e.contentWindow,i=()=>{if(!(!O.signal.aborted&&e.isConnected&&e.contentWindow===r))throw O.abort(),S()};return t.s({executeLocator:(e,r,a)=>h.has(r)?Promise.reject(t.y(r,`cloud`)):(i(),n.executeLocator(e,r,a)),ensurePermission:async()=>{},goto:async(t,r={})=>{let a=new URL(t,location.href).href;i();let{timeoutMs:o}=r;await b(n.goto(a,r),(o??p)+m,`cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded`),w=a,T(e)},url:()=>w})}catch(t){throw O.abort(),e.referrerPolicy=k,e.allow=A,e.src=s||`about:blank`,t}},O=()=>typeof window<`u`&&!0,k=async()=>{let e=await n.t.then(e=>e.cloud.quota());return{premium:e.premium,overQuota:e.overQuota,throttled:e.overQuota&&!e.premium,usedBytes:e.usedBytes,limitBytes:e.limitBytes,remainingBytes:e.remaining,bytesPerSecond:e.bytesPerSecond,bitsPerSecond:e.bytesPerSecond*8}},A=e.n({attachFrame:()=>D,available:()=>j,dgram:()=>o.i,dns:()=>r.t,fetch:()=>t.t,fs:()=>i.t,http:()=>s.t,net:()=>a.s,quota:()=>k}),j=()=>n.n;Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return j}});
|
package/cloud.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-Bo-8GoRU.cjs"),t=require("./cloud-Gs4fvw2S.cjs"),n=require("./dns.cjs"),r=require("./cloud/fs.cjs"),i=require("./net-BPpdNdpy.cjs"),a=require("./dgram-DcvdNkg6.cjs"),o=require("./http.cjs");exports.attachFrame=t.i,exports.available=t.t,Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return n.t}}),exports.fetch=e.t,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),exports.quota=t.r;
|
package/cloud.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "./proxy-
|
|
2
|
-
import { i as t, r as n, t as r } from "./cloud-
|
|
1
|
+
import { t as e } from "./proxy-CuuSsVoC.js";
|
|
2
|
+
import { i as t, r as n, t as r } from "./cloud-C-QB3sIK.js";
|
|
3
3
|
import { t as i } from "./dns.js";
|
|
4
4
|
import { t as a } from "./cloud/fs.js";
|
|
5
5
|
import { s as o } from "./net-BFYMbE4N.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-
|
|
1
|
+
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Bo-8GoRU.cjs"),n=require("./api-DD5v1qP9.cjs"),r=require("./desktop.cjs");var i=async e=>{if(typeof window>`u`)return!1;if(t.P())return!0;let r=await n.t,i=null,a=new Promise(e=>{i=()=>{t.P()&&e(!0)},t.N.addEventListener(`statuschange`,i)}),o=r.installPrompt.show(e).then(()=>!1),s=await Promise.race([a,o]);return i&&t.N.removeEventListener(`statuschange`,i),await r.installPrompt.hide().catch(()=>{}),s},a=null;t.F(()=>(a||=i().then(()=>void 0).finally(()=>{a=null}),a));var o=()=>typeof document<`u`&&t.P(),s=async(e,n)=>{if(t.n(e),n?.credentials===`include`){if(typeof document>`u`)throw Error(`fetch with credentials needs the FKN extension, which only exists in window realms`);return t.D(e,n)}return o()?t.D(e,{...n,credentials:`omit`}):r.available()?r.fetch(e,n):t.t(e,n)},c=e.n({ATTACH_FRAME_EVENT_KEY:()=>t.i,assertAttachableFrameUrl:()=>t.l,assertFetchableUrl:()=>t.E,assertLockdownApplicable:()=>t.u,attachFrame:()=>t.a,attachFramePermission:()=>t.o,available:()=>o,box:()=>t.R,cookies:()=>t.w,createFrame:()=>t.s,createVideoElementHandle:()=>t.z,events:()=>t.N,extension:()=>t.N,fetch:()=>t.D,fetchCredentialedPermission:()=>t.O,fetchLocalPermission:()=>t.k,fetchPermission:()=>t.A,gotoPermission:()=>t.c,handleRevivableModules:()=>t.L,isBlockedFetchUrl:()=>t.j,isBlockedFrameUrl:()=>t.d,isExtensionExposed:()=>t.P,isLocalNetworkUrl:()=>t.M,isType:()=>t.B,modifyRequestHeadersPermission:()=>t.x,permissions:()=>t.r,promptInstall:()=>i,readCookiePermission:()=>t.T,removeRequestHeaderRule:()=>t.S,revive:()=>t.V,setMissingExtensionHandler:()=>t.F,setRequestHeaderRule:()=>t.C,type:()=>t.H,waitForExtensionExposure:()=>t.I});Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as e } from "./rolldown-runtime-DF993M8W.js";
|
|
2
|
-
import { A as t, B as n, C as r, D as i, E as a, F as o, H as s, I as c, L as l, M as u, N as d, O as f, P as p, R as m, S as h, T as g, V as _, a as v, c as y, d as b, i as x, j as S, k as C, l as w, n as T, o as E, r as D, s as O, t as k, u as A, w as j, x as M, z as N } from "./proxy-
|
|
2
|
+
import { A as t, B as n, C as r, D as i, E as a, F as o, H as s, I as c, L as l, M as u, N as d, O as f, P as p, R as m, S as h, T as g, V as _, a as v, c as y, d as b, i as x, j as S, k as C, l as w, n as T, o as E, r as D, s as O, t as k, u as A, w as j, x as M, z as N } from "./proxy-CuuSsVoC.js";
|
|
3
3
|
import { t as P } from "./api--bnCFd4w.js";
|
|
4
4
|
import { available as F, fetch as I } from "./desktop.js";
|
|
5
5
|
//#region src/lib/extension-prompt.ts
|
package/extension.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-Bo-8GoRU.cjs"),t=require("./extension-BeARgX1g.cjs");exports.ATTACH_FRAME_EVENT_KEY=e.i,exports.assertAttachableFrameUrl=e.l,exports.assertFetchableUrl=e.E,exports.assertLockdownApplicable=e.u,exports.attachFrame=e.a,exports.attachFramePermission=e.o,exports.available=t.r,exports.box=e.R,exports.cookies=e.w,exports.createFrame=e.s,exports.createVideoElementHandle=e.z,exports.events=e.N,exports.extension=e.N,exports.fetch=e.D,exports.fetchCredentialedPermission=e.O,exports.fetchLocalPermission=e.k,exports.fetchPermission=e.A,exports.gotoPermission=e.c,exports.handleRevivableModules=e.L,exports.isBlockedFetchUrl=e.j,exports.isBlockedFrameUrl=e.d,exports.isExtensionExposed=e.P,exports.isLocalNetworkUrl=e.M,exports.isType=e.B,exports.modifyRequestHeadersPermission=e.x,exports.permissions=e.r,exports.promptInstall=t.i,exports.readCookiePermission=e.T,exports.removeRequestHeaderRule=e.S,exports.revive=e.V,exports.setMissingExtensionHandler=e.F,exports.setRequestHeaderRule=e.C,exports.type=e.H,exports.waitForExtensionExposure=e.I;
|
package/extension.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as e, B as t, C as n, D as r, E as i, F as a, H as o, I as s, L as c, M as l, N as u, O as d, P as f, R as p, S as m, T as h, V as g, a as _, c as v, d as y, i as b, j as x, k as S, l as C, o as w, r as T, s as E, u as D, w as O, x as k, z as A } from "./proxy-
|
|
2
|
-
import { i as j, r as M } from "./extension-
|
|
1
|
+
import { A as e, B as t, C as n, D as r, E as i, F as a, H as o, I as s, L as c, M as l, N as u, O as d, P as f, R as p, S as m, T as h, V as g, a as _, c as v, d as y, i as b, j as x, k as S, l as C, o as w, r as T, s as E, u as D, w as O, x as k, z as A } from "./proxy-CuuSsVoC.js";
|
|
2
|
+
import { i as j, r as M } from "./extension-CgXBc_iM.js";
|
|
3
3
|
export { b as ATTACH_FRAME_EVENT_KEY, C as assertAttachableFrameUrl, i as assertFetchableUrl, D as assertLockdownApplicable, _ as attachFrame, w as attachFramePermission, M as available, p as box, O as cookies, E as createFrame, A as createVideoElementHandle, u as events, u as extension, r as fetch, d as fetchCredentialedPermission, S as fetchLocalPermission, e as fetchPermission, v as gotoPermission, c as handleRevivableModules, x as isBlockedFetchUrl, y as isBlockedFrameUrl, f as isExtensionExposed, l as isLocalNetworkUrl, t as isType, k as modifyRequestHeadersPermission, T as permissions, j as promptInstall, h as readCookiePermission, m as removeRequestHeaderRule, g as revive, a as setMissingExtensionHandler, n as setRequestHeaderRule, o as type, s as waitForExtensionExposure };
|
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-Bo-8GoRU.cjs"),t=require("./api-DD5v1qP9.cjs"),n=require("./cloud-Gs4fvw2S.cjs"),r=require("./dns.cjs"),i=require("./net-BPpdNdpy.cjs"),a=require("./dgram-DcvdNkg6.cjs"),o=require("./http.cjs"),s=require("./extension-BeARgX1g.cjs"),c=require("./desktop.cjs"),l=require("./fs-BN4hkppN.cjs"),u=require("./opfs.cjs"),d=require("./packages.cjs"),f=require("./account.cjs"),p=require("./connect-button-BBEjXzB3.cjs");let m=require("osra");var h=1e4,g=150,_=()=>new Promise(t=>{if(e.P())return t(!0);let n,r=setTimeout(()=>i(e.P()),h),i=e=>{clearTimeout(n),clearTimeout(r),o.disconnect(),document.removeEventListener(`readystatechange`,s),t(e)},a=()=>{clearTimeout(n),n=setTimeout(()=>i(e.P()),g)},o=new MutationObserver(()=>{e.P()&&i(!0)}),s=()=>{document.readyState===`complete`&&!e.P()&&a()};o.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-fkn-extension`]}),document.addEventListener(`readystatechange`,s),document.readyState===`complete`&&a()}),v=async t=>s.r()||t.lockdown||!n.a()||await _()?e.a(t):n.i(t),y=`https://fkn.app`,b=(e,n)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!t.r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,m.relay)({receive:window,emit:t.r.contentWindow},e,{key:`fkn-api`,originA:n?.originA??y,originB:n?.originB??`*`,unregisterSignal:n?.unregisterSignal})},x=async()=>typeof window>`u`?!1:(await t.t).connect.prompt(location.origin).catch(()=>!1);exports.ATTACH_FRAME_EVENT_KEY=e.i,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return f.t}}),exports.assertAttachableFrameUrl=e.l,exports.assertFetchableUrl=e.E,exports.assertLockdownApplicable=e.u,exports.attachFrame=v,exports.attachFramePermission=e.o,exports.box=e.R,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return n.n}}),exports.connect=x,exports.connectButtonUrl=p.t,exports.cookies=e.w,exports.createFrame=e.s,exports.createVideoElementHandle=e.z,Object.defineProperty(exports,"desktop",{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"extension",{enumerable:!0,get:function(){return s.t}}),exports.fetch=s.n,exports.fetchCredentialedPermission=e.O,exports.fetchLocalPermission=e.k,exports.fetchPermission=e.A,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return l.c}}),exports.gotoPermission=e.c,exports.handleRevivableModules=e.L,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),exports.isBlockedFetchUrl=e.j,exports.isBlockedFrameUrl=e.d,exports.isExtensionExposed=e.P,exports.isLocalNetworkUrl=e.M,exports.isType=e.B,exports.modifyRequestHeadersPermission=e.x,Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),Object.defineProperty(exports,"opfs",{enumerable:!0,get:function(){return u.t}}),Object.defineProperty(exports,"packages",{enumerable:!0,get:function(){return d.t}}),exports.permissions=e.r,exports.promptInstall=s.i,exports.readCookiePermission=e.T,exports.relayWorker=b,exports.removeRequestHeaderRule=e.S,exports.revive=e.V,exports.setMissingExtensionHandler=e.F,exports.setRequestHeaderRule=e.C,exports.type=e.H,exports.waitForExtensionExposure=e.I;
|
package/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as e, B as t, C as n, E as r, F as i, H as a, I as o, L as s, M as c, O as l, P as u, R as d, S as f, T as p, V as m, a as h, c as g, d as _, i as v, j as y, k as b, l as x, o as S, r as C, s as w, u as T, w as E, x as D, z as O } from "./proxy-
|
|
1
|
+
import { A as e, B as t, C as n, E as r, F as i, H as a, I as o, L as s, M as c, O as l, P as u, R as d, S as f, T as p, V as m, a as h, c as g, d as _, i as v, j as y, k as b, l as x, o as S, r as C, s as w, u as T, w as E, x as D, z as O } from "./proxy-CuuSsVoC.js";
|
|
2
2
|
import { r as k, t as ee } from "./api--bnCFd4w.js";
|
|
3
|
-
import { a as A, i as j, n as M } from "./cloud-
|
|
3
|
+
import { a as A, i as j, n as M } from "./cloud-C-QB3sIK.js";
|
|
4
4
|
import { t as N } from "./dns.js";
|
|
5
5
|
import { s as P } from "./net-BFYMbE4N.js";
|
|
6
6
|
import { i as F } from "./dgram-CKRbKVzG.js";
|
|
7
7
|
import { t as I } from "./http.js";
|
|
8
|
-
import { i as L, n as R, r as z, t as B } from "./extension-
|
|
8
|
+
import { i as L, n as R, r as z, t as B } from "./extension-CgXBc_iM.js";
|
|
9
9
|
import { t as V } from "./desktop.js";
|
|
10
10
|
import { c as H } from "./fs-7E0-tE2x.js";
|
|
11
11
|
import { t as U } from "./opfs.js";
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./api-DD5v1qP9.cjs");let n=require("osra");var r=(e,t)=>{let n=new EventTarget,r=new Map,i=EventTarget.prototype.addEventListener.bind(n),a=EventTarget.prototype.removeEventListener.bind(n);return Object.defineProperty(n,"addEventListener",{configurable:!0,value:(a,o,s)=>{if(o!==null){if(!r.has(a)){let i=r=>{n.dispatchEvent(new CustomEvent(a,{detail:t(r,e),bubbles:r.bubbles,cancelable:r.cancelable,composed:r.composed}))};e.addEventListener(a,i),r.set(a,i)}i(a,o,s)}}}),Object.defineProperty(n,"removeEventListener",{configurable:!0,value:(t,n,i)=>{if(n===null)return;a(t,n,i);let o=r.get(t);o&&(e.removeEventListener(t,o),r.delete(t))}}),n},i=e=>typeof e==`boolean`?+!!e:+!!e?.capture,a=e=>{let t=new WeakMap;return{addEventListener:(n,r,a)=>{if(r===null)return;let o=`${n}|${i(a)}`,s=t.get(r);if(s||(s=new Map,t.set(r,s)),s.has(o))return;let c=typeof a==`object`&&!!a&&!!a.once,l=t=>{c&&s.delete(o);let i=e.unenrich(t,n);typeof r==`function`?r.call(e.target,i):r.handleEvent(i)};s.set(o,l),e.remoteEvents.addEventListener(n,l,a)},removeEventListener:(n,r,a)=>{if(r===null)return;let o=`${n}|${i(a)}`,s=t.get(r),c=s?.get(o);c&&(e.remoteEvents.removeEventListener(n,c,a),s.delete(o))},dispatchEvent:t=>e.remoteEvents.dispatchEvent(t)}},o=e.n({box:()=>w,createVideoElementHandle:()=>S,isType:()=>C,revive:()=>T,type:()=>s}),s=`videoElement`,c=[`currentTime`,`volume`,`muted`,`playbackRate`,`src`,`loop`,`autoplay`,`preload`,`poster`,`disableRemotePlayback`],l=[`duration`,`paused`,`ended`,`seeking`,`readyState`,`currentSrc`],u=[`buffered`,`seekable`],d=Symbol.for(`fkn.remoteVideoElement`),f=Symbol.for(`fkn.remoteVideoElement.state`),p=Symbol.for(`fkn.remoteVideoElement.controller`),m=e=>e?Array.from({length:e.length},(t,n)=>[e.start(n),e.end(n)]):[],h=e=>{let t={};for(let n of[...c,...l])t[n]=e[n];for(let n of u)t[n]=m(e[n]);return t.error=e.error?{code:e.error.code,message:e.error.message}:null,t},g=e=>{let t=t=>{if(!Number.isInteger(t)||t<0||t>=e.length)throw new DOMException(`Index or size is negative or greater than the allowed amount`,`IndexSizeError`)};return{get length(){return e.length},start(n){return t(n),e[n][0]},end(n){return t(n),e[n][1]}}},_=e=>e?{code:e.code,message:e.message,MEDIA_ERR_ABORTED:1,MEDIA_ERR_NETWORK:2,MEDIA_ERR_DECODE:3,MEDIA_ERR_SRC_NOT_SUPPORTED:4}:null,v=e=>r(e,(e,t)=>({originalDetail:e instanceof CustomEvent?e.detail:null,snapshot:h(t)})),y=async(e,t)=>{switch(t){case`play`:return await e.play(),null;case`pause`:return e.pause(),null;case`load`:return e.load(),null;case`requestPictureInPicture`:if(typeof e.requestPictureInPicture!=`function`)throw Error(`requestPictureInPicture is not supported in this environment`);return await e.requestPictureInPicture(),null;case`exitPictureInPicture`:{let t=e.ownerDocument;if(typeof t?.exitPictureInPicture!=`function`)throw Error(`exitPictureInPicture is not supported in this environment`);return await t.exitPictureInPicture(),null}default:throw Error(`videoElement: unknown method "${t}"`)}},b=e=>({call:async t=>y(e,t),set:async(t,n)=>{try{e[t]=n}catch{}return h(e)},events:v(e)}),x=(e,t)=>{let n=new EventTarget;Object.defineProperty(n,d,{value:!0}),Object.defineProperty(n,f,{value:e}),Object.defineProperty(n,p,{value:t});let r=a({target:n,remoteEvents:t.events,unenrich:(t,n)=>{if(!(t instanceof CustomEvent))return t;let r=t.detail;if(!r||!(`snapshot`in r))return t;Object.assign(e,r.snapshot);let i={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed};return r.originalDetail===null?new Event(n,i):new CustomEvent(n,{...i,detail:r.originalDetail})}}),i={addEventListener:{configurable:!0,value:r.addEventListener},removeEventListener:{configurable:!0,value:r.removeEventListener},dispatchEvent:{configurable:!0,value:r.dispatchEvent},error:{configurable:!0,enumerable:!0,get(){return _(e.error)}},play:{configurable:!0,value:()=>t.call(`play`,[])},pause:{configurable:!0,value:()=>{t.call(`pause`,[]).catch(()=>{})}},load:{configurable:!0,value:()=>{t.call(`load`,[]).catch(()=>{})}},requestPictureInPicture:{configurable:!0,value:()=>t.call(`requestPictureInPicture`,[])},exitPictureInPicture:{configurable:!0,value:()=>t.call(`exitPictureInPicture`,[])},HAVE_FUTURE_DATA:{enumerable:!0,value:3},HAVE_ENOUGH_DATA:{enumerable:!0,value:4}};for(let n of c)i[n]={configurable:!0,enumerable:!0,get(){return e[n]},set(r){e[n]=r,t.set(n,r).then(t=>{Object.assign(e,t)},()=>{})}};for(let t of l)i[t]={configurable:!0,enumerable:!0,get(){return e[t]}};for(let t of u)i[t]={configurable:!0,enumerable:!0,get(){return g(e[t])}};return Object.defineProperties(n,i),n},S=e=>x(h(e),b(e)),C=e=>typeof e==`object`&&!!e&&e[d]===!0,w=(e,t)=>{let r=e;return{...n.BoxBase,type:s,initialState:r[f],controller:(0,n.recursiveBox)(r[p],t)}},T=(e,t)=>{let r=(0,n.recursiveRevive)(e.controller,t);return x({...e.initialState},r)},E=e=>[o,...e],ee=`FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY`,te=`fknExtension`,D=(0,n.createTypedEventTarget)();typeof document<`u`&&document.addEventListener(ee,()=>{D.dispatchEvent(new CustomEvent(`statuschange`,{detail:{enabled:O()}}))});var O=()=>typeof document>`u`?!1:document.documentElement.dataset[te]===`true`,k=null,ne=e=>{k=e},re=150,A=(e=1e3)=>new Promise((t,n)=>{if(O())return t();let r,i=e=>{clearTimeout(r),s.disconnect(),document.removeEventListener(`readystatechange`,c),e()},a=()=>i(async()=>{if(k&&(await k().catch(()=>{}),O()))return t();n(Error(`The FKN WebExtension is not installed, enabled or not exposed on this page.`))}),o=()=>{clearTimeout(r),r=setTimeout(()=>O()?i(t):a(),re)},s=new MutationObserver(()=>{O()&&i(t)}),c=()=>{document.readyState===`complete`&&!O()&&o()};if(r=setTimeout(a,e),s.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-fkn-extension`]}),document.addEventListener(`readystatechange`,c),document.readyState===`complete`)return o();O()&&i(t)}),j,M=new Proxy({},{get:(e,t)=>async(...e)=>{await A(),j??=(0,n.expose)({},{transport:window,revivableModules:E});let r=(await j)[t];return r(...e)}}),ie={scope:`network.fetch`,category:`network`,severity:0,title:`Fetch data from other sites`,description:`Lets the app download public data from other websites directly, past the usual cross-origin limits.`},ae={scope:`network.fetchCredentialed`,category:`network`,severity:3,unsafe:!0,title:`Fetch from other sites, signed in as you`,description:`Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see.`},oe={scope:`network.fetchLocal`,category:`network`,severity:3,unsafe:!0,title:`Access devices on your local network`,description:`Lets the app reach devices and services on your home or work network, which websites normally cannot touch.`},se=e=>{let t=e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);if(!t)return!1;let[n,r]=[Number(t[1]),Number(t[2])];return n===10||n===127||n===0||n===169&&r===254||n===172&&r>=16&&r<=31||n===192&&r===168},ce=e=>{let t;try{t=new URL(e)}catch{return!1}let n=t.hostname.replace(/^\[|\]$/g,``).toLowerCase().replace(/\.$/,``);return n===`localhost`||n.endsWith(`.localhost`)||n.endsWith(`.local`)||n.endsWith(`.internal`)||n.endsWith(`.home.arpa`)?!0:n.includes(`:`)?n===`::`||n===`::1`||n.startsWith(`fc`)||n.startsWith(`fd`)||/^fe[89ab]/.test(n)||n.startsWith(`::ffff:`):se(n)},le=[`fkn.app`,`fkn.dev`],ue=e=>{let t;try{t=new URL(e)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;let n=t.hostname;return le.some(e=>n===e||n.endsWith(`.${e}`))},de=e=>{if(ue(e))throw Error(`fetch: refusing to target the extension's own pages or FKN platform domains`)},fe=[`origin`,`referer`],pe=e=>{if(!e?.headers)return;let t=new Headers(e.headers),n=fe.map(e=>{let n=t.get(e);return n===null?void 0:[e,n]}).filter(e=>e!==void 0);return n.length?n:void 0},me=async(e,t)=>{let n=new Request(e,t);de(n.url);let r=n.body?await n.arrayBuffer():null;return M.proxyFetch({url:n.url,method:n.method,headers:[...n.headers],body:r,credentials:t?.credentials===`include`?`include`:`omit`,redirect:n.redirect,unsafeHeaders:pe(t),reason:t?.reason,signal:t?.signal??void 0})},he={scope:`network.readCookie`,category:`network`,severity:3,unsafe:!0,title:`Read a site’s cookie`,description:`Lets the app read a named cookie from another site, which can include the login token only that site should see.`},ge={get:e=>M.getCookie(e)},_e={scope:`network.modifyRequestHeaders`,category:`network`,severity:2,unsafe:!0,title:`Rewrite request headers to other sites`,description:`Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites.`},ve=e=>M.setRequestHeaderRule(e),ye=e=>M.removeRequestHeaderRule({ruleId:e}),N=e=>typeof e==`object`&&!!e,be=`PermissionDeniedError`,xe=e=>e instanceof Error?e.name===be:N(e)&&e.name===`PermissionDeniedError`,P=`LocatorUnsupportedError`,Se=(e,t)=>Object.assign(Error(`Locator operation not supported${t?` on the ${t} backend`:``}: ${e}`),{name:P,operation:e,backend:t}),Ce=e=>e instanceof Error?e.name===P:typeof e==`object`&&!!e&&e.name===`LocatorUnsupportedError`,we=3e4,Te=50,Ee=e=>{let t=e[e.length-1];return typeof t==`object`&&t?t:void 0},De=e=>{let t=Ee(e)?.timeout;return typeof t==`number`?t:we},Oe=async(e,t,n,r,i)=>{i&&await i(t,n,r);let a=e,o=De(r),s=Date.now()+o,c=Error(`Locator timeout (${o}ms): ${n}`),{promise:l,reject:u}=Promise.withResolvers(),d=setTimeout(()=>u(c),o),f=c;try{for(;Date.now()<s;)try{return await Promise.race([a(t,n,r),l])}catch(e){if(e===c)break;if(xe(e)||Ce(e))throw e;f=e;let t=s-Date.now();if(t<=0)break;await new Promise(e=>setTimeout(e,Math.min(Te,t)))}}finally{clearTimeout(d)}throw f},F=e.n({render:()=>je,resolve:()=>Ae,type:()=>ke}),ke=`locator`,Ae=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(t)]),je=e=>({fragment:typeof e==`string`?e:`?`,separator:`descend`}),Me=`FKN_WEB_EXTENSION_FRAME_ANNOUNCE_REQUEST_KEY`,Ne=typeof chrome<`u`&&!!chrome.runtime?.id,Pe=e=>N(e)&&e.FKN_WEB_EXTENSION_FRAME_ANNOUNCE_KEY===!0&&typeof e.frameId==`string`,I=new WeakMap,L=new WeakMap,R=new Set,Fe=e=>(R.add(e),()=>R.delete(e));typeof window<`u`&&Ne&&window.addEventListener(`message`,e=>{if(!Pe(e.data))return;e.stopImmediatePropagation();let t=e.source;if(!t||typeof t!=`object`)return;let n=t,r=I.get(n),i=e.data.frameId;if(I.set(n,i),r)for(let e of R)e(r);let a=L.get(n);if(a){L.delete(n);for(let e of a)e(i)}},{capture:!0});var Ie=e=>{let t=e.contentWindow;if(!t)return Promise.reject(Error(`frameLocator: <iframe> has no contentWindow`));let n=I.get(t);return n?Promise.resolve(n):new Promise(e=>{let n=L.get(t)??[];n.push(e),L.set(t,n),t.postMessage({[Me]:!0},`*`)})},z=e.n({render:()=>Be,resolve:()=>Re,resolvePeer:()=>ze,type:()=>Le}),Le=`frameLocator`,Re=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(t)]).filter(e=>e instanceof HTMLIFrameElement),ze=async({parts:e,selfIndex:t,resolveLocal:n})=>{let r=n(e.slice(0,t+1))[0];if(!r)throw Error(`frameLocator: no <iframe> matched`);if(!(r instanceof HTMLIFrameElement))throw Error(`frameLocator: expected <iframe>, got <${r.tagName.toLowerCase()}>`);return Ie(r)},Be=e=>({fragment:typeof e==`string`?e:`?`,separator:`frame-down`}),Ve=e.n({render:()=>Ge,resolve:()=>Ue,resolvePeer:()=>We,type:()=>He}),He=`owner`,Ue=e=>{throw Error(`owner: must be processed by the executor as an upward pivot`)},We=async()=>{let{backgroundResolvers:e}=await Promise.resolve().then(()=>require("./background-Bu7dBd_Z.cjs")),t=await(await e).getParentFrameId();if(!t)throw Error(`owner: already at top frame`);return t},Ge=()=>({fragment:``,separator:`frame-up`}),Ke=class extends Error{reason;filename;line;column;source;constructor(e,t,n,r,i){super(`${e}:${n}:${r}: ${t}`),this.reason=t,this.filename=e,this.line=n,this.column=r,this.source=i}},qe=class{start;end;source;constructor(e,t,n){this.start=e,this.end=t,this.source=n}},B;(function(e){e.stylesheet=`stylesheet`,e.rule=`rule`,e.declaration=`declaration`,e.comment=`comment`,e.atRule=`at-rule`,e.container=`container`,e.charset=`charset`,e.counterStyle=`counter-style`,e.document=`document`,e.customMedia=`custom-media`,e.fontFace=`font-face`,e.fontFeatureValues=`font-feature-values`,e.host=`host`,e.import=`import`,e.keyframes=`keyframes`,e.keyframe=`keyframe`,e.layer=`layer`,e.media=`media`,e.namespace=`namespace`,e.page=`page`,e.pageMarginBox=`page-margin-box`,e.positionTry=`position-try`,e.property=`property`,e.scope=`scope`,e.startingStyle=`starting-style`,e.supports=`supports`,e.viewTransition=`view-transition`})(B||={});var V=(e,t,n)=>{let r=n,i=1e4;do{let n=t.map(t=>e.indexOf(t,r));n.push(e.indexOf(`\\`,r));let a=n.filter(e=>e!==-1);if(a.length===0)return-1;let o=Math.min(...a);if(e[o]!==`\\`)return o;r=o+2,i--}while(i>0);throw Error(`Too many escaping`)},H=(e,t,n)=>{let r=n,i=1e4;do{let n=t.map(t=>e.indexOf(t,r));n.push(e.indexOf(`(`,r)),n.push(e.indexOf(`"`,r)),n.push(e.indexOf(`'`,r)),n.push(e.indexOf(`\\`,r));let a=n.filter(e=>e!==-1);if(a.length===0)return-1;let o=Math.min(...a);switch(e[o]){case`\\`:r=o+2;break;case`(`:{let t=H(e,[`)`],o+1);if(t===-1)return-1;r=t+1}break;case`"`:{let t=V(e,[`"`],o+1);if(t===-1)return-1;r=t+1}break;case`'`:{let t=V(e,[`'`],o+1);if(t===-1)return-1;r=t+1}break;default:return o}i--}while(i>0);throw Error(`Too many escaping`)},U=/\/\*[^]*?(?:\*\/|$)/g;function W(e){return e?e.trim():``}function G(e,t){let n=e&&typeof e.type==`string`,r=n?e:t;for(let t in e){let n=e[t];Array.isArray(n)?n.forEach(e=>{G(e,r)}):n&&typeof n==`object`&&G(n,r)}return n&&Object.defineProperty(e,"parent",{configurable:!0,writable:!0,enumerable:!1,value:t||null}),e}var Je=class{level=0;indentation=` `;compress=!1;constructor(e){typeof e?.indent==`string`&&(this.indentation=e?.indent),e?.compress&&(this.compress=!0)}emit(e,t){return e}indent(e){return this.level=this.level||1,e?(this.level+=e,``):Array(this.level).join(this.indentation)}visit(e){switch(e.type){case B.stylesheet:return this.stylesheet(e);case B.rule:return this.rule(e);case B.declaration:return this.declaration(e);case B.comment:return this.comment(e);case B.container:return this.container(e);case B.charset:return this.charset(e);case B.counterStyle:return this.counterStyle(e);case B.document:return this.document(e);case B.customMedia:return this.customMedia(e);case B.fontFace:return this.fontFace(e);case B.fontFeatureValues:return this.fontFeatureValues(e);case B.host:return this.host(e);case B.import:return this.import(e);case B.keyframes:return this.keyframes(e);case B.keyframe:return this.keyframe(e);case B.layer:return this.layer(e);case B.media:return this.media(e);case B.namespace:return this.namespace(e);case B.page:return this.page(e);case B.pageMarginBox:return this.pageMarginBox(e);case B.positionTry:return this.positionTry(e);case B.property:return this.property(e);case B.scope:return this.scope(e);case B.startingStyle:return this.startingStyle(e);case B.supports:return this.supports(e);case B.viewTransition:return this.viewTransition(e);case B.atRule:return this.genericAtRule(e)}}mapVisit(e,t){let n=``;t||=``;for(let r=0,i=e.length;r<i;r++)n+=this.visit(e[r]),t&&r<i-1&&(n+=this.emit(t));return n}compile(e){return this.compress?e.stylesheet.rules.map(this.visit,this).join(``):this.stylesheet(e)}stylesheet(e){return this.mapVisit(e.stylesheet.rules,`
|
|
1
|
+
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./api-DD5v1qP9.cjs");let n=require("osra");var r=(e,t)=>{let n=new EventTarget,r=new Map,i=EventTarget.prototype.addEventListener.bind(n),a=EventTarget.prototype.removeEventListener.bind(n);return Object.defineProperty(n,"addEventListener",{configurable:!0,value:(a,o,s)=>{if(o!==null){if(!r.has(a)){let i=r=>{n.dispatchEvent(new CustomEvent(a,{detail:t(r,e),bubbles:r.bubbles,cancelable:r.cancelable,composed:r.composed}))};e.addEventListener(a,i),r.set(a,i)}i(a,o,s)}}}),Object.defineProperty(n,"removeEventListener",{configurable:!0,value:(t,n,i)=>{if(n===null)return;a(t,n,i);let o=r.get(t);o&&(e.removeEventListener(t,o),r.delete(t))}}),n},i=e=>typeof e==`boolean`?+!!e:+!!e?.capture,a=e=>{let t=new WeakMap;return{addEventListener:(n,r,a)=>{if(r===null)return;let o=`${n}|${i(a)}`,s=t.get(r);if(s||(s=new Map,t.set(r,s)),s.has(o))return;let c=typeof a==`object`&&!!a&&!!a.once,l=t=>{c&&s.delete(o);let i=e.unenrich(t,n);typeof r==`function`?r.call(e.target,i):r.handleEvent(i)};s.set(o,l),e.remoteEvents.addEventListener(n,l,a)},removeEventListener:(n,r,a)=>{if(r===null)return;let o=`${n}|${i(a)}`,s=t.get(r),c=s?.get(o);c&&(e.remoteEvents.removeEventListener(n,c,a),s.delete(o))},dispatchEvent:t=>e.remoteEvents.dispatchEvent(t)}},o=e.n({box:()=>w,createVideoElementHandle:()=>S,isType:()=>C,revive:()=>T,type:()=>s}),s=`videoElement`,c=[`currentTime`,`volume`,`muted`,`playbackRate`,`src`,`loop`,`autoplay`,`preload`,`poster`,`disableRemotePlayback`],l=[`duration`,`paused`,`ended`,`seeking`,`readyState`,`currentSrc`],u=[`buffered`,`seekable`],d=Symbol.for(`fkn.remoteVideoElement`),f=Symbol.for(`fkn.remoteVideoElement.state`),p=Symbol.for(`fkn.remoteVideoElement.controller`),m=e=>e?Array.from({length:e.length},(t,n)=>[e.start(n),e.end(n)]):[],h=e=>{let t={};for(let n of[...c,...l])t[n]=e[n];for(let n of u)t[n]=m(e[n]);return t.error=e.error?{code:e.error.code,message:e.error.message}:null,t},g=e=>{let t=t=>{if(!Number.isInteger(t)||t<0||t>=e.length)throw new DOMException(`Index or size is negative or greater than the allowed amount`,`IndexSizeError`)};return{get length(){return e.length},start(n){return t(n),e[n][0]},end(n){return t(n),e[n][1]}}},_=e=>e?{code:e.code,message:e.message,MEDIA_ERR_ABORTED:1,MEDIA_ERR_NETWORK:2,MEDIA_ERR_DECODE:3,MEDIA_ERR_SRC_NOT_SUPPORTED:4}:null,v=e=>r(e,(e,t)=>({originalDetail:e instanceof CustomEvent?e.detail:null,snapshot:h(t)})),y=async(e,t)=>{switch(t){case`play`:return await e.play(),null;case`pause`:return e.pause(),null;case`load`:return e.load(),null;case`requestPictureInPicture`:if(typeof e.requestPictureInPicture!=`function`)throw Error(`requestPictureInPicture is not supported in this environment`);return await e.requestPictureInPicture(),null;case`exitPictureInPicture`:{let t=e.ownerDocument;if(typeof t?.exitPictureInPicture!=`function`)throw Error(`exitPictureInPicture is not supported in this environment`);return await t.exitPictureInPicture(),null}default:throw Error(`videoElement: unknown method "${t}"`)}},b=e=>({call:async t=>y(e,t),set:async(t,n)=>{try{e[t]=n}catch{}return h(e)},events:v(e)}),x=(e,t)=>{let n=new EventTarget;Object.defineProperty(n,d,{value:!0}),Object.defineProperty(n,f,{value:e}),Object.defineProperty(n,p,{value:t});let r=a({target:n,remoteEvents:t.events,unenrich:(t,n)=>{if(!(t instanceof CustomEvent))return t;let r=t.detail;if(!r||!(`snapshot`in r))return t;Object.assign(e,r.snapshot);let i={bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed};return r.originalDetail===null?new Event(n,i):new CustomEvent(n,{...i,detail:r.originalDetail})}}),i={addEventListener:{configurable:!0,value:r.addEventListener},removeEventListener:{configurable:!0,value:r.removeEventListener},dispatchEvent:{configurable:!0,value:r.dispatchEvent},error:{configurable:!0,enumerable:!0,get(){return _(e.error)}},play:{configurable:!0,value:()=>t.call(`play`,[])},pause:{configurable:!0,value:()=>{t.call(`pause`,[]).catch(()=>{})}},load:{configurable:!0,value:()=>{t.call(`load`,[]).catch(()=>{})}},requestPictureInPicture:{configurable:!0,value:()=>t.call(`requestPictureInPicture`,[])},exitPictureInPicture:{configurable:!0,value:()=>t.call(`exitPictureInPicture`,[])},HAVE_FUTURE_DATA:{enumerable:!0,value:3},HAVE_ENOUGH_DATA:{enumerable:!0,value:4}};for(let n of c)i[n]={configurable:!0,enumerable:!0,get(){return e[n]},set(r){e[n]=r,t.set(n,r).then(t=>{Object.assign(e,t)},()=>{})}};for(let t of l)i[t]={configurable:!0,enumerable:!0,get(){return e[t]}};for(let t of u)i[t]={configurable:!0,enumerable:!0,get(){return g(e[t])}};return Object.defineProperties(n,i),n},S=e=>x(h(e),b(e)),C=e=>typeof e==`object`&&!!e&&e[d]===!0,w=(e,t)=>{let r=e;return{...n.BoxBase,type:s,initialState:r[f],controller:(0,n.recursiveBox)(r[p],t)}},T=(e,t)=>{let r=(0,n.recursiveRevive)(e.controller,t);return x({...e.initialState},r)},E=e=>[o,...e],ee=`FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY`,te=`fknExtension`,D=(0,n.createTypedEventTarget)();typeof document<`u`&&document.addEventListener(ee,()=>{D.dispatchEvent(new CustomEvent(`statuschange`,{detail:{enabled:O()}}))});var O=()=>typeof document>`u`?!1:document.documentElement.dataset[te]===`true`,k=null,ne=e=>{k=e},re=150,A=(e=1e3)=>new Promise((t,n)=>{if(O())return t();let r,i=e=>{clearTimeout(r),s.disconnect(),document.removeEventListener(`readystatechange`,c),e()},a=()=>i(async()=>{if(k&&(await k().catch(()=>{}),O()))return t();n(Error(`The FKN WebExtension is not installed, enabled or not exposed on this page.`))}),o=()=>{clearTimeout(r),r=setTimeout(()=>O()?i(t):a(),re)},s=new MutationObserver(()=>{O()&&i(t)}),c=()=>{document.readyState===`complete`&&!O()&&o()};if(r=setTimeout(a,e),s.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-fkn-extension`]}),document.addEventListener(`readystatechange`,c),document.readyState===`complete`)return o();O()&&i(t)}),j,M=new Proxy({},{get:(e,t)=>async(...e)=>{await A(),j??=(0,n.expose)({},{transport:window,revivableModules:E});let r=(await j)[t];return r(...e)}}),ie={scope:`network.fetch`,category:`network`,severity:0,title:`Fetch data from other sites`,description:`Lets the app download public data from other websites directly, past the usual cross-origin limits.`},ae={scope:`network.fetchCredentialed`,category:`network`,severity:3,unsafe:!0,title:`Fetch from other sites, signed in as you`,description:`Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see.`},oe={scope:`network.fetchLocal`,category:`network`,severity:3,unsafe:!0,title:`Access devices on your local network`,description:`Lets the app reach devices and services on your home or work network, which websites normally cannot touch.`},se=e=>{let t=e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);if(!t)return!1;let[n,r]=[Number(t[1]),Number(t[2])];return n===10||n===127||n===0||n===169&&r===254||n===172&&r>=16&&r<=31||n===192&&r===168},ce=e=>{let t;try{t=new URL(e)}catch{return!1}let n=t.hostname.replace(/^\[|\]$/g,``).toLowerCase().replace(/\.$/,``);return n===`localhost`||n.endsWith(`.localhost`)||n.endsWith(`.local`)||n.endsWith(`.internal`)||n.endsWith(`.home.arpa`)?!0:n.includes(`:`)?n===`::`||n===`::1`||n.startsWith(`fc`)||n.startsWith(`fd`)||/^fe[89ab]/.test(n)||n.startsWith(`::ffff:`):se(n)},le=[`fkn.app`,`fkn.dev`],ue=e=>{let t;try{t=new URL(e)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;let n=t.hostname;return le.some(e=>n===e||n.endsWith(`.${e}`))},de=e=>{if(ue(e))throw Error(`fetch: refusing to target the extension's own pages or FKN platform domains`)},fe=[`origin`,`referer`],pe=e=>{if(!e?.headers)return;let t=new Headers(e.headers),n=fe.map(e=>{let n=t.get(e);return n===null?void 0:[e,n]}).filter(e=>e!==void 0);return n.length?n:void 0},me=async(e,t)=>{let n=new Request(e,t);de(n.url);let r=n.body?await n.arrayBuffer():null;return M.proxyFetch({url:n.url,method:n.method,headers:[...n.headers],body:r,credentials:t?.credentials===`include`?`include`:`omit`,redirect:n.redirect,unsafeHeaders:pe(t),reason:t?.reason,signal:t?.signal??void 0})},he={scope:`network.readCookie`,category:`network`,severity:3,unsafe:!0,title:`Read a site’s cookie`,description:`Lets the app read a named cookie from another site, which can include the login token only that site should see.`},ge={get:e=>M.getCookie(e)},_e={scope:`network.modifyRequestHeaders`,category:`network`,severity:2,unsafe:!0,title:`Rewrite request headers to other sites`,description:`Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites.`},ve=e=>M.setRequestHeaderRule(e),ye=e=>M.removeRequestHeaderRule({ruleId:e}),N=e=>typeof e==`object`&&!!e,be=`PermissionDeniedError`,xe=e=>e instanceof Error?e.name===be:N(e)&&e.name===`PermissionDeniedError`,P=`LocatorUnsupportedError`,Se=(e,t)=>Object.assign(Error(`Locator operation not supported${t?` on the ${t} backend`:``}: ${e}`),{name:P,operation:e,backend:t}),Ce=e=>e instanceof Error?e.name===P:typeof e==`object`&&!!e&&e.name===`LocatorUnsupportedError`,we=3e4,Te=50,Ee=e=>{let t=e[e.length-1];return typeof t==`object`&&t?t:void 0},De=e=>{let t=Ee(e)?.timeout;return typeof t==`number`?t:we},Oe=async(e,t,n,r,i)=>{i&&await i(t,n,r);let a=e,o=De(r),s=Date.now()+o,c=Error(`Locator timeout (${o}ms): ${n}`),{promise:l,reject:u}=Promise.withResolvers(),d=setTimeout(()=>u(c),o),f=c;try{for(;Date.now()<s;)try{return await Promise.race([a(t,n,r),l])}catch(e){if(e===c)break;if(xe(e)||Ce(e))throw e;f=e;let t=s-Date.now();if(t<=0)break;await new Promise(e=>setTimeout(e,Math.min(Te,t)))}}finally{clearTimeout(d)}throw f},F=e.n({render:()=>je,resolve:()=>Ae,type:()=>ke}),ke=`locator`,Ae=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(t)]),je=e=>({fragment:typeof e==`string`?e:`?`,separator:`descend`}),Me=`FKN_WEB_EXTENSION_FRAME_ANNOUNCE_REQUEST_KEY`,Ne=typeof chrome<`u`&&!!chrome.runtime?.id,Pe=e=>N(e)&&e.FKN_WEB_EXTENSION_FRAME_ANNOUNCE_KEY===!0&&typeof e.frameId==`string`,I=new WeakMap,L=new WeakMap,R=new Set,Fe=e=>(R.add(e),()=>R.delete(e));typeof window<`u`&&Ne&&window.addEventListener(`message`,e=>{if(!Pe(e.data))return;e.stopImmediatePropagation();let t=e.source;if(!t||typeof t!=`object`)return;let n=t,r=I.get(n),i=e.data.frameId;if(I.set(n,i),r)for(let e of R)e(r);let a=L.get(n);if(a){L.delete(n);for(let e of a)e(i)}},{capture:!0});var Ie=e=>{let t=e.contentWindow;if(!t)return Promise.reject(Error(`frameLocator: <iframe> has no contentWindow`));let n=I.get(t);return n?Promise.resolve(n):new Promise(e=>{let n=L.get(t)??[];n.push(e),L.set(t,n),t.postMessage({[Me]:!0},`*`)})},z=e.n({render:()=>Be,resolve:()=>Re,resolvePeer:()=>ze,type:()=>Le}),Le=`frameLocator`,Re=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(t)]).filter(e=>e instanceof HTMLIFrameElement),ze=async({parts:e,selfIndex:t,resolveLocal:n})=>{let r=n(e.slice(0,t+1))[0];if(!r)throw Error(`frameLocator: no <iframe> matched`);if(!(r instanceof HTMLIFrameElement))throw Error(`frameLocator: expected <iframe>, got <${r.tagName.toLowerCase()}>`);return Ie(r)},Be=e=>({fragment:typeof e==`string`?e:`?`,separator:`frame-down`}),Ve=e.n({render:()=>Ge,resolve:()=>Ue,resolvePeer:()=>We,type:()=>He}),He=`owner`,Ue=e=>{throw Error(`owner: must be processed by the executor as an upward pivot`)},We=async()=>{let{backgroundResolvers:e}=await Promise.resolve().then(()=>require("./background-Bgznrosz.cjs")),t=await(await e).getParentFrameId();if(!t)throw Error(`owner: already at top frame`);return t},Ge=()=>({fragment:``,separator:`frame-up`}),Ke=class extends Error{reason;filename;line;column;source;constructor(e,t,n,r,i){super(`${e}:${n}:${r}: ${t}`),this.reason=t,this.filename=e,this.line=n,this.column=r,this.source=i}},qe=class{start;end;source;constructor(e,t,n){this.start=e,this.end=t,this.source=n}},B;(function(e){e.stylesheet=`stylesheet`,e.rule=`rule`,e.declaration=`declaration`,e.comment=`comment`,e.atRule=`at-rule`,e.container=`container`,e.charset=`charset`,e.counterStyle=`counter-style`,e.document=`document`,e.customMedia=`custom-media`,e.fontFace=`font-face`,e.fontFeatureValues=`font-feature-values`,e.host=`host`,e.import=`import`,e.keyframes=`keyframes`,e.keyframe=`keyframe`,e.layer=`layer`,e.media=`media`,e.namespace=`namespace`,e.page=`page`,e.pageMarginBox=`page-margin-box`,e.positionTry=`position-try`,e.property=`property`,e.scope=`scope`,e.startingStyle=`starting-style`,e.supports=`supports`,e.viewTransition=`view-transition`})(B||={});var V=(e,t,n)=>{let r=n,i=1e4;do{let n=t.map(t=>e.indexOf(t,r));n.push(e.indexOf(`\\`,r));let a=n.filter(e=>e!==-1);if(a.length===0)return-1;let o=Math.min(...a);if(e[o]!==`\\`)return o;r=o+2,i--}while(i>0);throw Error(`Too many escaping`)},H=(e,t,n)=>{let r=n,i=1e4;do{let n=t.map(t=>e.indexOf(t,r));n.push(e.indexOf(`(`,r)),n.push(e.indexOf(`"`,r)),n.push(e.indexOf(`'`,r)),n.push(e.indexOf(`\\`,r));let a=n.filter(e=>e!==-1);if(a.length===0)return-1;let o=Math.min(...a);switch(e[o]){case`\\`:r=o+2;break;case`(`:{let t=H(e,[`)`],o+1);if(t===-1)return-1;r=t+1}break;case`"`:{let t=V(e,[`"`],o+1);if(t===-1)return-1;r=t+1}break;case`'`:{let t=V(e,[`'`],o+1);if(t===-1)return-1;r=t+1}break;default:return o}i--}while(i>0);throw Error(`Too many escaping`)},U=/\/\*[^]*?(?:\*\/|$)/g;function W(e){return e?e.trim():``}function G(e,t){let n=e&&typeof e.type==`string`,r=n?e:t;for(let t in e){let n=e[t];Array.isArray(n)?n.forEach(e=>{G(e,r)}):n&&typeof n==`object`&&G(n,r)}return n&&Object.defineProperty(e,"parent",{configurable:!0,writable:!0,enumerable:!1,value:t||null}),e}var Je=class{level=0;indentation=` `;compress=!1;constructor(e){typeof e?.indent==`string`&&(this.indentation=e?.indent),e?.compress&&(this.compress=!0)}emit(e,t){return e}indent(e){return this.level=this.level||1,e?(this.level+=e,``):Array(this.level).join(this.indentation)}visit(e){switch(e.type){case B.stylesheet:return this.stylesheet(e);case B.rule:return this.rule(e);case B.declaration:return this.declaration(e);case B.comment:return this.comment(e);case B.container:return this.container(e);case B.charset:return this.charset(e);case B.counterStyle:return this.counterStyle(e);case B.document:return this.document(e);case B.customMedia:return this.customMedia(e);case B.fontFace:return this.fontFace(e);case B.fontFeatureValues:return this.fontFeatureValues(e);case B.host:return this.host(e);case B.import:return this.import(e);case B.keyframes:return this.keyframes(e);case B.keyframe:return this.keyframe(e);case B.layer:return this.layer(e);case B.media:return this.media(e);case B.namespace:return this.namespace(e);case B.page:return this.page(e);case B.pageMarginBox:return this.pageMarginBox(e);case B.positionTry:return this.positionTry(e);case B.property:return this.property(e);case B.scope:return this.scope(e);case B.startingStyle:return this.startingStyle(e);case B.supports:return this.supports(e);case B.viewTransition:return this.viewTransition(e);case B.atRule:return this.genericAtRule(e)}}mapVisit(e,t){let n=``;t||=``;for(let r=0,i=e.length;r<i;r++)n+=this.visit(e[r]),t&&r<i-1&&(n+=this.emit(t));return n}compile(e){return this.compress?e.stylesheet.rules.map(this.visit,this).join(``):this.stylesheet(e)}stylesheet(e){return this.mapVisit(e.stylesheet.rules,`
|
|
2
2
|
|
|
3
3
|
`)}comment(e){return this.compress?this.emit(``,e.position):this.emit(`${this.indent()}/*${e.comment}*/`,e.position)}container(e){return this.compress?this.emit(`@container ${e.container}`,e.position)+this.emit(`{`)+this.mapVisit(e.rules)+this.emit(`}`):this.emit(`${this.indent()}@container ${e.container}`,e.position)+this.emit(` {\n${this.indent(1)}`)+this.mapVisit(e.rules,`
|
|
4
4
|
|
|
@@ -50,4 +50,4 @@ const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./api-DD5v1qP9.cjs
|
|
|
50
50
|
`)+this.emit(this.indent(-1))+this.emit(`\n${this.indent()}}`)}declaration(e){return this.compress?this.emit(`${e.property}:${e.value}`,e.position)+this.emit(`;`):e.property===`grid-template-areas`?this.emit(this.indent())+this.emit(e.property+`: `+e.value.split(`
|
|
51
51
|
`).join(`
|
|
52
52
|
`.padEnd(22)+this.indent()),e.position)+this.emit(`;`):this.emit(this.indent())+this.emit(`${e.property}: ${e.value}`,e.position)+this.emit(`;`)}},Ye=(e,t)=>{t||={};let n=1,r=1;function i(){let e={line:n,column:r};return i=>(i.position=new qe(e,{line:n,column:r},t?.source||``),u(),i)}let a=[];function o(i){let o=new Ke(t?.source||``,i,n,r,e);if(!t?.silent)throw o;a.push(o)}function s(){let t=/^{\s*/.exec(e);return!!t&&(l(t),!0)}function c(){let t=/^}/.exec(e);return!!t&&(l(t),!0)}function l(t){let i=t[0];return function(e){let t=e.match(/\n/g);t&&(n+=t.length);let i=e.lastIndexOf(`
|
|
53
|
-
`);r=~i?e.length-i:r+e.length}(i),e=e.slice(i.length),t}function u(){let t=/^\s*/.exec(e);t&&l(t)}function d(e){e||=[];let t=f();for(;t;)e.push(t),t=f();return e}function f(){let t=i();if(e.charAt(0)!==`/`||e.charAt(1)!==`*`)return;let n=/^\/\*[^]*?\*\//.exec(e);return n?(l(n),t({type:B.comment,comment:n[0].slice(2,-2)})):o(`End of comment missing`)}function p(){let t=H(e,[`{`]);if(t===-1||t===0)return;let n=e.substring(0,t);return l([n]),((e,t)=>{let n=[],r=0;for(;r<e.length;){let i=H(e,t,r);if(i===-1)return n.push(e.substring(r)),n;n.push(e.substring(r,i)),r=i+1}return n})(W(n).replace(U,``),[`,`]).map(e=>W(e))}function m(){let t=i(),n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/.exec(e);if(!n)return;l(n);let r=W(n[0]),a=/^:\s*/.exec(e);if(!a)return o(`property missing ':'`);l(a);let s=``,c=H(e,[`;`,`}`]);c!==-1&&(s=e.substring(0,c),l([s]),s=W(s).replace(U,``));let u=t({type:B.declaration,property:r.replace(U,``),value:s}),d=/^[;\s]*/.exec(e);return d&&l(d),u}function h(){let n=[];if(!s())return o(`missing '{'`);d(n);let r=m();for(;r;)n.push(r),d(n),r=m();for(;t?.silent&&e.length&&e.charAt(0)!==`}`;){let t=e.indexOf(`;`),i=e.indexOf(`}`);if(t===-1||!(i===-1||t<i))break;for(l([e.substring(0,t+1)]),u(),d(n),r=m();r;)n.push(r),d(n),r=m()}return c()?n:o(`missing '}'`)}function g(){let t=H(e,[`{`]);if(t===-1)return!1;let n=H(e,[`;`]),r=H(e,[`}`]);return!(n!==-1&&n<t)&&!(r!==-1&&r<t)}function _(){let n=[];if(!s())return o(`missing '{'`);for(d(n);e.length&&e.charAt(0)!==`}`;){if(e.charAt(0)===`@`){let e=T();if(e){n.push(e),d(n);continue}}if(g()){let e=E();if(e){n.push(e),d(n);continue}}let r=m();if(!r){if(t?.silent){let t=e.indexOf(`;`),r=e.indexOf(`}`);if(t!==-1&&(r===-1||t<r)){l([e.substring(0,t+1)]),u(),d(n);continue}}break}n.push(r),d(n)}return c()?n:o(`missing '}'`)}function v(){let n=[];for(u(),d(n);e.length&&e.charAt(0)!==`}`;){if(e.charAt(0)===`@`){let e=T();if(e){n.push(e),d(n);continue}}if(g()){let e=E();if(e){n.push(e),d(n);continue}}let r=m();if(!r){if(t?.silent){let t=e.indexOf(`;`),r=e.indexOf(`}`);if(t!==-1&&(r===-1||t<r)){l([e.substring(0,t+1)]),u(),d(n);continue}}break}n.push(r),d(n)}return n}function y(){let t=[],n=i(),r=/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/.exec(e);for(;r;){let n=l(r);t.push(n[1]);let i=/^,\s*/.exec(e);i&&l(i),r=/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/.exec(e)}if(t.length)return n({type:B.keyframe,values:t,declarations:h()||[]})}let b=RegExp(`^@(${[`top-left-corner`,`top-left`,`top-center`,`top-right`,`top-right-corner`,`bottom-left-corner`,`bottom-left`,`bottom-center`,`bottom-right`,`bottom-right-corner`,`left-top`,`left-middle`,`left-bottom`,`right-top`,`right-middle`,`right-bottom`].join(`|`)})(?![\\w-])\\s*`),x=w(`import`),S=w(`charset`),C=w(`namespace`);function w(t){let n=RegExp(`^@`+t+`\\s*((?::?[^;'"]|"(?:\\\\"|[^"])*?"|'(?:\\\\'|[^'])*?')+)(?:;|$)`);return()=>{let r=i(),a=n.exec(e);if(!a)return;let o=l(a),s={type:t};return s[t]=o[1].trim(),r(s)}}function T(){if(e[0]===`@`)return function(){let t=i(),n=/^@([-\w]+)?keyframes\s*/.exec(e);if(!n)return;let r=l(n)[1],a=/^([-\w]+)\s*/.exec(e);if(!a)return o(`@keyframes missing name`);let u=l(a)[1];if(!s())return o(`@keyframes missing '{'`);let f=d(),p=y();for(;p;)f.push(p),f=f.concat(d()),p=y();return c()?t({type:B.keyframes,name:u,vendor:r,keyframes:f}):o(`@keyframes missing '}'`)}()||function(){let t=i(),n=/^@media *([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@media missing '{'`);let a=v();return c()?t({type:B.media,media:r,rules:a}):o(`@media missing '}'`)}()||function(){let t=i(),n=/^@custom-media\s+(--\S+)\s+([^{;\s][^{;]*);/.exec(e);if(!n)return;let r=l(n);return t({type:B.customMedia,name:W(r[1]),media:W(r[2])})}()||function(){let t=i(),n=/^@supports *([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@supports missing '{'`);let a=v();return c()?t({type:B.supports,supports:r,rules:a}):o(`@supports missing '}'`)}()||x()||S()||C()||function(){let t=i(),n=/^@([-\w]+)?document *([^{]+)/.exec(e);if(!n)return;let r=l(n),a=W(r[1]),u=W(r[2]);if(!s())return o(`@document missing '{'`);let d=v();return c()?t({type:B.document,document:u,vendor:a,rules:d}):o(`@document missing '}'`)}()||function(){let t=i(),n=/^@page */.exec(e);if(!n)return;l(n);let r=p()||[];if(!s())return o(`@page missing '{'`);let a=[];for(d(a);e.length&&e.charAt(0)!==`}`;){if(e.charAt(0)===`@`){let e=T();if(e){a.push(e),d(a);continue}}let t=m();if(!t)break;a.push(t),d(a)}return c()?t({type:B.page,selectors:r,declarations:a}):o(`@page missing '}'`)}()||function(){let t=i(),n=/^@host\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@host missing '{'`);let r=v();return c()?t({type:B.host,rules:r}):o(`@host missing '}'`)}()||function(){let t=i(),n=/^@font-face\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@font-face missing '{'`);let r=d(),a=m();for(;a;)r.push(a),r=r.concat(d()),a=m();return c()?t({type:B.fontFace,declarations:r}):o(`@font-face missing '}'`)}()||function(){let t=i(),n=/^@font-feature-values\s+([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@font-feature-values missing '{'`);let a=v();return c()?t({type:B.fontFeatureValues,fontFamily:r,rules:a}):o(`@font-feature-values missing '}'`)}()||function(){let t=i(),n=/^@container *([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@container missing '{'`);let a=v();return c()?t({type:B.container,container:r,rules:a}):o(`@container missing '}'`)}()||function(){let t=i(),n=/^@starting-style\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@starting-style missing '{'`);let r=v();return c()?t({type:B.startingStyle,rules:r}):o(`@starting-style missing '}'`)}()||function(){let t=i(),n=/^@layer *([^{;@]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s()){let n=/^[;\s]*/.exec(e);return n&&l(n),t({type:B.layer,layer:r})}let a=v();return c()?t({type:B.layer,layer:r,rules:a}):o(`@layer missing '}'`)}()||function(){let t=i(),n=/^@property\s+(--[-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@property missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.property,name:r,declarations:a}):o(`@property missing '}'`)}()||function(){let t=i(),n=/^@counter-style\s+([-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@counter-style missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.counterStyle,name:r,declarations:a}):o(`@counter-style missing '}'`)}()||function(){let t=i(),n=/^@scope\s*([^{]*)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@scope missing '{'`);let a=v();return c()?t({type:B.scope,scope:r,rules:a}):o(`@scope missing '}'`)}()||function(){let t=i(),n=/^@view-transition\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@view-transition missing '{'`);let r=d(),a=m();for(;a;)r.push(a),r=r.concat(d()),a=m();return c()?t({type:B.viewTransition,declarations:r}):o(`@view-transition missing '}'`)}()||function(){let t=i(),n=/^@position-try\s+(--[-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@position-try missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.positionTry,name:r,declarations:a}):o(`@position-try missing '}'`)}()||function(){let t=i(),n=b.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@${r} missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.pageMarginBox,name:r,declarations:a}):o(`@${r} missing '}'`)}()||function(){let t=i(),n=/^@([-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1],a=``,u=H(e,[`{`,`;`]);if(u!==-1&&u>0&&(a=W(e.substring(0,u)),l([e.substring(0,u)])),s()){let e=v();return c()?t({type:B.atRule,name:r,prelude:a,rules:e}):o(`@${r} missing '}'`)}let d=/^[;\s]*/.exec(e);return d&&l(d),t({type:B.atRule,name:r,prelude:a})}()}function E(){let e=i(),t=p();return t?(d(),e({type:B.rule,selectors:t,declarations:_()||[]})):o(`selector missing`)}return G(function(){let n=function(){let n,r=[];for(u(),d(r);e.length;){if(e.charAt(0)===`}`){if(t?.silent){o(`extra '}'`),l([`}`]),u(),d(r);continue}break}if(n=T()||E(),!n){if(t?.silent){l([e.charAt(0)]),u(),d(r);continue}break}r.push(n),d(r)}return r}();return{type:B.stylesheet,stylesheet:{source:t?.source,rules:n,parsingErrors:a}}}())},Xe=(e,t)=>new Je(t||{}).compile(e),Ze=e.n({appearPermission:()=>K,appearUnsafePermission:()=>$e,permission:()=>et,resolve:()=>ct,setInjectedStylesDisabled:()=>st,type:()=>Qe}),Qe=`addStyleTag`,K={scope:`media.appear`,category:`media`,severity:0,title:`Change page appearance`,description:`Lets the app restyle parts of the page (safely filtered).`},$e={scope:`media.appearU`,category:`media`,severity:2,unsafe:!0,title:`Change page appearance (unsafe)`,description:`Lets the app restyle the page WITHOUT safety filtering. Could be used to leak data over the network.`},et=e=>e?.noSanitize?$e:K,tt=/(?:^|[^\w-])(?:url|image|image-set|cross-fade|paint|element|expression)\s*\(/i,nt=e=>e.replace(/\\([0-9a-fA-F]{1,6})\s?/g,(e,t)=>String.fromCodePoint(Number.parseInt(t,16))).replace(/\\(.)/g,`$1`),rt=e=>!tt.test(nt(e.value)),q=e=>{let t=[];for(let n of e)switch(n.type){case B.import:case B.fontFace:case B.namespace:case B.charset:case B.document:case B.comment:continue;case B.rule:case B.page:t.push({...n,declarations:n.declarations.filter(e=>e.type!==B.declaration||rt(e))});continue;case B.media:case B.supports:case B.container:case B.host:case B.startingStyle:t.push({...n,rules:q(n.rules)});continue;case B.layer:t.push({...n,rules:n.rules?q(n.rules):void 0});continue;case B.keyframes:t.push({...n,keyframes:n.keyframes.map(e=>e.type===B.keyframe?{...e,declarations:e.declarations.filter(e=>e.type!==B.declaration||rt(e))}:e)});continue;default:continue}return t},it=e=>{let t;try{t=Ye(e,{silent:!0})}catch{return``}return t.stylesheet.rules=q(t.stylesheet.rules),Xe(t)},at=e=>{let t=()=>{e.parentNode||(document.head??document.documentElement).appendChild(e)};t();let n=new MutationObserver(n=>{for(let r of n)for(let n of r.removedNodes)if(n===e||n.contains?.(e)){t();return}});n.observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener(`load`,()=>n.disconnect(),{once:!0})},J=new Set,ot=!1,st=e=>{ot=e;for(let t of J)t.disabled=e},ct=async(e,t)=>{let n=document.createElement(`style`);n.textContent=t.noSanitize?t.content:it(t.content);try{at(n)}catch(e){console.error(e)}J.add(n),ot&&(n.disabled=!0)},Y=`frameLocator`,lt=[{...F,nextLocatorType:`locator`},z,Ve],ut=[Ze],dt={type:Y,selectorModules:lt,operationModules:ut},ft=pt({ownType:Y,selectorModules:lt,operationModules:ut});function pt(e){return(t,n,r=[])=>({...Object.fromEntries(e.selectorModules.map(i=>[i.type,(...a)=>{let o=[...r,{locatorType:e.ownType,type:i.type,args:a}];return(i.nextLocatorType??e.ownType)===`locator`?Sn(t,n,o):ft(t,n,o)}])),...Object.fromEntries(e.operationModules.map(({type:e})=>[e,(...i)=>Oe(t,r,e,i,n)])),ensure:(e,t={})=>n?n(r,e,[t]):Promise.resolve()})}var mt=e.n({render:()=>_t,resolve:()=>gt,type:()=>ht}),ht=`getByRole`,gt=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(`[role="${CSS.escape(t)}"]`)]),_t=e=>({fragment:typeof e==`string`?`[role="${e.replaceAll(`"`,`\\"`)}"]`:`[role]`}),vt=e.n({render:()=>xt,resolve:()=>bt,type:()=>yt}),yt=`getByText`,bt=(e,t)=>e.elements.flatMap(e=>[e,...e.querySelectorAll(`*`)]).filter(e=>e.textContent?.includes(t)),xt=e=>({fragment:typeof e==`string`?`:has-text("${e.replaceAll(`"`,`\\"`)}")`:`:has-text(...)`}),St=e.n({render:()=>Tt,resolve:()=>wt,type:()=>Ct}),Ct=`getByTestId`,wt=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(`[data-testid="${CSS.escape(t)}"]`)]),Tt=e=>({fragment:typeof e==`string`?`[data-testid="${e.replaceAll(`"`,`\\"`)}"]`:`[data-testid]`}),Et=e.n({render:()=>kt,resolve:()=>Ot,type:()=>Dt}),Dt=`first`,Ot=e=>e.elements.slice(0,1),kt=()=>({fragment:`:first`}),At=e.n({render:()=>Mt,resolve:()=>jt,type:()=>`nth`}),jt=(e,t)=>{let n=e.elements.at(t);return n?[n]:[]},Mt=e=>({fragment:typeof e==`number`?`:nth(${e})`:`:nth(?)`}),Nt=e=>{let t=Error(e);return t.name=`LocatorError`,t},X=e=>{if(e.length===0)throw Nt(`No elements found`);if(e.length>1)throw Nt(`Strict mode violation: locator resolved to ${e.length} elements`);return e[0]},Pt=e.n({permission:()=>It,resolve:()=>Lt,type:()=>Ft}),Ft=`click`,It={scope:`act.click`,category:`act`,severity:3,title:`Click on the page`,description:`Lets the app press buttons or links for you.`},Lt=(e,t={})=>{let n=X(e.elements),r=n.getBoundingClientRect(),i=t.position?.x??.5,a=t.position?.y??.5,o={bubbles:!0,cancelable:!0,composed:!0,clientX:r.left+r.width*i,clientY:r.top+r.height*a,button:0},s={...o,buttons:1,pointerType:`mouse`,pointerId:1,isPrimary:!0},c={...o,buttons:1},l={...o,buttons:0};n.dispatchEvent(new PointerEvent(`pointerdown`,s)),n.dispatchEvent(new MouseEvent(`mousedown`,c)),n.dispatchEvent(new PointerEvent(`pointerup`,{...s,buttons:0})),n.dispatchEvent(new MouseEvent(`mouseup`,l)),n.dispatchEvent(new MouseEvent(`click`,l))},Rt=e.n({permission:()=>Bt,resolve:()=>Ut,type:()=>zt}),zt=`fill`,Bt={scope:`act.type`,category:`act`,severity:1,title:`Type into a text field`,description:`Lets the app fill in form fields on your behalf.`},Vt=(e,t)=>{e._valueTracker?.setValue(``);let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`)?.set;r?r.call(e,t):e.value=t},Ht=(e,t)=>{if(e.type!==`range`)return null;let n=Number(e.min||0),r=Number(e.max||100);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)return null;let i=Number(t);if(!Number.isFinite(i))return null;let a=Math.max(0,Math.min(1,(i-n)/(r-n))),o=e.getBoundingClientRect(),s={bubbles:!0,cancelable:!0,composed:!0,clientX:o.left+o.width*a,clientY:o.top+o.height/2,button:0};return{pointerDown:{...s,buttons:1,pointerType:`mouse`,pointerId:1,isPrimary:!0},pointerUp:{...s,buttons:0,pointerType:`mouse`,pointerId:1,isPrimary:!0},mouseDown:{...s,buttons:1},mouseUp:{...s,buttons:0}}},Ut=(e,t,n={})=>{let r=X(e.elements);if(r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement){let e=r instanceof HTMLInputElement?Ht(r,t):null;if(e){r.dispatchEvent(new PointerEvent(`pointerdown`,e.pointerDown)),r.dispatchEvent(new MouseEvent(`mousedown`,e.mouseDown)),Vt(r,t),r.dispatchEvent(new Event(`input`,{bubbles:!0})),r.dispatchEvent(new PointerEvent(`pointerup`,e.pointerUp)),r.dispatchEvent(new MouseEvent(`mouseup`,e.mouseUp)),r.dispatchEvent(new Event(`change`,{bubbles:!0}));return}Vt(r,t),r.dispatchEvent(new Event(`input`,{bubbles:!0})),r.dispatchEvent(new Event(`change`,{bubbles:!0}));return}if(r instanceof HTMLElement&&r.isContentEditable){r.textContent=t,r.dispatchEvent(new Event(`input`,{bubbles:!0}));return}throw Error(`fill: element <${r.tagName.toLowerCase()}> is not fillable`)},Wt=e.n({permission:()=>Kt,resolve:()=>qt,type:()=>Gt}),Gt=`hover`,Kt={scope:`act.hover`,category:`act`,severity:1,title:`Hover over the page`,description:`Lets the app point at things to reveal menus or tooltips.`},qt=(e,t={})=>{let n=X(e.elements),r=n.getBoundingClientRect(),i={bubbles:!0,cancelable:!0,composed:!0,clientX:r.left+r.width*(t.position?.x??.5),clientY:r.top+r.height*(t.position?.y??.5)},a={...i,pointerType:`mouse`,pointerId:1,isPrimary:!0};n.dispatchEvent(new PointerEvent(`pointerover`,a)),n.dispatchEvent(new PointerEvent(`pointerenter`,{...a,bubbles:!1})),n.dispatchEvent(new MouseEvent(`mouseenter`,{...i,bubbles:!1})),n.dispatchEvent(new MouseEvent(`mouseover`,i)),n.dispatchEvent(new PointerEvent(`pointermove`,a)),n.dispatchEvent(new MouseEvent(`mousemove`,i))},Jt=e.n({permission:()=>Xt,resolve:()=>Zt,type:()=>Yt}),Yt=`textContent`,Xt={scope:`read.text`,category:`read`,severity:1,title:`Read text from the page`,description:`Lets the app see the text shown on this page.`},Zt=(e,t={})=>X(e.elements).textContent,Qt=e.n({permission:()=>en,resolve:()=>tn,type:()=>$t}),$t=`isVisible`,en={scope:`read.visible`,category:`read`,severity:0,title:`See what’s visible on the page`,description:`Lets the app check which elements are currently on screen.`},tn=(e,t={})=>{let n=X(e.elements);if(!(n instanceof HTMLElement))return!0;let r=n.ownerDocument.defaultView?.getComputedStyle(n);if(r?.display===`none`||r?.visibility===`hidden`)return!1;let i=n.getBoundingClientRect();return i.width>0&&i.height>0},nn=e.n({permission:()=>an,resolve:()=>on,type:()=>rn}),rn=`count`,an={scope:`read.count`,category:`read`,severity:0,title:`Count items on the page`,description:`Lets the app count how many matching elements are present.`},on=(e,t={})=>e.elements.length,sn=e.n({permission:()=>ln,resolve:()=>un,type:()=>cn}),cn=`exists`,ln={scope:`read.check`,category:`read`,severity:0,title:`Check if something is on the page`,description:`Lets the app test whether a specific element exists.`},un=(e,t={})=>e.elements.length>0,dn=e.n({permission:()=>pn,resolve:()=>mn,type:()=>fn}),fn=`getAttribute`,pn={scope:`read.info`,category:`read`,severity:1,title:`Read info from the page`,description:`Lets the app read the href value from a part of the page.`},mn=(e,t,n={})=>X(e.elements).getAttribute(t),hn=e.n({permission:()=>_n,resolve:()=>vn,type:()=>gn}),gn=`videoElement`,_n={scope:`media.video`,category:`media`,severity:0,title:`Control video playback`,description:`Lets the app play, pause, seek, and read the video on the page.`},vn=(e,t={})=>{let n=X(e.elements);if(!(n instanceof HTMLVideoElement))throw Error(`videoElement: expected <video>, got <${n.tagName.toLowerCase()}>`);return S(n)},Z=`locator`,yn=[F,{...z,nextLocatorType:`frameLocator`},mt,vt,St,Et,At],bn=[Pt,Rt,Wt,Jt,Qt,nn,sn,dn,hn],xn={type:Z,selectorModules:yn,operationModules:bn},Sn=pt({ownType:Z,selectorModules:yn,operationModules:bn});(()=>{let e={},t=[...xn.selectorModules,...dt.selectorModules];for(let n of t)n.render&&!(n.type in e)&&(e[n.type]=n.render);return e})();var Cn=e=>{if(!e||e===`about:blank`)return!1;let t;try{t=new URL(e,location.href)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;if(t.protocol===`about:`)return!1;let n=t.hostname,r=e=>n===e||n.endsWith(`.${e}`);return r(`fkn.app`)||r(`fkn.dev`)||r(`sdbx.app`)},Q=e=>{if(Cn(e))throw Error(`attachFrame: refusing to target the extension's own pages or an FKN platform origin`)},wn=({src:e,domains:t,lockdown:n})=>{if(!(!n||t.length)&&e&&e!==`about:blank`)throw Error(`attachFrame: lockdown needs domains when the frame already has a src; pass domains or load it via goto`)},Tn={scope:`embed.iframe`,category:`embed`,severity:0,title:`Load another website inside this app`,description:`Lets the app embed external pages directly inside its own view.`},En={scope:`embed.open`,category:`embed`,severity:0,title:`Open a website inside this app`,description:`Lets the app navigate to another site without leaving its window.`},Dn=e=>{let t=ft(e.executeLocator,e.ensurePermission),n=(t,n={})=>(Q(t),e.goto(t,n)),r=()=>e.url();return{...t,goto:n,url:r}},On=`FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY`,kn=async({iframe:e,domains:t=[],syncCookies:n=!0,lockdown:r=!1})=>{let i=crypto.randomUUID();if(Q(e.src),wn({src:e.src,domains:t,lockdown:r}),await A(),!e.isConnected)throw Error(`attachFrame: the iframe must be connected to the document before attaching`);e.dispatchEvent(new CustomEvent(On,{detail:i}));let{executeLocator:a,ensureLocatorPermission:o,goto:s}=await M.attachFrame({marker:i,domains:t,syncCookies:n,lockdown:r});return Dn({executeLocator:a,ensurePermission:o,goto:(e,t={})=>s({url:e,...t}),url:()=>e.src})},An={request:e=>M.requestPermissions(e.map(e=>({key:e.key,scope:e.scope??``,reason:e.reason})))},jn=[`fkn.app`,`fkn.dev`],$=e=>{let t=typeof e==`string`?e:e instanceof URL?e.href:e.url,n;try{n=new URL(t)}catch{return}let r=n.hostname;if(jn.some(e=>r===e||r.endsWith(`.${e}`)))throw Error(`fetch refuses FKN platform domains (${r})`)},Mn=(e,n)=>($(e),t.t.then(t=>t.cloud.fetch(e,n)));Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return kn}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return En}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Cn}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return xn}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return On}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Tn}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return An}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Dn}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Mn}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return S}});
|
|
53
|
+
`);r=~i?e.length-i:r+e.length}(i),e=e.slice(i.length),t}function u(){let t=/^\s*/.exec(e);t&&l(t)}function d(e){e||=[];let t=f();for(;t;)e.push(t),t=f();return e}function f(){let t=i();if(e.charAt(0)!==`/`||e.charAt(1)!==`*`)return;let n=/^\/\*[^]*?\*\//.exec(e);return n?(l(n),t({type:B.comment,comment:n[0].slice(2,-2)})):o(`End of comment missing`)}function p(){let t=H(e,[`{`]);if(t===-1||t===0)return;let n=e.substring(0,t);return l([n]),((e,t)=>{let n=[],r=0;for(;r<e.length;){let i=H(e,t,r);if(i===-1)return n.push(e.substring(r)),n;n.push(e.substring(r,i)),r=i+1}return n})(W(n).replace(U,``),[`,`]).map(e=>W(e))}function m(){let t=i(),n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/.exec(e);if(!n)return;l(n);let r=W(n[0]),a=/^:\s*/.exec(e);if(!a)return o(`property missing ':'`);l(a);let s=``,c=H(e,[`;`,`}`]);c!==-1&&(s=e.substring(0,c),l([s]),s=W(s).replace(U,``));let u=t({type:B.declaration,property:r.replace(U,``),value:s}),d=/^[;\s]*/.exec(e);return d&&l(d),u}function h(){let n=[];if(!s())return o(`missing '{'`);d(n);let r=m();for(;r;)n.push(r),d(n),r=m();for(;t?.silent&&e.length&&e.charAt(0)!==`}`;){let t=e.indexOf(`;`),i=e.indexOf(`}`);if(t===-1||!(i===-1||t<i))break;for(l([e.substring(0,t+1)]),u(),d(n),r=m();r;)n.push(r),d(n),r=m()}return c()?n:o(`missing '}'`)}function g(){let t=H(e,[`{`]);if(t===-1)return!1;let n=H(e,[`;`]),r=H(e,[`}`]);return!(n!==-1&&n<t)&&!(r!==-1&&r<t)}function _(){let n=[];if(!s())return o(`missing '{'`);for(d(n);e.length&&e.charAt(0)!==`}`;){if(e.charAt(0)===`@`){let e=T();if(e){n.push(e),d(n);continue}}if(g()){let e=E();if(e){n.push(e),d(n);continue}}let r=m();if(!r){if(t?.silent){let t=e.indexOf(`;`),r=e.indexOf(`}`);if(t!==-1&&(r===-1||t<r)){l([e.substring(0,t+1)]),u(),d(n);continue}}break}n.push(r),d(n)}return c()?n:o(`missing '}'`)}function v(){let n=[];for(u(),d(n);e.length&&e.charAt(0)!==`}`;){if(e.charAt(0)===`@`){let e=T();if(e){n.push(e),d(n);continue}}if(g()){let e=E();if(e){n.push(e),d(n);continue}}let r=m();if(!r){if(t?.silent){let t=e.indexOf(`;`),r=e.indexOf(`}`);if(t!==-1&&(r===-1||t<r)){l([e.substring(0,t+1)]),u(),d(n);continue}}break}n.push(r),d(n)}return n}function y(){let t=[],n=i(),r=/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/.exec(e);for(;r;){let n=l(r);t.push(n[1]);let i=/^,\s*/.exec(e);i&&l(i),r=/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/.exec(e)}if(t.length)return n({type:B.keyframe,values:t,declarations:h()||[]})}let b=RegExp(`^@(${[`top-left-corner`,`top-left`,`top-center`,`top-right`,`top-right-corner`,`bottom-left-corner`,`bottom-left`,`bottom-center`,`bottom-right`,`bottom-right-corner`,`left-top`,`left-middle`,`left-bottom`,`right-top`,`right-middle`,`right-bottom`].join(`|`)})(?![\\w-])\\s*`),x=w(`import`),S=w(`charset`),C=w(`namespace`);function w(t){let n=RegExp(`^@`+t+`\\s*((?::?[^;'"]|"(?:\\\\"|[^"])*?"|'(?:\\\\'|[^'])*?')+)(?:;|$)`);return()=>{let r=i(),a=n.exec(e);if(!a)return;let o=l(a),s={type:t};return s[t]=o[1].trim(),r(s)}}function T(){if(e[0]===`@`)return function(){let t=i(),n=/^@([-\w]+)?keyframes\s*/.exec(e);if(!n)return;let r=l(n)[1],a=/^([-\w]+)\s*/.exec(e);if(!a)return o(`@keyframes missing name`);let u=l(a)[1];if(!s())return o(`@keyframes missing '{'`);let f=d(),p=y();for(;p;)f.push(p),f=f.concat(d()),p=y();return c()?t({type:B.keyframes,name:u,vendor:r,keyframes:f}):o(`@keyframes missing '}'`)}()||function(){let t=i(),n=/^@media *([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@media missing '{'`);let a=v();return c()?t({type:B.media,media:r,rules:a}):o(`@media missing '}'`)}()||function(){let t=i(),n=/^@custom-media\s+(--\S+)\s+([^{;\s][^{;]*);/.exec(e);if(!n)return;let r=l(n);return t({type:B.customMedia,name:W(r[1]),media:W(r[2])})}()||function(){let t=i(),n=/^@supports *([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@supports missing '{'`);let a=v();return c()?t({type:B.supports,supports:r,rules:a}):o(`@supports missing '}'`)}()||x()||S()||C()||function(){let t=i(),n=/^@([-\w]+)?document *([^{]+)/.exec(e);if(!n)return;let r=l(n),a=W(r[1]),u=W(r[2]);if(!s())return o(`@document missing '{'`);let d=v();return c()?t({type:B.document,document:u,vendor:a,rules:d}):o(`@document missing '}'`)}()||function(){let t=i(),n=/^@page */.exec(e);if(!n)return;l(n);let r=p()||[];if(!s())return o(`@page missing '{'`);let a=[];for(d(a);e.length&&e.charAt(0)!==`}`;){if(e.charAt(0)===`@`){let e=T();if(e){a.push(e),d(a);continue}}let t=m();if(!t)break;a.push(t),d(a)}return c()?t({type:B.page,selectors:r,declarations:a}):o(`@page missing '}'`)}()||function(){let t=i(),n=/^@host\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@host missing '{'`);let r=v();return c()?t({type:B.host,rules:r}):o(`@host missing '}'`)}()||function(){let t=i(),n=/^@font-face\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@font-face missing '{'`);let r=d(),a=m();for(;a;)r.push(a),r=r.concat(d()),a=m();return c()?t({type:B.fontFace,declarations:r}):o(`@font-face missing '}'`)}()||function(){let t=i(),n=/^@font-feature-values\s+([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@font-feature-values missing '{'`);let a=v();return c()?t({type:B.fontFeatureValues,fontFamily:r,rules:a}):o(`@font-feature-values missing '}'`)}()||function(){let t=i(),n=/^@container *([^{]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@container missing '{'`);let a=v();return c()?t({type:B.container,container:r,rules:a}):o(`@container missing '}'`)}()||function(){let t=i(),n=/^@starting-style\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@starting-style missing '{'`);let r=v();return c()?t({type:B.startingStyle,rules:r}):o(`@starting-style missing '}'`)}()||function(){let t=i(),n=/^@layer *([^{;@]+)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s()){let n=/^[;\s]*/.exec(e);return n&&l(n),t({type:B.layer,layer:r})}let a=v();return c()?t({type:B.layer,layer:r,rules:a}):o(`@layer missing '}'`)}()||function(){let t=i(),n=/^@property\s+(--[-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@property missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.property,name:r,declarations:a}):o(`@property missing '}'`)}()||function(){let t=i(),n=/^@counter-style\s+([-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@counter-style missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.counterStyle,name:r,declarations:a}):o(`@counter-style missing '}'`)}()||function(){let t=i(),n=/^@scope\s*([^{]*)/.exec(e);if(!n)return;let r=W(l(n)[1]);if(!s())return o(`@scope missing '{'`);let a=v();return c()?t({type:B.scope,scope:r,rules:a}):o(`@scope missing '}'`)}()||function(){let t=i(),n=/^@view-transition\s*/.exec(e);if(!n)return;if(l(n),!s())return o(`@view-transition missing '{'`);let r=d(),a=m();for(;a;)r.push(a),r=r.concat(d()),a=m();return c()?t({type:B.viewTransition,declarations:r}):o(`@view-transition missing '}'`)}()||function(){let t=i(),n=/^@position-try\s+(--[-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@position-try missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.positionTry,name:r,declarations:a}):o(`@position-try missing '}'`)}()||function(){let t=i(),n=b.exec(e);if(!n)return;let r=l(n)[1];if(!s())return o(`@${r} missing '{'`);let a=d(),u=m();for(;u;)a.push(u),a=a.concat(d()),u=m();return c()?t({type:B.pageMarginBox,name:r,declarations:a}):o(`@${r} missing '}'`)}()||function(){let t=i(),n=/^@([-\w]+)\s*/.exec(e);if(!n)return;let r=l(n)[1],a=``,u=H(e,[`{`,`;`]);if(u!==-1&&u>0&&(a=W(e.substring(0,u)),l([e.substring(0,u)])),s()){let e=v();return c()?t({type:B.atRule,name:r,prelude:a,rules:e}):o(`@${r} missing '}'`)}let d=/^[;\s]*/.exec(e);return d&&l(d),t({type:B.atRule,name:r,prelude:a})}()}function E(){let e=i(),t=p();return t?(d(),e({type:B.rule,selectors:t,declarations:_()||[]})):o(`selector missing`)}return G(function(){let n=function(){let n,r=[];for(u(),d(r);e.length;){if(e.charAt(0)===`}`){if(t?.silent){o(`extra '}'`),l([`}`]),u(),d(r);continue}break}if(n=T()||E(),!n){if(t?.silent){l([e.charAt(0)]),u(),d(r);continue}break}r.push(n),d(r)}return r}();return{type:B.stylesheet,stylesheet:{source:t?.source,rules:n,parsingErrors:a}}}())},Xe=(e,t)=>new Je(t||{}).compile(e),Ze=e.n({appearPermission:()=>K,appearUnsafePermission:()=>$e,permission:()=>et,resolve:()=>ct,setInjectedStylesDisabled:()=>st,type:()=>Qe}),Qe=`addStyleTag`,K={scope:`media.appear`,category:`media`,severity:0,title:`Change page appearance`,description:`Lets the app restyle parts of the page (safely filtered).`},$e={scope:`media.appearU`,category:`media`,severity:2,unsafe:!0,title:`Change page appearance (unsafe)`,description:`Lets the app restyle the page WITHOUT safety filtering. Could be used to leak data over the network.`},et=e=>e?.noSanitize?$e:K,tt=/(?:^|[^\w-])(?:url|image|image-set|cross-fade|paint|element|expression)\s*\(/i,nt=e=>e.replace(/\\([0-9a-fA-F]{1,6})\s?/g,(e,t)=>String.fromCodePoint(Number.parseInt(t,16))).replace(/\\(.)/g,`$1`),rt=e=>!tt.test(nt(e.value)),q=e=>{let t=[];for(let n of e)switch(n.type){case B.import:case B.fontFace:case B.namespace:case B.charset:case B.document:case B.comment:continue;case B.rule:case B.page:t.push({...n,declarations:n.declarations.filter(e=>e.type!==B.declaration||rt(e))});continue;case B.media:case B.supports:case B.container:case B.host:case B.startingStyle:t.push({...n,rules:q(n.rules)});continue;case B.layer:t.push({...n,rules:n.rules?q(n.rules):void 0});continue;case B.keyframes:t.push({...n,keyframes:n.keyframes.map(e=>e.type===B.keyframe?{...e,declarations:e.declarations.filter(e=>e.type!==B.declaration||rt(e))}:e)});continue;default:continue}return t},it=e=>{let t;try{t=Ye(e,{silent:!0})}catch{return``}return t.stylesheet.rules=q(t.stylesheet.rules),Xe(t)},at=e=>{let t=()=>{e.parentNode||(document.head??document.documentElement).appendChild(e)};t();let n=new MutationObserver(n=>{for(let r of n)for(let n of r.removedNodes)if(n===e||n.contains?.(e)){t();return}});n.observe(document.documentElement,{childList:!0,subtree:!0}),window.addEventListener(`load`,()=>n.disconnect(),{once:!0})},J=new Set,ot=!1,st=e=>{ot=e;for(let t of J)t.disabled=e},ct=async(e,t)=>{let n=document.createElement(`style`);n.textContent=t.noSanitize?t.content:it(t.content);try{at(n)}catch(e){console.error(e)}J.add(n),ot&&(n.disabled=!0)},Y=`frameLocator`,lt=[{...F,nextLocatorType:`locator`},z,Ve],ut=[Ze],dt={type:Y,selectorModules:lt,operationModules:ut},ft=pt({ownType:Y,selectorModules:lt,operationModules:ut});function pt(e){return(t,n,r=[])=>({...Object.fromEntries(e.selectorModules.map(i=>[i.type,(...a)=>{let o=[...r,{locatorType:e.ownType,type:i.type,args:a}];return(i.nextLocatorType??e.ownType)===`locator`?Sn(t,n,o):ft(t,n,o)}])),...Object.fromEntries(e.operationModules.map(({type:e})=>[e,(...i)=>Oe(t,r,e,i,n)])),ensure:(e,t={})=>n?n(r,e,[t]):Promise.resolve()})}var mt=e.n({render:()=>_t,resolve:()=>gt,type:()=>ht}),ht=`getByRole`,gt=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(`[role="${CSS.escape(t)}"]`)]),_t=e=>({fragment:typeof e==`string`?`[role="${e.replaceAll(`"`,`\\"`)}"]`:`[role]`}),vt=e.n({render:()=>xt,resolve:()=>bt,type:()=>yt}),yt=`getByText`,bt=(e,t)=>e.elements.flatMap(e=>[e,...e.querySelectorAll(`*`)]).filter(e=>e.textContent?.includes(t)),xt=e=>({fragment:typeof e==`string`?`:has-text("${e.replaceAll(`"`,`\\"`)}")`:`:has-text(...)`}),St=e.n({render:()=>Tt,resolve:()=>wt,type:()=>Ct}),Ct=`getByTestId`,wt=(e,t)=>e.elements.flatMap(e=>[...e.querySelectorAll(`[data-testid="${CSS.escape(t)}"]`)]),Tt=e=>({fragment:typeof e==`string`?`[data-testid="${e.replaceAll(`"`,`\\"`)}"]`:`[data-testid]`}),Et=e.n({render:()=>kt,resolve:()=>Ot,type:()=>Dt}),Dt=`first`,Ot=e=>e.elements.slice(0,1),kt=()=>({fragment:`:first`}),At=e.n({render:()=>Mt,resolve:()=>jt,type:()=>`nth`}),jt=(e,t)=>{let n=e.elements.at(t);return n?[n]:[]},Mt=e=>({fragment:typeof e==`number`?`:nth(${e})`:`:nth(?)`}),Nt=e=>{let t=Error(e);return t.name=`LocatorError`,t},X=e=>{if(e.length===0)throw Nt(`No elements found`);if(e.length>1)throw Nt(`Strict mode violation: locator resolved to ${e.length} elements`);return e[0]},Pt=e.n({permission:()=>It,resolve:()=>Lt,type:()=>Ft}),Ft=`click`,It={scope:`act.click`,category:`act`,severity:3,title:`Click on the page`,description:`Lets the app press buttons or links for you.`},Lt=(e,t={})=>{let n=X(e.elements),r=n.getBoundingClientRect(),i=t.position?.x??.5,a=t.position?.y??.5,o={bubbles:!0,cancelable:!0,composed:!0,clientX:r.left+r.width*i,clientY:r.top+r.height*a,button:0},s={...o,buttons:1,pointerType:`mouse`,pointerId:1,isPrimary:!0},c={...o,buttons:1},l={...o,buttons:0};n.dispatchEvent(new PointerEvent(`pointerdown`,s)),n.dispatchEvent(new MouseEvent(`mousedown`,c)),n.dispatchEvent(new PointerEvent(`pointerup`,{...s,buttons:0})),n.dispatchEvent(new MouseEvent(`mouseup`,l)),n.dispatchEvent(new MouseEvent(`click`,l))},Rt=e.n({permission:()=>Bt,resolve:()=>Ut,type:()=>zt}),zt=`fill`,Bt={scope:`act.type`,category:`act`,severity:1,title:`Type into a text field`,description:`Lets the app fill in form fields on your behalf.`},Vt=(e,t)=>{e._valueTracker?.setValue(``);let n=e instanceof HTMLTextAreaElement?HTMLTextAreaElement.prototype:HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`)?.set;r?r.call(e,t):e.value=t},Ht=(e,t)=>{if(e.type!==`range`)return null;let n=Number(e.min||0),r=Number(e.max||100);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)return null;let i=Number(t);if(!Number.isFinite(i))return null;let a=Math.max(0,Math.min(1,(i-n)/(r-n))),o=e.getBoundingClientRect(),s={bubbles:!0,cancelable:!0,composed:!0,clientX:o.left+o.width*a,clientY:o.top+o.height/2,button:0};return{pointerDown:{...s,buttons:1,pointerType:`mouse`,pointerId:1,isPrimary:!0},pointerUp:{...s,buttons:0,pointerType:`mouse`,pointerId:1,isPrimary:!0},mouseDown:{...s,buttons:1},mouseUp:{...s,buttons:0}}},Ut=(e,t,n={})=>{let r=X(e.elements);if(r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement){let e=r instanceof HTMLInputElement?Ht(r,t):null;if(e){r.dispatchEvent(new PointerEvent(`pointerdown`,e.pointerDown)),r.dispatchEvent(new MouseEvent(`mousedown`,e.mouseDown)),Vt(r,t),r.dispatchEvent(new Event(`input`,{bubbles:!0})),r.dispatchEvent(new PointerEvent(`pointerup`,e.pointerUp)),r.dispatchEvent(new MouseEvent(`mouseup`,e.mouseUp)),r.dispatchEvent(new Event(`change`,{bubbles:!0}));return}Vt(r,t),r.dispatchEvent(new Event(`input`,{bubbles:!0})),r.dispatchEvent(new Event(`change`,{bubbles:!0}));return}if(r instanceof HTMLElement&&r.isContentEditable){r.textContent=t,r.dispatchEvent(new Event(`input`,{bubbles:!0}));return}throw Error(`fill: element <${r.tagName.toLowerCase()}> is not fillable`)},Wt=e.n({permission:()=>Kt,resolve:()=>qt,type:()=>Gt}),Gt=`hover`,Kt={scope:`act.hover`,category:`act`,severity:1,title:`Hover over the page`,description:`Lets the app point at things to reveal menus or tooltips.`},qt=(e,t={})=>{let n=X(e.elements),r=n.getBoundingClientRect(),i={bubbles:!0,cancelable:!0,composed:!0,clientX:r.left+r.width*(t.position?.x??.5),clientY:r.top+r.height*(t.position?.y??.5)},a={...i,pointerType:`mouse`,pointerId:1,isPrimary:!0};n.dispatchEvent(new PointerEvent(`pointerover`,a)),n.dispatchEvent(new PointerEvent(`pointerenter`,{...a,bubbles:!1})),n.dispatchEvent(new MouseEvent(`mouseenter`,{...i,bubbles:!1})),n.dispatchEvent(new MouseEvent(`mouseover`,i)),n.dispatchEvent(new PointerEvent(`pointermove`,a)),n.dispatchEvent(new MouseEvent(`mousemove`,i))},Jt=e.n({permission:()=>Xt,resolve:()=>Zt,type:()=>Yt}),Yt=`textContent`,Xt={scope:`read.text`,category:`read`,severity:1,title:`Read text from the page`,description:`Lets the app see the text shown on this page.`},Zt=(e,t={})=>X(e.elements).textContent,Qt=e.n({permission:()=>en,resolve:()=>tn,type:()=>$t}),$t=`isVisible`,en={scope:`read.visible`,category:`read`,severity:0,title:`See what’s visible on the page`,description:`Lets the app check which elements are currently on screen.`},tn=(e,t={})=>{let n=X(e.elements);if(!(n instanceof HTMLElement))return!0;let r=n.ownerDocument.defaultView?.getComputedStyle(n);if(r?.display===`none`||r?.visibility===`hidden`)return!1;let i=n.getBoundingClientRect();return i.width>0&&i.height>0},nn=e.n({permission:()=>an,resolve:()=>on,type:()=>rn}),rn=`count`,an={scope:`read.count`,category:`read`,severity:0,title:`Count items on the page`,description:`Lets the app count how many matching elements are present.`},on=(e,t={})=>e.elements.length,sn=e.n({permission:()=>ln,resolve:()=>un,type:()=>cn}),cn=`exists`,ln={scope:`read.check`,category:`read`,severity:0,title:`Check if something is on the page`,description:`Lets the app test whether a specific element exists.`},un=(e,t={})=>e.elements.length>0,dn=e.n({permission:()=>pn,resolve:()=>mn,type:()=>fn}),fn=`getAttribute`,pn={scope:`read.info`,category:`read`,severity:1,title:`Read info from the page`,description:`Lets the app read the href value from a part of the page.`},mn=(e,t,n={})=>X(e.elements).getAttribute(t),hn=e.n({permission:()=>_n,resolve:()=>vn,type:()=>gn}),gn=`videoElement`,_n={scope:`media.video`,category:`media`,severity:0,title:`Control video playback`,description:`Lets the app play, pause, seek, and read the video on the page.`},vn=(e,t={})=>{let n=X(e.elements);if(!(n instanceof HTMLVideoElement))throw Error(`videoElement: expected <video>, got <${n.tagName.toLowerCase()}>`);return S(n)},Z=`locator`,yn=[F,{...z,nextLocatorType:`frameLocator`},mt,vt,St,Et,At],bn=[Pt,Rt,Wt,Jt,Qt,nn,sn,dn,hn],xn={type:Z,selectorModules:yn,operationModules:bn},Sn=pt({ownType:Z,selectorModules:yn,operationModules:bn});(()=>{let e={},t=[...xn.selectorModules,...dt.selectorModules];for(let n of t)n.render&&!(n.type in e)&&(e[n.type]=n.render);return e})();var Cn=e=>{if(!e||e===`about:blank`)return!1;let t;try{t=new URL(e,location.href)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;if(t.protocol===`about:`)return!1;let n=t.hostname,r=e=>n===e||n.endsWith(`.${e}`);return r(`fkn.app`)||r(`fkn.dev`)||r(`sdbx.app`)},Q=e=>{if(Cn(e))throw Error(`attachFrame: refusing to target the extension's own pages or an FKN platform origin`)},wn=({src:e,domains:t,lockdown:n})=>{if(!(!n||t.length)&&e&&e!==`about:blank`)throw Error(`attachFrame: lockdown needs domains when the frame already has a src; pass domains or load it via goto`)},Tn={scope:`embed.iframe`,category:`embed`,severity:0,title:`Load another website inside this app`,description:`Lets the app embed external pages directly inside its own view.`},En={scope:`embed.open`,category:`embed`,severity:0,title:`Open a website inside this app`,description:`Lets the app navigate to another site without leaving its window.`},Dn=e=>{let t=ft(e.executeLocator,e.ensurePermission),n=(t,n={})=>(Q(t),e.goto(t,n)),r=()=>e.url();return{...t,goto:n,url:r}},On=`FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY`,kn=async({iframe:e,domains:t=[],syncCookies:n=!0,lockdown:r=!1})=>{let i=crypto.randomUUID();if(Q(e.src),wn({src:e.src,domains:t,lockdown:r}),await A(),!e.isConnected)throw Error(`attachFrame: the iframe must be connected to the document before attaching`);e.dispatchEvent(new CustomEvent(On,{detail:i}));let{executeLocator:a,ensureLocatorPermission:o,goto:s}=await M.attachFrame({marker:i,domains:t,syncCookies:n,lockdown:r});return Dn({executeLocator:a,ensurePermission:o,goto:(e,t={})=>s({url:e,...t}),url:()=>e.src})},An={request:e=>M.requestPermissions(e.map(e=>({key:e.key,scope:e.scope??``,reason:e.reason})))},jn=[`fkn.app`,`fkn.dev`],Mn=e=>{let t=typeof e==`string`?e:e instanceof URL?e.href:e.url,n;try{n=new URL(t)}catch{return}let r=n.hostname;if(jn.some(e=>r===e||r.endsWith(`.${e}`)))throw Error(`fetch refuses FKN platform domains (${r})`)},$=async e=>{if(e!=null)return typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e:new Request(`https://body.invalid/`,{method:`POST`,body:e,duplex:`half`}).arrayBuffer()},Nn=async e=>{if(e.method===`GET`||e.method===`HEAD`)return;let t=await e.clone().arrayBuffer();return t.byteLength?t:void 0},Pn=async(e,n)=>{if(Mn(e),typeof e==`object`&&e&&!(e instanceof URL)&&typeof e.url==`string`){let r=e,i={};r.headers.forEach((e,t)=>{i[t]=e});let a=await $(n?.body===void 0?await Nn(r):n.body);return t.t.then(e=>e.cloud.fetch(r.url,{...n,method:n?.method??r.method,headers:n?.headers??i,body:a}))}let r=e instanceof URL?e.href:e,i=await $(n?.body);return t.t.then(e=>e.cloud.fetch(r,n?.body===void 0?n:{...n,body:i}))};Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return kn}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return En}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Cn}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return xn}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return On}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Mn}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Tn}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return An}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Dn}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Pn}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return S}});
|
|
@@ -437,7 +437,7 @@ var Re = (e) => {
|
|
|
437
437
|
}), We = "owner", Ge = (e) => {
|
|
438
438
|
throw Error("owner: must be processed by the executor as an upward pivot");
|
|
439
439
|
}, Ke = async () => {
|
|
440
|
-
let { backgroundResolvers: e } = await import("./background-
|
|
440
|
+
let { backgroundResolvers: e } = await import("./background-EwGRMga_.js"), t = await (await e).getParentFrameId();
|
|
441
441
|
if (!t) throw Error("owner: already at top frame");
|
|
442
442
|
return t;
|
|
443
443
|
}, qe = () => ({
|
|
@@ -1270,25 +1270,25 @@ var Xe = class {
|
|
|
1270
1270
|
console.error(e);
|
|
1271
1271
|
}
|
|
1272
1272
|
lt.add(n), ut && (n.disabled = !0);
|
|
1273
|
-
}, Y = "frameLocator",
|
|
1273
|
+
}, Y = "frameLocator", pt = [
|
|
1274
1274
|
{
|
|
1275
1275
|
...L,
|
|
1276
1276
|
nextLocatorType: "locator"
|
|
1277
1277
|
},
|
|
1278
1278
|
V,
|
|
1279
1279
|
Ue
|
|
1280
|
-
],
|
|
1280
|
+
], mt = [$e], ht = {
|
|
1281
1281
|
type: Y,
|
|
1282
|
-
selectorModules:
|
|
1283
|
-
operationModules:
|
|
1284
|
-
},
|
|
1282
|
+
selectorModules: pt,
|
|
1283
|
+
operationModules: mt
|
|
1284
|
+
}, gt = _t({
|
|
1285
1285
|
ownType: Y,
|
|
1286
|
-
selectorModules:
|
|
1287
|
-
operationModules:
|
|
1286
|
+
selectorModules: pt,
|
|
1287
|
+
operationModules: mt
|
|
1288
1288
|
});
|
|
1289
1289
|
//#endregion
|
|
1290
1290
|
//#region node_modules/@mfkn/web-extension/lib/content-script/resolvers/locators/factory.js
|
|
1291
|
-
function
|
|
1291
|
+
function _t(e) {
|
|
1292
1292
|
return (t, n, r = []) => ({
|
|
1293
1293
|
...Object.fromEntries(e.selectorModules.map((i) => [i.type, (...a) => {
|
|
1294
1294
|
let o = [...r, {
|
|
@@ -1296,7 +1296,7 @@ function gt(e) {
|
|
|
1296
1296
|
type: i.type,
|
|
1297
1297
|
args: a
|
|
1298
1298
|
}];
|
|
1299
|
-
return (i.nextLocatorType ?? e.ownType) === "locator" ?
|
|
1299
|
+
return (i.nextLocatorType ?? e.ownType) === "locator" ? En(t, n, o) : gt(t, n, o);
|
|
1300
1300
|
}])),
|
|
1301
1301
|
...Object.fromEntries(e.operationModules.map(({ type: e }) => [e, (...i) => Ae(t, r, e, i, n)])),
|
|
1302
1302
|
ensure: (e, t = {}) => n ? n(r, e, [t]) : Promise.resolve()
|
|
@@ -1304,48 +1304,48 @@ function gt(e) {
|
|
|
1304
1304
|
}
|
|
1305
1305
|
//#endregion
|
|
1306
1306
|
//#region node_modules/@mfkn/web-extension/lib/content-script/resolvers/locators/selectors/get-by-role.js
|
|
1307
|
-
var
|
|
1308
|
-
render: () =>
|
|
1309
|
-
resolve: () =>
|
|
1310
|
-
type: () =>
|
|
1311
|
-
}),
|
|
1312
|
-
render: () =>
|
|
1313
|
-
resolve: () =>
|
|
1314
|
-
type: () =>
|
|
1315
|
-
}),
|
|
1316
|
-
render: () =>
|
|
1317
|
-
resolve: () =>
|
|
1318
|
-
type: () =>
|
|
1319
|
-
}),
|
|
1320
|
-
render: () =>
|
|
1321
|
-
resolve: () =>
|
|
1322
|
-
type: () =>
|
|
1323
|
-
}),
|
|
1324
|
-
render: () =>
|
|
1325
|
-
resolve: () =>
|
|
1307
|
+
var vt = /* @__PURE__ */ e({
|
|
1308
|
+
render: () => xt,
|
|
1309
|
+
resolve: () => bt,
|
|
1310
|
+
type: () => yt
|
|
1311
|
+
}), yt = "getByRole", bt = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(`[role="${CSS.escape(t)}"]`)]), xt = (e) => ({ fragment: typeof e == "string" ? `[role="${e.replaceAll("\"", "\\\"")}"]` : "[role]" }), St = /* @__PURE__ */ e({
|
|
1312
|
+
render: () => Tt,
|
|
1313
|
+
resolve: () => wt,
|
|
1314
|
+
type: () => Ct
|
|
1315
|
+
}), Ct = "getByText", wt = (e, t) => e.elements.flatMap((e) => [e, ...e.querySelectorAll("*")]).filter((e) => e.textContent?.includes(t)), Tt = (e) => ({ fragment: typeof e == "string" ? `:has-text("${e.replaceAll("\"", "\\\"")}")` : ":has-text(...)" }), Et = /* @__PURE__ */ e({
|
|
1316
|
+
render: () => kt,
|
|
1317
|
+
resolve: () => Ot,
|
|
1318
|
+
type: () => Dt
|
|
1319
|
+
}), Dt = "getByTestId", Ot = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(`[data-testid="${CSS.escape(t)}"]`)]), kt = (e) => ({ fragment: typeof e == "string" ? `[data-testid="${e.replaceAll("\"", "\\\"")}"]` : "[data-testid]" }), At = /* @__PURE__ */ e({
|
|
1320
|
+
render: () => Nt,
|
|
1321
|
+
resolve: () => Mt,
|
|
1322
|
+
type: () => jt
|
|
1323
|
+
}), jt = "first", Mt = (e) => e.elements.slice(0, 1), Nt = () => ({ fragment: ":first" }), Pt = /* @__PURE__ */ e({
|
|
1324
|
+
render: () => It,
|
|
1325
|
+
resolve: () => Ft,
|
|
1326
1326
|
type: () => "nth"
|
|
1327
|
-
}),
|
|
1327
|
+
}), Ft = (e, t) => {
|
|
1328
1328
|
let n = e.elements.at(t);
|
|
1329
1329
|
return n ? [n] : [];
|
|
1330
|
-
},
|
|
1330
|
+
}, It = (e) => ({ fragment: typeof e == "number" ? `:nth(${e})` : ":nth(?)" }), Lt = (e) => {
|
|
1331
1331
|
let t = Error(e);
|
|
1332
1332
|
return t.name = "LocatorError", t;
|
|
1333
|
-
},
|
|
1334
|
-
if (e.length === 0) throw
|
|
1335
|
-
if (e.length > 1) throw
|
|
1333
|
+
}, X = (e) => {
|
|
1334
|
+
if (e.length === 0) throw Lt("No elements found");
|
|
1335
|
+
if (e.length > 1) throw Lt(`Strict mode violation: locator resolved to ${e.length} elements`);
|
|
1336
1336
|
return e[0];
|
|
1337
|
-
},
|
|
1338
|
-
permission: () =>
|
|
1339
|
-
resolve: () =>
|
|
1340
|
-
type: () =>
|
|
1341
|
-
}),
|
|
1337
|
+
}, Rt = /* @__PURE__ */ e({
|
|
1338
|
+
permission: () => Bt,
|
|
1339
|
+
resolve: () => Vt,
|
|
1340
|
+
type: () => zt
|
|
1341
|
+
}), zt = "click", Bt = {
|
|
1342
1342
|
scope: "act.click",
|
|
1343
1343
|
category: "act",
|
|
1344
1344
|
severity: 3,
|
|
1345
1345
|
title: "Click on the page",
|
|
1346
1346
|
description: "Lets the app press buttons or links for you."
|
|
1347
|
-
},
|
|
1348
|
-
let n =
|
|
1347
|
+
}, Vt = (e, t = {}) => {
|
|
1348
|
+
let n = X(e.elements), r = n.getBoundingClientRect(), i = t.position?.x ?? .5, a = t.position?.y ?? .5, o = {
|
|
1349
1349
|
bubbles: !0,
|
|
1350
1350
|
cancelable: !0,
|
|
1351
1351
|
composed: !0,
|
|
@@ -1369,21 +1369,21 @@ var _t = /* @__PURE__ */ e({
|
|
|
1369
1369
|
...s,
|
|
1370
1370
|
buttons: 0
|
|
1371
1371
|
})), n.dispatchEvent(new MouseEvent("mouseup", l)), n.dispatchEvent(new MouseEvent("click", l));
|
|
1372
|
-
},
|
|
1373
|
-
permission: () =>
|
|
1374
|
-
resolve: () =>
|
|
1375
|
-
type: () =>
|
|
1376
|
-
}),
|
|
1372
|
+
}, Ht = /* @__PURE__ */ e({
|
|
1373
|
+
permission: () => Wt,
|
|
1374
|
+
resolve: () => qt,
|
|
1375
|
+
type: () => Ut
|
|
1376
|
+
}), Ut = "fill", Wt = {
|
|
1377
1377
|
scope: "act.type",
|
|
1378
1378
|
category: "act",
|
|
1379
1379
|
severity: 1,
|
|
1380
1380
|
title: "Type into a text field",
|
|
1381
1381
|
description: "Lets the app fill in form fields on your behalf."
|
|
1382
|
-
},
|
|
1382
|
+
}, Gt = (e, t) => {
|
|
1383
1383
|
e._valueTracker?.setValue("");
|
|
1384
1384
|
let n = e instanceof HTMLTextAreaElement ? HTMLTextAreaElement.prototype : HTMLInputElement.prototype, r = Object.getOwnPropertyDescriptor(n, "value")?.set;
|
|
1385
1385
|
r ? r.call(e, t) : e.value = t;
|
|
1386
|
-
},
|
|
1386
|
+
}, Kt = (e, t) => {
|
|
1387
1387
|
if (e.type !== "range") return null;
|
|
1388
1388
|
let n = Number(e.min || 0), r = Number(e.max || 100);
|
|
1389
1389
|
if (!Number.isFinite(n) || !Number.isFinite(r) || r <= n) return null;
|
|
@@ -1421,15 +1421,15 @@ var _t = /* @__PURE__ */ e({
|
|
|
1421
1421
|
buttons: 0
|
|
1422
1422
|
}
|
|
1423
1423
|
};
|
|
1424
|
-
},
|
|
1425
|
-
let r =
|
|
1424
|
+
}, qt = (e, t, n = {}) => {
|
|
1425
|
+
let r = X(e.elements);
|
|
1426
1426
|
if (r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement) {
|
|
1427
|
-
let e = r instanceof HTMLInputElement ?
|
|
1427
|
+
let e = r instanceof HTMLInputElement ? Kt(r, t) : null;
|
|
1428
1428
|
if (e) {
|
|
1429
|
-
r.dispatchEvent(new PointerEvent("pointerdown", e.pointerDown)), r.dispatchEvent(new MouseEvent("mousedown", e.mouseDown)),
|
|
1429
|
+
r.dispatchEvent(new PointerEvent("pointerdown", e.pointerDown)), r.dispatchEvent(new MouseEvent("mousedown", e.mouseDown)), Gt(r, t), r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new PointerEvent("pointerup", e.pointerUp)), r.dispatchEvent(new MouseEvent("mouseup", e.mouseUp)), r.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
1430
1430
|
return;
|
|
1431
1431
|
}
|
|
1432
|
-
|
|
1432
|
+
Gt(r, t), r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
1433
1433
|
return;
|
|
1434
1434
|
}
|
|
1435
1435
|
if (r instanceof HTMLElement && r.isContentEditable) {
|
|
@@ -1437,18 +1437,18 @@ var _t = /* @__PURE__ */ e({
|
|
|
1437
1437
|
return;
|
|
1438
1438
|
}
|
|
1439
1439
|
throw Error(`fill: element <${r.tagName.toLowerCase()}> is not fillable`);
|
|
1440
|
-
},
|
|
1441
|
-
permission: () =>
|
|
1442
|
-
resolve: () =>
|
|
1443
|
-
type: () =>
|
|
1444
|
-
}),
|
|
1440
|
+
}, Jt = /* @__PURE__ */ e({
|
|
1441
|
+
permission: () => Xt,
|
|
1442
|
+
resolve: () => Zt,
|
|
1443
|
+
type: () => Yt
|
|
1444
|
+
}), Yt = "hover", Xt = {
|
|
1445
1445
|
scope: "act.hover",
|
|
1446
1446
|
category: "act",
|
|
1447
1447
|
severity: 1,
|
|
1448
1448
|
title: "Hover over the page",
|
|
1449
1449
|
description: "Lets the app point at things to reveal menus or tooltips."
|
|
1450
|
-
},
|
|
1451
|
-
let n =
|
|
1450
|
+
}, Zt = (e, t = {}) => {
|
|
1451
|
+
let n = X(e.elements), r = n.getBoundingClientRect(), i = {
|
|
1452
1452
|
bubbles: !0,
|
|
1453
1453
|
cancelable: !0,
|
|
1454
1454
|
composed: !0,
|
|
@@ -1467,115 +1467,115 @@ var _t = /* @__PURE__ */ e({
|
|
|
1467
1467
|
...i,
|
|
1468
1468
|
bubbles: !1
|
|
1469
1469
|
})), n.dispatchEvent(new MouseEvent("mouseover", i)), n.dispatchEvent(new PointerEvent("pointermove", a)), n.dispatchEvent(new MouseEvent("mousemove", i));
|
|
1470
|
-
},
|
|
1471
|
-
permission: () =>
|
|
1472
|
-
resolve: () =>
|
|
1473
|
-
type: () =>
|
|
1474
|
-
}),
|
|
1470
|
+
}, Qt = /* @__PURE__ */ e({
|
|
1471
|
+
permission: () => en,
|
|
1472
|
+
resolve: () => tn,
|
|
1473
|
+
type: () => $t
|
|
1474
|
+
}), $t = "textContent", en = {
|
|
1475
1475
|
scope: "read.text",
|
|
1476
1476
|
category: "read",
|
|
1477
1477
|
severity: 1,
|
|
1478
1478
|
title: "Read text from the page",
|
|
1479
1479
|
description: "Lets the app see the text shown on this page."
|
|
1480
|
-
},
|
|
1481
|
-
permission: () =>
|
|
1482
|
-
resolve: () =>
|
|
1483
|
-
type: () =>
|
|
1484
|
-
}),
|
|
1480
|
+
}, tn = (e, t = {}) => X(e.elements).textContent, nn = /* @__PURE__ */ e({
|
|
1481
|
+
permission: () => an,
|
|
1482
|
+
resolve: () => on,
|
|
1483
|
+
type: () => rn
|
|
1484
|
+
}), rn = "isVisible", an = {
|
|
1485
1485
|
scope: "read.visible",
|
|
1486
1486
|
category: "read",
|
|
1487
1487
|
severity: 0,
|
|
1488
1488
|
title: "See what’s visible on the page",
|
|
1489
1489
|
description: "Lets the app check which elements are currently on screen."
|
|
1490
|
-
},
|
|
1491
|
-
let n =
|
|
1490
|
+
}, on = (e, t = {}) => {
|
|
1491
|
+
let n = X(e.elements);
|
|
1492
1492
|
if (!(n instanceof HTMLElement)) return !0;
|
|
1493
1493
|
let r = n.ownerDocument.defaultView?.getComputedStyle(n);
|
|
1494
1494
|
if (r?.display === "none" || r?.visibility === "hidden") return !1;
|
|
1495
1495
|
let i = n.getBoundingClientRect();
|
|
1496
1496
|
return i.width > 0 && i.height > 0;
|
|
1497
|
-
},
|
|
1498
|
-
permission: () =>
|
|
1499
|
-
resolve: () =>
|
|
1500
|
-
type: () =>
|
|
1501
|
-
}),
|
|
1497
|
+
}, sn = /* @__PURE__ */ e({
|
|
1498
|
+
permission: () => ln,
|
|
1499
|
+
resolve: () => un,
|
|
1500
|
+
type: () => cn
|
|
1501
|
+
}), cn = "count", ln = {
|
|
1502
1502
|
scope: "read.count",
|
|
1503
1503
|
category: "read",
|
|
1504
1504
|
severity: 0,
|
|
1505
1505
|
title: "Count items on the page",
|
|
1506
1506
|
description: "Lets the app count how many matching elements are present."
|
|
1507
|
-
},
|
|
1508
|
-
permission: () =>
|
|
1509
|
-
resolve: () =>
|
|
1510
|
-
type: () =>
|
|
1511
|
-
}),
|
|
1507
|
+
}, un = (e, t = {}) => e.elements.length, dn = /* @__PURE__ */ e({
|
|
1508
|
+
permission: () => pn,
|
|
1509
|
+
resolve: () => mn,
|
|
1510
|
+
type: () => fn
|
|
1511
|
+
}), fn = "exists", pn = {
|
|
1512
1512
|
scope: "read.check",
|
|
1513
1513
|
category: "read",
|
|
1514
1514
|
severity: 0,
|
|
1515
1515
|
title: "Check if something is on the page",
|
|
1516
1516
|
description: "Lets the app test whether a specific element exists."
|
|
1517
|
-
},
|
|
1518
|
-
permission: () =>
|
|
1519
|
-
resolve: () =>
|
|
1520
|
-
type: () =>
|
|
1521
|
-
}),
|
|
1517
|
+
}, mn = (e, t = {}) => e.elements.length > 0, hn = /* @__PURE__ */ e({
|
|
1518
|
+
permission: () => _n,
|
|
1519
|
+
resolve: () => vn,
|
|
1520
|
+
type: () => gn
|
|
1521
|
+
}), gn = "getAttribute", _n = {
|
|
1522
1522
|
scope: "read.info",
|
|
1523
1523
|
category: "read",
|
|
1524
1524
|
severity: 1,
|
|
1525
1525
|
title: "Read info from the page",
|
|
1526
1526
|
description: "Lets the app read the href value from a part of the page."
|
|
1527
|
-
},
|
|
1528
|
-
permission: () =>
|
|
1529
|
-
resolve: () =>
|
|
1530
|
-
type: () =>
|
|
1531
|
-
}),
|
|
1527
|
+
}, vn = (e, t, n = {}) => X(e.elements).getAttribute(t), yn = /* @__PURE__ */ e({
|
|
1528
|
+
permission: () => xn,
|
|
1529
|
+
resolve: () => Sn,
|
|
1530
|
+
type: () => bn
|
|
1531
|
+
}), bn = "videoElement", xn = {
|
|
1532
1532
|
scope: "media.video",
|
|
1533
1533
|
category: "media",
|
|
1534
1534
|
severity: 0,
|
|
1535
1535
|
title: "Control video playback",
|
|
1536
1536
|
description: "Lets the app play, pause, seek, and read the video on the page."
|
|
1537
|
-
},
|
|
1538
|
-
let n =
|
|
1537
|
+
}, Sn = (e, t = {}) => {
|
|
1538
|
+
let n = X(e.elements);
|
|
1539
1539
|
if (!(n instanceof HTMLVideoElement)) throw Error(`videoElement: expected <video>, got <${n.tagName.toLowerCase()}>`);
|
|
1540
1540
|
return C(n);
|
|
1541
|
-
},
|
|
1541
|
+
}, Z = "locator", Cn = [
|
|
1542
1542
|
L,
|
|
1543
1543
|
{
|
|
1544
1544
|
...V,
|
|
1545
1545
|
nextLocatorType: "frameLocator"
|
|
1546
1546
|
},
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
],
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
],
|
|
1563
|
-
type:
|
|
1564
|
-
selectorModules:
|
|
1565
|
-
operationModules:
|
|
1566
|
-
},
|
|
1567
|
-
ownType:
|
|
1568
|
-
selectorModules:
|
|
1569
|
-
operationModules:
|
|
1547
|
+
vt,
|
|
1548
|
+
St,
|
|
1549
|
+
Et,
|
|
1550
|
+
At,
|
|
1551
|
+
Pt
|
|
1552
|
+
], wn = [
|
|
1553
|
+
Rt,
|
|
1554
|
+
Ht,
|
|
1555
|
+
Jt,
|
|
1556
|
+
Qt,
|
|
1557
|
+
nn,
|
|
1558
|
+
sn,
|
|
1559
|
+
dn,
|
|
1560
|
+
hn,
|
|
1561
|
+
yn
|
|
1562
|
+
], Tn = {
|
|
1563
|
+
type: Z,
|
|
1564
|
+
selectorModules: Cn,
|
|
1565
|
+
operationModules: wn
|
|
1566
|
+
}, En = _t({
|
|
1567
|
+
ownType: Z,
|
|
1568
|
+
selectorModules: Cn,
|
|
1569
|
+
operationModules: wn
|
|
1570
1570
|
});
|
|
1571
1571
|
(() => {
|
|
1572
|
-
let e = {}, t = [...
|
|
1572
|
+
let e = {}, t = [...Tn.selectorModules, ...ht.selectorModules];
|
|
1573
1573
|
for (let n of t) n.render && !(n.type in e) && (e[n.type] = n.render);
|
|
1574
1574
|
return e;
|
|
1575
1575
|
})();
|
|
1576
1576
|
//#endregion
|
|
1577
1577
|
//#region node_modules/@mfkn/web-extension/lib/lib/frame-url.js
|
|
1578
|
-
var
|
|
1578
|
+
var Dn = (e) => {
|
|
1579
1579
|
if (!e || e === "about:blank") return !1;
|
|
1580
1580
|
let t;
|
|
1581
1581
|
try {
|
|
@@ -1587,44 +1587,44 @@ var En = (e) => {
|
|
|
1587
1587
|
if (t.protocol === "about:") return !1;
|
|
1588
1588
|
let n = t.hostname, r = (e) => n === e || n.endsWith(`.${e}`);
|
|
1589
1589
|
return r("fkn.app") || r("fkn.dev") || r("sdbx.app");
|
|
1590
|
-
},
|
|
1591
|
-
if (
|
|
1592
|
-
},
|
|
1590
|
+
}, Q = (e) => {
|
|
1591
|
+
if (Dn(e)) throw Error("attachFrame: refusing to target the extension's own pages or an FKN platform origin");
|
|
1592
|
+
}, On = ({ src: e, domains: t, lockdown: n }) => {
|
|
1593
1593
|
if (!(!n || t.length) && e && e !== "about:blank") throw Error("attachFrame: lockdown needs domains when the frame already has a src; pass domains or load it via goto");
|
|
1594
|
-
},
|
|
1594
|
+
}, kn = {
|
|
1595
1595
|
scope: "embed.iframe",
|
|
1596
1596
|
category: "embed",
|
|
1597
1597
|
severity: 0,
|
|
1598
1598
|
title: "Load another website inside this app",
|
|
1599
1599
|
description: "Lets the app embed external pages directly inside its own view."
|
|
1600
|
-
},
|
|
1600
|
+
}, An = {
|
|
1601
1601
|
scope: "embed.open",
|
|
1602
1602
|
category: "embed",
|
|
1603
1603
|
severity: 0,
|
|
1604
1604
|
title: "Open a website inside this app",
|
|
1605
1605
|
description: "Lets the app navigate to another site without leaving its window."
|
|
1606
|
-
},
|
|
1607
|
-
let t =
|
|
1606
|
+
}, jn = (e) => {
|
|
1607
|
+
let t = gt(e.executeLocator, e.ensurePermission), n = (t, n = {}) => (Q(t), e.goto(t, n)), r = () => e.url();
|
|
1608
1608
|
return {
|
|
1609
1609
|
...t,
|
|
1610
1610
|
goto: n,
|
|
1611
1611
|
url: r
|
|
1612
1612
|
};
|
|
1613
|
-
},
|
|
1613
|
+
}, Mn = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", Nn = async ({ iframe: e, domains: t = [], syncCookies: n = !0, lockdown: r = !1 }) => {
|
|
1614
1614
|
let i = crypto.randomUUID();
|
|
1615
|
-
if (
|
|
1615
|
+
if (Q(e.src), On({
|
|
1616
1616
|
src: e.src,
|
|
1617
1617
|
domains: t,
|
|
1618
1618
|
lockdown: r
|
|
1619
1619
|
}), await j(), !e.isConnected) throw Error("attachFrame: the iframe must be connected to the document before attaching");
|
|
1620
|
-
e.dispatchEvent(new CustomEvent(
|
|
1620
|
+
e.dispatchEvent(new CustomEvent(Mn, { detail: i }));
|
|
1621
1621
|
let { executeLocator: a, ensureLocatorPermission: o, goto: s } = await M.attachFrame({
|
|
1622
1622
|
marker: i,
|
|
1623
1623
|
domains: t,
|
|
1624
1624
|
syncCookies: n,
|
|
1625
1625
|
lockdown: r
|
|
1626
1626
|
});
|
|
1627
|
-
return
|
|
1627
|
+
return jn({
|
|
1628
1628
|
executeLocator: a,
|
|
1629
1629
|
ensurePermission: o,
|
|
1630
1630
|
goto: (e, t = {}) => s({
|
|
@@ -1633,11 +1633,11 @@ var En = (e) => {
|
|
|
1633
1633
|
}),
|
|
1634
1634
|
url: () => e.src
|
|
1635
1635
|
});
|
|
1636
|
-
},
|
|
1636
|
+
}, Pn = { request: (e) => M.requestPermissions(e.map((e) => ({
|
|
1637
1637
|
key: e.key,
|
|
1638
1638
|
scope: e.scope ?? "",
|
|
1639
1639
|
reason: e.reason
|
|
1640
|
-
}))) },
|
|
1640
|
+
}))) }, Fn = ["fkn.app", "fkn.dev"], $ = (e) => {
|
|
1641
1641
|
let t = typeof e == "string" ? e : e instanceof URL ? e.href : e.url, n;
|
|
1642
1642
|
try {
|
|
1643
1643
|
n = new URL(t);
|
|
@@ -1645,7 +1645,36 @@ var En = (e) => {
|
|
|
1645
1645
|
return;
|
|
1646
1646
|
}
|
|
1647
1647
|
let r = n.hostname;
|
|
1648
|
-
if (
|
|
1649
|
-
}, In =
|
|
1648
|
+
if (Fn.some((e) => r === e || r.endsWith(`.${e}`))) throw Error(`fetch refuses FKN platform domains (${r})`);
|
|
1649
|
+
}, In = async (e) => {
|
|
1650
|
+
if (e != null) return typeof e == "string" || e instanceof ArrayBuffer || ArrayBuffer.isView(e) ? e : new Request("https://body.invalid/", {
|
|
1651
|
+
method: "POST",
|
|
1652
|
+
body: e,
|
|
1653
|
+
duplex: "half"
|
|
1654
|
+
}).arrayBuffer();
|
|
1655
|
+
}, Ln = async (e) => {
|
|
1656
|
+
if (e.method === "GET" || e.method === "HEAD") return;
|
|
1657
|
+
let t = await e.clone().arrayBuffer();
|
|
1658
|
+
return t.byteLength ? t : void 0;
|
|
1659
|
+
}, Rn = async (e, n) => {
|
|
1660
|
+
if ($(e), typeof e == "object" && e && !(e instanceof URL) && typeof e.url == "string") {
|
|
1661
|
+
let r = e, i = {};
|
|
1662
|
+
r.headers.forEach((e, t) => {
|
|
1663
|
+
i[t] = e;
|
|
1664
|
+
});
|
|
1665
|
+
let a = await In(n?.body === void 0 ? await Ln(r) : n.body);
|
|
1666
|
+
return t.then((e) => e.cloud.fetch(r.url, {
|
|
1667
|
+
...n,
|
|
1668
|
+
method: n?.method ?? r.method,
|
|
1669
|
+
headers: n?.headers ?? i,
|
|
1670
|
+
body: a
|
|
1671
|
+
}));
|
|
1672
|
+
}
|
|
1673
|
+
let r = e instanceof URL ? e.href : e, i = await In(n?.body);
|
|
1674
|
+
return t.then((e) => e.cloud.fetch(r, n?.body === void 0 ? n : {
|
|
1675
|
+
...n,
|
|
1676
|
+
body: i
|
|
1677
|
+
}));
|
|
1678
|
+
};
|
|
1650
1679
|
//#endregion
|
|
1651
|
-
export { ce as A, w as B, be as C, ge as D, P as E, ae as F, d as H, j as I, D as L, fe as M, O as N, le as O, k as P, T as R, xe as S, _e as T, E as V, Le as _,
|
|
1680
|
+
export { ce as A, w as B, be as C, ge as D, P as E, ae as F, d as H, j as I, D as L, fe as M, O as N, le as O, k as P, T as R, xe as S, _e as T, E as V, Le as _, Nn as a, F as b, An as c, Dn as d, Tn as f, dt as g, Y as h, Mn as i, N as j, ue as k, Q as l, ht as m, $ as n, kn as o, Z as p, Pn as r, jn as s, Rn as t, On as u, I as v, ve as w, ye as x, we as y, C as z };
|
package/cloud-CIO9w9MV.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Du95zAKk.cjs"),n=require("./api-DD5v1qP9.cjs"),r=require("./dns.cjs"),i=require("./cloud/fs.cjs"),a=require("./net-BPpdNdpy.cjs"),o=require("./dgram-DcvdNkg6.cjs"),s=require("./http.cjs");let c=require("osra");var l=`autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write`,u=2e4,d=65e3,f=3e4,p=5e3,m=new Set([`videoElement`]),h=()=>`https://fkn.app`,g=e=>!e||e===`about:blank`,_=e=>e?``:`incognito-${crypto.randomUUID()}`,v=({target:e,session:t})=>{let n=new URL(`/attach-frame`,h());return e&&n.searchParams.set(`url`,e),t&&n.searchParams.set(`session`,t),n.href},y=(e,t,n)=>{let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(n)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))},b=(e,t)=>{let n=()=>{a(),t()},r=e.parentNode,i=new MutationObserver(()=>{(!e.isConnected||e.parentNode!==r)&&(a(),t())}),a=()=>{window.removeEventListener(`pagehide`,n),i.disconnect()};window.addEventListener(`pagehide`,n,{once:!0}),r&&i.observe(r,{childList:!0}),e.isConnected||(a(),t())},x=()=>Object.assign(Error(`cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe`),{name:t.v}),S=(e,t)=>{let n=[...e.split(`;`),...t.split(`;`)].map(e=>e.trim()).filter(Boolean);return[...new Set(n)].join(`; `)},C=[300,1200,4e3],w=e=>{let t=()=>{if(!e.isConnected)return;let t=e.style.height,n=e.getBoundingClientRect();n.height&&(e.style.height=`${n.height-1}px`,setTimeout(()=>{e.style.height=t},50))};t();for(let e of C)setTimeout(t,e)},T=e=>{let t=e.getAttribute(`sandbox`);if(t===null)return;let n=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),r=[`allow-scripts`,`allow-same-origin`].filter(e=>!n.has(e));if(r.length)throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(` and `)} for the render proxy to load`)},E=async({iframe:e,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);if(i)throw Error(`cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame`);if(!e.isConnected)throw Error(`cloud.attachFrame: the iframe must be connected to the document before attaching`);T(e);let a=e.getAttribute(`src`)??``,o=(()=>{if(g(a))return null;try{return new URL(e.src||a,location.href)}catch{throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${a}`)}})();if(o){let e=new URL(`/attach-frame`,h());if(o.origin===e.origin&&o.pathname===e.pathname)throw Error(`cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe`)}let s=o?.href??``;s&&t.l(s);let C=s,E=_(r),D=new AbortController,O=e.referrerPolicy,k=e.allow;if(e.referrerPolicy=`origin`,e.allow=S(l,e.allow),e.src=v({target:s,session:E}),!e.contentWindow)throw Error(`cloud.attachFrame: the iframe window is not available`);try{let n=await y((0,c.expose)({},{key:`fkn-attach-frame`,origin:h(),transport:{receive:window,emit:e.contentWindow},unregisterSignal:D.signal}),u,`cloud.attachFrame: timed out connecting to the render proxy page`);await y(n.ready(),d,`cloud.attachFrame: the render proxy never became ready`),s&&w(e),b(e,()=>D.abort());let r=e.contentWindow,i=()=>{if(!(!D.signal.aborted&&e.isConnected&&e.contentWindow===r))throw D.abort(),x()};return t.s({executeLocator:(e,r,a)=>m.has(r)?Promise.reject(t.y(r,`cloud`)):(i(),n.executeLocator(e,r,a)),ensurePermission:async()=>{},goto:async(t,r={})=>{let a=new URL(t,location.href).href;i();let{timeoutMs:o}=r;await y(n.goto(a,r),(o??f)+p,`cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded`),C=a,w(e)},url:()=>C})}catch(t){throw D.abort(),e.referrerPolicy=O,e.allow=k,e.src=s||`about:blank`,t}},D=()=>typeof window<`u`&&!0,O=async()=>{let e=await n.t.then(e=>e.cloud.quota());return{premium:e.premium,overQuota:e.overQuota,throttled:e.overQuota&&!e.premium,usedBytes:e.usedBytes,limitBytes:e.limitBytes,remainingBytes:e.remaining,bytesPerSecond:e.bytesPerSecond,bitsPerSecond:e.bytesPerSecond*8}},k=e.n({attachFrame:()=>E,available:()=>A,dgram:()=>o.i,dns:()=>r.t,fetch:()=>t.t,fs:()=>i.t,http:()=>s.t,net:()=>a.s,quota:()=>O}),A=()=>n.n;Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return A}});
|
package/cloud-D2s-dPZy.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./rolldown-runtime-DF993M8W.js";
|
|
2
|
-
import { l as t, s as n, t as r, v as i, y as a } from "./proxy-Cusnx9Ex.js";
|
|
3
|
-
import { n as o, t as s } from "./api--bnCFd4w.js";
|
|
4
|
-
import { t as c } from "./dns.js";
|
|
5
|
-
import { t as l } from "./cloud/fs.js";
|
|
6
|
-
import { s as u } from "./net-BFYMbE4N.js";
|
|
7
|
-
import { i as d } from "./dgram-CKRbKVzG.js";
|
|
8
|
-
import { t as f } from "./http.js";
|
|
9
|
-
import { expose as p } from "osra";
|
|
10
|
-
//#region src/lib/cloud/frame.ts
|
|
11
|
-
var m = "autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write", h = 2e4, g = 65e3, _ = 3e4, v = 5e3, y = /* @__PURE__ */ new Set(["videoElement"]), b = () => "https://fkn.app", x = (e) => !e || e === "about:blank", S = (e) => e ? "" : `incognito-${crypto.randomUUID()}`, C = ({ target: e, session: t }) => {
|
|
12
|
-
let n = new URL("/attach-frame", b());
|
|
13
|
-
return e && n.searchParams.set("url", e), t && n.searchParams.set("session", t), n.href;
|
|
14
|
-
}, w = (e, t, n) => {
|
|
15
|
-
let r, i = new Promise((e, i) => {
|
|
16
|
-
r = setTimeout(() => i(Error(n)), t);
|
|
17
|
-
});
|
|
18
|
-
return Promise.race([e, i]).finally(() => clearTimeout(r));
|
|
19
|
-
}, T = (e, t) => {
|
|
20
|
-
let n = () => {
|
|
21
|
-
a(), t();
|
|
22
|
-
}, r = e.parentNode, i = new MutationObserver(() => {
|
|
23
|
-
(!e.isConnected || e.parentNode !== r) && (a(), t());
|
|
24
|
-
}), a = () => {
|
|
25
|
-
window.removeEventListener("pagehide", n), i.disconnect();
|
|
26
|
-
};
|
|
27
|
-
window.addEventListener("pagehide", n, { once: !0 }), r && i.observe(r, { childList: !0 }), e.isConnected || (a(), t());
|
|
28
|
-
}, E = () => Object.assign(/* @__PURE__ */ Error("cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe"), { name: i }), D = (e, t) => {
|
|
29
|
-
let n = [...e.split(";"), ...t.split(";")].map((e) => e.trim()).filter(Boolean);
|
|
30
|
-
return [...new Set(n)].join("; ");
|
|
31
|
-
}, O = [
|
|
32
|
-
300,
|
|
33
|
-
1200,
|
|
34
|
-
4e3
|
|
35
|
-
], k = (e) => {
|
|
36
|
-
let t = () => {
|
|
37
|
-
if (!e.isConnected) return;
|
|
38
|
-
let t = e.style.height, n = e.getBoundingClientRect();
|
|
39
|
-
n.height && (e.style.height = `${n.height - 1}px`, setTimeout(() => {
|
|
40
|
-
e.style.height = t;
|
|
41
|
-
}, 50));
|
|
42
|
-
};
|
|
43
|
-
t();
|
|
44
|
-
for (let e of O) setTimeout(t, e);
|
|
45
|
-
}, A = (e) => {
|
|
46
|
-
let t = e.getAttribute("sandbox");
|
|
47
|
-
if (t === null) return;
|
|
48
|
-
let n = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), r = ["allow-scripts", "allow-same-origin"].filter((e) => !n.has(e));
|
|
49
|
-
if (r.length) throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(" and ")} for the render proxy to load`);
|
|
50
|
-
}, j = async ({ iframe: e, domains: r = [], syncCookies: i = !0, lockdown: o = !1 }) => {
|
|
51
|
-
if (typeof window > "u") throw Error("cloud.attachFrame needs a window realm");
|
|
52
|
-
if (o) throw Error("cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame");
|
|
53
|
-
if (!e.isConnected) throw Error("cloud.attachFrame: the iframe must be connected to the document before attaching");
|
|
54
|
-
A(e);
|
|
55
|
-
let s = e.getAttribute("src") ?? "", c = (() => {
|
|
56
|
-
if (x(s)) return null;
|
|
57
|
-
try {
|
|
58
|
-
return new URL(e.src || s, location.href);
|
|
59
|
-
} catch {
|
|
60
|
-
throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${s}`);
|
|
61
|
-
}
|
|
62
|
-
})();
|
|
63
|
-
if (c) {
|
|
64
|
-
let e = new URL("/attach-frame", b());
|
|
65
|
-
if (c.origin === e.origin && c.pathname === e.pathname) throw Error("cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe");
|
|
66
|
-
}
|
|
67
|
-
let l = c?.href ?? "";
|
|
68
|
-
l && t(l);
|
|
69
|
-
let u = l, d = S(i), f = new AbortController(), O = e.referrerPolicy, j = e.allow;
|
|
70
|
-
if (e.referrerPolicy = "origin", e.allow = D(m, e.allow), e.src = C({
|
|
71
|
-
target: l,
|
|
72
|
-
session: d
|
|
73
|
-
}), !e.contentWindow) throw Error("cloud.attachFrame: the iframe window is not available");
|
|
74
|
-
try {
|
|
75
|
-
let t = await w(p({}, {
|
|
76
|
-
key: "fkn-attach-frame",
|
|
77
|
-
origin: b(),
|
|
78
|
-
transport: {
|
|
79
|
-
receive: window,
|
|
80
|
-
emit: e.contentWindow
|
|
81
|
-
},
|
|
82
|
-
unregisterSignal: f.signal
|
|
83
|
-
}), h, "cloud.attachFrame: timed out connecting to the render proxy page");
|
|
84
|
-
await w(t.ready(), g, "cloud.attachFrame: the render proxy never became ready"), l && k(e), T(e, () => f.abort());
|
|
85
|
-
let r = e.contentWindow, i = () => {
|
|
86
|
-
if (!(!f.signal.aborted && e.isConnected && e.contentWindow === r)) throw f.abort(), E();
|
|
87
|
-
};
|
|
88
|
-
return n({
|
|
89
|
-
executeLocator: (e, n, r) => y.has(n) ? Promise.reject(a(n, "cloud")) : (i(), t.executeLocator(e, n, r)),
|
|
90
|
-
ensurePermission: async () => {},
|
|
91
|
-
goto: async (n, r = {}) => {
|
|
92
|
-
let a = new URL(n, location.href).href;
|
|
93
|
-
i();
|
|
94
|
-
let { timeoutMs: o } = r;
|
|
95
|
-
await w(t.goto(a, r), (o ?? _) + v, "cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded"), u = a, k(e);
|
|
96
|
-
},
|
|
97
|
-
url: () => u
|
|
98
|
-
});
|
|
99
|
-
} catch (t) {
|
|
100
|
-
throw f.abort(), e.referrerPolicy = O, e.allow = j, e.src = l || "about:blank", t;
|
|
101
|
-
}
|
|
102
|
-
}, M = () => typeof window < "u" && !0, N = async () => {
|
|
103
|
-
let e = await s.then((e) => e.cloud.quota());
|
|
104
|
-
return {
|
|
105
|
-
premium: e.premium,
|
|
106
|
-
overQuota: e.overQuota,
|
|
107
|
-
throttled: e.overQuota && !e.premium,
|
|
108
|
-
usedBytes: e.usedBytes,
|
|
109
|
-
limitBytes: e.limitBytes,
|
|
110
|
-
remainingBytes: e.remaining,
|
|
111
|
-
bytesPerSecond: e.bytesPerSecond,
|
|
112
|
-
bitsPerSecond: e.bytesPerSecond * 8
|
|
113
|
-
};
|
|
114
|
-
}, P = /* @__PURE__ */ e({
|
|
115
|
-
attachFrame: () => j,
|
|
116
|
-
available: () => F,
|
|
117
|
-
dgram: () => d,
|
|
118
|
-
dns: () => c,
|
|
119
|
-
fetch: () => r,
|
|
120
|
-
fs: () => l,
|
|
121
|
-
http: () => f,
|
|
122
|
-
net: () => u,
|
|
123
|
-
quota: () => N
|
|
124
|
-
}), F = () => o;
|
|
125
|
-
//#endregion
|
|
126
|
-
export { M as a, j as i, P as n, N as r, F as t };
|