@fkn/lib 0.9.8 → 0.9.9

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.
Files changed (61) hide show
  1. package/account.cjs +1 -1
  2. package/account.js +1 -1
  3. package/{api-BU8zNmQI.js → api-B53pjQqI.js} +45 -38
  4. package/{api-BdGpFv2D.d.ts → api-BYRsWdwB.d.ts} +4 -2
  5. package/api-dp9SlXVw.cjs +1 -0
  6. package/cloud/dgram.cjs +1 -1
  7. package/cloud/dgram.js +1 -1
  8. package/cloud/fetch.cjs +1 -1
  9. package/cloud/fetch.d.ts +1 -1
  10. package/cloud/fetch.js +1 -1
  11. package/cloud/fs.cjs +1 -1
  12. package/cloud/fs.js +1 -1
  13. package/cloud/net.cjs +1 -1
  14. package/cloud/net.d.ts +1 -1
  15. package/cloud/net.js +1 -1
  16. package/{cloud-DZzkfeQi.cjs → cloud-BeDLKtWQ.cjs} +1 -1
  17. package/{cloud-C002L8iN.d.ts → cloud-CWJO6Q8h.d.ts} +2 -2
  18. package/{cloud-OAvwgd_r.js → cloud-z1HEs2sx.js} +4 -4
  19. package/cloud.cjs +1 -1
  20. package/cloud.d.ts +3 -3
  21. package/cloud.js +4 -4
  22. package/{dgram-ocGNUMpo.cjs → dgram-Bsqy2Smh.cjs} +1 -1
  23. package/{dgram-DNbgOMoK.js → dgram-u3bxngZw.js} +1 -1
  24. package/dgram.cjs +1 -1
  25. package/dgram.d.ts +1 -1
  26. package/dgram.js +1 -1
  27. package/dns.cjs +1 -1
  28. package/dns.js +1 -1
  29. package/{extension-DmKxv-br.cjs → extension-CPtq-Ehy.cjs} +1 -1
  30. package/{extension-DQZmGSuX.js → extension-JM3WFAy9.js} +2 -2
  31. package/extension.cjs +1 -1
  32. package/extension.js +1 -1
  33. package/fs/promises.cjs +1 -1
  34. package/fs/promises.js +1 -1
  35. package/{fs-D-pDr8fW.cjs → fs-D6ebMpHf.cjs} +1 -1
  36. package/{fs-BYMGoFir.js → fs-D95VtxiL.js} +2 -2
  37. package/fs.cjs +1 -1
  38. package/fs.js +1 -1
  39. package/http.cjs +1 -1
  40. package/http.d.ts +1 -1
  41. package/http.js +1 -1
  42. package/index.cjs +1 -1
  43. package/index.d.ts +3 -3
  44. package/index.js +6 -6
  45. package/{net-uN5eXX3L.cjs → net-8e2vCDx-.cjs} +1 -1
  46. package/{net-BVC0ImHf.d.ts → net-BKkf8QK3.d.ts} +1 -1
  47. package/{net-Bi82weSE.js → net-D4bNkPEp.js} +1 -1
  48. package/net.cjs +1 -1
  49. package/net.d.ts +1 -1
  50. package/net.js +1 -1
  51. package/package.json +1 -1
  52. package/{packages-DU1D-pr4.d.ts → packages-BtbLwrrW.d.ts} +15 -3
  53. package/packages.cjs +1 -1
  54. package/packages.d.ts +2 -2
  55. package/packages.js +86 -46
  56. package/{proxy-CsFzuq-x.d.ts → proxy-BypE6RbM.d.ts} +1 -1
  57. package/{proxy-CMtPeuvd.js → proxy-iMrHM2Ek.js} +1 -1
  58. package/{proxy-DbcJMUcm.cjs → proxy-vg2oj6bT.cjs} +1 -1
  59. package/{storage-BVWaXq8X.js → storage-DctWaXn9.js} +1 -1
  60. package/{storage-DG1Ac1FK.cjs → storage-Dk5EOZtT.cjs} +1 -1
  61. package/api-C9Mh5v0z.cjs +0 -1
package/fs.js CHANGED
@@ -1,2 +1,2 @@
1
- import { A as e, C as t, D as n, E as r, F as i, I as a, M as o, N as s, O as c, P as l, S as u, T as d, _ as f, a as p, b as m, c as h, d as g, f as _, g as v, h as y, i as b, j as x, k as S, l as C, m as w, n as T, o as E, p as D, r as O, s as k, t as A, v as j, w as M, x as N, y as P } from "./fs-BYMGoFir.js";
1
+ import { A as e, C as t, D as n, E as r, F as i, I as a, M as o, N as s, O as c, P as l, S as u, T as d, _ as f, a as p, b as m, c as h, d as g, f as _, g as v, h as y, i as b, j as x, k as S, l as C, m as w, n as T, o as E, p as D, r as O, s as k, t as A, v as j, w as M, x as N, y as P } from "./fs-D95VtxiL.js";
2
2
  export { A as adopt, T as adoptable, O as appendFile, b as appendFileSync, p as available, C as default, E as exists, k as existsSync, h as flush, g as lstatSync, _ as mkdir, D as mkdirSync, w as mount, y as onConflict, v as pending, f as pendingDeletes, j as promises, P as pull, m as readFile, N as readFileSync, u as readdir, t as readdirSync, M as remount, d as rename, r as renameSync, n as replicating, c as rm, S as rmSync, e as rmdirSync, x as stat, o as statSync, s as unlink, l as unlinkSync, i as writeFile, a as writeFileSync };
package/http.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./net-uN5eXX3L.cjs");let n=require("buffer"),r=require("stream");var i=e.t({Agent:()=>T,ClientRequest:()=>S,HTTPParser:()=>g,IncomingMessage:()=>v,METHODS:()=>o,STATUS_CODES:()=>s,Server:()=>w,ServerResponse:()=>b,_default:()=>A,createServer:()=>k,default:()=>A,get:()=>O,globalAgent:()=>E,request:()=>D}),a=new TextDecoder(`latin1`),o=`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(`.`),s={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`},c=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`]),l=13,u=10,d=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,f=(e,t)=>(e.code=t,e),p=(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},m=(e,t)=>{for(let n=t;n+1<e.length;n++)if(e[n]===l&&e[n+1]===u)return n;return-1},h=e=>{for(let t=0;t+3<e.length;t++)if(e[t]===l&&e[t+1]===u&&e[t+2]===l&&e[t+3]===u)return t;return-1},g=class{mode;handlers;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=p(this.buf,e);let t=!0;for(;t;)if(t=!1,this.state===`HEAD`){let e=h(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=a.decode(e).split(`\r
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./net-8e2vCDx-.cjs");let n=require("buffer"),r=require("stream");var i=e.t({Agent:()=>T,ClientRequest:()=>S,HTTPParser:()=>g,IncomingMessage:()=>v,METHODS:()=>o,STATUS_CODES:()=>s,Server:()=>w,ServerResponse:()=>b,_default:()=>A,createServer:()=>k,default:()=>A,get:()=>O,globalAgent:()=>E,request:()=>D}),a=new TextDecoder(`latin1`),o=`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(`.`),s={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`},c=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`]),l=13,u=10,d=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,f=(e,t)=>(e.code=t,e),p=(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},m=(e,t)=>{for(let n=t;n+1<e.length;n++)if(e[n]===l&&e[n+1]===u)return n;return-1},h=e=>{for(let t=0;t+3<e.length;t++)if(e[t]===l&&e[t+1]===u&&e[t+2]===l&&e[t+3]===u)return t;return-1},g=class{mode;handlers;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=p(this.buf,e);let t=!0;for(;t;)if(t=!1,this.state===`HEAD`){let e=h(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=a.decode(e).split(`\r
2
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=[],o={};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(o,n,r)}let s={httpVersionMajor:1,httpVersionMinor:1,httpVersion:`1.1`,headers:o,rawHeaders:i};if(this.mode===`request`){let[e,t,r]=n.split(` `);s.method=(e??`GET`).toUpperCase(),s.url=t??`/`,this.applyVersion(s,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);s.statusCode=parseInt(a,10)||0,s.statusMessage=i===-1?``:r.slice(i+1),this.applyVersion(s,t)}return s}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:c.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=m(this.buf,0);if(e===-1)return!1;let t=a.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=m(this.buf,0);if(e===-1)return!1;let t=e===0;if(this.buf=this.buf.subarray(e+2),t)return!0}}},_=(e,t)=>n.Buffer.isBuffer(e)?e:typeof e==`string`?n.Buffer.from(e,t??`utf8`):e instanceof Uint8Array?n.Buffer.from(e):e instanceof ArrayBuffer?n.Buffer.from(new Uint8Array(e)):n.Buffer.from(String(e)),v=class extends r.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}},y=class extends r.Stream.Writable{_headerStore=new Map;headersSent=!1;chunkedEncoding=!1;finished=!1;_bodyWritten=!1;setHeader(e,t){if(this.headersSent)throw f(Error(`Cannot set headers after they are sent to the client`),`ERR_HTTP_HEADERS_SENT`);if(typeof e!=`string`||!d.test(e))throw f(TypeError(`Header name must be a valid HTTP token [${JSON.stringify(String(e))}]`),`ERR_INVALID_HTTP_TOKEN`);if(t===void 0)throw f(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
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
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,r){let i=_(e),a=[];if(this.headersSent||=(this._implicitHeader(),a.push(n.Buffer.from(this._headBlock,`latin1`)),!0),this.chunkedEncoding?i.length>0&&(a.push(n.Buffer.from(`${i.length.toString(16)}\r\n`,`latin1`)),a.push(i),a.push(n.Buffer.from(`\r
package/http.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { n as Socket, t as Server$1 } from "./net-BVC0ImHf.js";
1
+ import { n as Socket, t as Server$1 } from "./net-BKkf8QK3.js";
2
2
  import { Buffer } from "buffer";
3
3
  import { Stream } from "stream";
4
4
  import { IncomingHttpHeaders, OutgoingHttpHeaders, RequestOptions } from "http";
package/http.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { n as t, t as n } from "./net-Bi82weSE.js";
2
+ import { n as t, t as n } from "./net-D4bNkPEp.js";
3
3
  import { Buffer as r } from "buffer";
4
4
  import { Stream as i } from "stream";
5
5
  //#region src/lib/webvpn/http.ts
package/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib-CQqdCndr.cjs"),t=require("./api-C9Mh5v0z.cjs"),n=require("./cloud-DZzkfeQi.cjs"),r=require("./dns.cjs"),i=require("./net-uN5eXX3L.cjs"),a=require("./dgram-ocGNUMpo.cjs"),o=require("./http.cjs"),s=require("./extension-DmKxv-br.cjs"),c=require("./desktop.cjs"),l=require("./fs-D-pDr8fW.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.N())return t(!0);let n,r=setTimeout(()=>i(e.N()),h),i=e=>{clearTimeout(n),clearTimeout(r),o.disconnect(),document.removeEventListener(`readystatechange`,s),t(e)},a=()=>{clearTimeout(n),n=setTimeout(()=>i(e.N()),g)},o=new MutationObserver(()=>{e.N()&&i(!0)}),s=()=>{document.readyState===`complete`&&!e.N()&&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.r(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`);let r=t.i();if(!r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,m.relay)({receive:window,emit: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),S=async()=>typeof window>`u`?null:(await t.t).relay.prompt().catch(()=>null);exports.ATTACH_FRAME_EVENT_KEY=e.n,exports.FORGEABLE_HEADERS=e.O,exports.LOCATOR_DENIED=e.h,exports.LOCATOR_ERROR=e.u,exports.LOCATOR_UNSUPPORTED=e.m,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return f.t}}),exports.assertAttachableFrameUrl=e.s,exports.assertFetchableUrl=e.x,exports.assertForgeableHeaders=e.k,exports.assertLockdownApplicable=e.c,exports.assertOneCookieIdentity=e.A,exports.attachFrame=v,exports.attachFramePermission=e.i,exports.box=e.L,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return n.n}}),exports.connect=x,exports.connectButtonUrl=p.t,exports.cookies=e.y,exports.createFrame=e.a,exports.createVideoElementHandle=e.R,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.C,exports.fetchLocalPermission=e.w,exports.fetchPermission=e.T,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return l.u}}),exports.gotoPermission=e.o,exports.handleRevivableModules=e.I,exports.hasForgedCookie=e.j,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),exports.isBlockedFetchUrl=e.E,exports.isBlockedFrameUrl=e.l,exports.isExtensionExposed=e.N,exports.isLocalNetworkUrl=e.D,exports.isLocatorDenied=e.d,exports.isLocatorUnsupported=e.p,exports.isTerminalError=e.f,exports.isType=e.z,exports.modifyRequestHeadersPermission=e.g,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.t,exports.promptInstall=s.i,exports.promptRelay=S,exports.readCookiePermission=e.b,exports.relayWorker=b,exports.removeRequestHeaderRule=e._,exports.revive=e.B,exports.setMissingExtensionHandler=e.P,exports.setRequestHeaderRule=e.v,exports.type=e.V,exports.waitForExtensionExposure=e.F;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib-CQqdCndr.cjs"),t=require("./api-dp9SlXVw.cjs"),n=require("./cloud-BeDLKtWQ.cjs"),r=require("./dns.cjs"),i=require("./net-8e2vCDx-.cjs"),a=require("./dgram-Bsqy2Smh.cjs"),o=require("./http.cjs"),s=require("./extension-CPtq-Ehy.cjs"),c=require("./desktop.cjs"),l=require("./fs-D6ebMpHf.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.N())return t(!0);let n,r=setTimeout(()=>i(e.N()),h),i=e=>{clearTimeout(n),clearTimeout(r),o.disconnect(),document.removeEventListener(`readystatechange`,s),t(e)},a=()=>{clearTimeout(n),n=setTimeout(()=>i(e.N()),g)},o=new MutationObserver(()=>{e.N()&&i(!0)}),s=()=>{document.readyState===`complete`&&!e.N()&&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.r(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`);let r=t.i();if(!r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,m.relay)({receive:window,emit: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),S=async()=>typeof window>`u`?null:(await t.t).relay.prompt().catch(()=>null);exports.ATTACH_FRAME_EVENT_KEY=e.n,exports.FORGEABLE_HEADERS=e.O,exports.LOCATOR_DENIED=e.h,exports.LOCATOR_ERROR=e.u,exports.LOCATOR_UNSUPPORTED=e.m,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return f.t}}),exports.assertAttachableFrameUrl=e.s,exports.assertFetchableUrl=e.x,exports.assertForgeableHeaders=e.k,exports.assertLockdownApplicable=e.c,exports.assertOneCookieIdentity=e.A,exports.attachFrame=v,exports.attachFramePermission=e.i,exports.box=e.L,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return n.n}}),exports.connect=x,exports.connectButtonUrl=p.t,exports.cookies=e.y,exports.createFrame=e.a,exports.createVideoElementHandle=e.R,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.C,exports.fetchLocalPermission=e.w,exports.fetchPermission=e.T,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return l.u}}),exports.gotoPermission=e.o,exports.handleRevivableModules=e.I,exports.hasForgedCookie=e.j,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),exports.isBlockedFetchUrl=e.E,exports.isBlockedFrameUrl=e.l,exports.isExtensionExposed=e.N,exports.isLocalNetworkUrl=e.D,exports.isLocatorDenied=e.d,exports.isLocatorUnsupported=e.p,exports.isTerminalError=e.f,exports.isType=e.z,exports.modifyRequestHeadersPermission=e.g,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.t,exports.promptInstall=s.i,exports.promptRelay=S,exports.readCookiePermission=e.b,exports.relayWorker=b,exports.removeRequestHeaderRule=e._,exports.revive=e.B,exports.setMissingExtensionHandler=e.P,exports.setRequestHeaderRule=e.v,exports.type=e.V,exports.waitForExtensionExposure=e.F;
package/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { t as account_d_exports } from "./account.js";
2
- import { y as packages_d_exports } from "./packages-DU1D-pr4.js";
2
+ import { y as packages_d_exports } from "./packages-BtbLwrrW.js";
3
3
  import { A as LOCATOR_DENIED, B as SelectorPart, C as RemoteVideoElement, D as isType, E as createVideoElementHandle, F as isTerminalError, G as setRequestHeaderRule, H as RequestHeaderRule, I as Executor, J as cookies, K as CookieDetails, L as Gate, M as LOCATOR_UNSUPPORTED, N as isLocatorDenied, O as revive, P as isLocatorUnsupported, Q as assertFetchableUrl, R as GateTools, S as BoxedVideoElement, T as box, U as modifyRequestHeadersPermission, V as HeaderOperation, W as removeRequestHeaderRule, X as FetchInit, Y as readCookiePermission, Z as ProxyFetchRequest, _ as gotoPermission, a as PermissionGrant, at as FORGEABLE_HEADERS, b as isBlockedFrameUrl, c as ATTACH_FRAME_EVENT_KEY, ct as hasForgedCookie, d as Frame, et as fetchCredentialedPermission, f as FrameBackend, g as createFrame, h as attachFramePermission, i as waitForExtensionExposure, it as isLocalNetworkUrl, j as LOCATOR_ERROR, k as type, m as Locator, n as isExtensionExposed, nt as fetchPermission, o as PermissionRequest, ot as assertForgeableHeaders, p as GotoOptions, q as SiteCookie, r as setMissingExtensionHandler, rt as isBlockedFetchUrl, s as permissions, st as assertOneCookieIdentity, tt as fetchLocalPermission, u as AttachFrameOptions, v as assertAttachableFrameUrl, w as VideoElementState, x as handleRevivableModules, y as assertLockdownApplicable, z as OperationRequest } from "./index-DQfP-Uhy.js";
4
- import { n as cloud_d_exports } from "./cloud-C002L8iN.js";
4
+ import { n as cloud_d_exports } from "./cloud-CWJO6Q8h.js";
5
5
  import { t as dns_d_exports } from "./dns.js";
6
- import { s as net_d_exports } from "./net-BVC0ImHf.js";
6
+ import { s as net_d_exports } from "./net-BKkf8QK3.js";
7
7
  import { t as dgram_d_exports } from "./dgram.js";
8
8
  import { t as http_d_exports } from "./http.js";
9
9
  import { t as desktop_d_exports } from "./desktop.js";
package/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { A as e, B as t, C as n, D as r, E as i, F as a, I as o, L as s, N as c, O as ee, P as l, R as u, T as d, V as f, _ as p, a as m, b as h, c as g, d as _, f as v, g as y, h as b, i as x, j as S, k as C, l as w, m as T, n as E, o as D, p as O, r as k, s as A, t as j, u as M, v as N, w as P, x as F, y as I, z as te } from "./lib-BcEnB4iV.js";
2
- import { i as L, t as R } from "./api-BU8zNmQI.js";
3
- import { a as z, i as B, n as V } from "./cloud-OAvwgd_r.js";
2
+ import { i as L, t as R } from "./api-B53pjQqI.js";
3
+ import { a as z, i as B, n as V } from "./cloud-z1HEs2sx.js";
4
4
  import { t as H } from "./dns.js";
5
- import { s as U } from "./net-Bi82weSE.js";
6
- import { i as W } from "./dgram-DNbgOMoK.js";
5
+ import { s as U } from "./net-D4bNkPEp.js";
6
+ import { i as W } from "./dgram-u3bxngZw.js";
7
7
  import { t as G } from "./http.js";
8
- import { i as K, n as q, r as J, t as Y } from "./extension-DQZmGSuX.js";
8
+ import { i as K, n as q, r as J, t as Y } from "./extension-JM3WFAy9.js";
9
9
  import { t as X } from "./desktop.js";
10
- import { u as Z } from "./fs-BYMGoFir.js";
10
+ import { u as Z } from "./fs-D95VtxiL.js";
11
11
  import { t as Q } from "./opfs.js";
12
12
  import { t as ne } from "./packages.js";
13
13
  import { t as re } from "./account.js";
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-C9Mh5v0z.cjs"),n=require("./utils-QfNXtEhb.cjs");let r=require("stream"),i=require("events");var a=e.t({Server:()=>s,Socket:()=>o,_default:()=>d,connect:()=>c,createConnection:()=>l,createServer:()=>u,default:()=>d,isIP:()=>n.r,isIPv4:()=>n.i,isIPv6:()=>n.a}),o=class extends r.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 r=n.c(...e),i=this.__webvpn_tcp_socket_init__(t.t.then(e=>e.cloud.webvpn.tcpSocket({remoteAddress:r.host??`localhost`,remotePort:r.port})));return r.callback&&i.then(e=>{e&&r.callback.call(this)}),this}_final(e){if(!this._webVPNTcpSocketPromise){e();return}this._webVPNTcpSocketPromise.then(async e=>{e&&await e.writer.close()}).then(()=>e(),t=>e(t))}_destroy(e,t){if(this._timeoutTimer&&clearTimeout(this._timeoutTimer),!this._webVPNTcpSocketPromise){t(e);return}this._webVPNTcpSocketPromise.then(async e=>{e&&await(this._resetRequested?e.resetAndDestroy():e.destroy())}).then(()=>t(e),()=>t(e))}destroySoon(){if(this.writableFinished){this.destroy();return}this.once(`finish`,()=>this.destroy()),this.end()}_resetRequested=!1;resetAndDestroy(){return this._resetRequested=!0,this.destroy(),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},s=class extends i.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 r=n.c(...e);this._closeEmitted=!1;let i=e=>{let t=new o({connection:Promise.resolve(e)});this.emit(`connection`,t)},a=e=>{this._localAddress=void 0;try{e&&this.listenerCount(`error`)>0&&this.emit(`error`,e)}finally{this._emitClose()}},s=e=>t.t.then(t=>t.cloud.webvpn.tcpSocketListener({localAddress:e,localPort:r.port,onConnection:i,onClose:a})),c=r.host?s(r.host):s(`::`).catch(()=>s(`0.0.0.0`)),l=this.__webvpn_tcp_socket_listener_init__(c);return r.callback&&l.then(e=>{e&&r.callback.call(this)}),this}_closeEmitted=!1;_emitClose(){this._closeEmitted||(this._closeEmitted=!0,this.emit(`close`))}close(e){return this._webVPNTcpSocketListenerPromise&&this._webVPNTcpSocketListenerPromise.then(async t=>{if(t)try{await t.close(),this._localAddress=void 0,this._emitClose(),e&&e()}catch(t){this._localAddress=void 0,this._emitClose(),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](){}},c=(e,t)=>new o().connect(e,t),l=(e,t)=>new o().connect(e,t),u=(e,t)=>{typeof e==`function`&&(t=e,e=void 0);let n=new s(e);return t&&n.on(`connection`,t),n},d={Socket:o,Server:s,connect:c,createConnection:l,createServer:u,isIP:n.r,isIPv4:n.i,isIPv6:n.a};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-dp9SlXVw.cjs"),n=require("./utils-QfNXtEhb.cjs");let r=require("stream"),i=require("events");var a=e.t({Server:()=>s,Socket:()=>o,_default:()=>d,connect:()=>c,createConnection:()=>l,createServer:()=>u,default:()=>d,isIP:()=>n.r,isIPv4:()=>n.i,isIPv6:()=>n.a}),o=class extends r.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 r=n.c(...e),i=this.__webvpn_tcp_socket_init__(t.t.then(e=>e.cloud.webvpn.tcpSocket({remoteAddress:r.host??`localhost`,remotePort:r.port})));return r.callback&&i.then(e=>{e&&r.callback.call(this)}),this}_final(e){if(!this._webVPNTcpSocketPromise){e();return}this._webVPNTcpSocketPromise.then(async e=>{e&&await e.writer.close()}).then(()=>e(),t=>e(t))}_destroy(e,t){if(this._timeoutTimer&&clearTimeout(this._timeoutTimer),!this._webVPNTcpSocketPromise){t(e);return}this._webVPNTcpSocketPromise.then(async e=>{e&&await(this._resetRequested?e.resetAndDestroy():e.destroy())}).then(()=>t(e),()=>t(e))}destroySoon(){if(this.writableFinished){this.destroy();return}this.once(`finish`,()=>this.destroy()),this.end()}_resetRequested=!1;resetAndDestroy(){return this._resetRequested=!0,this.destroy(),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},s=class extends i.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 r=n.c(...e);this._closeEmitted=!1;let i=e=>{let t=new o({connection:Promise.resolve(e)});this.emit(`connection`,t)},a=e=>{this._localAddress=void 0;try{e&&this.listenerCount(`error`)>0&&this.emit(`error`,e)}finally{this._emitClose()}},s=e=>t.t.then(t=>t.cloud.webvpn.tcpSocketListener({localAddress:e,localPort:r.port,onConnection:i,onClose:a})),c=r.host?s(r.host):s(`::`).catch(()=>s(`0.0.0.0`)),l=this.__webvpn_tcp_socket_listener_init__(c);return r.callback&&l.then(e=>{e&&r.callback.call(this)}),this}_closeEmitted=!1;_emitClose(){this._closeEmitted||(this._closeEmitted=!0,this.emit(`close`))}close(e){return this._webVPNTcpSocketListenerPromise&&this._webVPNTcpSocketListenerPromise.then(async t=>{if(t)try{await t.close(),this._localAddress=void 0,this._emitClose(),e&&e()}catch(t){this._localAddress=void 0,this._emitClose(),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](){}},c=(e,t)=>new o().connect(e,t),l=(e,t)=>new o().connect(e,t),u=(e,t)=>{typeof e==`function`&&(t=e,e=void 0);let n=new s(e);return t&&n.on(`connection`,t),n},d={Socket:o,Server:s,connect:c,createConnection:l,createServer:u,isIP:n.r,isIPv4:n.i,isIPv6:n.a};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return s}});
@@ -1,4 +1,4 @@
1
- import { i as TcpSocketOption, r as LocalTcpSocket, t as Resolvers } from "./api-BdGpFv2D.js";
1
+ import { i as TcpSocketOption, r as LocalTcpSocket, t as Resolvers } from "./api-BYRsWdwB.js";
2
2
  import { AddressInfo, ListenOptions, Server, ServerOpts, Socket, SocketConnectOpts, SocketConstructorOpts } from "net";
3
3
  import { DuplexOptions, Stream } from "stream";
4
4
  import { EventEmitter } from "events";
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { t } from "./api-BU8zNmQI.js";
2
+ import { t } from "./api-B53pjQqI.js";
3
3
  import { a as n, c as r, i, r as a } from "./utils-DVlbuXmW.js";
4
4
  import { Stream as o } from "stream";
5
5
  import { EventEmitter as s } from "events";
package/net.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./utils-QfNXtEhb.cjs"),t=require("./net-uN5eXX3L.cjs");exports.Server=t.t,exports.Socket=t.n,exports._default=t.r,exports.default=t.r,exports.connect=t.i,exports.createConnection=t.a,exports.createServer=t.o,exports.isIP=e.r,exports.isIPv4=e.i,exports.isIPv6=e.a;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./utils-QfNXtEhb.cjs"),t=require("./net-8e2vCDx-.cjs");exports.Server=t.t,exports.Socket=t.n,exports._default=t.r,exports.default=t.r,exports.connect=t.i,exports.createConnection=t.a,exports.createServer=t.o,exports.isIP=e.r,exports.isIPv4=e.i,exports.isIPv6=e.a;
package/net.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "./net-BVC0ImHf.js";
1
+ import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "./net-BKkf8QK3.js";
2
2
  export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
package/net.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { a as e, i as t, r as n } from "./utils-DVlbuXmW.js";
2
- import { a as r, i, n as a, o, r as s, t as c } from "./net-Bi82weSE.js";
2
+ import { a as r, i, n as a, o, r as s, t as c } from "./net-D4bNkPEp.js";
3
3
  export { c as Server, a as Socket, s as _default, s as default, i as connect, r as createConnection, o as createServer, n as isIP, t as isIPv4, e as isIPv6 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fkn/lib",
3
- "version": "0.9.8",
3
+ "version": "0.9.9",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
@@ -48,6 +48,13 @@ type SurfaceRect = {
48
48
  width: number;
49
49
  height: number;
50
50
  };
51
+ /** corner radii in css order: top-left, top-right, bottom-right, bottom-left */
52
+ type Radii = [number, number, number, number];
53
+ type Placement = {
54
+ /** where the package frame sits, so its own layout gets the full box */rect: SurfaceRect; /** the part of `rect` still visible after the placeholder's scroll ancestors clip it */
55
+ clip?: SurfaceRect; /** the placeholder's corner radii, so the frame follows a rounded container */
56
+ radius?: Radii;
57
+ };
51
58
  type PackagesErrorCode = 'invalid' | 'not-installed' | 'unaddressable' | 'timeout' | 'unavailable' | 'denied';
52
59
  type PackagesFail = {
53
60
  error: PackagesErrorCode;
@@ -66,7 +73,7 @@ type Caller = {
66
73
  origin: string;
67
74
  };
68
75
  declare namespace packages_d_exports {
69
- export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, onConnect, onVisibilityChange, pick, search, show, uninstall };
76
+ export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, Placement, Radii, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, onConnect, onVisibilityChange, pick, search, show, uninstall };
70
77
  }
71
78
  type PackagesError = Error & {
72
79
  code: PackagesErrorCode;
@@ -82,7 +89,12 @@ declare const list: () => Promise<InstalledPackage[]>;
82
89
  /** Uninstall a package from this app; its frames and connections are torn down. */
83
90
  declare const uninstall: (uri: string) => Promise<void>;
84
91
  type ShowOptions = {
85
- /** the package frame is kept aligned to this element's viewport rect until the view is released */element?: HTMLElement; /** an explicit viewport rect, for a caller that tracks placement itself */
92
+ /**
93
+ * A placeholder the package frame is aligned to for as long as the view lives. The frame tracks its
94
+ * rect every animation frame, is clipped by its scrolling ancestors, and follows its border-radius,
95
+ * so it reads as inline content even though it renders in FKN's overlay.
96
+ */
97
+ element?: HTMLElement; /** an explicit viewport rect, for a caller that tracks placement itself */
86
98
  rect?: SurfaceRect;
87
99
  };
88
100
  type PackageView = {
@@ -155,4 +167,4 @@ declare const onVisibilityChange: (handler: (visible: boolean) => void) => {
155
167
  unsubscribe: () => void;
156
168
  };
157
169
  //#endregion
158
- export { PackagesErrorCode as A, uninstall as C, InstalledPackage as D, InstallOptions as E, PickOptions as M, SurfaceRect as N, PackageQuery as O, show as S, ConnectOptions as T, onConnect as _, IncomingConnectionInfo as a, pick as b, PackagesError as c, attach as d, connect as f, list as g, isVisible as h, IncomingConnection as i, PackagesFail as j, PackageResult as k, RawPackageConnection as l, install as m, Connect as n, PackageConnection as o, hide as p, ConnectPayload as r, PackageView as s, AppConnectOptions as t, ShowOptions as u, onVisibilityChange as v, Caller as w, search as x, packages_d_exports as y };
170
+ export { PackagesErrorCode as A, uninstall as C, InstalledPackage as D, InstallOptions as E, SurfaceRect as F, PickOptions as M, Placement as N, PackageQuery as O, Radii as P, show as S, ConnectOptions as T, onConnect as _, IncomingConnectionInfo as a, pick as b, PackagesError as c, attach as d, connect as f, list as g, isVisible as h, IncomingConnection as i, PackagesFail as j, PackageResult as k, RawPackageConnection as l, install as m, Connect as n, PackageConnection as o, hide as p, ConnectPayload as r, PackageView as s, AppConnectOptions as t, ShowOptions as u, onVisibilityChange as v, Caller as w, search as x, packages_d_exports as y };
package/packages.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-C9Mh5v0z.cjs");let n=require("osra");var r=e.t({attach:()=>C,connect:()=>S,hide:()=>x,install:()=>p,isVisible:()=>L,list:()=>m,onConnect:()=>I,onVisibilityChange:()=>R,pick:()=>f,search:()=>d,show:()=>b,uninstall:()=>h}),i=`https://fkn.app`,a=`fkn-packages-connection`,o=3e4,s=(e,t)=>Object.assign(Error(t),{code:e}),c=async()=>{if(!t.r)throw s(`unavailable`,`packages: no FKN transport in this realm - use relayWorker to bridge workers`);return t.t},l=(e,t,r)=>(0,n.expose)(e??{},{transport:t,key:a,unregisterSignal:r}),u=async(e,t,n={})=>{let{signal:r,closed:i}=n;if(r?.aborted)throw s(`unavailable`,`packages.connect: aborted before connecting`);let a=new AbortController;r&&r.addEventListener(`abort`,()=>a.abort(r.reason),{once:!0});let c=new AbortController,u=new Promise((e,n)=>{let a=setTimeout(()=>n(s(`timeout`,`packages.connect: the package did not complete the connection`)),o);c.signal.addEventListener(`abort`,()=>clearTimeout(a),{once:!0}),t.addEventListener(`message`,e=>{if(e.data?.type===`fkn-packages-nack`){let t=e.data.message;n(s(`unavailable`,typeof t==`string`&&t?t:`packages.connect: the package refused the connection`))}},{signal:c.signal}),t.start(),r&&r.addEventListener(`abort`,()=>n(s(`unavailable`,`packages.connect: aborted before connecting`)),{once:!0,signal:c.signal}),i?.then(()=>n(s(`unavailable`,`packages.connect: the package closed before connecting`)))});try{return await Promise.race([l(e,t,a.signal),u])}catch(e){a.abort(e);try{t.close()}catch{}throw e}finally{c.abort()}},d=async e=>{let t=await(await c()).packages.search(e);if(`error`in t)throw s(t.error,t.message);return t.results},f=async(e,t)=>{let n=await(await c()).packages.pick(e,t);if(`error`in n)throw s(n.error,n.message);return`declined`in n?[]:n.results},p=async(e,t)=>{let n=await(await c()).packages.install(e,t);if(`error`in n)throw s(n.error,n.message);return`declined`in n?null:n.installed},m=async()=>(await(await c()).packages.list()).results,h=async e=>{let t=await(await c()).packages.uninstall(e);if(`error`in t)throw s(t.error,t.message)},g=(e,t)=>!!e&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,_=({x:e,y:t,width:n,height:r})=>({x:Math.round(e),y:Math.round(t),width:Math.round(n),height:Math.round(r)}),v=new Map,y=async(e,t)=>{let n=v.get(e);if(n){for(let e of n)t&&e.element!==t||(e.stop(),n.delete(e));if(n.size>0)return;v.delete(e)}let r=await(await c()).packages.hide(e);if(`error`in r)throw s(r.error,r.message)},b=async(e,t)=>{let{element:n,rect:r}=t;if(!n&&!r)throw s(`invalid`,`packages.show: pass an element or a rect`);let i=(await c()).packages,a=()=>_(n?n.getBoundingClientRect():r),o=!0,l,u=0,d=async t=>{l=t;let n=await i.show(e,t);if(`error`in n)throw o=!1,s(n.error,n.message)};await d(a());let f=()=>{if(!o)return;let e=a();g(l,e)||d(e).catch(()=>{}),u=requestAnimationFrame(f)};n&&(u=requestAnimationFrame(f));let p={element:n,stop:()=>{o=!1,cancelAnimationFrame(u)}},m=v.get(e)??new Set;return m.add(p),v.set(e,m),{hide:()=>{y(e,n).catch(()=>{})},refresh:()=>{if(!o)return;let e=a();g(l,e)||d(e).catch(()=>{})}}},x=async(e,t={})=>y(e,t.element),S=(async(e,t={})=>{let n=await(await c()).packages.connect(e,{protocol:t.protocol});if(`error`in n)throw s(n.error,n.message);let{port:r,closed:i}=n;if(t.raw)return{closed:i,port:r};let a=await u(t.payload,r,{signal:t.signal,closed:i});return t.signal&&t.signal.addEventListener(`abort`,()=>{try{r.postMessage({type:`fkn-packages-disconnect`})}catch{}},{once:!0}),{remote:a,closed:i,port:r}}),C=(e,t,n)=>u(t,e,{signal:n?.signal}),w=null,T=!1,E=new Set,D=[],O=new Map,k=!1,A=!1,j=e=>{let t=O.get(e);t&&(O.delete(e),t())},M=(e,t)=>{try{e.postMessage({type:`fkn-packages-nack`,message:t})}catch{}try{e.close()}catch{}},N=async(e,t)=>{let{port:n,...r}=e;e.port.addEventListener(`message`,t=>{t.data?.type===`fkn-packages-disconnect`&&j(e.port)});let i;try{i=await t.createPayload(r)}catch(t){throw M(e.port,t instanceof Error?t.message:`the package failed to produce a connection`),t}let a=new Promise(t=>O.set(e.port,t)),o=await l(i,e.port);t.handler?.({...r,remote:o,closed:a,port:e.port})},P=()=>{k||typeof window>`u`||window.parent===window||(k=!0,window.addEventListener(`message`,e=>{if(e.source!==window.parent||e.origin!==i)return;let t=e.data;if(t?.type===`fkn-packages-port`){let n=e.ports[0];if(!n)return;let r={port:n,from:typeof t.from==`string`?t.from:``,protocol:typeof t.protocol==`string`?t.protocol:null,uri:typeof t.uri==`string`?t.uri:``,name:typeof t.name==`string`?t.name:``,version:typeof t.version==`string`?t.version:``};w?N(r,w).catch(e=>console.warn(`packages.onConnect:`,e)):D.push(r)}if(t?.type===`fkn-packages-close`)for(let e of[...O.keys()])j(e);if(t?.type===`fkn-packages-visibility`){T=t.visible===!0;for(let e of E)try{e(T)}catch{}}}))},F=()=>{A||typeof window>`u`||window.parent===window||(A=!0,window.parent.postMessage({type:`fkn-packages-ready`},i))},I=(e,t)=>{if(typeof window>`u`)return{unsubscribe:()=>{}};P();let n={createPayload:e,handler:t};for(w=n,F();D.length&&w===n;)N(D.shift(),n).catch(e=>console.warn(`packages.onConnect:`,e));return{unsubscribe:()=>{w===n&&(w=null)}}},L=()=>T,R=e=>{if(typeof window>`u`)return{unsubscribe:()=>{}};P(),E.add(e);try{e(T)}catch{}return{unsubscribe:()=>{E.delete(e)}}};exports.attach=C,exports.connect=S,exports.hide=x,exports.install=p,exports.isVisible=L,exports.list=m,exports.onConnect=I,exports.onVisibilityChange=R,exports.pick=f,exports.search=d,exports.show=b,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.uninstall=h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-dp9SlXVw.cjs");let n=require("osra");var r=e.t({attach:()=>E,connect:()=>T,hide:()=>w,install:()=>p,isVisible:()=>B,list:()=>m,onConnect:()=>z,onVisibilityChange:()=>V,pick:()=>f,search:()=>d,show:()=>C,uninstall:()=>h}),i=`https://fkn.app`,a=`fkn-packages-connection`,o=3e4,s=(e,t)=>Object.assign(Error(t),{code:e}),c=async()=>{if(!t.r)throw s(`unavailable`,`packages: no FKN transport in this realm - use relayWorker to bridge workers`);return t.t},l=(e,t,r)=>(0,n.expose)(e??{},{transport:t,key:a,unregisterSignal:r}),u=async(e,t,n={})=>{let{signal:r,closed:i}=n;if(r?.aborted)throw s(`unavailable`,`packages.connect: aborted before connecting`);let a=new AbortController;r&&r.addEventListener(`abort`,()=>a.abort(r.reason),{once:!0});let c=new AbortController,u=new Promise((e,n)=>{let a=setTimeout(()=>n(s(`timeout`,`packages.connect: the package did not complete the connection`)),o);c.signal.addEventListener(`abort`,()=>clearTimeout(a),{once:!0}),t.addEventListener(`message`,e=>{if(e.data?.type===`fkn-packages-nack`){let t=e.data.message;n(s(`unavailable`,typeof t==`string`&&t?t:`packages.connect: the package refused the connection`))}},{signal:c.signal}),t.start(),r&&r.addEventListener(`abort`,()=>n(s(`unavailable`,`packages.connect: aborted before connecting`)),{once:!0,signal:c.signal}),i?.then(()=>n(s(`unavailable`,`packages.connect: the package closed before connecting`)))});try{return await Promise.race([l(e,t,a.signal),u])}catch(e){a.abort(e);try{t.close()}catch{}throw e}finally{c.abort()}},d=async e=>{let t=await(await c()).packages.search(e);if(`error`in t)throw s(t.error,t.message);return t.results},f=async(e,t)=>{let n=await(await c()).packages.pick(e,t);if(`error`in n)throw s(n.error,n.message);return`declined`in n?[]:n.results},p=async(e,t)=>{let n=await(await c()).packages.install(e,t);if(`error`in n)throw s(n.error,n.message);return`declined`in n?null:n.installed},m=async()=>(await(await c()).packages.list()).results,h=async e=>{let t=await(await c()).packages.uninstall(e);if(`error`in t)throw s(t.error,t.message)},g=({x:e,y:t,width:n,height:r})=>({x:Math.round(e),y:Math.round(t),width:Math.round(n),height:Math.round(r)}),_=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,width:Math.max(0,Math.min(e.x+e.width,t.x+t.width)-n),height:Math.max(0,Math.min(e.y+e.height,t.y+t.height)-r)}},v=(e,t)=>{let n=t;for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if(!(e.overflowX===`visible`&&e.overflowY===`visible`)&&(n=_(n,g(t.getBoundingClientRect())),n.width===0||n.height===0))break}return n},y=e=>{let t=getComputedStyle(e),n=[t.borderTopLeftRadius,t.borderTopRightRadius,t.borderBottomRightRadius,t.borderBottomLeftRadius];if(n.some(e=>e.includes(`%`)||e.includes(` `)))return;let r=n.map(e=>{let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:0});return r.some(e=>e>0)?r:void 0},b=(e,t)=>{if(!e)return!1;let n=(e,t)=>e===t||!!e&&!!t&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height;return n(e.rect,t.rect)&&n(e.clip,t.clip)&&((e,t)=>e===t||!!e&&!!t&&e.every((e,n)=>e===t[n]))(e.radius,t.radius)},x=new Map,S=async(e,t)=>{let n=x.get(e);if(n){for(let e of n)t&&e.element!==t||(e.stop(),n.delete(e));if(n.size>0)return;x.delete(e)}let r=await(await c()).packages.hide(e);if(`error`in r)throw s(r.error,r.message)},C=async(e,t)=>{let{element:n,rect:r}=t;if(!n&&!r)throw s(`invalid`,`packages.show: pass an element or a rect`);let i=(await c()).packages,a=()=>{if(!n)return{rect:g(r)};let e=g(n.getBoundingClientRect());return{rect:e,clip:v(n,e),radius:y(n)}},o=!0,l,u=0,d=async t=>{l=t;let n=await i.show(e,t);if(`error`in n)throw o=!1,s(n.error,n.message)};await d(a());let f=()=>{if(!o)return;let e=a();b(l,e)||d(e).catch(()=>{}),u=requestAnimationFrame(f)};n&&(u=requestAnimationFrame(f));let p={element:n,stop:()=>{o=!1,cancelAnimationFrame(u)}},m=x.get(e)??new Set;return m.add(p),x.set(e,m),{hide:()=>{S(e,n).catch(()=>{})},refresh:()=>{if(!o)return;let e=a();b(l,e)||d(e).catch(()=>{})}}},w=async(e,t={})=>S(e,t.element),T=(async(e,t={})=>{let n=await(await c()).packages.connect(e,{protocol:t.protocol});if(`error`in n)throw s(n.error,n.message);let{port:r,closed:i}=n;if(t.raw)return{closed:i,port:r};let a=await u(t.payload,r,{signal:t.signal,closed:i});return t.signal&&t.signal.addEventListener(`abort`,()=>{try{r.postMessage({type:`fkn-packages-disconnect`})}catch{}},{once:!0}),{remote:a,closed:i,port:r}}),E=(e,t,n)=>u(t,e,{signal:n?.signal}),D=null,O=!1,k=new Set,A=[],j=new Map,M=!1,N=!1,P=e=>{let t=j.get(e);t&&(j.delete(e),t())},F=(e,t)=>{try{e.postMessage({type:`fkn-packages-nack`,message:t})}catch{}try{e.close()}catch{}},I=async(e,t)=>{let{port:n,...r}=e;e.port.addEventListener(`message`,t=>{t.data?.type===`fkn-packages-disconnect`&&P(e.port)});let i;try{i=await t.createPayload(r)}catch(t){throw F(e.port,t instanceof Error?t.message:`the package failed to produce a connection`),t}let a=new Promise(t=>j.set(e.port,t)),o=await l(i,e.port);t.handler?.({...r,remote:o,closed:a,port:e.port})},L=()=>{M||typeof window>`u`||window.parent===window||(M=!0,window.addEventListener(`message`,e=>{if(e.source!==window.parent||e.origin!==i)return;let t=e.data;if(t?.type===`fkn-packages-port`){let n=e.ports[0];if(!n)return;let r={port:n,from:typeof t.from==`string`?t.from:``,protocol:typeof t.protocol==`string`?t.protocol:null,uri:typeof t.uri==`string`?t.uri:``,name:typeof t.name==`string`?t.name:``,version:typeof t.version==`string`?t.version:``};D?I(r,D).catch(e=>console.warn(`packages.onConnect:`,e)):A.push(r)}if(t?.type===`fkn-packages-close`)for(let e of[...j.keys()])P(e);if(t?.type===`fkn-packages-visibility`){O=t.visible===!0;for(let e of k)try{e(O)}catch{}}}))},R=()=>{N||typeof window>`u`||window.parent===window||(N=!0,window.parent.postMessage({type:`fkn-packages-ready`},i))},z=(e,t)=>{if(typeof window>`u`)return{unsubscribe:()=>{}};L();let n={createPayload:e,handler:t};for(D=n,R();A.length&&D===n;)I(A.shift(),n).catch(e=>console.warn(`packages.onConnect:`,e));return{unsubscribe:()=>{D===n&&(D=null)}}},B=()=>O,V=e=>{if(typeof window>`u`)return{unsubscribe:()=>{}};L(),k.add(e);try{e(O)}catch{}return{unsubscribe:()=>{k.delete(e)}}};exports.attach=E,exports.connect=T,exports.hide=w,exports.install=p,exports.isVisible=B,exports.list=m,exports.onConnect=z,exports.onVisibilityChange=V,exports.pick=f,exports.search=d,exports.show=C,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.uninstall=h;
package/packages.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as PackagesErrorCode, C as uninstall, D as InstalledPackage, E as InstallOptions, M as PickOptions, N as SurfaceRect, O as PackageQuery, S as show, T as ConnectOptions, _ as onConnect, a as IncomingConnectionInfo, b as pick, c as PackagesError, d as attach, f as connect, g as list, h as isVisible, i as IncomingConnection, k as PackageResult, l as RawPackageConnection, m as install, n as Connect, o as PackageConnection, p as hide, r as ConnectPayload, s as PackageView, t as AppConnectOptions, u as ShowOptions, v as onVisibilityChange, x as search } from "./packages-DU1D-pr4.js";
2
- export { AppConnectOptions, Connect, type ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, type InstallOptions, type InstalledPackage, PackageConnection, type PackageQuery, type PackageResult, PackageView, PackagesError, type PackagesErrorCode, type PickOptions, RawPackageConnection, ShowOptions, type SurfaceRect, attach, connect, hide, install, isVisible, list, onConnect, onVisibilityChange, pick, search, show, uninstall };
1
+ import { A as PackagesErrorCode, C as uninstall, D as InstalledPackage, E as InstallOptions, F as SurfaceRect, M as PickOptions, N as Placement, O as PackageQuery, P as Radii, S as show, T as ConnectOptions, _ as onConnect, a as IncomingConnectionInfo, b as pick, c as PackagesError, d as attach, f as connect, g as list, h as isVisible, i as IncomingConnection, k as PackageResult, l as RawPackageConnection, m as install, n as Connect, o as PackageConnection, p as hide, r as ConnectPayload, s as PackageView, t as AppConnectOptions, u as ShowOptions, v as onVisibilityChange, x as search } from "./packages-BtbLwrrW.js";
2
+ export { AppConnectOptions, Connect, type ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, type InstallOptions, type InstalledPackage, PackageConnection, type PackageQuery, type PackageResult, PackageView, PackagesError, type PackagesErrorCode, type PickOptions, type Placement, type Radii, RawPackageConnection, ShowOptions, type SurfaceRect, attach, connect, hide, install, isVisible, list, onConnect, onVisibilityChange, pick, search, show, uninstall };
package/packages.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { r as t, t as n } from "./api-BU8zNmQI.js";
2
+ import { r as t, t as n } from "./api-B53pjQqI.js";
3
3
  import { expose as r } from "osra";
4
4
  //#region src/lib/packages.ts
5
5
  var i = /* @__PURE__ */ e({
6
- attach: () => w,
7
- connect: () => C,
8
- hide: () => S,
6
+ attach: () => D,
7
+ connect: () => E,
8
+ hide: () => T,
9
9
  install: () => m,
10
- isVisible: () => R,
10
+ isVisible: () => V,
11
11
  list: () => h,
12
- onConnect: () => L,
13
- onVisibilityChange: () => z,
12
+ onConnect: () => B,
13
+ onVisibilityChange: () => H,
14
14
  pick: () => p,
15
15
  search: () => f,
16
- show: () => x,
16
+ show: () => w,
17
17
  uninstall: () => g
18
18
  }), a = "https://fkn.app", o = "fkn-packages-connection", s = 3e4, c = (e, t) => Object.assign(Error(t), { code: e }), l = async () => {
19
19
  if (!t) throw c("unavailable", "packages: no FKN transport in this realm - use relayWorker to bridge workers");
@@ -65,24 +65,64 @@ var i = /* @__PURE__ */ e({
65
65
  }, h = async () => (await (await l()).packages.list()).results, g = async (e) => {
66
66
  let t = await (await l()).packages.uninstall(e);
67
67
  if ("error" in t) throw c(t.error, t.message);
68
- }, _ = (e, t) => !!e && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height, v = ({ x: e, y: t, width: n, height: r }) => ({
68
+ }, _ = ({ x: e, y: t, width: n, height: r }) => ({
69
69
  x: Math.round(e),
70
70
  y: Math.round(t),
71
71
  width: Math.round(n),
72
72
  height: Math.round(r)
73
- }), y = /* @__PURE__ */ new Map(), b = async (e, t) => {
74
- let n = y.get(e);
73
+ }), v = (e, t) => {
74
+ let n = Math.max(e.x, t.x), r = Math.max(e.y, t.y);
75
+ return {
76
+ x: n,
77
+ y: r,
78
+ width: Math.max(0, Math.min(e.x + e.width, t.x + t.width) - n),
79
+ height: Math.max(0, Math.min(e.y + e.height, t.y + t.height) - r)
80
+ };
81
+ }, y = (e, t) => {
82
+ let n = t;
83
+ for (let t = e.parentElement; t; t = t.parentElement) {
84
+ let e = getComputedStyle(t);
85
+ if (!(e.overflowX === "visible" && e.overflowY === "visible") && (n = v(n, _(t.getBoundingClientRect())), n.width === 0 || n.height === 0)) break;
86
+ }
87
+ return n;
88
+ }, b = (e) => {
89
+ let t = getComputedStyle(e), n = [
90
+ t.borderTopLeftRadius,
91
+ t.borderTopRightRadius,
92
+ t.borderBottomRightRadius,
93
+ t.borderBottomLeftRadius
94
+ ];
95
+ if (n.some((e) => e.includes("%") || e.includes(" "))) return;
96
+ let r = n.map((e) => {
97
+ let t = Number.parseFloat(e);
98
+ return Number.isFinite(t) && t > 0 ? t : 0;
99
+ });
100
+ return r.some((e) => e > 0) ? r : void 0;
101
+ }, x = (e, t) => {
102
+ if (!e) return !1;
103
+ let n = (e, t) => e === t || !!e && !!t && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
104
+ return n(e.rect, t.rect) && n(e.clip, t.clip) && ((e, t) => e === t || !!e && !!t && e.every((e, n) => e === t[n]))(e.radius, t.radius);
105
+ }, S = /* @__PURE__ */ new Map(), C = async (e, t) => {
106
+ let n = S.get(e);
75
107
  if (n) {
76
108
  for (let e of n) t && e.element !== t || (e.stop(), n.delete(e));
77
109
  if (n.size > 0) return;
78
- y.delete(e);
110
+ S.delete(e);
79
111
  }
80
112
  let r = await (await l()).packages.hide(e);
81
113
  if ("error" in r) throw c(r.error, r.message);
82
- }, x = async (e, t) => {
114
+ }, w = async (e, t) => {
83
115
  let { element: n, rect: r } = t;
84
116
  if (!n && !r) throw c("invalid", "packages.show: pass an element or a rect");
85
- let i = (await l()).packages, a = () => v(n ? n.getBoundingClientRect() : r), o = !0, s, u = 0, d = async (t) => {
117
+ let i = (await l()).packages, a = () => {
118
+ if (!n) return { rect: _(r) };
119
+ let e = _(n.getBoundingClientRect());
120
+ return {
121
+ rect: e,
122
+ clip: y(n, e),
123
+ radius: b(n)
124
+ };
125
+ }, o = !0, s, u = 0, d = async (t) => {
86
126
  s = t;
87
127
  let n = await i.show(e, t);
88
128
  if ("error" in n) throw o = !1, c(n.error, n.message);
@@ -91,7 +131,7 @@ var i = /* @__PURE__ */ e({
91
131
  let f = () => {
92
132
  if (!o) return;
93
133
  let e = a();
94
- _(s, e) || d(e).catch(() => {}), u = requestAnimationFrame(f);
134
+ x(s, e) || d(e).catch(() => {}), u = requestAnimationFrame(f);
95
135
  };
96
136
  n && (u = requestAnimationFrame(f));
97
137
  let p = {
@@ -99,18 +139,18 @@ var i = /* @__PURE__ */ e({
99
139
  stop: () => {
100
140
  o = !1, cancelAnimationFrame(u);
101
141
  }
102
- }, m = y.get(e) ?? /* @__PURE__ */ new Set();
103
- return m.add(p), y.set(e, m), {
142
+ }, m = S.get(e) ?? /* @__PURE__ */ new Set();
143
+ return m.add(p), S.set(e, m), {
104
144
  hide: () => {
105
- b(e, n).catch(() => {});
145
+ C(e, n).catch(() => {});
106
146
  },
107
147
  refresh: () => {
108
148
  if (!o) return;
109
149
  let e = a();
110
- _(s, e) || d(e).catch(() => {});
150
+ x(s, e) || d(e).catch(() => {});
111
151
  }
112
152
  };
113
- }, S = async (e, t = {}) => b(e, t.element), C = (async (e, t = {}) => {
153
+ }, T = async (e, t = {}) => C(e, t.element), E = (async (e, t = {}) => {
114
154
  let n = await (await l()).packages.connect(e, { protocol: t.protocol });
115
155
  if ("error" in n) throw c(n.error, n.message);
116
156
  let { port: r, closed: i } = n;
@@ -131,10 +171,10 @@ var i = /* @__PURE__ */ e({
131
171
  closed: i,
132
172
  port: r
133
173
  };
134
- }), w = (e, t, n) => d(t, e, { signal: n?.signal }), T = null, E = !1, D = /* @__PURE__ */ new Set(), O = [], k = /* @__PURE__ */ new Map(), A = !1, j = !1, M = (e) => {
135
- let t = k.get(e);
136
- t && (k.delete(e), t());
137
- }, N = (e, t) => {
174
+ }), D = (e, t, n) => d(t, e, { signal: n?.signal }), O = null, k = !1, A = /* @__PURE__ */ new Set(), j = [], M = /* @__PURE__ */ new Map(), N = !1, P = !1, F = (e) => {
175
+ let t = M.get(e);
176
+ t && (M.delete(e), t());
177
+ }, I = (e, t) => {
138
178
  try {
139
179
  e.postMessage({
140
180
  type: "fkn-packages-nack",
@@ -144,26 +184,26 @@ var i = /* @__PURE__ */ e({
144
184
  try {
145
185
  e.close();
146
186
  } catch {}
147
- }, P = async (e, t) => {
187
+ }, L = async (e, t) => {
148
188
  let { port: n, ...r } = e;
149
189
  e.port.addEventListener("message", (t) => {
150
- t.data?.type === "fkn-packages-disconnect" && M(e.port);
190
+ t.data?.type === "fkn-packages-disconnect" && F(e.port);
151
191
  });
152
192
  let i;
153
193
  try {
154
194
  i = await t.createPayload(r);
155
195
  } catch (t) {
156
- throw N(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
196
+ throw I(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
157
197
  }
158
- let a = new Promise((t) => k.set(e.port, t)), o = await u(i, e.port);
198
+ let a = new Promise((t) => M.set(e.port, t)), o = await u(i, e.port);
159
199
  t.handler?.({
160
200
  ...r,
161
201
  remote: o,
162
202
  closed: a,
163
203
  port: e.port
164
204
  });
165
- }, F = () => {
166
- A || typeof window > "u" || window.parent === window || (A = !0, window.addEventListener("message", (e) => {
205
+ }, R = () => {
206
+ N || typeof window > "u" || window.parent === window || (N = !0, window.addEventListener("message", (e) => {
167
207
  if (e.source !== window.parent || e.origin !== a) return;
168
208
  let t = e.data;
169
209
  if (t?.type === "fkn-packages-port") {
@@ -177,38 +217,38 @@ var i = /* @__PURE__ */ e({
177
217
  name: typeof t.name == "string" ? t.name : "",
178
218
  version: typeof t.version == "string" ? t.version : ""
179
219
  };
180
- T ? P(r, T).catch((e) => console.warn("packages.onConnect:", e)) : O.push(r);
220
+ O ? L(r, O).catch((e) => console.warn("packages.onConnect:", e)) : j.push(r);
181
221
  }
182
- if (t?.type === "fkn-packages-close") for (let e of [...k.keys()]) M(e);
222
+ if (t?.type === "fkn-packages-close") for (let e of [...M.keys()]) F(e);
183
223
  if (t?.type === "fkn-packages-visibility") {
184
- E = t.visible === !0;
185
- for (let e of D) try {
186
- e(E);
224
+ k = t.visible === !0;
225
+ for (let e of A) try {
226
+ e(k);
187
227
  } catch {}
188
228
  }
189
229
  }));
190
- }, I = () => {
191
- j || typeof window > "u" || window.parent === window || (j = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, a));
192
- }, L = (e, t) => {
230
+ }, z = () => {
231
+ P || typeof window > "u" || window.parent === window || (P = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, a));
232
+ }, B = (e, t) => {
193
233
  if (typeof window > "u") return { unsubscribe: () => {} };
194
- F();
234
+ R();
195
235
  let n = {
196
236
  createPayload: e,
197
237
  handler: t
198
238
  };
199
- for (T = n, I(); O.length && T === n;) P(O.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
239
+ for (O = n, z(); j.length && O === n;) L(j.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
200
240
  return { unsubscribe: () => {
201
- T === n && (T = null);
241
+ O === n && (O = null);
202
242
  } };
203
- }, R = () => E, z = (e) => {
243
+ }, V = () => k, H = (e) => {
204
244
  if (typeof window > "u") return { unsubscribe: () => {} };
205
- F(), D.add(e);
245
+ R(), A.add(e);
206
246
  try {
207
- e(E);
247
+ e(k);
208
248
  } catch {}
209
249
  return { unsubscribe: () => {
210
- D.delete(e);
250
+ A.delete(e);
211
251
  } };
212
252
  };
213
253
  //#endregion
214
- export { w as attach, C as connect, S as hide, m as install, R as isVisible, h as list, L as onConnect, z as onVisibilityChange, p as pick, f as search, x as show, i as t, g as uninstall };
254
+ export { D as attach, E as connect, T as hide, m as install, V as isVisible, h as list, B as onConnect, H as onVisibilityChange, p as pick, f as search, w as show, i as t, g as uninstall };
@@ -1,4 +1,4 @@
1
- import { t as Resolvers } from "./api-BdGpFv2D.js";
1
+ import { t as Resolvers } from "./api-BYRsWdwB.js";
2
2
 
3
3
  //#region src/lib/proxy.d.ts
4
4
  type ProxyFetch = Resolvers['cloud']['fetch'];
@@ -1,4 +1,4 @@
1
- import { t as e } from "./api-BU8zNmQI.js";
1
+ import { t as e } from "./api-B53pjQqI.js";
2
2
  //#region src/lib/fkn-target.ts
3
3
  var t = ["fkn.app", "fkn.dev"], n = (e) => {
4
4
  let n = typeof e == "string" ? e : e instanceof URL ? e.href : e.url, r;
@@ -1 +1 @@
1
- const e=require("./api-C9Mh5v0z.cjs");var t=[`fkn.app`,`fkn.dev`],n=e=>{let n=typeof e==`string`?e:e instanceof URL?e.href:e.url,r;try{r=new URL(n)}catch{return}let i=r.hostname;if(t.some(e=>i===e||i.endsWith(`.${e}`)))throw Error(`fetch refuses FKN platform domains (${i})`)},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()},i=async e=>{if(e.method===`GET`||e.method===`HEAD`)return;let t=await e.clone().arrayBuffer();return t.byteLength?t:void 0},a=async(t,a)=>{if(n(t),typeof t==`object`&&t&&!(t instanceof URL)&&typeof t.url==`string`){let n=t,o={};n.headers.forEach((e,t)=>{o[t]=e});let s=await r(a?.body===void 0?await i(n):a.body);return e.t.then(e=>e.cloud.fetch(n.url,{...a,method:a?.method??n.method,headers:a?.headers??o,body:s}))}let o=t instanceof URL?t.href:t,s=await r(a?.body);return e.t.then(e=>e.cloud.fetch(o,a?.body===void 0?a:{...a,body:s}))};Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
1
+ const e=require("./api-dp9SlXVw.cjs");var t=[`fkn.app`,`fkn.dev`],n=e=>{let n=typeof e==`string`?e:e instanceof URL?e.href:e.url,r;try{r=new URL(n)}catch{return}let i=r.hostname;if(t.some(e=>i===e||i.endsWith(`.${e}`)))throw Error(`fetch refuses FKN platform domains (${i})`)},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()},i=async e=>{if(e.method===`GET`||e.method===`HEAD`)return;let t=await e.clone().arrayBuffer();return t.byteLength?t:void 0},a=async(t,a)=>{if(n(t),typeof t==`object`&&t&&!(t instanceof URL)&&typeof t.url==`string`){let n=t,o={};n.headers.forEach((e,t)=>{o[t]=e});let s=await r(a?.body===void 0?await i(n):a.body);return e.t.then(e=>e.cloud.fetch(n.url,{...a,method:a?.method??n.method,headers:a?.headers??o,body:s}))}let o=t instanceof URL?t.href:t,s=await r(a?.body);return e.t.then(e=>e.cloud.fetch(o,a?.body===void 0?a:{...a,body:s}))};Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { t } from "./api-BU8zNmQI.js";
2
+ import { t } from "./api-B53pjQqI.js";
3
3
  //#endregion
4
4
  //#region src/lib/storage.ts
5
5
  var n = /* @__PURE__ */ e({
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-C9Mh5v0z.cjs");var n=e.t({StorageLockedError:()=>r,available:()=>a,encryption:()=>d,list:()=>o,quota:()=>s,readFile:()=>c,remove:()=>u,unlock:()=>f,writeFile:()=>l}),r=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: this app stores encrypted data, unlock it from the FKN card or unlock()`)}},i=e=>{throw e instanceof Error&&e.message.startsWith(`fkn:e2e-locked`)?new r:e},a=()=>t.t.then(e=>e.cloud.fs.available()).catch(()=>!1),o=()=>t.t.then(e=>e.cloud.fs.list()),s=()=>t.t.then(e=>e.cloud.fs.quota()),c=async e=>{let n=await(await t.t).cloud.fs.readFile(e).catch(i);return new Blob([n])},l=async(e,n,r)=>{let a=await t.t,o=n instanceof Blob?new Uint8Array(await n.arrayBuffer()):n;await a.cloud.fs.writeFile(e,o,r?.contentType??null).catch(i)},u=e=>t.t.then(t=>t.cloud.fs.remove(e)).then(()=>void 0),d=()=>t.t.then(e=>e.cloud.fs.encryption()),f=()=>t.t.then(e=>e.cloud.fs.unlock());Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return l}});
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-dp9SlXVw.cjs");var n=e.t({StorageLockedError:()=>r,available:()=>a,encryption:()=>d,list:()=>o,quota:()=>s,readFile:()=>c,remove:()=>u,unlock:()=>f,writeFile:()=>l}),r=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: this app stores encrypted data, unlock it from the FKN card or unlock()`)}},i=e=>{throw e instanceof Error&&e.message.startsWith(`fkn:e2e-locked`)?new r:e},a=()=>t.t.then(e=>e.cloud.fs.available()).catch(()=>!1),o=()=>t.t.then(e=>e.cloud.fs.list()),s=()=>t.t.then(e=>e.cloud.fs.quota()),c=async e=>{let n=await(await t.t).cloud.fs.readFile(e).catch(i);return new Blob([n])},l=async(e,n,r)=>{let a=await t.t,o=n instanceof Blob?new Uint8Array(await n.arrayBuffer()):n;await a.cloud.fs.writeFile(e,o,r?.contentType??null).catch(i)},u=e=>t.t.then(t=>t.cloud.fs.remove(e)).then(()=>void 0),d=()=>t.t.then(e=>e.cloud.fs.encryption()),f=()=>t.t.then(e=>e.cloud.fs.unlock());Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return l}});
package/api-C9Mh5v0z.cjs DELETED
@@ -1 +0,0 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs");let t=require("osra");var n=32,r=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),i=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`)},a=({x:e,y:t,width:n,height:r})=>`M${e} ${t}h${n}v${r}h${-n}Z`,o=(e,{modal:t,rects:n})=>{if(!r){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 i=t?`none`:n.length===0?`inset(100%)`:`path('${n.map(a).join(``)}')`,o=i===`none`||CSS.supports(`clip-path`,i)?i:`inset(100%)`;e.style.setProperty(`clip-path`,o,`important`)},s=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}},c=e=>{if(typeof e!=`object`||!e)return null;let t=e,r=(Array.isArray(t.rects)?t.rects.slice(0,n):[]).map(s).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:t.modal===!0,rects:r}},l=null,u=()=>l!==null,d=e=>{i(e),o(e,{modal:!1,rects:[]}),l=e},f=e=>{if(!l)return;let t=c(e);t&&o(l,t)},p=`https://fkn.app`,m=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,h=typeof globalThis<`u`&&globalThis.crossOriginIsolated===!0,g=`${p}/api${h?`?coi=1`:``}`,_=`fkn-api-port`,v=`fkn-api-port-ack`,y=2e3,b=()=>{if(!m||typeof window>`u`||window.parent===window)return Promise.resolve(void 0);let e;try{e=window.parent}catch{return Promise.resolve(void 0)}let t=new MessageChannel;return new Promise(n=>{let r=e=>{if(clearTimeout(a),t.port1.removeEventListener(`message`,i),!e)try{t.port1.close()}catch{}n(e)},i=e=>{e.data?.type===v&&r(t.port1)},a=setTimeout(()=>r(void 0),y);t.port1.addEventListener(`message`,i),t.port1.start();try{e.postMessage({type:_},p,[t.port2])}catch{r(void 0)}})},x,S=()=>{if(x||!m)return x;let e=m.querySelector(`iframe[src="${g}"]`);if(e)x=e;else{let e=m.createElement(`iframe`);h&&e.setAttribute(`allow`,`cross-origin-isolated`),e.src=g,m.body.appendChild(e),x=e}return d(x),x},C=(async()=>{if(!m)return;let e=await b();if(e)return{receive:e,emit:e};let t=S()?.contentWindow;return t?{receive:window,emit:t}:void 0})(),w=()=>x,T=e.t({apiPromise:()=>D,hasTransport:()=>E}),E=typeof window<`u`||typeof self<`u`,D=(async()=>{if(typeof window<`u`)return C;if(typeof self<`u`)return{receive:self,emit:self}})().then(e=>e?(0,t.expose)({},{key:`fkn-api`,transport:e}):new Promise(()=>{}));D.then(e=>{u()&&e.overlay.setHost(f)},()=>{}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}});