@fkn/lib 0.4.9 → 0.5.0
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/account.cjs +1 -0
- package/account.d.ts +17 -0
- package/account.js +28 -0
- package/api-ByfayMm1.js +67 -0
- package/api-CDb2pv7C.cjs +1 -0
- package/background-Dk_vaVP1.cjs +1 -0
- package/{background-CTsVv_a0.js → background-TtzKw6g0.js} +5 -4
- package/chunk-B6C_zzib.cjs +1 -0
- package/chunk-CPXzm0be.js +11 -0
- package/cloud/dgram.cjs +1 -0
- package/cloud/dgram.d.ts +537 -0
- package/cloud/dgram.js +4 -0
- package/cloud/dns.cjs +1 -0
- package/cloud/dns.d.ts +12 -0
- package/cloud/dns.js +3 -0
- package/cloud/fs/promises.cjs +1 -0
- package/cloud/fs/promises.d.ts +45 -0
- package/cloud/fs/promises.js +8 -0
- package/cloud/fs.cjs +1 -0
- package/cloud/fs.d.ts +75 -0
- package/cloud/fs.js +20 -0
- package/cloud/http.cjs +1 -0
- package/cloud/http.d.ts +767 -0
- package/cloud/http.js +5 -0
- package/cloud/net.cjs +1 -0
- package/cloud/net.d.ts +606 -0
- package/cloud/net.js +4 -0
- package/cloud-BVnscun4.js +33 -0
- package/cloud-DTL2B5pW.cjs +1 -0
- package/cloud.cjs +1 -0
- package/cloud.d.ts +1048 -0
- package/cloud.js +12 -0
- package/desktop.cjs +1 -0
- package/desktop.d.ts +49 -0
- package/desktop.js +51 -0
- package/dgram-5YUb70O2.js +326 -0
- package/dgram-Cdi6Y7zJ.cjs +1 -0
- package/dgram.cjs +1 -0
- package/dgram.d.ts +537 -0
- package/dgram.js +4 -0
- package/dns.cjs +1 -0
- package/dns.d.ts +12 -0
- package/dns.js +6 -0
- package/extension-9Uv_0HdS.cjs +1 -0
- package/extension-Dgz0UTy0.js +245 -0
- package/extension.cjs +1 -0
- package/extension.d.ts +853 -0
- package/extension.js +5 -0
- package/fs/promises.cjs +1 -0
- package/fs/promises.d.ts +46 -0
- package/fs/promises.js +8 -0
- package/fs-B7JumDCn.js +78 -0
- package/fs-DrwvwtqC.cjs +1 -0
- package/fs.cjs +1 -0
- package/fs.d.ts +84 -0
- package/fs.js +5 -0
- package/http.cjs +9 -0
- package/http.d.ts +767 -0
- package/http.js +541 -0
- package/index.cjs +1 -9
- package/index.d.ts +197 -140
- package/index.js +27 -1879
- package/locator-Cf7M3QKN.cjs +53 -0
- package/{locator-Q5m8i40Z.js → locator-DxAsGV_o.js} +331 -337
- package/net-Bl6_W3bd.js +275 -0
- package/net-C5kWnI4C.cjs +1 -0
- package/net.cjs +1 -0
- package/net.d.ts +606 -0
- package/net.js +4 -0
- package/node-fs-Bd_UUx1m.js +361 -0
- package/node-fs-lrlD_zqB.cjs +1 -0
- package/opfs/promises.cjs +1 -0
- package/opfs/promises.d.ts +46 -0
- package/opfs/promises.js +6 -0
- package/opfs-BfcYLPGb.js +55 -0
- package/opfs-Dsi4FkJU.cjs +1 -0
- package/opfs.cjs +1 -0
- package/opfs.d.ts +83 -0
- package/opfs.js +35 -0
- package/package.json +91 -1
- package/proxy-A9UvWUaF.cjs +1 -0
- package/proxy-wiZN4eTR.js +14 -0
- package/storage-BadvHtv0.cjs +1 -0
- package/storage-z0q3iena.js +13 -0
- package/utils-BsNRWMfl.cjs +1 -0
- package/utils-CNydj3OT.js +52 -0
- package/background-BqRFQggD.cjs +0 -1
- package/locator-Cjl21Nkt.cjs +0 -53
package/index.cjs
CHANGED
|
@@ -1,9 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./locator-Cjl21Nkt.cjs`);let t=require(`osra`),n=require(`stream`),r=require(`events`),i=require(`ip-address`),a=require(`buffer`),o=require(`react`);var s=`FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY`,c=`fknExtension`,l=(0,t.createTypedEventTarget)();typeof document<`u`&&document.addEventListener(s,()=>{l.dispatchEvent(new CustomEvent(`statuschange`,{detail:{enabled:u()}}))});var u=()=>typeof document>`u`?!1:document.documentElement.dataset[c]===`true`,d=null,f=e=>{d=e},ee=150,p=(e=1e3)=>new Promise((t,n)=>{if(u())return t();let r,i=e=>{clearTimeout(r),s.disconnect(),document.removeEventListener(`readystatechange`,c),e()},a=()=>i(async()=>{if(d&&(await d().catch(()=>{}),u()))return t();n(Error(`The FKN WebExtension is not installed, enabled or not exposed on this page.`))}),o=()=>{clearTimeout(r),r=setTimeout(()=>u()?i(t):a(),ee)},s=new MutationObserver(()=>{u()&&i(t)}),c=()=>{document.readyState===`complete`&&!u()&&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();u()&&i(t)}),te,m=new Proxy({},{get:(n,r)=>async(...n)=>{await p(),te??=(0,t.expose)({},{transport:window,revivableModules:e.l});let i=(await te)[r];return i(...n)}}),ne={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.`},re={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.`},ie={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.`},ae=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},oe=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:`):ae(n)},se=[`fkn.app`,`fkn.dev`],ce=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 se.some(e=>n===e||n.endsWith(`.${e}`))},le=e=>{if(ce(e))throw Error(`fetch: refusing to target the extension's own pages or FKN platform domains`)},ue=[`origin`,`referer`],de=e=>{if(!e?.headers)return;let t=new Headers(e.headers),n=ue.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},fe=async(e,t)=>{let n=new Request(e,t);le(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:de(t),reason:t?.reason,signal:t?.signal??void 0})},pe={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.`},me={get:e=>m.getCookie(e)},he={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.`},ge=e=>m.setRequestHeaderRule(e),_e=e=>m.removeRequestHeaderRule({ruleId:e});(()=>{let t={},n=[...e.t.selectorModules,...e.i.selectorModules];for(let e of n)e.render&&!(e.type in t)&&(t[e.type]=e.render);return t})();var h=`FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY`,ve=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;return n===`fkn.app`||n.endsWith(`.fkn.app`)},g=e=>{if(ve(e))throw Error(`attachFrame: refusing to target the extension's own pages or fkn.app`)},ye={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.`},be={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.`},xe={scope:`embed.evaluate`,category:`embed`,severity:0,title:`Run app code inside an embedded frame`,description:`Lets the app execute its own code inside a page it embedded, to read back a computed result.`},Se=async({iframe:t,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{let a=crypto.randomUUID();if(g(t.src),await p(),!t.isConnected)throw Error(`attachFrame: the iframe must be connected to the document before attaching`);t.dispatchEvent(new CustomEvent(h,{detail:a}));let{executeLocator:o,ensureLocatorPermission:s,goto:c,evaluate:l}=await m.attachFrame({marker:a,domains:n,syncCookies:r,lockdown:i}),u=e.r(o,s),d=(e,t={})=>(g(e),c({url:e,...t})),f=((e,t)=>l(e,t)),ee=()=>t.src;return{...u,goto:d,evaluate:f,url:ee}},Ce={request:e=>m.requestPermissions(e.map(e=>({key:e.key,scope:e.scope??``,reason:e.reason})))},we=32,Te=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),Ee=e=>{let t=e.style;t.setProperty(`display`,`block`,`important`),t.setProperty(`position`,`fixed`,`important`),t.setProperty(`top`,`0`,`important`),t.setProperty(`left`,`0`,`important`),t.setProperty(`width`,`100%`,`important`),t.setProperty(`height`,`100%`,`important`),t.setProperty(`border`,`none`,`important`),t.setProperty(`clip-path`,`inset(100%)`,`important`),t.setProperty(`background`,`transparent`),t.setProperty(`color-scheme`,`normal`),t.setProperty(`z-index`,`2147483647`),e.setAttribute(`title`,`FKN`)},De=({x:e,y:t,width:n,height:r})=>`M${e} ${t}h${n}v${r}h${-n}Z`,Oe=(e,{modal:t,rects:n})=>{if(!Te){let r=t||n.length>0;e.style.setProperty(`pointer-events`,r?`auto`:`none`,`important`),e.style.setProperty(`visibility`,r?`visible`:`hidden`,`important`);return}let r=t?`none`:n.length===0?`inset(100%)`:`path('${n.map(De).join(``)}')`,i=r===`none`||CSS.supports(`clip-path`,r)?r:`inset(100%)`;e.style.setProperty(`clip-path`,i,`important`)},ke=e=>{if(typeof e!=`object`||!e)return null;let{x:t,y:n,width:r,height:i}=e;if(![t,n,r,i].every(e=>typeof e==`number`&&Number.isFinite(e)))return null;let a=window.innerWidth,o=window.innerHeight,s=Math.max(0,Math.min(Math.round(t),a)),c=Math.max(0,Math.min(Math.round(n),o)),l=Math.max(s,Math.min(Math.round(t+r),a)),u=Math.max(c,Math.min(Math.round(n+i),o));return{x:s,y:c,width:l-s,height:u-c}},Ae=e=>{if(typeof e!=`object`||!e)return null;let t=e,n=(Array.isArray(t.rects)?t.rects.slice(0,we):[]).map(ke).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:t.modal===!0,rects:n}},_=null,je=()=>_!==null,Me=e=>{Ee(e),Oe(e,{modal:!1,rects:[]}),_=e},Ne=e=>{if(!_)return;let t=Ae(e);t&&Oe(_,t)},Pe=`https://fkn.app`,v=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,Fe=v?.querySelector(`iframe[src="${Pe}/api"]`)??null,y=v?.createElement(`iframe`)??null;!Fe&&y&&v&&(y.src=`${Pe}/api`,v.body.appendChild(y));var b=Fe??y,Ie=b?.contentWindow??null;b&&v&&Me(b);var Le=(()=>{if(typeof window<`u`)return Ie?{receive:window,emit:Ie}:void 0;if(typeof self<`u`)return{receive:self,emit:self}})(),Re=Le!==void 0,x=Le?(0,t.expose)({},{key:`fkn-api`,transport:Le}):new Promise(()=>{});x.then(e=>{je()&&e.overlay.setHost(Ne)},()=>{});var ze=[`fkn.app`,`fkn.dev`],Be=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(ze.some(e=>r===e||r.endsWith(`.${e}`)))throw Error(`fetch refuses FKN platform domains (${r})`)},Ve=(e,t)=>(Be(e),x.then(n=>n.cloud.fetch(e,t))),He=async()=>{let e=await x.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}},Ue=e.g({lookup:()=>We}),We=(e,t)=>x.then(n=>n.cloud.dns.lookup(e,t)),Ge=e.g({available:()=>Ke,list:()=>qe,quota:()=>Je,readFile:()=>Ye,remove:()=>Ze,writeFile:()=>Xe}),Ke=()=>x.then(e=>e.cloud.fs.available()).catch(()=>!1),qe=()=>x.then(e=>e.cloud.fs.list()),Je=()=>x.then(e=>e.cloud.fs.quota()),Ye=async e=>await(await x).cloud.fs.readFile(e),Xe=(e,t,n)=>x.then(r=>r.cloud.fs.writeFile(e,t,n?.contentType??null)).then(()=>void 0),Ze=e=>x.then(t=>t.cloud.fs.remove(e)).then(()=>void 0),Qe=new TextEncoder;new TextDecoder;var S=e=>i.Address4.isValid(e),$e=e=>i.Address6.isValid(e),et=e=>S(e)?4:$e(e)?6:0,tt=(...e)=>{if(typeof e[0]==`string`)throw Error(`FKN WebVPN does not support IPC connections`);let t=typeof e.at(-1)==`function`?e.at(-1):void 0;return e[0]&&typeof e[0]==`object`?{...e[0],callback:t}:{port:e[0]??0,host:typeof e[1]==`string`?e[1]:void 0,callback:t}},nt=(...e)=>{let t=typeof e.at(-1)==`function`?e.at(-1):void 0,n=e[0]??0,r=typeof e[1]==`string`?e[1]:void 0;return typeof e[0]==`object`?{...e[0],address:e[0].address??r,port:e[0].port??n,callback:t}:{address:r,port:n,callback:t}},rt=(...e)=>{let t=typeof e.at(-1)==`function`?e.at(-1):void 0,n=e[0];if(typeof e[2]==`number`)return{message:n,offset:e[1],length:e[2],port:typeof e[3]==`number`?e[3]:0,address:typeof e[4]==`string`?e[4]:void 0,callback:t};{let r=typeof e[1]==`number`?e[1]:0,i=typeof e[2]==`string`?e[2]:void 0;return{message:n,offset:0,length:n.length,port:r,address:i,callback:t}}};new TextEncoder,new TextDecoder;var it=e.g({Server:()=>w,Socket:()=>C,_default:()=>ct,connect:()=>at,createConnection:()=>ot,createServer:()=>st,default:()=>ct,isIP:()=>et,isIPv4:()=>S,isIPv6:()=>$e}),C=class extends n.Stream.Duplex{_localAddress;_remoteAddress;_webVPNTcpSocketPromise;constructor(e){if(e?.fd!==void 0)throw Error(`FKN WebVPN does not support file descriptors`);super(e),e?.connection&&this.__webvpn_tcp_socket_init__(e.connection)}__webvpn_tcp_socket_init__(e){if(this._webVPNTcpSocketPromise=e.then(e=>{let t=e.dataReadableStream.getReader(),n=e.dataWritableStream.getWriter();return this._localAddress={address:e.localAddress,family:e.localFamily,port:e.localPort},this._remoteAddress={address:e.remoteAddress,family:e.remoteFamily,port:e.remotePort},{...e,reader:t,writer:n}}).catch(e=>{this.emit(`error`,e)}),!this._webVPNTcpSocketPromise)throw Error(`Socket not connected`);return this._webVPNTcpSocketPromise.then(e=>{e&&this.emit(`connect`)}),this._webVPNTcpSocketPromise}_read(e){if(!this._webVPNTcpSocketPromise)throw Error(`Socket not connected`);this._webVPNTcpSocketPromise.then(e=>{if(!e){this.push(null);return}e.reader.read().then(({value:e,done:t})=>{if(t){this.push(null);return}this._restartTimeoutTimer(),this.push(e)}).catch(e=>{this.destroy(e)})})}_write(e,t,n){if(!this._webVPNTcpSocketPromise){n(Error(`Socket not connected`));return}this._webVPNTcpSocketPromise.then(async t=>{if(!t)throw Error(`Socket not connected`);await t.writer.ready,await t.writer.write(e),this._restartTimeoutTimer(),n()}).catch(n)}connect(...e){let t=tt(...e),n=this.__webvpn_tcp_socket_init__(x.then(e=>e.cloud.webvpn.tcpSocket({remoteAddress:t.host??`localhost`,remotePort:t.port})));return t.callback&&n.then(e=>{e&&t.callback.call(this)}),this}_end(...e){return this._webVPNTcpSocketPromise?(e.length!==0&&this.write(e[0],e[1],e[2]),this._webVPNTcpSocketPromise.then(async e=>{e&&await e.end()}),this):this}_destroy(e){return this._timeoutTimer&&clearTimeout(this._timeoutTimer),this._webVPNTcpSocketPromise&&this._webVPNTcpSocketPromise.then(async e=>{e&&await e.destroy()}),this}destroySoon(){this._webVPNTcpSocketPromise&&this._webVPNTcpSocketPromise.then(async e=>{e&&await e.destroySoon()})}resetAndDestroy(){return this._webVPNTcpSocketPromise&&this._webVPNTcpSocketPromise.then(async e=>{e&&await e.resetAndDestroy()}),this}_timeoutMs;_timeoutTimer;_restartTimeoutTimer(){this._timeoutTimer&&clearTimeout(this._timeoutTimer),this._timeoutMs&&(this._timeoutTimer=setTimeout(()=>this.emit(`timeout`),this._timeoutMs))}setTimeout(e,t){return t&&this.on(`timeout`,t),this._timeoutMs=e,this._restartTimeoutTimer(),this}setNoDelay(e){let t=e??!0;return this._setTcpOption({type:0,value:t}),this}setKeepAlive(e,t){let n=e??!1,r=t!==void 0&&t>0?Math.max(1,Math.round(t/1e3)):0;return this._setTcpOption({type:2,enabled:n,initialDelaySeconds:r}),this}setSendBufferSize(e){return this._setTcpOption({type:3,value:e}),this}setRecvBufferSize(e){return this._setTcpOption({type:4,value:e}),this}_typeOfService;getTypeOfService(){return this._typeOfService??0}setTypeOfService(e){return this._typeOfService=e,this}_setTcpOption(e){if(!this._webVPNTcpSocketPromise){this.emit(`error`,Error(`Cannot set socket option before connect`));return}this._webVPNTcpSocketPromise.then(async t=>{if(t)try{await t.setOption(e)}catch(e){this.emit(`error`,e)}})}write(e,t,...n){return super.write(e,t,...n)}address(){return this._localAddress??{}}unref(){return this}ref(){return this}autoSelectFamilyAttemptedAddresses;bufferSize;bytesRead;bytesWritten;connecting;pending;get localAddress(){if(!this._localAddress)throw Error(`Socket is not connected`);return this._localAddress.address}get localPort(){if(!this._localAddress)throw Error(`Socket is not connected`);return this._localAddress.port}get localFamily(){if(!this._localAddress)throw Error(`Socket is not connected`);return this._localAddress.family}readyState;get remoteAddress(){if(!this._remoteAddress)throw Error(`Socket is not connected`);return this._remoteAddress.address}get remotePort(){if(!this._remoteAddress)throw Error(`Socket is not connected`);return this._remoteAddress.port}get remoteFamily(){if(!this._remoteAddress)throw Error(`Socket is not connected`);return this._remoteAddress.family}timeout},w=class extends r.EventEmitter{_localAddress;_webVPNTcpSocketListenerPromise;constructor(e,t){super(e),t&&this.on(`connection`,t),e?.connection&&this.__webvpn_tcp_socket_listener_init__(e.connection)}__webvpn_tcp_socket_listener_init__(e){return this._webVPNTcpSocketListenerPromise=e.then(e=>(this._localAddress={address:e.localAddress,family:e.localFamily,port:e.localPort},e)).catch(e=>{this.emit(`error`,e)}),this._webVPNTcpSocketListenerPromise.then(e=>{e&&this.emit(`listening`)}),this._webVPNTcpSocketListenerPromise}listen(...e){let t=tt(...e),n=e=>{let t=new C({connection:Promise.resolve(e)});this.emit(`connection`,t)},r=e=>x.then(r=>r.cloud.webvpn.tcpSocketListener({localAddress:e,localPort:t.port,onConnection:n})),i=t.host?r(t.host):r(`::`).catch(()=>r(`0.0.0.0`)),a=this.__webvpn_tcp_socket_listener_init__(i);return t.callback&&a.then(e=>{e&&t.callback.call(this)}),this}close(e){return this._webVPNTcpSocketListenerPromise&&this._webVPNTcpSocketListenerPromise.then(async t=>{if(t)try{await t.close(),this._localAddress=void 0,this.emit(`close`),e&&e()}catch(t){this._localAddress=void 0,this.emit(`close`),e&&e(t)}}),this}address(){return this._localAddress??null}getConnections(e){throw Error(`Method not implemented.`)}ref(){return this}unref(){return this}maxConnections;connections;listening;async[Symbol.asyncDispose](){}},at=(e,t)=>new C().connect(e,t),ot=(e,t)=>new C().connect(e,t),st=(e,t)=>{typeof e==`function`&&(t=e,e=void 0);let n=new w(e);return t&&n.on(`connection`,t),n},ct={Socket:C,Server:w,connect:at,createConnection:ot,createServer:st,isIP:et,isIPv4:S,isIPv6:$e},lt=e.g({Socket:()=>ut,createSocket:()=>pt}),ut=class extends r.EventEmitter{_type;_localAddress;_remoteAddress;_webVPNUdpSocketPromise;_dataPort;_socketId;_sendQueue=[];_sendQueueBytes=0;_sendFlushScheduled=!1;_peerTailCache=new Map;constructor(e){if(super(e),!e)throw Error(`Missing options`);this._type=e.type}_lastRecvBufferSize=0;_lastSendBufferSize=0;_lastTtl=64;_lastMulticastTtl=1;_lastMulticastLoopback=!0;_setUdpOption(e){if(!this._webVPNUdpSocketPromise){this.emit(`error`,Error(`Cannot set socket option before bind`));return}this._webVPNUdpSocketPromise.then(async t=>{if(t)try{await t.setOption(e)}catch(e){this.emit(`error`,e)}})}_onDataPortBatch(e){let t=new DataView(e),n=0;for(;n+4<=e.byteLength;){let r=t.getUint32(n);n+=4;let i=n+r;if(i>e.byteLength)break;let o=n+4,s=t.getUint8(o);o+=1;let c,l,u;if(s===2){if(!this._remoteAddress){n=i;continue}c=this._remoteAddress.address,l=this._remoteAddress.family,u=this._remoteAddress.port}else{let n=new Uint8Array(e,o,s===0?4:16);if(s===0)l=`IPv4`,c=`${n[0]}.${n[1]}.${n[2]}.${n[3]}`;else{l=`IPv6`;let e=[];for(let t=0;t<16;t+=2)e.push(((n[t]<<8|n[t+1])>>>0).toString(16));c=e.join(`:`)}o+=n.byteLength,u=t.getUint16(o),o+=2}let d=t.getUint32(o);o+=4,this.emit(`message`,a.Buffer.from(e.slice(o,o+d)),{address:c,family:l,port:u,size:d}),n=i}}_peerTail(e,t){if(e===void 0||t===void 0)return dt;let n=`${e}|${t}`,r=this._peerTailCache.get(n);if(r)return r;let a=i.Address4.isValid(e)?T(e):E(e),o=new Uint8Array(1+a.byteLength+2);return o[0]=a.byteLength===4?0:1,o.set(a,1),new DataView(o.buffer).setUint16(1+a.byteLength,t),this._peerTailCache.set(n,o),o}_portSend(e,t,n){let r=this._peerTail(t,n),i=new Uint8Array(8+r.byteLength+4+e.byteLength),a=new DataView(i.buffer);a.setUint32(0,i.byteLength-4),a.setUint32(4,this._socketId),i.set(r,8),a.setUint32(8+r.byteLength,e.byteLength),i.set(e,12+r.byteLength),this._sendQueue.push(i),this._sendQueueBytes+=i.byteLength,!this._sendFlushScheduled&&(this._sendFlushScheduled=!0,queueMicrotask(()=>{this._sendFlushScheduled=!1;let e=this._sendQueue,t=this._sendQueueBytes;if(this._sendQueue=[],this._sendQueueBytes=0,!e.length||!this._dataPort)return;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.byteLength;this._dataPort.postMessage(n.buffer,[n.buffer])}))}addMembership(e,t){if(i.Address4.isValid(e)){let n=T(e),r=t&&i.Address4.isValid(t)?T(t):new Uint8Array([0,0,0,0]);this._setUdpOption({type:5,group:n,interface:r})}else if(i.Address6.isValid(e)){let t=E(e);this._setUdpOption({type:7,group:t,ifIndex:0})}else this.emit(`error`,Error(`Invalid multicast address: ${e}`))}address(){if(!this._localAddress)throw Error(`EBADF`);return this._localAddress}bind(...e){let t=nt(...e),n=this._type===`udp6`?`::`:`0.0.0.0`;return this._webVPNUdpSocketPromise=x.then(e=>e.cloud.webvpn.udpSocket({type:this._type,address:t.address??n,port:t.port,dataPort:!0})).then(e=>{if(e.dataPort)this._socketId=e.socketId,this._dataPort=e.dataPort,this._dataPort.onmessage=e=>this._onDataPortBatch(e.data);else{let t=e.dataReadableStream.getReader(),n=async()=>{let{value:e,done:r}=await t.read();r||(this.emit(`message`,a.Buffer.from(e.data),{address:e.address,family:e.family,port:e.port,size:e.size}),n())};n()}return this._localAddress={address:e.localAddress,family:e.localFamily,port:e.localPort},e}).catch(e=>{this.emit(`error`,e)}),this._webVPNUdpSocketPromise.then(e=>{e&&this.emit(`listening`)}),t.callback&&this._webVPNUdpSocketPromise.then(e=>{e&&t.callback.call(this)}),this}close(e){if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);return this._webVPNUdpSocketPromise.then(async t=>{if(!t)throw Error(`Socket not bound`);this._dataPort?.close(),this._dataPort=void 0,await t.close(),e&&e(),this.emit(`close`)}),this}connect(...e){if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);this._webVPNUdpSocketPromise.then(async t=>{if(!t)throw Error(`Socket not bound`);let n=e[0],r=this._type===`udp6`?`::1`:`127.0.0.1`,i=typeof e[1]==`string`?e[1]:r,a=typeof e.at(-1)==`function`?e.at(-1):void 0;await t.connect({remotePort:n,remoteAddress:i}),this._remoteAddress={address:i,family:this._type===`udp6`?`IPv6`:`IPv4`,port:n},a&&a()})}disconnect(){if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);this._webVPNUdpSocketPromise.then(async e=>{if(!e)throw Error(`Socket not bound`);await e.connect({remotePort:0,remoteAddress:this._type===`udp4`?`0.0.0.0`:`::`})})}dropMembership(e,t){if(i.Address4.isValid(e)){let n=T(e),r=t&&i.Address4.isValid(t)?T(t):new Uint8Array([0,0,0,0]);this._setUdpOption({type:6,group:n,interface:r})}else if(i.Address6.isValid(e)){let t=E(e);this._setUdpOption({type:8,group:t,ifIndex:0})}else this.emit(`error`,Error(`Invalid multicast address: ${e}`))}getRecvBufferSize(){return this._lastRecvBufferSize}getSendBufferSize(){return this._lastSendBufferSize}getSendQueueSize(){return 0}getSendQueueCount(){return 0}ref(){return this}remoteAddress(){if(!this._remoteAddress)throw Error(`ERR_SOCKET_DGRAM_NOT_CONNECTED`);return{address:this._remoteAddress.address,family:this._remoteAddress.family,port:this._remoteAddress.port}}send(...e){this._webVPNUdpSocketPromise||this.bind();let t=rt(...e),n=this._type===`udp6`?`::1`:`127.0.0.1`;if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);this._webVPNUdpSocketPromise.then(e=>{if(!e)throw Error(`Socket not bound`);let r=ft(t.message),a=t.callback,o=t.address??n,s=this._remoteAddress!==void 0&&t.address===void 0;if(this._dataPort&&(s||i.Address4.isValid(o)||i.Address6.isValid(o))){this._portSend(r,s?void 0:o,s?void 0:t.port),a?.call(this,null,r.byteLength);return}e.send({...t,address:o,message:r.byteOffset===0&&r.byteLength===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}).then(()=>a?.call(this,null,r.byteLength),e=>a?a.call(this,e,0):this.emit(`error`,e))})}setBroadcast(e){this._setUdpOption({type:0,value:e})}setMulticastInterface(e){}setMulticastLoopback(e){return this._setUdpOption({type:3,value:e}),this._setUdpOption({type:4,value:e}),this._lastMulticastLoopback=e,e}setMulticastTTL(e){return this._setUdpOption({type:2,value:e}),this._lastMulticastTtl=e,e}setRecvBufferSize(e){this._setUdpOption({type:10,value:e}),this._lastRecvBufferSize=e}setSendBufferSize(e){this._setUdpOption({type:9,value:e}),this._lastSendBufferSize=e}setTTL(e){return this._setUdpOption({type:1,value:e}),this._lastTtl=e,e}unref(){return this}addSourceSpecificMembership(e,t,n){}dropSourceSpecificMembership(e,t,n){}async[Symbol.asyncDispose](){await new Promise(e=>{this.close(e)})}},dt=new Uint8Array([2]),ft=e=>{if(typeof e==`string`)return Qe.encode(e);if(e instanceof Uint8Array)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(Array.isArray(e)){let t=e.map(ft),n=new Uint8Array(t.reduce((e,t)=>e+t.byteLength,0)),r=0;for(let e of t)n.set(e,r),r+=e.byteLength;return n}return new Uint8Array(e)},T=e=>{let t=e.split(`.`).map(e=>parseInt(e,10));if(t.length!==4||t.some(e=>Number.isNaN(e)||e<0||e>255))throw Error(`Invalid IPv4 address: ${e}`);return new Uint8Array(t)},E=e=>{let t=new i.Address6(e).getBitsBase16(0,128).match(/.{2}/g);if(!t||t.length!==16)throw Error(`Invalid IPv6 address: ${e}`);return new Uint8Array(t.map(e=>parseInt(e,16)))},pt=(e,t)=>{let n=new ut(typeof e==`string`?{type:e}:e);return t&&n.on(`message`,t),n},mt=e.g({Agent:()=>jt,ClientRequest:()=>kt,HTTPParser:()=>wt,IncomingMessage:()=>k,METHODS:()=>gt,STATUS_CODES:()=>D,Server:()=>At,ServerResponse:()=>Dt,_default:()=>It,createServer:()=>Ft,default:()=>It,get:()=>Pt,globalAgent:()=>Mt,request:()=>Nt}),ht=new TextDecoder(`latin1`),gt=`ACL.BIND.CHECKOUT.CONNECT.COPY.DELETE.GET.HEAD.LINK.LOCK.M-SEARCH.MERGE.MKACTIVITY.MKCALENDAR.MKCOL.MOVE.NOTIFY.OPTIONS.PATCH.POST.PROPFIND.PROPPATCH.PURGE.PUT.REBIND.REPORT.SEARCH.SOURCE.SUBSCRIBE.TRACE.UNBIND.UNLINK.UNLOCK.UNSUBSCRIBE`.split(`.`),D={100:`Continue`,101:`Switching Protocols`,102:`Processing`,103:`Early Hints`,200:`OK`,201:`Created`,202:`Accepted`,203:`Non-Authoritative Information`,204:`No Content`,205:`Reset Content`,206:`Partial Content`,207:`Multi-Status`,208:`Already Reported`,226:`IM Used`,300:`Multiple Choices`,301:`Moved Permanently`,302:`Found`,303:`See Other`,304:`Not Modified`,305:`Use Proxy`,307:`Temporary Redirect`,308:`Permanent Redirect`,400:`Bad Request`,401:`Unauthorized`,402:`Payment Required`,403:`Forbidden`,404:`Not Found`,405:`Method Not Allowed`,406:`Not Acceptable`,407:`Proxy Authentication Required`,408:`Request Timeout`,409:`Conflict`,410:`Gone`,411:`Length Required`,412:`Precondition Failed`,413:`Payload Too Large`,414:`URI Too Long`,415:`Unsupported Media Type`,416:`Range Not Satisfiable`,417:`Expectation Failed`,418:`I'm a Teapot`,421:`Misdirected Request`,422:`Unprocessable Entity`,423:`Locked`,424:`Failed Dependency`,425:`Too Early`,426:`Upgrade Required`,428:`Precondition Required`,429:`Too Many Requests`,431:`Request Header Fields Too Large`,451:`Unavailable For Legal Reasons`,500:`Internal Server Error`,501:`Not Implemented`,502:`Bad Gateway`,503:`Service Unavailable`,504:`Gateway Timeout`,505:`HTTP Version Not Supported`,506:`Variant Also Negotiates`,507:`Insufficient Storage`,508:`Loop Detected`,509:`Bandwidth Limit Exceeded`,510:`Not Extended`,511:`Network Authentication Required`},_t=new Set([`content-type`,`content-length`,`user-agent`,`referer`,`host`,`authorization`,`proxy-authorization`,`if-modified-since`,`if-unmodified-since`,`from`,`location`,`max-forwards`,`retry-after`,`etag`,`last-modified`,`server`,`age`,`expires`]),vt=13,yt=10,bt=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,O=(e,t)=>(e.code=t,e),xt=(e,t)=>{if(e.length===0)return t;if(t.length===0)return e;let n=new Uint8Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n},St=(e,t)=>{for(let n=t;n+1<e.length;n++)if(e[n]===vt&&e[n+1]===yt)return n;return-1},Ct=e=>{for(let t=0;t+3<e.length;t++)if(e[t]===vt&&e[t+1]===yt&&e[t+2]===vt&&e[t+3]===yt)return t;return-1},wt=class{buf=new Uint8Array;state=`HEAD`;framing=`none`;bodyRemaining=0;chunkState=`size`;skipBody=!1;constructor(e,t){this.mode=e,this.handlers=t}execute(e){this.buf=xt(this.buf,e);let t=!0;for(;t;)if(t=!1,this.state===`HEAD`){let e=Ct(this.buf);if(e===-1)return;let n=this.buf.subarray(0,e);this.buf=this.buf.subarray(e+4);let r=this.parseHead(n);this.handlers.onHeaders(r),this.setupBody(r),this.framing===`none`?(this.handlers.onComplete(),this.reset(),t=this.buf.length>0):(this.state=`BODY`,t=!0)}else this.consumeBody()&&(this.handlers.onComplete(),this.reset(),t=this.buf.length>0)}finish(){this.state===`BODY`&&this.framing===`eof`&&(this.handlers.onComplete(),this.reset())}reset(){this.state=`HEAD`,this.framing=`none`,this.bodyRemaining=0,this.chunkState=`size`,this.skipBody=!1}parseHead(e){let t=ht.decode(e).split(`\r
|
|
2
|
-
`),n=t.shift()??``,r=[];for(let e of t)(e.startsWith(` `)||e.startsWith(` `))&&r.length>0?r[r.length-1]+=` `+e.trim():r.push(e);let i=[],a={};for(let e of r){if(!e)continue;let t=e.indexOf(`:`);if(t===-1)continue;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();i.push(n,r),this.addHeader(a,n,r)}let o={httpVersionMajor:1,httpVersionMinor:1,httpVersion:`1.1`,headers:a,rawHeaders:i};if(this.mode===`request`){let[e,t,r]=n.split(` `);o.method=(e??`GET`).toUpperCase(),o.url=t??`/`,this.applyVersion(o,r)}else{let e=n.indexOf(` `),t=n.slice(0,e),r=n.slice(e+1),i=r.indexOf(` `),a=i===-1?r:r.slice(0,i);o.statusCode=parseInt(a,10)||0,o.statusMessage=i===-1?``:r.slice(i+1),this.applyVersion(o,t)}return o}applyVersion(e,t){let n=/HTTP\/(\d)\.(\d)/i.exec(t??``);n&&(e.httpVersionMajor=parseInt(n[1],10),e.httpVersionMinor=parseInt(n[2],10),e.httpVersion=`${e.httpVersionMajor}.${e.httpVersionMinor}`)}addHeader(e,t,n){let r=t.toLowerCase();if(r===`set-cookie`){let t=e[`set-cookie`];Array.isArray(t)?t.push(n):e[`set-cookie`]=[n];return}let i=e[r];i===void 0?e[r]=n:_t.has(r)||(e[r]=`${i}, ${n}`)}setupBody(e){if(this.skipBody){this.framing=`none`;return}let t=e.headers[`transfer-encoding`];if(typeof t==`string`&&t.toLowerCase().includes(`chunked`)){this.framing=`chunked`,this.chunkState=`size`;return}let n=e.headers[`content-length`];if(typeof n==`string`&&n!==``){let e=parseInt(n,10);e>0?(this.framing=`length`,this.bodyRemaining=e):this.framing=`none`;return}if(this.mode===`response`){let t=e.statusCode??0;t>=100&&t<200||t===204||t===304?this.framing=`none`:this.framing=`eof`}else this.framing=`none`}consumeBody(){if(this.framing===`length`){if(this.buf.length===0)return!1;let e=Math.min(this.bodyRemaining,this.buf.length);return this.handlers.onBody(this.buf.subarray(0,e)),this.buf=this.buf.subarray(e),this.bodyRemaining-=e,this.bodyRemaining===0}return this.framing===`eof`?(this.buf.length>0&&(this.handlers.onBody(this.buf),this.buf=new Uint8Array),!1):this.framing===`chunked`?this.consumeChunked():!0}consumeChunked(){for(;;)if(this.chunkState===`size`){let e=St(this.buf,0);if(e===-1)return!1;let t=ht.decode(this.buf.subarray(0,e)),n=parseInt(t.split(`;`)[0].trim(),16);if(this.buf=this.buf.subarray(e+2),Number.isNaN(n))return!0;n===0?this.chunkState=`trailer`:(this.bodyRemaining=n,this.chunkState=`data`)}else if(this.chunkState===`data`){if(this.buf.length===0)return!1;let e=Math.min(this.bodyRemaining,this.buf.length);this.handlers.onBody(this.buf.subarray(0,e)),this.buf=this.buf.subarray(e),this.bodyRemaining-=e,this.bodyRemaining===0&&(this.chunkState=`dataCRLF`)}else if(this.chunkState===`dataCRLF`){if(this.buf.length<2)return!1;this.buf=this.buf.subarray(2),this.chunkState=`size`}else{let e=St(this.buf,0);if(e===-1)return!1;let t=e===0;if(this.buf=this.buf.subarray(e+2),t)return!0}}},Tt=(e,t)=>a.Buffer.isBuffer(e)?e:typeof e==`string`?a.Buffer.from(e,t??`utf8`):e instanceof Uint8Array?a.Buffer.from(e):e instanceof ArrayBuffer?a.Buffer.from(new Uint8Array(e)):a.Buffer.from(String(e)),k=class extends n.Stream.Readable{httpVersion=`1.1`;httpVersionMajor=1;httpVersionMinor=1;headers={};rawHeaders=[];trailers={};rawTrailers=[];method;url;statusCode;statusMessage;complete=!1;socket;constructor(e){super(),this.socket=e}get connection(){return this.socket}_applyHead(e){this.httpVersion=e.httpVersion,this.httpVersionMajor=e.httpVersionMajor,this.httpVersionMinor=e.httpVersionMinor,this.headers=e.headers,this.rawHeaders=e.rawHeaders,this.method=e.method,this.url=e.url,this.statusCode=e.statusCode,this.statusMessage=e.statusMessage}_read(){}setTimeout(e,t){return this.socket.setTimeout(e,t),this}},Et=class extends n.Stream.Writable{_headerStore=new Map;headersSent=!1;chunkedEncoding=!1;finished=!1;_bodyWritten=!1;setHeader(e,t){if(this.headersSent)throw O(Error(`Cannot set headers after they are sent to the client`),`ERR_HTTP_HEADERS_SENT`);if(typeof e!=`string`||!bt.test(e))throw O(TypeError(`Header name must be a valid HTTP token [${JSON.stringify(String(e))}]`),`ERR_INVALID_HTTP_TOKEN`);if(t===void 0)throw O(TypeError(`Invalid value "undefined" for header "${e}"`),`ERR_HTTP_INVALID_HEADER_VALUE`);return this._headerStore.set(e.toLowerCase(),[e,Array.isArray(t)?[...t]:t]),this}getHeader(e){return this._headerStore.get(e.toLowerCase())?.[1]}getHeaderNames(){return[...this._headerStore.values()].map(([e])=>e)}getHeaders(){let e={};for(let[t,n]of this._headerStore.values())e[t]=n;return e}hasHeader(e){return this._headerStore.has(e.toLowerCase())}removeHeader(e){if(this.headersSent)throw Error(`Cannot remove headers after they are sent to the client`);this._headerStore.delete(e.toLowerCase())}_storeHeader(e){let t=this.hasHeader(`content-length`),n=this.getHeader(`transfer-encoding`);typeof n==`string`&&n.toLowerCase().includes(`chunked`)?this.chunkedEncoding=!0:!t&&this._shouldSendBody()&&(this.chunkedEncoding=!0,this.setHeader(`Transfer-Encoding`,`chunked`));let r=e+`\r
|
|
3
|
-
`;for(let[e,t]of this._headerStore.values())if(Array.isArray(t))for(let n of t)r+=`${e}: ${n}\r\n`;else r+=`${e}: ${t}\r\n`;return r+=`\r
|
|
4
|
-
`,r}_writeToSocket(e,t){if(!this.socket){t(Error(`Socket is not available`));return}this.socket.write(e,t)}write(e,t,n){return this._bodyWritten=!0,super.write(e,t,n)}_write(e,t,n){let r=Tt(e),i=[];if(this.headersSent||=(this._implicitHeader(),i.push(a.Buffer.from(this._headBlock,`latin1`)),!0),this.chunkedEncoding?r.length>0&&(i.push(a.Buffer.from(`${r.length.toString(16)}\r\n`,`latin1`)),i.push(r),i.push(a.Buffer.from(`\r
|
|
5
|
-
`,`latin1`))):i.push(r),i.length===0){n();return}this._writeToSocket(a.Buffer.concat(i),n)}_final(e){let t=[];if(this.headersSent||=(!this.chunkedEncoding&&!this.hasHeader(`content-length`)&&this.setHeader(`Content-Length`,0),this._implicitHeader(),t.push(a.Buffer.from(this._headBlock,`latin1`)),!0),this.chunkedEncoding&&t.push(a.Buffer.from(`0\r
|
|
6
|
-
\r
|
|
7
|
-
`,`latin1`)),this.finished=!0,t.length===0){e();return}this._writeToSocket(a.Buffer.concat(t),e)}end(e,t,n){if(e!=null&&typeof e!=`function`&&!this._bodyWritten&&!this.headersSent&&!this.chunkedEncoding&&!this.hasHeader(`content-length`)){let n=typeof t==`string`?t:void 0;this.setHeader(`Content-Length`,Tt(e,n).length)}return super.end(e,t,n)}_headBlock},Dt=class extends Et{statusCode=200;statusMessage;_writeHeadCalled=!1;sendDate=!0;req;socket;_keepAlive=!0;constructor(e){super(),this.req=e,this.socket=e.socket}_shouldSendBody(){if(this.req.method===`HEAD`)return!1;let e=this.statusCode;return!(e>=100&&e<200||e===204||e===304)}writeHead(e,t,n){if(this._writeHeadCalled||this.headersSent)throw O(Error(`Cannot render headers after they are sent to the client`),`ERR_HTTP_HEADERS_SENT`);this._writeHeadCalled=!0,this.statusCode=e;let r=n;if(typeof t==`string`?this.statusMessage=t:t!=null&&(r=t),Array.isArray(r)){let e=Array.isArray(r[0])?r:Array.from({length:Math.floor(r.length/2)},(e,t)=>[r[t*2],r[t*2+1]]);for(let[t,n]of e)n!==void 0&&this._appendHeader(t,n)}else if(r)for(let[e,t]of Object.entries(r))t!==void 0&&this.setHeader(e,t);return this}_appendHeader(e,t){let n=this.getHeader(e);if(n===void 0)this.setHeader(e,t);else{let r=[...Array.isArray(n)?n:[n],...Array.isArray(t)?t:[t]].map(String);this.setHeader(e,r)}}_implicitHeader(){let e=this.statusMessage??D[this.statusCode]??`unknown`;this.sendDate&&!this.hasHeader(`date`)&&this.setHeader(`Date`,new Date().toUTCString()),this.hasHeader(`connection`)||this.setHeader(`Connection`,this._keepAlive?`keep-alive`:`close`),this._headBlock=this._storeHeader(`HTTP/1.1 ${this.statusCode} ${e}`)}writeContinue(){this._writeToSocket(a.Buffer.from(`HTTP/1.1 100 Continue\r
|
|
8
|
-
\r
|
|
9
|
-
`,`latin1`),()=>{})}setTimeout(e,t){return this.socket?.setTimeout(e,t),this}},Ot=(...e)=>{let t={},n={},r,i=[...e],a=i.shift();if(typeof a==`string`||a instanceof URL){let e=typeof a==`string`?new URL(a):a;t={protocol:e.protocol,hostname:e.hostname,host:e.hostname,port:e.port,path:`${e.pathname}${e.search}`,auth:e.username?`${e.username}:${e.password}`:void 0};let o=i.shift();typeof o==`function`?r=o:o&&typeof o==`object`&&(n=o,r=i.shift())}else a&&typeof a==`object`&&(n=a,r=i.shift());return{options:{...t,...n},callback:r}},kt=class extends Et{method;path;host;protocol;socket;get connection(){return this.socket}res=null;aborted=!1;_aborted=!1;constructor(e,t){super(),this.method=(e.method??`GET`).toUpperCase(),this.path=e.path??`/`,this.protocol=e.protocol??`http:`;let n=e.hostname??e.host??`localhost`;this.host=n;let r=Number(e.port??(this.protocol===`https:`?443:80));if(t&&this.once(`response`,t),e.headers)for(let[t,n]of Object.entries(e.headers))n!==void 0&&this.setHeader(t,n);if(!this.hasHeader(`host`)){let e=this.protocol===`https:`&&r===443||this.protocol!==`https:`&&r===80;this.setHeader(`Host`,e?n:`${n}:${r}`)}e.auth&&!this.hasHeader(`authorization`)&&this.setHeader(`Authorization`,`Basic ${a.Buffer.from(e.auth).toString(`base64`)}`),this.socket=new C,this.emit(`socket`,this.socket),this.socket.on(`error`,e=>{this._aborted||this.emit(`error`,e)}),this._attachResponseParser(),this.socket.connect({host:n,port:r},()=>{this.emit(`connect`)})}_shouldSendBody(){return this.method!==`GET`&&this.method!==`HEAD`&&this.method!==`DELETE`}_implicitHeader(){this._headBlock=this._storeHeader(`${this.method} ${this.path} HTTP/1.1`)}_attachResponseParser(){let e=new k(this.socket),t=new wt(`response`,{onHeaders:n=>{e._applyHead(n),this.method===`HEAD`&&(t.skipBody=!0),this.res=e,this.emit(`response`,e)},onBody:t=>{e.push(a.Buffer.from(t))},onComplete:()=>{e.complete=!0,e.push(null)}});this.socket.on(`data`,e=>{this._aborted||t.execute(e)}),this.socket.on(`end`,()=>{t.finish()}),this.socket.on(`close`,()=>{this.emit(`close`)})}abort(){this._aborted||(this._aborted=!0,this.aborted=!0,this.emit(`abort`),this.socket.destroy())}destroy(e){return this._aborted?this:(this._aborted=!0,this.socket.destroy(e),super.destroy(e),this)}end(e,t,n){return this._aborted?this:super.end(e,t,n)}_writeToSocket(e,t){if(this._aborted){t();return}super._writeToSocket(e,t)}setTimeout(e,t){return this.socket.setTimeout(e,t),this}setNoDelay(e){this.socket.setNoDelay(e)}setSocketKeepAlive(e,t){this.socket.setKeepAlive(e,t)}},At=new Proxy(class extends w{constructor(e,t){let n={},r=t;typeof e==`function`?r=e:e&&(n=e),super(n),r&&this.on(`request`,r),this.on(`connection`,e=>this._handleConnection(e))}_handleConnection(e){let t=null,n=new wt(`request`,{onHeaders:r=>{t=new k(e),t._applyHead(r),r.method===`HEAD`&&(n.skipBody=!0);let i=new Dt(t),a=String(r.headers.connection??``).toLowerCase();i._keepAlive=r.httpVersionMinor>=1?a!==`close`:a===`keep-alive`,i.on(`finish`,()=>{i._keepAlive||e.end()}),this.emit(`request`,t,i)},onBody:e=>{t?.push(a.Buffer.from(e))},onComplete:()=>{t&&(t.complete=!0,t.push(null)),t=null}});e.on(`data`,e=>n.execute(e)),e.on(`end`,()=>{n.finish(),t&&t.push(null)}),e.on(`error`,t=>this.emit(`clientError`,t,e))}},{apply:(e,t,n)=>new e(...n)}),jt=class{maxSockets;maxFreeSockets;keepAlive;options;constructor(e={}){this.options=e,this.keepAlive=!!e.keepAlive,this.maxSockets=e.maxSockets??1/0,this.maxFreeSockets=e.maxFreeSockets??256}getName(e={}){return`${e.host??`localhost`}:${e.port??``}:${e.localAddress??``}`}destroy(){}},Mt=new jt,Nt=(...e)=>{let{options:t,callback:n}=Ot(...e);return new kt(t,n)},Pt=(...e)=>{let t=Nt(...e);return t.end(),t},Ft=(e,t)=>new At(e,t),It={METHODS:gt,STATUS_CODES:D,Agent:jt,globalAgent:Mt,Server:At,ServerResponse:Dt,IncomingMessage:k,ClientRequest:kt,OutgoingMessage:Et,createServer:Ft,request:Nt,get:Pt},Lt=e.g({available:()=>Rt,dgram:()=>lt,dns:()=>Ue,fetch:()=>Ve,fs:()=>Ge,http:()=>mt,net:()=>it,quota:()=>He}),Rt=()=>Re,zt=async e=>{if(typeof window>`u`)return!1;if(u())return!0;let t=await x,n=null,r=new Promise(e=>{n=()=>{u()&&e(!0)},l.addEventListener(`statuschange`,n)}),i=t.installPrompt.show(e).then(()=>!1),a=await Promise.race([r,i]);return n&&l.removeEventListener(`statuschange`,n),await t.installPrompt.hide().catch(()=>{}),a},Bt=null;f(()=>(Bt||=zt().then(()=>void 0).finally(()=>{Bt=null}),Bt));var Vt=e.g({available:()=>Ht,dgram:()=>Kt,dns:()=>Wt,fetch:()=>Ut,fs:()=>qt,net:()=>Gt}),Ht=()=>!1,A=e=>(...t)=>{throw Error(`The FKN desktop app is not connected, desktop.${e} is unavailable`)},Ut=A(`fetch`),Wt={lookup:A(`dns.lookup`)},Gt={connect:A(`net.connect`),createConnection:A(`net.createConnection`),createServer:A(`net.createServer`)},Kt={createSocket:A(`dgram.createSocket`)},qt={available:async()=>!1,list:A(`fs.list`),readFile:A(`fs.readFile`),writeFile:A(`fs.writeFile`),remove:A(`fs.remove`)},Jt=()=>typeof document<`u`&&u(),Yt=async(e,t)=>{if(Be(e),t?.credentials===`include`){if(typeof document>`u`)throw Error(`fetch with credentials needs the FKN extension, which only exists in window realms`);return fe(e,t)}return Jt()?fe(e,{...t,credentials:`omit`}):Ht()?Ut(e,t):Ve(e,t)},Xt=e.g({ATTACH_FRAME_EVENT_KEY:()=>h,assertAttachableFrameUrl:()=>g,assertFetchableUrl:()=>le,attachFrame:()=>Se,attachFramePermission:()=>ye,available:()=>Jt,box:()=>e.u,cookies:()=>me,createVideoElementHandle:()=>e.d,evaluatePermission:()=>xe,events:()=>l,extension:()=>l,fetch:()=>fe,fetchCredentialedPermission:()=>re,fetchLocalPermission:()=>ie,fetchPermission:()=>ne,gotoPermission:()=>be,handleRevivableModules:()=>e.l,isBlockedFetchUrl:()=>ce,isBlockedFrameUrl:()=>ve,isExtensionExposed:()=>u,isLocalNetworkUrl:()=>oe,isType:()=>e.f,modifyRequestHeadersPermission:()=>he,permissions:()=>Ce,promptInstall:()=>zt,readCookiePermission:()=>pe,removeRequestHeaderRule:()=>_e,revive:()=>e.p,setMissingExtensionHandler:()=>f,setRequestHeaderRule:()=>ge,type:()=>e.m,waitForExtensionExposure:()=>p}),Zt=e.g({available:()=>$t,list:()=>nn,readFile:()=>en,remove:()=>tn,writeFile:()=>N}),Qt=()=>navigator.storage.getDirectory(),j=e=>{let t=e.split(`/`).filter(e=>e&&e!==`.`);if(t.some(e=>e===`..`)||!t.length)throw Error(`opfs: invalid path`);return t},M=async(e,t)=>{let n=await Qt();for(let r of e)n=await n.getDirectoryHandle(r,{create:t});return n},$t=async()=>{try{return typeof navigator<`u`&&!!navigator.storage?.getDirectory&&!!await Qt()}catch{return!1}},N=async(e,t,n)=>{let r=j(e),i=r.pop(),a=await(await(await M(r,!0)).getFileHandle(i,{create:!0})).createWritable({keepExistingData:!1});try{let e=t instanceof Blob?t:new Blob([t],n?.contentType?{type:n.contentType}:void 0);await a.write(e)}finally{await a.close()}},en=async e=>{let t=j(e),n=t.pop();return(await(await M(t,!1)).getFileHandle(n)).getFile()},tn=async e=>{let t=j(e),n=t.pop();await(await M(t,!1)).removeEntry(n,{recursive:!0})},nn=async()=>{let e=[],t=async(n,r)=>{for await(let[i,a]of n.entries()){let n=r?`${r}/${i}`:i;if(a.kind===`file`){let t=await a.getFile();e.push({path:n,size:t.size,contentType:t.type||null,updatedAt:new Date(t.lastModified).toISOString()})}else await t(a,n)}};return await t(await Qt(),``),e},rn=e.g({available:()=>on,list:()=>sn,pull:()=>dn,readFile:()=>cn,remove:()=>un,writeFile:()=>ln}),an,P=async()=>await(an??=$t().catch(()=>!1))?!0:(an=void 0,!1),F=()=>Ke().catch(()=>!1),on=async()=>await P()||await F(),sn=async()=>{let[e,t]=await Promise.all([P().then(e=>e?nn():[]).catch(()=>[]),F().then(e=>e?qe():[]).catch(()=>[])]),n=new Map,r=e=>{let t=Date.parse(e.updatedAt??``);return Number.isFinite(t)?t:0},i=e=>{let t=n.get(e.path);(!t||r(e)>=r(t))&&n.set(e.path,e)};for(let t of e)i(t);for(let e of t)i(e);return[...n.values()]},cn=async e=>{if(await P())try{return await en(e)}catch(e){if(e?.name!==`NotFoundError`)throw e}let t=await Ye(e);return await P()&&N(e,t).catch(()=>{}),t},ln=async(e,t,n)=>{let r=t instanceof Blob?t:new Blob([t],n?.contentType?{type:n.contentType}:void 0);if(await P()){await N(e,r,n),await F()&&Xe(e,r,n).catch(e=>console.warn(`fs: cloud replicate failed`,e));return}if(await F())return Xe(e,r,n);throw Error(`fs: no storage backend available`)},un=async e=>{let t=[];if(await P()&&t.push(tn(e).catch(()=>{})),await F()&&t.push(Ze(e).catch(()=>{})),!t.length)throw Error(`fs: no storage backend available`);await Promise.all(t)},dn=async e=>{let t=await Ye(e);return await P()&&await N(e,t),t},I=new Map([[``,{kind:`dir`,mtimeMs:0}]]),L=new Set,R=new Set,fn=()=>Date.now(),z=(e,t,n)=>{let r=Error(`${e}: ${{ENOENT:`no such file or directory`,EEXIST:`file already exists`,ENOTDIR:`not a directory`,EISDIR:`illegal operation on a directory`,ENOTEMPTY:`directory not empty`}[e]??e}, ${n} '${t}'`);return r.code=e,r.path=t,r.syscall=n,r},B=e=>{let t=[];for(let n of e.split(`/`))if(!(!n||n===`.`)){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},V=e=>e.split(`/`).slice(0,-1).join(`/`),H=e=>{if(!e)return;let t=e.split(`/`),n=``;for(let e of t){n=n?`${n}/${e}`:e;let t=I.get(n);if(!t)I.set(n,{kind:`dir`,mtimeMs:fn()});else if(t.kind===`file`)throw z(`ENOTDIR`,n,`mkdir`)}},pn,U=()=>pn??=(async()=>{let e=await sn().catch(()=>[]);for(let t of e)try{let e=B(t.path);if(L.has(e))continue;let n=await(await cn(t.path)).arrayBuffer();H(V(e));let r=Date.parse(t.updatedAt??``);I.set(e,{kind:`file`,data:new Uint8Array(n),mtimeMs:Number.isFinite(r)?r:fn()})}catch{}})(),mn=async()=>{pn=void 0,await U()},W=async()=>{let e=[...L].map(async e=>{let t=I.get(e);if(t?.kind!==`file`){L.delete(e);return}let n=t.data;try{await ln(e,n),I.get(e)?.kind===`file`&&I.get(e).data===n&&L.delete(e)}catch{}}),t=[...R].map(async e=>{try{await un(e),R.delete(e)}catch{}});await Promise.all([...e,...t])},hn,gn=()=>{hn||=setTimeout(()=>{hn=void 0,W().catch(()=>{})},250)};typeof addEventListener<`u`&&(addEventListener(`pagehide`,()=>{W().catch(()=>{})}),addEventListener(`visibilitychange`,()=>{typeof document<`u`&&document.visibilityState===`hidden`&&W().catch(()=>{})}));var _n=(e,t)=>({size:t.kind===`file`?t.data.byteLength:0,mtimeMs:t.mtimeMs,mtime:new Date(t.mtimeMs),atimeMs:t.mtimeMs,ctimeMs:t.mtimeMs,mode:t.kind===`file`?420:493,isFile:()=>t.kind===`file`,isDirectory:()=>t.kind===`dir`,isSymbolicLink:()=>!1}),vn=e=>I.has(B(e)),G=e=>{let t=B(e),n=I.get(t);if(!n)throw z(`ENOENT`,e,`stat`);return _n(t,n)},yn=e=>{let t=I.get(B(e));if(!t)throw z(`ENOENT`,e,`open`);if(t.kind===`dir`)throw z(`EISDIR`,e,`read`);return t.data},K=(e,t,n)=>{let r=B(e);if(!r)throw z(`EISDIR`,e,`open`);let i=I.get(r);if(i?.kind===`dir`)throw z(`EISDIR`,e,`open`);H(V(r));let a=n&&i?.kind===`file`?bn(i.data,t):t;I.set(r,{kind:`file`,data:a,mtimeMs:fn()}),L.add(r),R.delete(r),gn()},bn=(e,t)=>{let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n},xn=(e,t)=>{let n=B(e);if(n){if(I.has(n)){if(t)return;throw z(`EEXIST`,e,`mkdir`)}if(!t&&!I.has(V(n)))throw z(`ENOENT`,e,`mkdir`);H(n)}},Sn=e=>{let t=B(e),n=I.get(t);if(!n)throw z(`ENOENT`,e,`scandir`);if(n.kind===`file`)throw z(`ENOTDIR`,e,`scandir`);let r=t?`${t}/`:``,i=new Set;for(let e of I.keys()){if(!e||!e.startsWith(r))continue;let t=e.slice(r.length);if(!t||t.includes(`/`)){t.includes(`/`)&&i.add(t.split(`/`)[0]);continue}i.add(t)}return[...i]},q=(e,t)=>{let n=B(e);if(!I.get(n)){if(t)return;throw z(`ENOENT`,e,`unlink`)}let r=`${n}/`,i=[...I.keys()].filter(e=>e.startsWith(r));if(i.length&&!t)throw z(`ENOTEMPTY`,e,`rmdir`);for(let e of[n,...i]){let t=I.get(e);I.delete(e),t?.kind===`file`&&(L.delete(e),R.add(e))}gn()},Cn=(e,t)=>{let n=B(e),r=B(t);if(!n)throw z(`EBUSY`,e,`rename`);if(r===n||r.startsWith(`${n}/`))throw z(`EINVAL`,e,`rename`);let i=I.get(n);if(!i)throw z(`ENOENT`,e,`rename`);let a=I.get(r);if(a){if(a.kind!==i.kind)throw z(i.kind===`dir`?`ENOTDIR`:`EISDIR`,t,`rename`);q(r,!0)}H(V(r));let o=`${n}/`,s=[n,...[...I.keys()].filter(e=>e.startsWith(o))];for(let e of s){let t=r+e.slice(n.length),i=I.get(e);I.set(t,i),I.delete(e),i.kind===`file`&&(L.add(t),R.delete(t),L.delete(e),R.add(e))}gn()},wn=e.g({appendFile:()=>Hn,appendFileSync:()=>An,exists:()=>Yn,existsSync:()=>jn,flush:()=>W,lstatSync:()=>Nn,mkdir:()=>Gn,mkdirSync:()=>Fn,mount:()=>U,promises:()=>Xn,readFile:()=>Bn,readFileSync:()=>On,readdir:()=>Wn,readdirSync:()=>Pn,remount:()=>mn,rename:()=>Jn,renameSync:()=>zn,rm:()=>Kn,rmSync:()=>In,rmdirSync:()=>Ln,stat:()=>Un,statSync:()=>Mn,unlink:()=>qn,unlinkSync:()=>Rn,writeFile:()=>Vn,writeFileSync:()=>kn}),J=e=>typeof e==`string`?e:e instanceof URL?decodeURIComponent(e.pathname):e.toString(),Tn=e=>typeof e==`string`?e:e?.encoding??void 0,En=e=>typeof e==`object`&&!!e?.recursive,Dn=(e,t)=>{let n=Tn(t);return n?a.Buffer.from(e).toString(n):a.Buffer.from(e)},Y=(e,t)=>{if(typeof e==`string`)return new Uint8Array(a.Buffer.from(e,Tn(t)??`utf8`));if(e instanceof Uint8Array)return e.slice();if(e instanceof ArrayBuffer)return new Uint8Array(e).slice();if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice();throw TypeError(`The "data" argument must be of type string, Buffer, TypedArray, or DataView`)},On=(e,t)=>Dn(yn(J(e)),t),kn=(e,t,n)=>K(J(e),Y(t,n),!1),An=(e,t,n)=>K(J(e),Y(t,n),!0),jn=e=>vn(J(e)),Mn=e=>G(J(e)),Nn=Mn,Pn=e=>Sn(J(e)),Fn=(e,t)=>xn(J(e),En(t)),In=(e,t)=>q(J(e),!!t?.recursive),Ln=(e,t)=>q(J(e),!!t?.recursive),Rn=e=>q(J(e),!1),zn=(e,t)=>Cn(J(e),J(t)),X=(e,t)=>{U().finally(()=>{let n;try{n=e()}catch(e){t(e);return}t(null,n)})},Z=(e,t)=>typeof e==`function`?e:t,Q=e=>typeof e==`function`?void 0:e,Bn=(e,t,n)=>X(()=>Dn(yn(J(e)),Q(t)),Z(t,n)),Vn=(e,t,n,r)=>X(()=>K(J(e),Y(t,Q(n)),!1),Z(n,r)),Hn=(e,t,n,r)=>X(()=>K(J(e),Y(t,Q(n)),!0),Z(n,r)),Un=(e,t)=>X(()=>G(J(e)),t),Wn=(e,t,n)=>X(()=>Sn(J(e)),Z(t,n)),Gn=(e,t,n)=>X(()=>xn(J(e),En(Q(t))),Z(t,n)),Kn=(e,t,n)=>X(()=>q(J(e),!!Q(t)?.recursive),Z(t,n)),qn=(e,t)=>X(()=>q(J(e),!1),t),Jn=(e,t,n)=>X(()=>Cn(J(e),J(t)),n),Yn=(e,t)=>{U().finally(()=>t(vn(J(e))))},$=e=>U().then(()=>e()),Xn={readFile:(e,t)=>$(()=>Dn(yn(J(e)),t)),writeFile:(e,t,n)=>$(()=>K(J(e),Y(t,n),!1)),appendFile:(e,t,n)=>$(()=>K(J(e),Y(t,n),!0)),stat:e=>$(()=>G(J(e))),lstat:e=>$(()=>G(J(e))),readdir:e=>$(()=>Sn(J(e))),mkdir:(e,t)=>$(()=>xn(J(e),En(t))),rm:(e,t)=>$(()=>q(J(e),!!t?.recursive)),rmdir:(e,t)=>$(()=>q(J(e),!!t?.recursive)),unlink:e=>$(()=>q(J(e),!1)),rename:(e,t)=>$(()=>Cn(J(e),J(t))),access:e=>$(()=>{if(!vn(J(e)))throw z(`ENOENT`,J(e),`access`)})},Zn=`https://fkn.app`,Qn=(e,n)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!b?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,t.relay)({receive:window,emit:b.contentWindow},e,{key:`fkn-api`,originA:n?.originA??Zn,originB:n?.originB??`*`,unregisterSignal:n?.unregisterSignal})},$n=async()=>typeof window>`u`?!1:(await x).connect.prompt(location.origin).catch(()=>!1),er=e.g({info:()=>rr,login:()=>tr,logout:()=>nr,onChange:()=>ir}),tr=async()=>typeof window>`u`?!1:(await x).account.login(location.origin).catch(()=>!1),nr=async()=>{typeof window>`u`||await(await x).account.logout().catch(()=>{})},rr=async()=>{if(typeof window>`u`)return null;let e=await x.then(e=>e.account.info()).catch(()=>null);return e?{name:e.name,image:e.image,premium:e.premium,premiumUntil:e.premiumUntil?Date.parse(e.premiumUntil):null}:null},ir=async e=>{if(typeof window>`u`)return()=>{};let t=await x.catch(()=>null);if(!t)return()=>{};let n=await t.account.onChange(e).catch(()=>null);return typeof n==`function`?n:()=>{}},ar=`https://fkn.app`,or=(e=location.origin)=>`${ar}/connect-button?origin=${encodeURIComponent(e)}`,sr=({className:e,style:t}={})=>(0,o.createElement)(`iframe`,{src:or(),title:`Connect your FKN account`,className:e,style:{border:`none`,width:150,height:40,background:`transparent`,colorScheme:`normal`,...t}});exports.ATTACH_FRAME_EVENT_KEY=h,exports.ConnectButton=sr,Object.defineProperty(exports,`account`,{enumerable:!0,get:function(){return er}}),exports.assertAttachableFrameUrl=g,exports.assertFetchableUrl=le,exports.attachFrame=Se,exports.attachFramePermission=ye,exports.box=e.u,Object.defineProperty(exports,`cloud`,{enumerable:!0,get:function(){return Lt}}),exports.connect=$n,exports.connectButtonUrl=or,exports.cookies=me,exports.createVideoElementHandle=e.d,Object.defineProperty(exports,`desktop`,{enumerable:!0,get:function(){return Vt}}),Object.defineProperty(exports,`dgram`,{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,`dns`,{enumerable:!0,get:function(){return Ue}}),exports.evaluatePermission=xe,Object.defineProperty(exports,`extension`,{enumerable:!0,get:function(){return Xt}}),exports.fetch=Yt,exports.fetchCredentialedPermission=re,exports.fetchLocalPermission=ie,exports.fetchPermission=ne,Object.defineProperty(exports,`fs`,{enumerable:!0,get:function(){return rn}}),exports.gotoPermission=be,exports.handleRevivableModules=e.l,Object.defineProperty(exports,`http`,{enumerable:!0,get:function(){return mt}}),exports.isBlockedFetchUrl=ce,exports.isBlockedFrameUrl=ve,exports.isExtensionExposed=u,exports.isLocalNetworkUrl=oe,exports.isType=e.f,exports.modifyRequestHeadersPermission=he,Object.defineProperty(exports,`net`,{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,`nodeFs`,{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,`opfs`,{enumerable:!0,get:function(){return Zt}}),exports.permissions=Ce,exports.promptInstall=zt,exports.readCookiePermission=pe,exports.relayWorker=Qn,exports.removeRequestHeaderRule=_e,exports.revive=e.p,exports.setMissingExtensionHandler=f,exports.setRequestHeaderRule=ge,exports.type=e.m,exports.waitForExtensionExposure=p;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./locator-Cf7M3QKN.cjs`),t=require(`./extension-9Uv_0HdS.cjs`),n=require(`./api-CDb2pv7C.cjs`);require(`./proxy-A9UvWUaF.cjs`);const r=require(`./cloud-DTL2B5pW.cjs`),i=require(`./dns.cjs`);require(`./node-fs-lrlD_zqB.cjs`),require(`./storage-BadvHtv0.cjs`),require(`./utils-BsNRWMfl.cjs`);const a=require(`./net-C5kWnI4C.cjs`),o=require(`./dgram-Cdi6Y7zJ.cjs`),s=require(`./http.cjs`),c=require(`./desktop.cjs`),l=require(`./fs-DrwvwtqC.cjs`),u=require(`./opfs.cjs`),d=require(`./account.cjs`);let f=require(`osra`),p=require(`react`);var m=`https://fkn.app`,h=(e,t)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!n.r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,f.relay)({receive:window,emit:n.r.contentWindow},e,{key:`fkn-api`,originA:t?.originA??m,originB:t?.originB??`*`,unregisterSignal:t?.unregisterSignal})},g=async()=>typeof window>`u`?!1:(await n.t).connect.prompt(location.origin).catch(()=>!1),_=`https://fkn.app`,v=(e=location.origin)=>`${_}/connect-button?origin=${encodeURIComponent(e)}`,y=({className:e,style:t}={})=>(0,p.createElement)(`iframe`,{src:v(),title:`Connect your FKN account`,className:e,style:{border:`none`,width:150,height:40,background:`transparent`,colorScheme:`normal`,...t}});exports.ATTACH_FRAME_EVENT_KEY=t.o,exports.ConnectButton=y,Object.defineProperty(exports,`account`,{enumerable:!0,get:function(){return d.t}}),exports.assertAttachableFrameUrl=t.s,exports.assertFetchableUrl=t.v,exports.attachFrame=t.c,exports.attachFramePermission=t.l,exports.box=e.u,Object.defineProperty(exports,`cloud`,{enumerable:!0,get:function(){return r.n}}),exports.connect=g,exports.connectButtonUrl=v,exports.cookies=t.g,exports.createVideoElementHandle=e.d,Object.defineProperty(exports,`desktop`,{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,`dgram`,{enumerable:!0,get:function(){return o.r}}),Object.defineProperty(exports,`dns`,{enumerable:!0,get:function(){return i.t}}),exports.evaluatePermission=t.u,Object.defineProperty(exports,`extension`,{enumerable:!0,get:function(){return t.t}}),exports.fetch=t.n,exports.fetchCredentialedPermission=t.b,exports.fetchLocalPermission=t.x,exports.fetchPermission=t.S,Object.defineProperty(exports,`fs`,{enumerable:!0,get:function(){return l.s}}),exports.gotoPermission=t.d,exports.handleRevivableModules=e.l,Object.defineProperty(exports,`http`,{enumerable:!0,get:function(){return s.t}}),exports.isBlockedFetchUrl=t.C,exports.isBlockedFrameUrl=t.f,exports.isExtensionExposed=t.E,exports.isLocalNetworkUrl=t.w,exports.isType=e.f,exports.modifyRequestHeadersPermission=t.p,Object.defineProperty(exports,`net`,{enumerable:!0,get:function(){return a.s}}),Object.defineProperty(exports,`opfs`,{enumerable:!0,get:function(){return u.t}}),exports.permissions=t.a,exports.promptInstall=t.i,exports.readCookiePermission=t._,exports.relayWorker=h,exports.removeRequestHeaderRule=t.m,exports.revive=e.p,exports.setMissingExtensionHandler=t.D,exports.setRequestHeaderRule=t.h,exports.type=e.m,exports.waitForExtensionExposure=t.O;
|
package/index.d.ts
CHANGED
|
@@ -27,13 +27,13 @@ import * as osra_build_revivables_identity from 'osra/build/revivables/identity'
|
|
|
27
27
|
import * as osra_build_revivables_transfer from 'osra/build/revivables/transfer';
|
|
28
28
|
import * as ip_address from 'ip-address';
|
|
29
29
|
import { Address4, Address6 } from 'ip-address';
|
|
30
|
+
import * as node_fs from 'node:fs';
|
|
30
31
|
import { Socket as Socket$2, SocketConstructorOpts, SocketConnectOpts, AddressInfo, Server as Server$2, ServerOpts, ListenOptions } from 'net';
|
|
31
32
|
import { Stream, DuplexOptions } from 'stream';
|
|
32
33
|
import { EventEmitter } from 'events';
|
|
33
34
|
import { Socket as Socket$3, SocketOptions, BindOptions, SocketType, RemoteInfo } from 'dgram';
|
|
34
|
-
import { Buffer } from 'buffer';
|
|
35
|
+
import { Buffer as Buffer$1 } from 'buffer';
|
|
35
36
|
import { OutgoingHttpHeaders, IncomingHttpHeaders, RequestOptions } from 'http';
|
|
36
|
-
import { PathLike } from 'fs';
|
|
37
37
|
import { CSSProperties, ReactElement } from 'react';
|
|
38
38
|
|
|
39
39
|
declare const fetchPermission: {
|
|
@@ -334,7 +334,7 @@ declare const permission$3: {
|
|
|
334
334
|
};
|
|
335
335
|
declare const resolve$5: (context: LocatorContext, _options?: OperationTimeoutOptions) => boolean;
|
|
336
336
|
|
|
337
|
-
declare namespace exists$
|
|
337
|
+
declare namespace exists$2 {
|
|
338
338
|
export {
|
|
339
339
|
permission$3 as permission,
|
|
340
340
|
resolve$5 as resolve,
|
|
@@ -387,7 +387,7 @@ declare const locatorModule: {
|
|
|
387
387
|
readonly render: SelectorRenderer;
|
|
388
388
|
readonly nextLocatorType: 'frameLocator';
|
|
389
389
|
}, typeof getByRole, typeof getByText, typeof getByTestId, typeof first, typeof nth];
|
|
390
|
-
readonly operationModules: readonly [typeof click, typeof fill, typeof hover, typeof textContent, typeof isVisible, typeof count, typeof exists$
|
|
390
|
+
readonly operationModules: readonly [typeof click, typeof fill, typeof hover, typeof textContent, typeof isVisible, typeof count, typeof exists$2, typeof getAttribute, typeof videoElement$1];
|
|
391
391
|
};
|
|
392
392
|
type LocatorModule = typeof locatorModule;
|
|
393
393
|
interface Locator extends LocatorChain<LocatorModule, Locator> {
|
|
@@ -1101,7 +1101,7 @@ type StorageQuota$1 = {
|
|
|
1101
1101
|
objects: number;
|
|
1102
1102
|
maxObjects: number;
|
|
1103
1103
|
};
|
|
1104
|
-
type WriteData$
|
|
1104
|
+
type WriteData$1 = Blob | ArrayBuffer | Uint8Array | string;
|
|
1105
1105
|
|
|
1106
1106
|
type Account = {
|
|
1107
1107
|
name: string;
|
|
@@ -1141,7 +1141,7 @@ declare const resolvers: {
|
|
|
1141
1141
|
readonly list: () => Promise<StorageEntry[]>;
|
|
1142
1142
|
readonly quota: () => Promise<StorageQuota$1>;
|
|
1143
1143
|
readonly readFile: (path: string) => Promise<Blob>;
|
|
1144
|
-
readonly writeFile: (path: string, data: WriteData$
|
|
1144
|
+
readonly writeFile: (path: string, data: WriteData$1, contentType: string | null) => Promise<void>;
|
|
1145
1145
|
readonly remove: (path: string) => Promise<void>;
|
|
1146
1146
|
};
|
|
1147
1147
|
readonly webvpn: {
|
|
@@ -1345,7 +1345,34 @@ declare namespace dns$1 {
|
|
|
1345
1345
|
export type { dns$1_AddressLookupResult as AddressLookupResult };
|
|
1346
1346
|
}
|
|
1347
1347
|
|
|
1348
|
-
type
|
|
1348
|
+
type ReadOptions = BufferEncoding | {
|
|
1349
|
+
encoding?: BufferEncoding | null;
|
|
1350
|
+
flag?: string;
|
|
1351
|
+
} | null | undefined;
|
|
1352
|
+
type WriteOptions = BufferEncoding | {
|
|
1353
|
+
encoding?: BufferEncoding | null;
|
|
1354
|
+
mode?: number;
|
|
1355
|
+
flag?: string;
|
|
1356
|
+
contentType?: string;
|
|
1357
|
+
} | null | undefined;
|
|
1358
|
+
type WriteData = string | Uint8Array | ArrayBuffer | DataView;
|
|
1359
|
+
type MakeOptions = {
|
|
1360
|
+
recursive?: boolean;
|
|
1361
|
+
} | number | null | undefined;
|
|
1362
|
+
type Callback<R> = (error: NodeJS.ErrnoException | null, result?: R) => void;
|
|
1363
|
+
type Stats = {
|
|
1364
|
+
size: number;
|
|
1365
|
+
mtimeMs: number;
|
|
1366
|
+
mtime: Date;
|
|
1367
|
+
atimeMs: number;
|
|
1368
|
+
ctimeMs: number;
|
|
1369
|
+
mode: number;
|
|
1370
|
+
isFile: () => boolean;
|
|
1371
|
+
isDirectory: () => boolean;
|
|
1372
|
+
isSymbolicLink: () => boolean;
|
|
1373
|
+
};
|
|
1374
|
+
|
|
1375
|
+
type FileEntry = {
|
|
1349
1376
|
path: string;
|
|
1350
1377
|
size: number;
|
|
1351
1378
|
contentType: string | null;
|
|
@@ -1358,21 +1385,44 @@ type StorageQuota = {
|
|
|
1358
1385
|
objects: number;
|
|
1359
1386
|
maxObjects: number;
|
|
1360
1387
|
};
|
|
1361
|
-
type WriteData$2 = Blob | ArrayBuffer | Uint8Array | string;
|
|
1362
|
-
declare const available$4: () => Promise<boolean>;
|
|
1363
|
-
declare const list$2: () => Promise<FileEntry$1[]>;
|
|
1364
1388
|
declare const quota: () => Promise<StorageQuota>;
|
|
1365
|
-
|
|
1366
|
-
declare const
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
declare const
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
declare const
|
|
1373
|
-
declare
|
|
1374
|
-
|
|
1375
|
-
|
|
1389
|
+
|
|
1390
|
+
declare const available$4: () => Promise<boolean>;
|
|
1391
|
+
declare const readFile$2: (path: node_fs.PathLike, a: ReadOptions | Callback<Buffer | string>, b?: Callback<Buffer | string>) => void;
|
|
1392
|
+
declare const writeFile$2: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
1393
|
+
declare const unlink$2: (path: node_fs.PathLike, callback: Callback<void>) => void;
|
|
1394
|
+
declare const rename$2: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
|
|
1395
|
+
declare const readdir$2: (path: node_fs.PathLike, a: unknown, b?: Callback<string[]>) => void;
|
|
1396
|
+
declare const mkdir$2: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
|
|
1397
|
+
declare const rm$2: (path: node_fs.PathLike, a: {
|
|
1398
|
+
recursive?: boolean;
|
|
1399
|
+
} | Callback<void>, b?: Callback<void>) => void;
|
|
1400
|
+
declare const stat$2: (path: node_fs.PathLike, callback: Callback<Stats>) => void;
|
|
1401
|
+
declare const promises$2: {
|
|
1402
|
+
readFile: (path: node_fs.PathLike, options?: ReadOptions) => Promise<Buffer | string>;
|
|
1403
|
+
writeFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
1404
|
+
unlink: (path: node_fs.PathLike) => Promise<void>;
|
|
1405
|
+
rename: (from: node_fs.PathLike, to: node_fs.PathLike) => Promise<void>;
|
|
1406
|
+
readdir: (path: node_fs.PathLike) => Promise<string[]>;
|
|
1407
|
+
mkdir: (_path?: node_fs.PathLike, _options?: MakeOptions) => Promise<void>;
|
|
1408
|
+
rm: (path: node_fs.PathLike, options?: {
|
|
1409
|
+
recursive?: boolean;
|
|
1410
|
+
}) => Promise<void>;
|
|
1411
|
+
rmdir: (path: node_fs.PathLike, options?: {
|
|
1412
|
+
recursive?: boolean;
|
|
1413
|
+
}) => Promise<void>;
|
|
1414
|
+
stat: (path: node_fs.PathLike) => Promise<Stats>;
|
|
1415
|
+
lstat: (path: node_fs.PathLike) => Promise<Stats>;
|
|
1416
|
+
access: (path: node_fs.PathLike) => Promise<void>;
|
|
1417
|
+
};
|
|
1418
|
+
|
|
1419
|
+
type fs$1_FileEntry = FileEntry;
|
|
1420
|
+
type fs$1_Stats = Stats;
|
|
1421
|
+
type fs$1_StorageQuota = StorageQuota;
|
|
1422
|
+
declare const fs$1_quota: typeof quota;
|
|
1423
|
+
declare namespace fs$1 {
|
|
1424
|
+
export { available$4 as available, mkdir$2 as mkdir, promises$2 as promises, fs$1_quota as quota, readFile$2 as readFile, readdir$2 as readdir, rename$2 as rename, rm$2 as rm, stat$2 as stat, unlink$2 as unlink, writeFile$2 as writeFile };
|
|
1425
|
+
export type { fs$1_FileEntry as FileEntry, fs$1_Stats as Stats, fs$1_StorageQuota as StorageQuota };
|
|
1376
1426
|
}
|
|
1377
1427
|
|
|
1378
1428
|
declare const isIPv4: (input: string) => boolean;
|
|
@@ -1614,7 +1664,7 @@ declare class Socket extends EventEmitter implements Socket$3 {
|
|
|
1614
1664
|
dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string | undefined): void;
|
|
1615
1665
|
[Symbol.asyncDispose](): Promise<void>;
|
|
1616
1666
|
}
|
|
1617
|
-
declare const createSocket: (options: SocketType | SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void) => Socket;
|
|
1667
|
+
declare const createSocket: (options: SocketType | SocketOptions, callback?: (msg: Buffer$1, rinfo: RemoteInfo) => void) => Socket;
|
|
1618
1668
|
|
|
1619
1669
|
type dgram$1_Socket = Socket;
|
|
1620
1670
|
declare const dgram$1_Socket: typeof Socket;
|
|
@@ -1708,9 +1758,9 @@ declare abstract class OutgoingMessage extends Stream.Writable {
|
|
|
1708
1758
|
protected _storeHeader(startLine: string): string;
|
|
1709
1759
|
protected abstract _shouldSendBody(): boolean;
|
|
1710
1760
|
protected abstract _implicitHeader(): void;
|
|
1711
|
-
protected _writeToSocket(data: Buffer, callback: (error?: Error | null) => void): void;
|
|
1761
|
+
protected _writeToSocket(data: Buffer$1, callback: (error?: Error | null) => void): void;
|
|
1712
1762
|
write(chunk: unknown, encoding?: BufferEncoding | ((error: Error | null | undefined) => void), callback?: (error: Error | null | undefined) => void): boolean;
|
|
1713
|
-
_write(chunk: Buffer, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
1763
|
+
_write(chunk: Buffer$1, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
|
|
1714
1764
|
_final(callback: (error?: Error | null) => void): void;
|
|
1715
1765
|
end(chunk?: unknown, encoding?: BufferEncoding | (() => void), callback?: () => void): this;
|
|
1716
1766
|
protected _headBlock?: string;
|
|
@@ -1758,7 +1808,7 @@ declare class ClientRequest extends OutgoingMessage {
|
|
|
1758
1808
|
abort(): void;
|
|
1759
1809
|
destroy(error?: Error): this;
|
|
1760
1810
|
end(chunk?: unknown, encoding?: unknown, callback?: unknown): this;
|
|
1761
|
-
protected _writeToSocket(data: Buffer, callback: (error?: Error | null) => void): void;
|
|
1811
|
+
protected _writeToSocket(data: Buffer$1, callback: (error?: Error | null) => void): void;
|
|
1762
1812
|
setTimeout(timeout: number, callback?: () => void): this;
|
|
1763
1813
|
setNoDelay(noDelay?: boolean): void;
|
|
1764
1814
|
setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;
|
|
@@ -1834,7 +1884,7 @@ declare const available$3: () => boolean;
|
|
|
1834
1884
|
type cloud_QuotaStatus = QuotaStatus;
|
|
1835
1885
|
declare const cloud_http: typeof http;
|
|
1836
1886
|
declare namespace cloud {
|
|
1837
|
-
export { available$3 as available, dgram$1 as dgram, dns$1 as dns, cloudFetch as fetch,
|
|
1887
|
+
export { available$3 as available, dgram$1 as dgram, dns$1 as dns, cloudFetch as fetch, fs$1 as fs, cloud_http as http, net$1 as net, quota$1 as quota };
|
|
1838
1888
|
export type { cloud_QuotaStatus as QuotaStatus };
|
|
1839
1889
|
}
|
|
1840
1890
|
|
|
@@ -1909,10 +1959,37 @@ declare const dgram: {
|
|
|
1909
1959
|
};
|
|
1910
1960
|
declare const fs: {
|
|
1911
1961
|
available: () => Promise<boolean>;
|
|
1912
|
-
list: (..._args: unknown[]) => never;
|
|
1913
1962
|
readFile: (..._args: unknown[]) => never;
|
|
1963
|
+
readFileSync: (..._args: unknown[]) => never;
|
|
1914
1964
|
writeFile: (..._args: unknown[]) => never;
|
|
1915
|
-
|
|
1965
|
+
writeFileSync: (..._args: unknown[]) => never;
|
|
1966
|
+
appendFile: (..._args: unknown[]) => never;
|
|
1967
|
+
appendFileSync: (..._args: unknown[]) => never;
|
|
1968
|
+
existsSync: (..._args: unknown[]) => never;
|
|
1969
|
+
stat: (..._args: unknown[]) => never;
|
|
1970
|
+
statSync: (..._args: unknown[]) => never;
|
|
1971
|
+
readdir: (..._args: unknown[]) => never;
|
|
1972
|
+
readdirSync: (..._args: unknown[]) => never;
|
|
1973
|
+
mkdir: (..._args: unknown[]) => never;
|
|
1974
|
+
mkdirSync: (..._args: unknown[]) => never;
|
|
1975
|
+
rm: (..._args: unknown[]) => never;
|
|
1976
|
+
rmSync: (..._args: unknown[]) => never;
|
|
1977
|
+
unlink: (..._args: unknown[]) => never;
|
|
1978
|
+
unlinkSync: (..._args: unknown[]) => never;
|
|
1979
|
+
rename: (..._args: unknown[]) => never;
|
|
1980
|
+
renameSync: (..._args: unknown[]) => never;
|
|
1981
|
+
mount: (..._args: unknown[]) => never;
|
|
1982
|
+
flush: (..._args: unknown[]) => never;
|
|
1983
|
+
promises: {
|
|
1984
|
+
readFile: (..._args: unknown[]) => never;
|
|
1985
|
+
writeFile: (..._args: unknown[]) => never;
|
|
1986
|
+
unlink: (..._args: unknown[]) => never;
|
|
1987
|
+
rename: (..._args: unknown[]) => never;
|
|
1988
|
+
readdir: (..._args: unknown[]) => never;
|
|
1989
|
+
mkdir: (..._args: unknown[]) => never;
|
|
1990
|
+
rm: (..._args: unknown[]) => never;
|
|
1991
|
+
stat: (..._args: unknown[]) => never;
|
|
1992
|
+
};
|
|
1916
1993
|
};
|
|
1917
1994
|
|
|
1918
1995
|
declare const desktop_dgram: typeof dgram;
|
|
@@ -1931,142 +2008,122 @@ declare namespace desktop {
|
|
|
1931
2008
|
};
|
|
1932
2009
|
}
|
|
1933
2010
|
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
2011
|
+
declare const available$1: () => Promise<boolean>;
|
|
2012
|
+
declare const readFileSync$1: (path: node_fs.PathLike, options?: ReadOptions) => Buffer | string;
|
|
2013
|
+
declare const writeFileSync$1: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
|
|
2014
|
+
declare const appendFileSync$1: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
|
|
2015
|
+
declare const existsSync$1: (path: node_fs.PathLike) => boolean;
|
|
2016
|
+
declare const statSync$1: (path: node_fs.PathLike) => Stats;
|
|
2017
|
+
declare const lstatSync$1: (path: node_fs.PathLike) => Stats;
|
|
2018
|
+
declare const readdirSync$1: (path: node_fs.PathLike) => string[];
|
|
2019
|
+
declare const mkdirSync$1: (path: node_fs.PathLike, options?: MakeOptions) => void;
|
|
2020
|
+
declare const rmSync$1: (path: node_fs.PathLike, options?: {
|
|
2021
|
+
recursive?: boolean;
|
|
2022
|
+
force?: boolean;
|
|
2023
|
+
}) => void;
|
|
2024
|
+
declare const rmdirSync$1: (path: node_fs.PathLike, options?: {
|
|
2025
|
+
recursive?: boolean;
|
|
2026
|
+
}) => void;
|
|
2027
|
+
declare const unlinkSync$1: (path: node_fs.PathLike) => void;
|
|
2028
|
+
declare const renameSync$1: (from: node_fs.PathLike, to: node_fs.PathLike) => void;
|
|
2029
|
+
declare const readFile$1: (path: node_fs.PathLike, a: ReadOptions | Callback<Buffer | string>, b?: Callback<Buffer | string>) => void;
|
|
2030
|
+
declare const writeFile$1: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2031
|
+
declare const appendFile$1: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2032
|
+
declare const stat$1: (path: node_fs.PathLike, callback: Callback<Stats>) => void;
|
|
2033
|
+
declare const readdir$1: (path: node_fs.PathLike, a: unknown, b?: Callback<string[]>) => void;
|
|
2034
|
+
declare const mkdir$1: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2035
|
+
declare const rm$1: (path: node_fs.PathLike, a: {
|
|
2036
|
+
recursive?: boolean;
|
|
2037
|
+
} | Callback<void>, b?: Callback<void>) => void;
|
|
2038
|
+
declare const unlink$1: (path: node_fs.PathLike, callback: Callback<void>) => void;
|
|
2039
|
+
declare const rename$1: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
|
|
2040
|
+
declare const exists$1: (path: node_fs.PathLike, callback: (exists: boolean) => void) => void;
|
|
2041
|
+
declare const promises$1: {
|
|
2042
|
+
readFile: (path: node_fs.PathLike, options?: ReadOptions) => Promise<Buffer | string>;
|
|
2043
|
+
writeFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
2044
|
+
appendFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
2045
|
+
stat: (path: node_fs.PathLike) => Promise<Stats>;
|
|
2046
|
+
lstat: (path: node_fs.PathLike) => Promise<Stats>;
|
|
2047
|
+
readdir: (path: node_fs.PathLike) => Promise<string[]>;
|
|
2048
|
+
mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
|
|
2049
|
+
rm: (path: node_fs.PathLike, options?: {
|
|
2050
|
+
recursive?: boolean;
|
|
1947
2051
|
}) => Promise<void>;
|
|
1948
|
-
|
|
2052
|
+
rmdir: (path: node_fs.PathLike, options?: {
|
|
2053
|
+
recursive?: boolean;
|
|
2054
|
+
}) => Promise<void>;
|
|
2055
|
+
unlink: (path: node_fs.PathLike) => Promise<void>;
|
|
2056
|
+
rename: (from: node_fs.PathLike, to: node_fs.PathLike) => Promise<void>;
|
|
2057
|
+
access: (path: node_fs.PathLike) => Promise<void>;
|
|
1949
2058
|
};
|
|
1950
|
-
|
|
1951
|
-
declare const
|
|
1952
|
-
declare const
|
|
1953
|
-
declare const readFile$2: (path: string) => Promise<Blob>;
|
|
1954
|
-
declare const writeFile$2: (path: string, data: WriteData$1, opts?: {
|
|
1955
|
-
contentType?: string;
|
|
1956
|
-
}) => Promise<void>;
|
|
1957
|
-
declare const remove$1: (path: string) => Promise<void>;
|
|
2059
|
+
declare const mount$1: () => Promise<void>;
|
|
2060
|
+
declare const flush$1: () => Promise<void>;
|
|
2061
|
+
declare const remount$1: () => Promise<void>;
|
|
1958
2062
|
declare const pull: (path: string) => Promise<Blob>;
|
|
1959
2063
|
|
|
1960
|
-
type index$
|
|
1961
|
-
type index$1_FileSystem = FileSystem;
|
|
2064
|
+
type index$1_Stats = Stats;
|
|
1962
2065
|
declare const index$1_pull: typeof pull;
|
|
1963
2066
|
declare namespace index$1 {
|
|
1964
|
-
export { available$1 as available,
|
|
1965
|
-
export type { index$
|
|
2067
|
+
export { appendFile$1 as appendFile, appendFileSync$1 as appendFileSync, available$1 as available, exists$1 as exists, existsSync$1 as existsSync, flush$1 as flush, lstatSync$1 as lstatSync, mkdir$1 as mkdir, mkdirSync$1 as mkdirSync, mount$1 as mount, promises$1 as promises, index$1_pull as pull, readFile$1 as readFile, readFileSync$1 as readFileSync, readdir$1 as readdir, readdirSync$1 as readdirSync, remount$1 as remount, rename$1 as rename, renameSync$1 as renameSync, rm$1 as rm, rmSync$1 as rmSync, rmdirSync$1 as rmdirSync, stat$1 as stat, statSync$1 as statSync, unlink$1 as unlink, unlinkSync$1 as unlinkSync, writeFile$1 as writeFile, writeFileSync$1 as writeFileSync };
|
|
2068
|
+
export type { index$1_Stats as Stats };
|
|
1966
2069
|
}
|
|
1967
2070
|
|
|
1968
2071
|
declare const available: () => Promise<boolean>;
|
|
1969
|
-
declare const
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
declare const
|
|
1973
|
-
declare const
|
|
1974
|
-
declare const
|
|
1975
|
-
|
|
1976
|
-
declare const
|
|
1977
|
-
declare const
|
|
1978
|
-
declare const opfs_remove: typeof remove;
|
|
1979
|
-
declare namespace opfs {
|
|
1980
|
-
export {
|
|
1981
|
-
opfs_available as available,
|
|
1982
|
-
opfs_list as list,
|
|
1983
|
-
readFile$1 as readFile,
|
|
1984
|
-
opfs_remove as remove,
|
|
1985
|
-
writeFile$1 as writeFile,
|
|
1986
|
-
};
|
|
1987
|
-
}
|
|
1988
|
-
|
|
1989
|
-
type Stats = {
|
|
1990
|
-
size: number;
|
|
1991
|
-
mtimeMs: number;
|
|
1992
|
-
mtime: Date;
|
|
1993
|
-
atimeMs: number;
|
|
1994
|
-
ctimeMs: number;
|
|
1995
|
-
mode: number;
|
|
1996
|
-
isFile: () => boolean;
|
|
1997
|
-
isDirectory: () => boolean;
|
|
1998
|
-
isSymbolicLink: () => boolean;
|
|
1999
|
-
};
|
|
2000
|
-
declare const mount: () => Promise<void>;
|
|
2001
|
-
declare const remount: () => Promise<void>;
|
|
2002
|
-
declare const flush: () => Promise<void>;
|
|
2003
|
-
|
|
2004
|
-
type ReadOptions = BufferEncoding | {
|
|
2005
|
-
encoding?: BufferEncoding | null;
|
|
2006
|
-
flag?: string;
|
|
2007
|
-
} | null | undefined;
|
|
2008
|
-
type WriteOptions = BufferEncoding | {
|
|
2009
|
-
encoding?: BufferEncoding | null;
|
|
2010
|
-
mode?: number;
|
|
2011
|
-
flag?: string;
|
|
2012
|
-
} | null | undefined;
|
|
2013
|
-
type WriteData = string | Uint8Array | ArrayBuffer | DataView;
|
|
2014
|
-
type MakeOptions = {
|
|
2015
|
-
recursive?: boolean;
|
|
2016
|
-
} | number | null | undefined;
|
|
2017
|
-
type Callback<R> = (error: NodeJS.ErrnoException | null, result?: R) => void;
|
|
2018
|
-
|
|
2019
|
-
declare const readFileSync: (path: PathLike, options?: ReadOptions) => Buffer | string;
|
|
2020
|
-
declare const writeFileSync: (path: PathLike, data: WriteData, options?: WriteOptions) => void;
|
|
2021
|
-
declare const appendFileSync: (path: PathLike, data: WriteData, options?: WriteOptions) => void;
|
|
2022
|
-
declare const existsSync: (path: PathLike) => boolean;
|
|
2023
|
-
declare const statSync: (path: PathLike) => Stats;
|
|
2024
|
-
declare const lstatSync: (path: PathLike) => Stats;
|
|
2025
|
-
declare const readdirSync: (path: PathLike) => string[];
|
|
2026
|
-
declare const mkdirSync: (path: PathLike, options?: MakeOptions) => void;
|
|
2027
|
-
declare const rmSync: (path: PathLike, options?: {
|
|
2072
|
+
declare const readFileSync: (path: node_fs.PathLike, options?: ReadOptions) => Buffer | string;
|
|
2073
|
+
declare const writeFileSync: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
|
|
2074
|
+
declare const appendFileSync: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
|
|
2075
|
+
declare const existsSync: (path: node_fs.PathLike) => boolean;
|
|
2076
|
+
declare const statSync: (path: node_fs.PathLike) => Stats;
|
|
2077
|
+
declare const lstatSync: (path: node_fs.PathLike) => Stats;
|
|
2078
|
+
declare const readdirSync: (path: node_fs.PathLike) => string[];
|
|
2079
|
+
declare const mkdirSync: (path: node_fs.PathLike, options?: MakeOptions) => void;
|
|
2080
|
+
declare const rmSync: (path: node_fs.PathLike, options?: {
|
|
2028
2081
|
recursive?: boolean;
|
|
2029
2082
|
force?: boolean;
|
|
2030
2083
|
}) => void;
|
|
2031
|
-
declare const rmdirSync: (path: PathLike, options?: {
|
|
2084
|
+
declare const rmdirSync: (path: node_fs.PathLike, options?: {
|
|
2032
2085
|
recursive?: boolean;
|
|
2033
2086
|
}) => void;
|
|
2034
|
-
declare const unlinkSync: (path: PathLike) => void;
|
|
2035
|
-
declare const renameSync: (from: PathLike, to: PathLike) => void;
|
|
2036
|
-
declare const readFile: (path: PathLike, a: ReadOptions | Callback<Buffer | string>, b?: Callback<Buffer | string>) => void;
|
|
2037
|
-
declare const writeFile: (path: PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2038
|
-
declare const appendFile: (path: PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2039
|
-
declare const stat: (path: PathLike, callback: Callback<Stats>) => void;
|
|
2040
|
-
declare const readdir: (path: PathLike, a: unknown, b?: Callback<string[]>) => void;
|
|
2041
|
-
declare const mkdir: (path: PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2042
|
-
declare const rm: (path: PathLike, a: {
|
|
2087
|
+
declare const unlinkSync: (path: node_fs.PathLike) => void;
|
|
2088
|
+
declare const renameSync: (from: node_fs.PathLike, to: node_fs.PathLike) => void;
|
|
2089
|
+
declare const readFile: (path: node_fs.PathLike, a: ReadOptions | Callback<Buffer | string>, b?: Callback<Buffer | string>) => void;
|
|
2090
|
+
declare const writeFile: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2091
|
+
declare const appendFile: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2092
|
+
declare const stat: (path: node_fs.PathLike, callback: Callback<Stats>) => void;
|
|
2093
|
+
declare const readdir: (path: node_fs.PathLike, a: unknown, b?: Callback<string[]>) => void;
|
|
2094
|
+
declare const mkdir: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
|
|
2095
|
+
declare const rm: (path: node_fs.PathLike, a: {
|
|
2043
2096
|
recursive?: boolean;
|
|
2044
2097
|
} | Callback<void>, b?: Callback<void>) => void;
|
|
2045
|
-
declare const unlink: (path: PathLike, callback: Callback<void>) => void;
|
|
2046
|
-
declare const rename: (from: PathLike, to: PathLike, callback: Callback<void>) => void;
|
|
2047
|
-
declare const exists: (path: PathLike, callback: (exists: boolean) => void) => void;
|
|
2098
|
+
declare const unlink: (path: node_fs.PathLike, callback: Callback<void>) => void;
|
|
2099
|
+
declare const rename: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
|
|
2100
|
+
declare const exists: (path: node_fs.PathLike, callback: (exists: boolean) => void) => void;
|
|
2048
2101
|
declare const promises: {
|
|
2049
|
-
readFile: (path: PathLike, options?: ReadOptions) => Promise<Buffer | string>;
|
|
2050
|
-
writeFile: (path: PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
2051
|
-
appendFile: (path: PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
2052
|
-
stat: (path: PathLike) => Promise<Stats>;
|
|
2053
|
-
lstat: (path: PathLike) => Promise<Stats>;
|
|
2054
|
-
readdir: (path: PathLike) => Promise<string[]>;
|
|
2055
|
-
mkdir: (path: PathLike, options?: MakeOptions) => Promise<void>;
|
|
2056
|
-
rm: (path: PathLike, options?: {
|
|
2102
|
+
readFile: (path: node_fs.PathLike, options?: ReadOptions) => Promise<Buffer | string>;
|
|
2103
|
+
writeFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
2104
|
+
appendFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
|
|
2105
|
+
stat: (path: node_fs.PathLike) => Promise<Stats>;
|
|
2106
|
+
lstat: (path: node_fs.PathLike) => Promise<Stats>;
|
|
2107
|
+
readdir: (path: node_fs.PathLike) => Promise<string[]>;
|
|
2108
|
+
mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
|
|
2109
|
+
rm: (path: node_fs.PathLike, options?: {
|
|
2057
2110
|
recursive?: boolean;
|
|
2058
2111
|
}) => Promise<void>;
|
|
2059
|
-
rmdir: (path: PathLike, options?: {
|
|
2112
|
+
rmdir: (path: node_fs.PathLike, options?: {
|
|
2060
2113
|
recursive?: boolean;
|
|
2061
2114
|
}) => Promise<void>;
|
|
2062
|
-
unlink: (path: PathLike) => Promise<void>;
|
|
2063
|
-
rename: (from: PathLike, to: PathLike) => Promise<void>;
|
|
2064
|
-
access: (path: PathLike) => Promise<void>;
|
|
2115
|
+
unlink: (path: node_fs.PathLike) => Promise<void>;
|
|
2116
|
+
rename: (from: node_fs.PathLike, to: node_fs.PathLike) => Promise<void>;
|
|
2117
|
+
access: (path: node_fs.PathLike) => Promise<void>;
|
|
2065
2118
|
};
|
|
2119
|
+
declare const mount: () => Promise<void>;
|
|
2120
|
+
declare const flush: () => Promise<void>;
|
|
2121
|
+
declare const remount: () => Promise<void>;
|
|
2066
2122
|
|
|
2067
2123
|
type index_Stats = Stats;
|
|
2068
2124
|
declare const index_appendFile: typeof appendFile;
|
|
2069
2125
|
declare const index_appendFileSync: typeof appendFileSync;
|
|
2126
|
+
declare const index_available: typeof available;
|
|
2070
2127
|
declare const index_exists: typeof exists;
|
|
2071
2128
|
declare const index_existsSync: typeof existsSync;
|
|
2072
2129
|
declare const index_flush: typeof flush;
|
|
@@ -2092,7 +2149,7 @@ declare const index_unlinkSync: typeof unlinkSync;
|
|
|
2092
2149
|
declare const index_writeFile: typeof writeFile;
|
|
2093
2150
|
declare const index_writeFileSync: typeof writeFileSync;
|
|
2094
2151
|
declare namespace index {
|
|
2095
|
-
export { index_appendFile as appendFile, index_appendFileSync as appendFileSync, index_exists as exists, index_existsSync as existsSync, index_flush as flush, index_lstatSync as lstatSync, index_mkdir as mkdir, index_mkdirSync as mkdirSync, index_mount as mount, index_promises as promises, index_readFile as readFile, index_readFileSync as readFileSync, index_readdir as readdir, index_readdirSync as readdirSync, index_remount as remount, index_rename as rename, index_renameSync as renameSync, index_rm as rm, index_rmSync as rmSync, index_rmdirSync as rmdirSync, index_stat as stat, index_statSync as statSync, index_unlink as unlink, index_unlinkSync as unlinkSync, index_writeFile as writeFile, index_writeFileSync as writeFileSync };
|
|
2152
|
+
export { index_appendFile as appendFile, index_appendFileSync as appendFileSync, index_available as available, index_exists as exists, index_existsSync as existsSync, index_flush as flush, index_lstatSync as lstatSync, index_mkdir as mkdir, index_mkdirSync as mkdirSync, index_mount as mount, index_promises as promises, index_readFile as readFile, index_readFileSync as readFileSync, index_readdir as readdir, index_readdirSync as readdirSync, index_remount as remount, index_rename as rename, index_renameSync as renameSync, index_rm as rm, index_rmSync as rmSync, index_rmdirSync as rmdirSync, index_stat as stat, index_statSync as statSync, index_unlink as unlink, index_unlinkSync as unlinkSync, index_writeFile as writeFile, index_writeFileSync as writeFileSync };
|
|
2096
2153
|
export type { index_Stats as Stats };
|
|
2097
2154
|
}
|
|
2098
2155
|
|
|
@@ -2136,5 +2193,5 @@ type ConnectButtonProps = {
|
|
|
2136
2193
|
};
|
|
2137
2194
|
declare const ConnectButton: ({ className, style }?: ConnectButtonProps) => ReactElement;
|
|
2138
2195
|
|
|
2139
|
-
export { ATTACH_FRAME_EVENT_KEY, ConnectButton, account, assertAttachableFrameUrl, assertFetchableUrl, attachFrame, attachFramePermission, box, cloud, connect, connectButtonUrl, cookies, createVideoElementHandle, desktop, dgram$1 as dgram, dns$1 as dns, evaluatePermission, extension, fetch$1 as fetch, fetchCredentialedPermission, fetchLocalPermission, fetchPermission, index$1 as fs, gotoPermission, handleRevivableModules, http, isBlockedFetchUrl, isBlockedFrameUrl, isExtensionExposed, isLocalNetworkUrl, isType, modifyRequestHeadersPermission, net$1 as net, index as
|
|
2196
|
+
export { ATTACH_FRAME_EVENT_KEY, ConnectButton, account, assertAttachableFrameUrl, assertFetchableUrl, attachFrame, attachFramePermission, box, cloud, connect, connectButtonUrl, cookies, createVideoElementHandle, desktop, dgram$1 as dgram, dns$1 as dns, evaluatePermission, extension, fetch$1 as fetch, fetchCredentialedPermission, fetchLocalPermission, fetchPermission, index$1 as fs, gotoPermission, handleRevivableModules, http, isBlockedFetchUrl, isBlockedFrameUrl, isExtensionExposed, isLocalNetworkUrl, isType, modifyRequestHeadersPermission, net$1 as net, index as opfs, permissions, promptInstall, readCookiePermission, relayWorker, removeRequestHeaderRule, revive, setMissingExtensionHandler, setRequestHeaderRule, type, waitForExtensionExposure };
|
|
2140
2197
|
export type { AttachFrameOptions, BoxedVideoElement, ConnectButtonProps, CookieDetails, FetchInit, Frame, GotoOptions, HeaderOperation, PermissionGrant, PermissionRequest, ProxyFetchRequest, RemoteVideoElement, RequestHeaderRule, SiteCookie, VideoElementState };
|