@fkn/lib 0.9.67 → 0.9.69

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 (115) hide show
  1. package/{account-Uh0-1Cbp.js → account-CAX5oCUD.js} +2 -2
  2. package/{account-DBagcNfd.d.ts → account-CXUwroRM.d.ts} +1 -1
  3. package/{account-m2iCmNui.cjs → account-aaD_dWUH.cjs} +1 -1
  4. package/{account-generation-BKHNe-jL.js → account-generation-BElgcQwo.js} +1 -1
  5. package/{account-generation-ACCBzaI-.cjs → account-generation-DwMcJFGc.cjs} +1 -1
  6. package/{account-storage-BmCVutNL.js → account-storage-C7Lyae5Q.js} +2 -2
  7. package/{account-storage-dYWDpqsr.cjs → account-storage-gOL0HE6i.cjs} +1 -1
  8. package/account.cjs +1 -1
  9. package/account.d.ts +2 -2
  10. package/account.js +1 -1
  11. package/api-BkoXMcoe.cjs +3 -0
  12. package/{api-DRglK7ft.js → api-DeGR_tzF.js} +62 -60
  13. package/{api-BlYVLNjo.d.ts → api-DhwJz0vo.d.ts} +35 -1
  14. package/api.cjs +1 -1
  15. package/api.d.ts +2 -2
  16. package/api.js +1 -1
  17. package/{broker-frame-vjSpBa8d.js → broker-frame-BClLp2ZV.js} +3 -1
  18. package/broker-frame-BKHtDSjv.cjs +11 -0
  19. package/broker-frame.cjs +1 -1
  20. package/broker-frame.d.ts +2 -1
  21. package/broker-frame.js +1 -1
  22. package/cloud/dgram.cjs +1 -1
  23. package/cloud/dgram.d.ts +1 -1
  24. package/cloud/dgram.js +1 -1
  25. package/cloud/dns.cjs +1 -1
  26. package/cloud/dns.d.ts +2 -2
  27. package/cloud/dns.js +1 -1
  28. package/cloud/fetch.cjs +1 -1
  29. package/cloud/fetch.d.ts +1 -1
  30. package/cloud/fetch.js +1 -1
  31. package/cloud/fs/promises.cjs +1 -1
  32. package/cloud/fs/promises.js +1 -1
  33. package/cloud/fs.cjs +1 -1
  34. package/cloud/fs.js +2 -2
  35. package/cloud/http.cjs +1 -1
  36. package/cloud/http.d.ts +1 -1
  37. package/cloud/http.js +1 -1
  38. package/cloud/net.cjs +1 -1
  39. package/cloud/net.d.ts +1 -1
  40. package/cloud/net.js +1 -1
  41. package/{cloud-CoHrHk6t.js → cloud-B3LylTk3.js} +9 -9
  42. package/{cloud-r8DsgB1W.cjs → cloud-BvRWgECW.cjs} +1 -1
  43. package/{cloud-BCRo1U9I.d.ts → cloud-P8d7GYmM.d.ts} +5 -5
  44. package/cloud.cjs +1 -1
  45. package/cloud.d.ts +6 -6
  46. package/cloud.js +7 -7
  47. package/{contract-CJk3vE9P.d.ts → contract-CDdIE_Es.d.ts} +49 -2
  48. package/contract.d.ts +1 -1
  49. package/{dgram-BBbLokVF.js → dgram-BMCYdn0Q.js} +1 -1
  50. package/{dgram-DSgktX7M.d.ts → dgram-CPQqam5Z.d.ts} +3 -3
  51. package/{dgram-D9ljiUFh.cjs → dgram-Xrt2rPrC.cjs} +1 -1
  52. package/dgram.cjs +1 -1
  53. package/dgram.d.ts +1 -1
  54. package/dgram.js +1 -1
  55. package/{dns-o8DLFjP1.js → dns-CxfA8mGU.js} +1 -1
  56. package/{dns-BwS2LM9b.d.ts → dns-_NCe2YLS.d.ts} +1 -1
  57. package/{dns-2v96zoEh.cjs → dns-ijWQw2NO.cjs} +1 -1
  58. package/dns.cjs +1 -1
  59. package/dns.d.ts +2 -2
  60. package/dns.js +1 -1
  61. package/{extension-Dn64NfoU.cjs → extension-gWkpzDKG.cjs} +1 -1
  62. package/{extension-CG7Qi3I0.js → extension-nTQBWRg6.js} +4 -4
  63. package/extension.cjs +1 -1
  64. package/extension.js +2 -2
  65. package/fs/promises.cjs +1 -1
  66. package/fs/promises.js +1 -1
  67. package/{fs-BX_ghRy0.cjs → fs-BVISC6T6.cjs} +1 -1
  68. package/{fs--MLHvMW-.cjs → fs-Cu7wH1Fo.cjs} +1 -1
  69. package/{fs-BnWXGRik.js → fs-D16P3dtE.js} +1 -1
  70. package/{fs-Cw7CcUhx.js → fs-DsHrUu0O.js} +3 -3
  71. package/fs.cjs +1 -1
  72. package/fs.js +2 -2
  73. package/{http-DIDjdm08.js → http-1ruN3pj9.js} +1 -1
  74. package/{http-BE3UBktN.cjs → http-CzMigExo.cjs} +1 -1
  75. package/{http-D8ulR5RD.d.ts → http-D3wvnIVo.d.ts} +1 -1
  76. package/http.cjs +1 -1
  77. package/http.d.ts +1 -1
  78. package/http.js +1 -1
  79. package/index.cjs +1 -1
  80. package/index.d.ts +11 -11
  81. package/index.js +13 -13
  82. package/{lib-D2uKjgLV.js → lib-6lykV0aT.js} +1 -1
  83. package/{lib-_WDKIXcj.cjs → lib-C1OPIW6F.cjs} +1 -1
  84. package/{net-COkJw8lV.js → net-Bj1vCk29.js} +1 -1
  85. package/{net-Dk2kqtgE.cjs → net-b250sYEx.cjs} +1 -1
  86. package/{net-BCEAHCZe.d.ts → net-v_6ythjK.d.ts} +3 -3
  87. package/net.cjs +1 -1
  88. package/net.d.ts +1 -1
  89. package/net.js +1 -1
  90. package/package.json +1 -1
  91. package/{packages-Cws_rcgf.js → packages-BqY5yoIM.js} +73 -70
  92. package/packages-Cb8FXQu1.cjs +1 -0
  93. package/{packages-BlJK4kSJ.d.ts → packages-SwO4CxMl.d.ts} +19 -6
  94. package/packages.cjs +1 -1
  95. package/packages.d.ts +3 -3
  96. package/packages.js +1 -1
  97. package/{proxy-DVgGp6A8.cjs → proxy-BFa0n5gx.cjs} +1 -1
  98. package/{proxy-CfgavvzR.d.ts → proxy-CzP07me0.d.ts} +2 -2
  99. package/{proxy-BBAQxJmP.js → proxy-FSgMUaD3.js} +2 -2
  100. package/{relay-choice-D5Jeevab.d.ts → relay-choice-DB1F7bcn.d.ts} +1 -1
  101. package/{rooms-0vp7HaAY.d.ts → rooms-3XplwXzb.d.ts} +1 -1
  102. package/{rooms-DHFS9cwA.cjs → rooms-CYP6g-p9.cjs} +1 -1
  103. package/{rooms-DP5stTEr.js → rooms-GZ798oSd.js} +1 -1
  104. package/rooms.cjs +1 -1
  105. package/rooms.d.ts +2 -2
  106. package/rooms.js +1 -1
  107. package/{storage-CidJUc0x.d.ts → storage-C38adB-z.d.ts} +1 -1
  108. package/{storage-BCjYihUO.cjs → storage-CoEDsbk2.cjs} +1 -1
  109. package/{storage-BhfImh_2.js → storage-sCdMPRVY.js} +3 -3
  110. package/storage.cjs +1 -1
  111. package/storage.d.ts +2 -2
  112. package/storage.js +1 -1
  113. package/api-DrvhPN56.cjs +0 -3
  114. package/broker-frame-CF4-yXtj.cjs +0 -9
  115. package/packages-DT8vPB5_.cjs +0 -1
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./rolldown-runtime-CGnMp29N.js";
2
- import { l as t, o as n } from "./api-DRglK7ft.js";
3
- import { i as r } from "./account-generation-BKHNe-jL.js";
2
+ import { l as t, o as n } from "./api-DeGR_tzF.js";
3
+ import { i as r } from "./account-generation-BElgcQwo.js";
4
4
  // src/account.ts
5
5
  var i = /* @__PURE__ */ e({
6
6
  info: () => s,
@@ -1,4 +1,4 @@
1
- import { a as AccountChange } from "./contract-CJk3vE9P.js";
1
+ import { a as AccountChange } from "./contract-CDdIE_Es.js";
2
2
  declare namespace account_d_exports {
3
3
  export { AccountChange, AccountInfo, info, login, logout, onChange };
4
4
  }
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./account-generation-ACCBzaI-.cjs");var r=e.t({info:()=>o,login:()=>i,logout:()=>a,onChange:()=>s}),i=async()=>typeof window>`u`?!1:(await t.o).account.login(location.origin).catch(()=>!1),a=async()=>{typeof window<`u`&&await(await t.o).account.logout().catch(()=>{})},o=async()=>{if(typeof window>`u`)return null;let e=await t.o.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},s=async e=>t.l?n.i(e):()=>{};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BkoXMcoe.cjs"),n=require("./account-generation-DwMcJFGc.cjs");var r=e.t({info:()=>o,login:()=>i,logout:()=>a,onChange:()=>s}),i=async()=>typeof window>`u`?!1:(await t.o).account.login(location.origin).catch(()=>!1),a=async()=>{typeof window<`u`&&await(await t.o).account.logout().catch(()=>{})},o=async()=>{if(typeof window>`u`)return null;let e=await t.o.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},s=async e=>t.l?n.i(e):()=>{};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
@@ -1,4 +1,4 @@
1
- import { c as e, l as t, u as n } from "./api-DRglK7ft.js";
1
+ import { c as e, l as t, u as n } from "./api-DeGR_tzF.js";
2
2
  // src/account-generation.ts
3
3
  var r = 0, i = /* @__PURE__ */ new Set(), a = 2e3, o = null, s = (e) => {
4
4
  let t = e?.switched !== !1;
@@ -1 +1 @@
1
- const e=require("./api-DrvhPN56.cjs");var t=0,n=new Set,r=2e3,i=null,a=e=>{let r=e?.switched!==!1;r&&(t+=1,i&&=(clearTimeout(i.timer),null));for(let e of[...n])try{e({switched:r})}catch{}},o=!1,s=0,c=()=>{let t=e.c();t&&s!==t.epoch&&(s=t.epoch,Promise.resolve(t.remote.account.onChange(a)).catch(()=>{s===t.epoch&&(s=0)}))},l=()=>{!o&&e.l&&(o=!0,e.u(c))},u=()=>t,d=e=>(n.add(e),l(),()=>{n.delete(e)}),f=e=>{if(e!==t||i?.generation===e)return;let n=setTimeout(()=>{i?.timer===n&&(i=null,t===e&&a({switched:!0}))},r);i={generation:e,timer:n}};Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
1
+ const e=require("./api-BkoXMcoe.cjs");var t=0,n=new Set,r=2e3,i=null,a=e=>{let r=e?.switched!==!1;r&&(t+=1,i&&=(clearTimeout(i.timer),null));for(let e of[...n])try{e({switched:r})}catch{}},o=!1,s=0,c=()=>{let t=e.c();t&&s!==t.epoch&&(s=t.epoch,Promise.resolve(t.remote.account.onChange(a)).catch(()=>{s===t.epoch&&(s=0)}))},l=()=>{!o&&e.l&&(o=!0,e.u(c))},u=()=>t,d=e=>(n.add(e),l(),()=>{n.delete(e)}),f=e=>{if(e!==t||i?.generation===e)return;let n=setTimeout(()=>{i?.timer===n&&(i=null,t===e&&a({switched:!0}))},r);i={generation:e,timer:n}};Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./rolldown-runtime-CGnMp29N.js";
2
- import { o as t } from "./api-DRglK7ft.js";
2
+ import { o as t } from "./api-DeGR_tzF.js";
3
3
  import { STORAGE_ACCOUNT_CHANGED as n, STORAGE_ACCOUNT_PIN_UNSUPPORTED as r, STORAGE_NOT_FOUND as i } from "./messages.js";
4
- import { n as a, r as o, t as s } from "./account-generation-BKHNe-jL.js";
4
+ import { n as a, r as o, t as s } from "./account-generation-BElgcQwo.js";
5
5
  // src/account-storage.ts
6
6
  var c = /* @__PURE__ */ e({
7
7
  StorageAccountChangedError: () => f,
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./messages.cjs"),r=require("./account-generation-ACCBzaI-.cjs");var i=e.t({StorageAccountChangedError:()=>c,StorageAccountPinUnsupportedError:()=>l,StorageLockedError:()=>a,StorageNotFoundError:()=>o,availability:()=>k,available:()=>w,captureAccount:()=>p,encryption:()=>L,isAccountChanged:()=>u,isInvalidPin:()=>d,isNotFound:()=>s,knownPin:()=>y,list:()=>A,pinFor:()=>b,quota:()=>j,readFile:()=>M,readFileSealed:()=>P,remove:()=>I,unlock:()=>R,writeFile:()=>F}),a=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: connect the app again to open encrypted data`)}},o=class extends Error{code=n.STORAGE_NOT_FOUND;constructor(e=`storage: no object at that path`){super(e)}},s=e=>e?.code===n.STORAGE_NOT_FOUND,c=class extends Error{code=n.STORAGE_ACCOUNT_CHANGED;constructor(e=`storage: the signed-in account changed, so this call was not made`){super(e)}},l=class extends Error{code=n.STORAGE_ACCOUNT_PIN_UNSUPPORTED;constructor(e=`storage: the FKN broker cannot pin calls to an account yet, so nothing was sent`){super(e)}},u=e=>e?.code===`FKN_ACCOUNT_CHANGED`||e instanceof Error&&e.message.startsWith(`fkn:account-changed`),d=e=>e instanceof Error&&e.message.startsWith(`fkn:account-pin-invalid`),f=e=>{throw e instanceof Error&&e.message.startsWith(`fkn:e2e-locked`)?new a:s(e)?new o(e.message):u(e)?new c:e instanceof Error&&e.message.startsWith(`fkn:account-pin-unsupported`)?new l:e instanceof Error&&(/^not found$/i.test(e.message)||/\(404\)$/.test(e.message))?new o(e.message):e},p=()=>(r.n(),{generation:r.t()}),m=new Map,h=null,g=e=>typeof e?.accountPin==`function`,_=(e,t)=>{let n=Promise.resolve(t.accountPin()).then(t=>{if(typeof t!=`string`||!t)throw Error(`storage: the broker answered no account pin`);return r.t()===e&&m.set(e,t),t});return h={generation:e,pin:n},n.catch(()=>{h?.pin===n&&(h=null)}),n},v=async(e,t)=>{let n=m.get(e.generation);if(n!==void 0)return n;if(e.generation!==r.t())throw new c;let i=await(h?.generation===e.generation?h.pin:_(e.generation,t)).catch(f);if(e.generation!==r.t())throw new c;return i},y=e=>m.get(e.generation),b=async e=>{let n=(await t.o).cloud.fs;if(!g(n))throw new l;return v(e,n)},x=e=>{for(let[t,n]of m)if(n===e)return t},S=e=>e?.pin??p(),C=async(e,n)=>{let i=(await t.o).cloud.fs;if(!g(i))throw new l;let a=`pin`in e?e.pin:await v(e,i);if(!g(i))throw new l;return n(i,{accountPin:a}).catch(t=>{if(u(t)){let t=`generation`in e?e.generation:x(a);t!==void 0&&r.r(t)}return f(t)})},w=()=>t.o.then(e=>e.cloud.fs.available()).catch(()=>!1),T=8e3,E=1e3,D=!1,O=async()=>{let e=(await t.o).cloud.fs;return typeof e.availability==`function`?e.availability():await e.available()?`connected`:`disconnected`},k=async()=>{let e=D?E:T,t=await new Promise(t=>{let n=setTimeout(()=>t(`timeout`),e);O().then(e=>{clearTimeout(n),t(e)},()=>{clearTimeout(n),t(`unknown`)})});return t===`timeout`?(D=!0,`unknown`):(D=!1,t)},A=e=>C(S(e),(e,t)=>e.list(t)),j=()=>t.o.then(e=>e.cloud.fs.quota()),M=async(e,t)=>{let n=await C(S(t),(t,n)=>t.readFile(e,n));return new Blob([n])},N=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()},P=async(e,t)=>C(S(t),async(t,n)=>{let r=t;if(typeof r.readFileSealed!=`function`)return{data:await t.readFile(e,n),sealedAt:null};let i=await r.readFileSealed(e,n);return{data:i.bytes,sealedAt:N(i.sealedAt)}}),F=async(e,t,n)=>{let r=S(n),i=t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t;await C(r,(t,r)=>t.writeFile(e,i,n?.contentType??null,r))},I=async(e,t)=>{await C(S(t),(t,n)=>t.remove(e,n))},L=()=>t.o.then(e=>e.cloud.fs.encryption()),R=()=>t.o.then(e=>e.cloud.fs.unlock());Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return R}});
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BkoXMcoe.cjs"),n=require("./messages.cjs"),r=require("./account-generation-DwMcJFGc.cjs");var i=e.t({StorageAccountChangedError:()=>c,StorageAccountPinUnsupportedError:()=>l,StorageLockedError:()=>a,StorageNotFoundError:()=>o,availability:()=>k,available:()=>w,captureAccount:()=>p,encryption:()=>L,isAccountChanged:()=>u,isInvalidPin:()=>d,isNotFound:()=>s,knownPin:()=>y,list:()=>A,pinFor:()=>b,quota:()=>j,readFile:()=>M,readFileSealed:()=>P,remove:()=>I,unlock:()=>R,writeFile:()=>F}),a=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: connect the app again to open encrypted data`)}},o=class extends Error{code=n.STORAGE_NOT_FOUND;constructor(e=`storage: no object at that path`){super(e)}},s=e=>e?.code===n.STORAGE_NOT_FOUND,c=class extends Error{code=n.STORAGE_ACCOUNT_CHANGED;constructor(e=`storage: the signed-in account changed, so this call was not made`){super(e)}},l=class extends Error{code=n.STORAGE_ACCOUNT_PIN_UNSUPPORTED;constructor(e=`storage: the FKN broker cannot pin calls to an account yet, so nothing was sent`){super(e)}},u=e=>e?.code===`FKN_ACCOUNT_CHANGED`||e instanceof Error&&e.message.startsWith(`fkn:account-changed`),d=e=>e instanceof Error&&e.message.startsWith(`fkn:account-pin-invalid`),f=e=>{throw e instanceof Error&&e.message.startsWith(`fkn:e2e-locked`)?new a:s(e)?new o(e.message):u(e)?new c:e instanceof Error&&e.message.startsWith(`fkn:account-pin-unsupported`)?new l:e instanceof Error&&(/^not found$/i.test(e.message)||/\(404\)$/.test(e.message))?new o(e.message):e},p=()=>(r.n(),{generation:r.t()}),m=new Map,h=null,g=e=>typeof e?.accountPin==`function`,_=(e,t)=>{let n=Promise.resolve(t.accountPin()).then(t=>{if(typeof t!=`string`||!t)throw Error(`storage: the broker answered no account pin`);return r.t()===e&&m.set(e,t),t});return h={generation:e,pin:n},n.catch(()=>{h?.pin===n&&(h=null)}),n},v=async(e,t)=>{let n=m.get(e.generation);if(n!==void 0)return n;if(e.generation!==r.t())throw new c;let i=await(h?.generation===e.generation?h.pin:_(e.generation,t)).catch(f);if(e.generation!==r.t())throw new c;return i},y=e=>m.get(e.generation),b=async e=>{let n=(await t.o).cloud.fs;if(!g(n))throw new l;return v(e,n)},x=e=>{for(let[t,n]of m)if(n===e)return t},S=e=>e?.pin??p(),C=async(e,n)=>{let i=(await t.o).cloud.fs;if(!g(i))throw new l;let a=`pin`in e?e.pin:await v(e,i);if(!g(i))throw new l;return n(i,{accountPin:a}).catch(t=>{if(u(t)){let t=`generation`in e?e.generation:x(a);t!==void 0&&r.r(t)}return f(t)})},w=()=>t.o.then(e=>e.cloud.fs.available()).catch(()=>!1),T=8e3,E=1e3,D=!1,O=async()=>{let e=(await t.o).cloud.fs;return typeof e.availability==`function`?e.availability():await e.available()?`connected`:`disconnected`},k=async()=>{let e=D?E:T,t=await new Promise(t=>{let n=setTimeout(()=>t(`timeout`),e);O().then(e=>{clearTimeout(n),t(e)},()=>{clearTimeout(n),t(`unknown`)})});return t===`timeout`?(D=!0,`unknown`):(D=!1,t)},A=e=>C(S(e),(e,t)=>e.list(t)),j=()=>t.o.then(e=>e.cloud.fs.quota()),M=async(e,t)=>{let n=await C(S(t),(t,n)=>t.readFile(e,n));return new Blob([n])},N=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()},P=async(e,t)=>C(S(t),async(t,n)=>{let r=t;if(typeof r.readFileSealed!=`function`)return{data:await t.readFile(e,n),sealedAt:null};let i=await r.readFileSealed(e,n);return{data:i.bytes,sealedAt:N(i.sealedAt)}}),F=async(e,t,n)=>{let r=S(n),i=t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t;await C(r,(t,r)=>t.writeFile(e,i,n?.contentType??null,r))},I=async(e,t)=>{await C(S(t),(t,n)=>t.remove(e,n))},L=()=>t.o.then(e=>e.cloud.fs.encryption()),R=()=>t.o.then(e=>e.cloud.fs.unlock());Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return R}});
package/account.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./account-m2iCmNui.cjs");exports.info=e.n,exports.login=e.r,exports.logout=e.i,exports.onChange=e.a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./account-aaD_dWUH.cjs");exports.info=e.n,exports.login=e.r,exports.logout=e.i,exports.onChange=e.a;
package/account.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { a as AccountChange } from "./contract-CJk3vE9P.js";
2
- import { a as logout, i as login, o as onChange, r as info, t as AccountInfo } from "./account-DBagcNfd.js";
1
+ import { a as AccountChange } from "./contract-CDdIE_Es.js";
2
+ import { a as logout, i as login, o as onChange, r as info, t as AccountInfo } from "./account-CXUwroRM.js";
3
3
  export { type AccountChange, AccountInfo, info, login, logout, onChange };
package/account.js CHANGED
@@ -1 +1 @@
1
- export { n as info, r as login, i as logout, a as onChange } from "./account-Uh0-1Cbp.js";
1
+ export { n as info, r as login, i as logout, a as onChange } from "./account-CAX5oCUD.js";
@@ -0,0 +1,3 @@
1
+ const e=require("./broker-frame-BKHtDSjv.cjs");let t=require("osra");var n=1e4,r=16,i=e=>{let t;try{t=e.contentWindow}catch{return!0}if(!t)return!0;try{let e=t.location.href;return e!==``&&e!==`about:blank`}catch{return!0}},a=(e,t=n)=>new Promise(n=>{if(i(e))return n();let a=()=>{clearInterval(o),clearTimeout(s),e.removeEventListener(`load`,a),n()},o=setInterval(()=>{i(e)&&a()},r),s=setTimeout(a,t);e.addEventListener(`load`,a)}),o=5e3,s=9e4,c=(e,t,r)=>{let a=1,c,l=e.ownerDocument.defaultView,u=()=>{clearTimeout(c),l?.removeEventListener(`message`,m),e.removeEventListener(`load`,p)},d=()=>{if(e.isConnected){if(a>=4)return u(),console.error(`FKN @fkn/lib: ${t} did not load in ${a} tries; reload the page`);a+=1,e.contentWindow?.location.replace(t),f(s)}},f=e=>{clearTimeout(c),c=setTimeout(d,e)},p=()=>f(o),m=t=>{t.source===e.contentWindow&&t.origin===r&&u()};if(l?.addEventListener(`message`,m),e.addEventListener(`load`,p),i(e))return f(o);c=setTimeout(()=>i(e)?f(8e4):d(),n)},l=32,u=8,d=120,f=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),p=typeof CSS<`u`&&CSS.supports(`clip-path`,`polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)`),m=`light dark`,h=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(`padding`,`0`,`important`),t.setProperty(`box-sizing`,`border-box`,`important`),t.setProperty(`clip-path`,`inset(100%)`,`important`),t.setProperty(`background`,`transparent`),t.setProperty(`color-scheme`,m),t.setProperty(`z-index`,`2147483647`),e.setAttribute(`title`,`FKN`)},g=({x:e,y:t,width:n,height:r,radius:i})=>{if(!i)return`M${e} ${t}h${n}v${r}h${-n}Z`;let a=Math.min(n,r)/2,[o,s,c,l]=i.map(e=>Math.max(0,Math.min(e,a)));return`M${e+o} ${t}h${n-o-s}a${s} ${s} 0 0 1 ${s} ${s}v${r-s-c}a${c} ${c} 0 0 1 ${-c} ${c}h${-(n-c-l)}a${l} ${l} 0 0 1 ${-l} ${-l}v${-(r-l-o)}a${o} ${o} 0 0 1 ${o} ${-o}Z`},ee=()=>f&&p,_=({x:e,y:t,width:n,height:r})=>[[e,t],[e+n,t],[e+n,t+r],[e,t+r],[e,t]],te=e=>{let t=e[0];if(!t)return[];let n=_(t)[0],r=[];return e.forEach((t,i)=>{r.push(..._(t)),i>0&&i<e.length-1&&r.push(n)}),r},ne=e=>`polygon(nonzero, ${te(e).map(([e,t])=>`${e}px ${t}px`).join(`, `)})`,re=({x:e,y:t,width:n,height:r,radius:i},a)=>{let o=`${t}px ${a.width-e-n}px ${a.height-t-r}px ${e}px`;return i?`inset(${o} round ${i.map(e=>`${e}px`).join(` `)})`:`inset(${o})`},ie=(e,t,n)=>{if(t)return`none`;if(e.length===0)return`inset(100%)`;let r=e.length===1?e[0]:void 0;return r?re(r,n):p&&e.length<=5&&!e.some(e=>e.radius)?ne(e):`path('${e.map(g).join(``)}')`},v=e=>{if(e.length<2)return null;let t=Math.min(...e.map(e=>e.x)),n=Math.min(...e.map(e=>e.y));return{x:t,y:n,width:Math.max(...e.map(e=>e.x+e.width))-t,height:Math.max(...e.map(e=>e.y+e.height))-n}},ae=(e,t,n)=>t>=e.x&&t<e.x+e.width&&n>=e.y&&n<e.y+e.height,oe=16,y=(e,t,n)=>t===1?e*oe:t===2?e*n:e,se=(e,t,n)=>{let r=getComputedStyle(e);return n!==0&&/auto|scroll/.test(r.overflowY)&&e.scrollHeight>e.clientHeight?!0:t!==0&&/auto|scroll/.test(r.overflowX)&&e.scrollWidth>e.clientWidth},ce=(e,t,n)=>{for(let r=e;r;r=r.parentElement)if(se(r,t,n))return r;return document.scrollingElement},b=null,x=null,S=e=>({width:e.offsetWidth||window.innerWidth,height:e.offsetHeight||window.innerHeight}),C=e=>{if(!x||!b||!ae(x,e.clientX,e.clientY))return;let t=document.elementFromPoint(e.clientX,e.clientY);if(!t||t===b)return;let n=y(e.deltaX,e.deltaMode,window.innerWidth),r=y(e.deltaY,e.deltaMode,window.innerHeight),i=ce(t,n,r);i&&(i.scrollBy({left:n,top:r,behavior:`instant`}),e.cancelable&&e.preventDefault())},le=e=>{let t=x!==null;x=e,t!==(e!==null)&&(e?window.addEventListener(`wheel`,C,{capture:!0,passive:!1}):window.removeEventListener(`wheel`,C,{capture:!0}))},w=0,ue=e=>{if(e===w)return;w=e;let t=document.documentElement.style;e>0?(t.setProperty(`margin-top`,`${e}px`,`important`),t.setProperty(`--fkn-inset-top`,`${e}px`)):(t.removeProperty(`margin-top`),t.removeProperty(`--fkn-inset-top`))},T=(e,t)=>{t?(e.removeAttribute(`tabindex`),e.removeAttribute(`aria-hidden`)):(e.setAttribute(`tabindex`,`-1`),e.setAttribute(`aria-hidden`,`true`))},E=(e,{modal:t,rects:n,inset:r},i)=>{if(ue(r),!f){let r=t||n.length>0;T(e,r),e.style.setProperty(`pointer-events`,r?`auto`:`none`,`important`),e.style.setProperty(`visibility`,r?`visible`:`hidden`,`important`);return}let a=ie(n,t,i),o=a===`none`||CSS.supports(`clip-path`,a)?a:`inset(100%)`;e.style.setProperty(`clip-path`,o,`important`),T(e,o!==`inset(100%)`),le(t||o!==a?null:v(n))},de=e=>{if(typeof e!=`object`||!e)return 0;let{top:t}=e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?0:Math.min(Math.round(t),d)},fe=e=>{if(Array.isArray(e)&&e.length===4&&e.every(e=>typeof e==`number`&&Number.isFinite(e)&&e>=0))return e.some(e=>e>0)?e:void 0},pe=(e,t)=>{if(typeof e!=`object`||!e)return null;let{x:n,y:r,width:i,height:a}=e;if(![n,r,i,a].every(e=>typeof e==`number`&&Number.isFinite(e)))return null;let o=t.width,s=t.height,c=Math.max(0,Math.min(Math.round(n),o)),l=Math.max(0,Math.min(Math.round(r),s)),u=Math.max(c,Math.min(Math.round(n+i),o)),d=Math.max(l,Math.min(Math.round(r+a),s)),f=fe(e.radius);return{x:c,y:l,width:u-c,height:d-l,...f?{radius:f}:{}}},D={"not-rendered":`this page is not painting it at all, so it or an ancestor is display:none, or the frame was moved out of the layout`,clipped:`it is clipped away or positioned outside the viewport`,"not-shown":`it is rendered but would not be seen, so either something is drawn over it, or it or an ancestor has opacity below 1, visibility:hidden, or a filter`},me=e=>Array.isArray(e)?e.slice(0,u).flatMap(e=>{if(typeof e!=`object`||!e)return[];let{kind:t,cause:n,level:r}=e;return typeof t!=`string`||t.length>40||typeof n!=`string`||!(n in D)||r!==`full`&&r!==`liveness`?[]:[{kind:t,cause:n,level:r}]}):[],O=new Set,he=e=>{for(let{kind:t,cause:n,level:r}of e)O.has(t)||(O.add(t),console.error(`[FKN] The FKN ${JSON.stringify(t)} is not visible on this page: ${D[n]}. Nobody using this page can see or answer it.
2
+ @fkn/lib draws its UI inside <iframe title="FKN"> and sets display, position, top, left, width, height, border, padding, box-sizing, clip-path and z-index on that element. Leave those as they are, then check for an ancestor with opacity, visibility, display or a clipping transform, and for an element stacked above it.`+(r===`liveness`?`
3
+ This browser reports limited detail, so the cause above is a best guess.`:``)))},k=(e,t)=>{if(typeof e!=`object`||!e)return null;let n=e,r=(Array.isArray(n.rects)?n.rects.slice(0,l):[]).map(e=>pe(e,t)).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:n.modal===!0,rects:r,hidden:me(n.hidden),inset:de(n.inset)}},ge=()=>b!==null,A=null,j=null,_e=()=>{if(!b||A===null)return;let e=S(b),t=k(A,e);t&&E(b,t,e)},ve=e=>{typeof ResizeObserver<`u`&&(j??=new ResizeObserver(_e),j.disconnect(),j.observe(e))},ye=e=>{h(e),E(e,{modal:!1,rects:[],hidden:[],inset:0},S(e)),b=e,ve(e)},be=e=>{if(!b)return;let t=S(b),n=k(e,t);n&&(A=e,E(b,n,t),he(n.hidden))},M=`https://fkn.app`,N=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,P=typeof globalThis<`u`&&globalThis.crossOriginIsolated===!0,F=e.n(P),xe=`fkn-api-port`,Se=`fkn-api-port-ack`,Ce=2e3,we=()=>{if(!N||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===Se&&r(t.port1)},a=setTimeout(()=>r(void 0),Ce);t.port1.addEventListener(`message`,i),t.port1.start();try{e.postMessage({type:xe},M,[t.port2])}catch{r(void 0)}})},I,Te=()=>{if(I||!N)return I;let t=N.querySelector(`iframe[src="${F}"]`);if(t)I=t;else{let t=N.createElement(`iframe`);t.setAttribute(`allow`,e.i(P)),t.src=F,N.body.appendChild(t),I=t}return c(I,F,M),ye(I),I},L=(async()=>{if(!N)return;let e=await we();if(e)return{receive:e,emit:e};let t=Te();if(!t)return;await a(t);let n=t.contentWindow;return n?{receive:window,emit:n}:void 0})(),Ee=(e,{boundRetired:t=e=>e}={})=>{let n,r=0,i=!1,a=()=>{},o=()=>new Promise(e=>{a=e}),s=o(),c=s,l=new Set,u=new Set,d=0,f=0,p=()=>{let e=[...u];u.clear();let t=Error(`FKN: the broker was replaced while this call was pending; retry it`);for(let n of e)try{n(t)}catch{}};(async()=>{for await(let t of e){let e=++r;n={remote:t,epoch:e};let i=a;s=o(),i(t),p();for(let n of[...l])try{n(t,e)}catch{}}})().catch(()=>{});let m=async(e,r)=>{let a=n?.remote??await(i?t(s):s);for(let t of e.slice(0,-1))a=a[t];let o=a[e[e.length-1]??``];d=Date.now(),f+=1;let c=()=>{},l=new Promise((e,t)=>{c=t});u.add(c);try{return await Promise.race([Promise.resolve(o.apply(a,r)),l])}finally{--f,u.delete(c),d=Date.now()}},h=new Map,g=e=>{let t=e.join(`\0`),r=h.get(t);if(r)return r;let i=new Proxy(function(){},{get:(t,r)=>{if(typeof r!=`string`||r===`then`)return;let i=n;if(i){let t=i.remote;for(let n of e)t=t?.[n];if(t?.[r]===void 0)return}return g([...e,r])},apply:(t,n,r)=>m(e,r)});return h.set(t,i),i};return{facade:g([]),first:c.then(()=>{}),current:()=>n,onEpoch:e=>{if(l.add(e),n)try{e(n.remote,n.epoch)}catch{}return()=>{l.delete(e)}},lastCall:()=>d,inFlight:()=>f,routable:()=>n?Promise.resolve():s.then(()=>{}),retire:()=>{i=!0,n=void 0,p()}}},R=!1,z=new Set,B=()=>R,De=()=>{if(!R){R=!0;for(let e of[...z])try{e()}catch{}z.clear()}},V=e=>{R?e():z.add(e)},Oe=typeof window<`u`||typeof self<`u`,H=async()=>{if(typeof window<`u`)return L;if(typeof self<`u`)return{receive:self,emit:self}},U=`fkn-api`,ke=`fkn-api-window`,Ae={async*[Symbol.asyncIterator](){let e=await H();if(!e)await new Promise(()=>{});else{if(!B()){let n=new AbortController;V(()=>n.abort());for await(let r of(0,t.expose)({},{key:U,transport:e,unregisterSignal:n.signal})){if(n.signal.aborted)break;yield r}}yield*(0,t.expose)({},{key:ke,transport:e})}}},W=!1,G=H().then(e=>new Promise(n=>{if(!e)return;let{receive:r}=e,i=e=>{(0,t.checkOsraMessageKey)(e.data,U)&&(r.removeEventListener(`message`,i),W=!0,n())};r.addEventListener(`message`,i)})),K=Ee(Ae,{boundRetired:e=>Promise.race([e,G.then(()=>Q(e,()=>new Z))])});V(()=>K.retire());var q=Promise.race([K.first,new Promise(e=>V(e))]).then(()=>K.facade),J=8e3,je=1e3,Y=!1,X=class extends Error{constructor(e,t){super(`@fkn/lib: no broker connection within ${t}ms, so ${e} could not be requested`),this.name=`BrokerUnreachableError`}},Z=class extends Error{constructor(){super(`FKN @fkn/lib: this page relays its FKN channel to a worker, and the FKN page it reached predates a channel of the page's own; reload`),this.name=`OwnChannelUnavailableError`}},Q=(e,t)=>{let n=Y?je:J;return Promise.race([e,new Promise((e,r)=>setTimeout(()=>{Y=!0,r(t(n))},n))])},Me=e=>B()?Q(K.routable().then(()=>K.facade),t=>W?new Z:new X(e,t)):Q(q,t=>new X(e,t));V(()=>{G.then(()=>{let e=setTimeout(()=>console.error(new Z),J);K.routable().then(()=>clearTimeout(e))})});var $=K.onEpoch,Ne=K.current,Pe=K.lastCall,Fe=K.inFlight;$(e=>{ge()&&e.overlay.setHost(be,{exactClips:ee(),colorScheme:m}).catch(()=>{})}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return $}});
@@ -1,4 +1,4 @@
1
- import { i as e, n as t } from "./broker-frame-vjSpBa8d.js";
1
+ import { i as e, n as t } from "./broker-frame-BClLp2ZV.js";
2
2
  import { checkOsraMessageKey as n, expose as r } from "osra";
3
3
  // src/frame-ready.ts
4
4
  var i = 1e4, a = 16, o = (e) => {
@@ -105,21 +105,23 @@ var i = 1e4, a = 16, o = (e) => {
105
105
  C = e;
106
106
  let t = document.documentElement.style;
107
107
  e > 0 ? (t.setProperty("margin-top", `${e}px`, "important"), t.setProperty("--fkn-inset-top", `${e}px`)) : (t.removeProperty("margin-top"), t.removeProperty("--fkn-inset-top"));
108
- }, w = (e, { modal: t, rects: n, inset: r }, i) => {
108
+ }, w = (e, t) => {
109
+ t ? (e.removeAttribute("tabindex"), e.removeAttribute("aria-hidden")) : (e.setAttribute("tabindex", "-1"), e.setAttribute("aria-hidden", "true"));
110
+ }, T = (e, { modal: t, rects: n, inset: r }, i) => {
109
111
  if (pe(r), !m) {
110
112
  let r = t || n.length > 0;
111
- e.style.setProperty("pointer-events", r ? "auto" : "none", "important"), e.style.setProperty("visibility", r ? "visible" : "hidden", "important");
113
+ w(e, r), e.style.setProperty("pointer-events", r ? "auto" : "none", "important"), e.style.setProperty("visibility", r ? "visible" : "hidden", "important");
112
114
  return;
113
115
  }
114
116
  let a = oe(n, t, i), o = a === "none" || CSS.supports("clip-path", a) ? a : "inset(100%)";
115
- e.style.setProperty("clip-path", o, "important"), fe(t || o !== a ? null : se(n));
117
+ e.style.setProperty("clip-path", o, "important"), w(e, o !== "inset(100%)"), fe(t || o !== a ? null : se(n));
116
118
  }, me = (e) => {
117
119
  if (typeof e != "object" || !e) return 0;
118
120
  let { top: t } = e;
119
121
  return typeof t != "number" || !Number.isFinite(t) || t <= 0 ? 0 : Math.min(Math.round(t), p);
120
122
  }, he = (e) => {
121
123
  if (Array.isArray(e) && e.length === 4 && e.every((e) => typeof e == "number" && Number.isFinite(e) && e >= 0)) return e.some((e) => e > 0) ? e : void 0;
122
- }, T = (e, t) => {
124
+ }, ge = (e, t) => {
123
125
  if (typeof e != "object" || !e) return null;
124
126
  let { x: n, y: r, width: i, height: a } = e;
125
127
  if (![
@@ -140,7 +142,7 @@ var i = 1e4, a = 16, o = (e) => {
140
142
  "not-rendered": "this page is not painting it at all, so it or an ancestor is display:none, or the frame was moved out of the layout",
141
143
  clipped: "it is clipped away or positioned outside the viewport",
142
144
  "not-shown": "it is rendered but would not be seen, so either something is drawn over it, or it or an ancestor has opacity below 1, visibility:hidden, or a filter"
143
- }, ge = (e) => Array.isArray(e) ? e.slice(0, f).flatMap((e) => {
145
+ }, _e = (e) => Array.isArray(e) ? e.slice(0, f).flatMap((e) => {
144
146
  if (typeof e != "object" || !e) return [];
145
147
  let { kind: t, cause: n, level: r } = e;
146
148
  return typeof t != "string" || t.length > 40 || typeof n != "string" || !(n in E) || r !== "full" && r !== "liveness" ? [] : [{
@@ -148,36 +150,36 @@ var i = 1e4, a = 16, o = (e) => {
148
150
  cause: n,
149
151
  level: r
150
152
  }];
151
- }) : [], D = /* @__PURE__ */ new Set(), _e = (e) => {
153
+ }) : [], D = /* @__PURE__ */ new Set(), ve = (e) => {
152
154
  for (let { kind: t, cause: n, level: r } of e) D.has(t) || (D.add(t), console.error(`[FKN] The FKN ${JSON.stringify(t)} is not visible on this page: ${E[n]}. Nobody using this page can see or answer it.
153
155
  @fkn/lib draws its UI inside <iframe title="FKN"> and sets display, position, top, left, width, height, border, padding, box-sizing, clip-path and z-index on that element. Leave those as they are, then check for an ancestor with opacity, visibility, display or a clipping transform, and for an element stacked above it.` + (r === "liveness" ? "\nThis browser reports limited detail, so the cause above is a best guess." : "")));
154
156
  }, O = (e, t) => {
155
157
  if (typeof e != "object" || !e) return null;
156
- let n = e, r = (Array.isArray(n.rects) ? n.rects.slice(0, d) : []).map((e) => T(e, t)).filter((e) => e !== null && e.width > 0 && e.height > 0);
158
+ let n = e, r = (Array.isArray(n.rects) ? n.rects.slice(0, d) : []).map((e) => ge(e, t)).filter((e) => e !== null && e.width > 0 && e.height > 0);
157
159
  return {
158
160
  modal: n.modal === !0,
159
161
  rects: r,
160
- hidden: ge(n.hidden),
162
+ hidden: _e(n.hidden),
161
163
  inset: me(n.inset)
162
164
  };
163
- }, ve = () => y !== null, k = null, A = null, ye = () => {
165
+ }, ye = () => y !== null, k = null, A = null, be = () => {
164
166
  if (!y || k === null) return;
165
167
  let e = x(y), t = O(k, e);
166
- t && w(y, t, e);
167
- }, be = (e) => {
168
- typeof ResizeObserver < "u" && (A ??= new ResizeObserver(ye), A.disconnect(), A.observe(e));
168
+ t && T(y, t, e);
169
169
  }, xe = (e) => {
170
- ee(e), w(e, {
170
+ typeof ResizeObserver < "u" && (A ??= new ResizeObserver(be), A.disconnect(), A.observe(e));
171
+ }, Se = (e) => {
172
+ ee(e), T(e, {
171
173
  modal: !1,
172
174
  rects: [],
173
175
  hidden: [],
174
176
  inset: 0
175
- }, x(e)), y = e, be(e);
176
- }, Se = (e) => {
177
+ }, x(e)), y = e, xe(e);
178
+ }, Ce = (e) => {
177
179
  if (!y) return;
178
180
  let t = x(y), n = O(e, t);
179
- n && (k = e, w(y, n, t), _e(n.hidden));
180
- }, j = "https://fkn.app", M = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, N = typeof globalThis < "u" && globalThis.crossOriginIsolated === !0, P = t(N), Ce = "fkn-api-port", we = "fkn-api-port-ack", Te = 2e3, Ee = () => {
181
+ n && (k = e, T(y, n, t), ve(n.hidden));
182
+ }, j = "https://fkn.app", M = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, N = typeof globalThis < "u" && globalThis.crossOriginIsolated === !0, P = t(N), we = "fkn-api-port", Te = "fkn-api-port-ack", Ee = 2e3, De = () => {
181
183
  if (!M || typeof window > "u" || window.parent === window) return Promise.resolve(void 0);
182
184
  let e;
183
185
  try {
@@ -193,16 +195,16 @@ var i = 1e4, a = 16, o = (e) => {
193
195
  } catch {}
194
196
  n(e);
195
197
  }, i = (e) => {
196
- e.data?.type === we && r(t.port1);
197
- }, a = setTimeout(() => r(void 0), Te);
198
+ e.data?.type === Te && r(t.port1);
199
+ }, a = setTimeout(() => r(void 0), Ee);
198
200
  t.port1.addEventListener("message", i), t.port1.start();
199
201
  try {
200
- e.postMessage({ type: Ce }, j, [t.port2]);
202
+ e.postMessage({ type: we }, j, [t.port2]);
201
203
  } catch {
202
204
  r(void 0);
203
205
  }
204
206
  });
205
- }, F, I = () => {
207
+ }, F, Oe = () => {
206
208
  if (F || !M) return F;
207
209
  let t = M.querySelector(`iframe[src="${P}"]`);
208
210
  if (t) F = t;
@@ -210,15 +212,15 @@ var i = 1e4, a = 16, o = (e) => {
210
212
  let t = M.createElement("iframe");
211
213
  t.setAttribute("allow", e(N)), t.src = P, M.body.appendChild(t), F = t;
212
214
  }
213
- return u(F, P, j), xe(F), F;
214
- }, L = (async () => {
215
+ return u(F, P, j), Se(F), F;
216
+ }, I = (async () => {
215
217
  if (!M) return;
216
- let e = await Ee();
218
+ let e = await De();
217
219
  if (e) return {
218
220
  receive: e,
219
221
  emit: e
220
222
  };
221
- let t = I();
223
+ let t = Oe();
222
224
  if (!t) return;
223
225
  await s(t);
224
226
  let n = t.contentWindow;
@@ -226,7 +228,7 @@ var i = 1e4, a = 16, o = (e) => {
226
228
  receive: window,
227
229
  emit: n
228
230
  } : void 0;
229
- })(), De = (e, { boundRetired: t = (e) => e } = {}) => {
231
+ })(), ke = (e, { boundRetired: t = (e) => e } = {}) => {
230
232
  let n, r = 0, i = !1, a = () => {}, o = () => new Promise((e) => {
231
233
  a = e;
232
234
  }), s = o(), c = s, l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = 0, f = 0, p = () => {
@@ -302,31 +304,31 @@ var i = 1e4, a = 16, o = (e) => {
302
304
  i = !0, n = void 0, p();
303
305
  }
304
306
  };
305
- }, R = !1, z = /* @__PURE__ */ new Set(), B = () => R, Oe = () => {
306
- if (!R) {
307
- R = !0;
308
- for (let e of [...z]) try {
307
+ }, L = !1, R = /* @__PURE__ */ new Set(), z = () => L, Ae = () => {
308
+ if (!L) {
309
+ L = !0;
310
+ for (let e of [...R]) try {
309
311
  e();
310
312
  } catch {}
311
- z.clear();
313
+ R.clear();
312
314
  }
313
- }, V = (e) => {
314
- R ? e() : z.add(e);
315
- }, ke = typeof window < "u" || typeof self < "u", H = async () => {
316
- if (typeof window < "u") return L;
315
+ }, B = (e) => {
316
+ L ? e() : R.add(e);
317
+ }, je = typeof window < "u" || typeof self < "u", V = async () => {
318
+ if (typeof window < "u") return I;
317
319
  if (typeof self < "u") return {
318
320
  receive: self,
319
321
  emit: self
320
322
  };
321
- }, U = "fkn-api", Ae = "fkn-api-window", je = { async *[Symbol.asyncIterator]() {
322
- let e = await H();
323
+ }, H = "fkn-api", Me = "fkn-api-window", Ne = { async *[Symbol.asyncIterator]() {
324
+ let e = await V();
323
325
  if (!e) await new Promise(() => {});
324
326
  else {
325
- if (!B()) {
327
+ if (!z()) {
326
328
  let t = new AbortController();
327
- V(() => t.abort());
329
+ B(() => t.abort());
328
330
  for await (let n of r({}, {
329
- key: U,
331
+ key: H,
330
332
  transport: e,
331
333
  unregisterSignal: t.signal
332
334
  })) {
@@ -335,43 +337,43 @@ var i = 1e4, a = 16, o = (e) => {
335
337
  }
336
338
  }
337
339
  yield* r({}, {
338
- key: Ae,
340
+ key: Me,
339
341
  transport: e
340
342
  });
341
343
  }
342
- } }, W = !1, G = H().then((e) => new Promise((t) => {
344
+ } }, U = !1, W = V().then((e) => new Promise((t) => {
343
345
  if (!e) return;
344
346
  let { receive: r } = e, i = (e) => {
345
- n(e.data, U) && (r.removeEventListener("message", i), W = !0, t());
347
+ n(e.data, H) && (r.removeEventListener("message", i), U = !0, t());
346
348
  };
347
349
  r.addEventListener("message", i);
348
- })), K = De(je, { boundRetired: (e) => Promise.race([e, G.then(() => Q(e, () => new Z()))]) });
349
- V(() => K.retire());
350
- var q = Promise.race([K.first, new Promise((e) => V(e))]).then(() => K.facade), J = 8e3, Me = 1e3, Y = !1, X = class extends Error {
350
+ })), G = ke(Ne, { boundRetired: (e) => Promise.race([e, W.then(() => Z(e, () => new X()))]) });
351
+ B(() => G.retire());
352
+ var K = Promise.race([G.first, new Promise((e) => B(e))]).then(() => G.facade), q = 8e3, Pe = 1e3, J = !1, Y = class extends Error {
351
353
  constructor(e, t) {
352
354
  super(`@fkn/lib: no broker connection within ${t}ms, so ${e} could not be requested`), this.name = "BrokerUnreachableError";
353
355
  }
354
- }, Z = class extends Error {
356
+ }, X = class extends Error {
355
357
  constructor() {
356
358
  super("FKN @fkn/lib: this page relays its FKN channel to a worker, and the FKN page it reached predates a channel of the page's own; reload"), this.name = "OwnChannelUnavailableError";
357
359
  }
358
- }, Q = (e, t) => {
359
- let n = Y ? Me : J;
360
+ }, Z = (e, t) => {
361
+ let n = J ? Pe : q;
360
362
  return Promise.race([e, new Promise((e, r) => setTimeout(() => {
361
- Y = !0, r(t(n));
363
+ J = !0, r(t(n));
362
364
  }, n))]);
363
- }, Ne = (e) => B() ? Q(K.routable().then(() => K.facade), (t) => W ? new Z() : new X(e, t)) : Q(q, (t) => new X(e, t));
364
- V(() => {
365
- G.then(() => {
366
- let e = setTimeout(() => console.error(new Z()), J);
367
- K.routable().then(() => clearTimeout(e));
365
+ }, Fe = (e) => z() ? Z(G.routable().then(() => G.facade), (t) => U ? new X() : new Y(e, t)) : Z(K, (t) => new Y(e, t));
366
+ B(() => {
367
+ W.then(() => {
368
+ let e = setTimeout(() => console.error(new X()), q);
369
+ G.routable().then(() => clearTimeout(e));
368
370
  });
369
371
  });
370
- var $ = K.onEpoch, Pe = K.current, Fe = K.lastCall, Ie = K.inFlight;
371
- $((e) => {
372
- ve() && e.overlay.setHost(Se, {
372
+ var Q = G.onEpoch, $ = G.current, Ie = G.lastCall, Le = G.inFlight;
373
+ Q((e) => {
374
+ ye() && e.overlay.setHost(Ce, {
373
375
  exactClips: ne(),
374
376
  colorScheme: g
375
377
  }).catch(() => {});
376
378
  });
377
- export { Fe as a, Pe as c, Oe as d, L as f, Ie as i, ke as l, X as n, q as o, Z as r, Ne as s, J as t, $ as u };
379
+ export { Ie as a, $ as c, Ae as d, I as f, Le as i, je as l, Y as n, K as o, X as r, Fe as s, q as t, Q as u };
@@ -1,5 +1,5 @@
1
1
  import { D as RelayChoice } from "./index-HMfzm6dF.js";
2
- import { D as IpFamily, H as ProxyFetchInput, I as PackagesErrorCode, N as OverlayState, Nt as StoragePutWire, P as PackageQuery, Q as RoomClaimOptions, R as PickOptions, T as InstallOptions, Ut as UdpDatagram, V as ProxyFetchInit, Vt as TcpSocketOptions, Wt as UdpSocketOptions, X as Resolvers, Xt as WriteData, a as AccountChange, at as RoomJoinOptions, b as FrameConsentAnswer, c as AdoptRequest, d as ConflictRequest, dt as RoomPermission, ht as RoomsErrorCode, kt as StorageErrorCode, l as AdoptState, m as ConnectOptions, mt as RoomType, o as AccountPinOptions, p as ConnectAvailability, rt as RoomEvent, st as RoomMailbox, u as ConflictChoice, ut as RoomOpenOptions, x as FrameConsentRequest, z as Placement, zt as TcpSocketListenerOptions } from "./contract-CJk3vE9P.js";
2
+ import { D as IpFamily, H as ProxyFetchInput, I as PackagesErrorCode, N as OverlayState, Nt as StoragePutWire, P as PackageQuery, Q as RoomClaimOptions, R as PickOptions, T as InstallOptions, Ut as UdpDatagram, V as ProxyFetchInit, Vt as TcpSocketOptions, Wt as UdpSocketOptions, X as Resolvers, Xt as WriteData, a as AccountChange, at as RoomJoinOptions, b as FrameConsentAnswer, c as AdoptRequest, d as ConflictRequest, dt as RoomPermission, ht as RoomsErrorCode, kt as StorageErrorCode, l as AdoptState, m as ConnectOptions, mt as RoomType, o as AccountPinOptions, p as ConnectAvailability, rt as RoomEvent, st as RoomMailbox, u as ConflictChoice, ut as RoomOpenOptions, x as FrameConsentRequest, z as Placement, zt as TcpSocketListenerOptions } from "./contract-CDdIE_Es.js";
3
3
  import { o as TcpSocketOption, x as UdpSocketOption } from "./wire-DhmLnYEU.js";
4
4
  import { Remote } from "osra";
5
5
  type EpochListener<T> = (remote: T, epoch: number) => void;
@@ -248,10 +248,26 @@ declare const onApiEpoch: (listener: EpochListener<{
248
248
  version: string | null;
249
249
  installedAt: number;
250
250
  appId?: string;
251
+ temporary?: true;
251
252
  };
252
253
  } | {
253
254
  declined: true;
254
255
  }>;
256
+ installTemporary?: ((uri: string, options?: InstallOptions | undefined) => Promise<{
257
+ error: PackagesErrorCode;
258
+ message: string;
259
+ } | {
260
+ installed: {
261
+ uri: string;
262
+ name: string;
263
+ version: string | null;
264
+ installedAt: number;
265
+ appId?: string;
266
+ temporary?: true;
267
+ };
268
+ } | {
269
+ declined: true;
270
+ }>) | undefined;
255
271
  frame: (uri: string) => Promise<{
256
272
  error: PackagesErrorCode;
257
273
  message: string;
@@ -270,6 +286,7 @@ declare const onApiEpoch: (listener: EpochListener<{
270
286
  version: string | null;
271
287
  installedAt: number;
272
288
  appId?: string;
289
+ temporary?: true;
273
290
  }[];
274
291
  }>;
275
292
  uninstall: (uri: string) => Promise<{
@@ -1632,10 +1649,26 @@ declare const currentApiEpoch: () => {
1632
1649
  version: string | null;
1633
1650
  installedAt: number;
1634
1651
  appId?: string;
1652
+ temporary?: true;
1635
1653
  };
1636
1654
  } | {
1637
1655
  declined: true;
1638
1656
  }>;
1657
+ installTemporary?: ((uri: string, options?: InstallOptions | undefined) => Promise<{
1658
+ error: PackagesErrorCode;
1659
+ message: string;
1660
+ } | {
1661
+ installed: {
1662
+ uri: string;
1663
+ name: string;
1664
+ version: string | null;
1665
+ installedAt: number;
1666
+ appId?: string;
1667
+ temporary?: true;
1668
+ };
1669
+ } | {
1670
+ declined: true;
1671
+ }>) | undefined;
1639
1672
  frame: (uri: string) => Promise<{
1640
1673
  error: PackagesErrorCode;
1641
1674
  message: string;
@@ -1654,6 +1687,7 @@ declare const currentApiEpoch: () => {
1654
1687
  version: string | null;
1655
1688
  installedAt: number;
1656
1689
  appId?: string;
1690
+ temporary?: true;
1657
1691
  }[];
1658
1692
  }>;
1659
1693
  uninstall: (uri: string) => Promise<{
package/api.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./api-DrvhPN56.cjs");exports.API_DEADLINE_MS=e.t,exports.BrokerUnreachableError=e.n,exports.OwnChannelUnavailableError=e.r,exports.apiInFlight=e.i,exports.apiLastCall=e.a,exports.apiPromise=e.o,exports.apiWithin=e.s,exports.currentApiEpoch=e.c,exports.hasTransport=e.l,exports.onApiEpoch=e.u;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./api-BkoXMcoe.cjs");exports.API_DEADLINE_MS=e.t,exports.BrokerUnreachableError=e.n,exports.OwnChannelUnavailableError=e.r,exports.apiInFlight=e.i,exports.apiLastCall=e.a,exports.apiPromise=e.o,exports.apiWithin=e.s,exports.currentApiEpoch=e.c,exports.hasTransport=e.l,exports.onApiEpoch=e.u;
package/api.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { X as Resolvers } from "./contract-CJk3vE9P.js";
2
- import { a as apiLastCall, c as currentApiEpoch, i as apiInFlight, l as hasTransport, n as BrokerUnreachableError, o as apiPromise, r as OwnChannelUnavailableError, s as apiWithin, t as API_DEADLINE_MS, u as onApiEpoch } from "./api-BlYVLNjo.js";
1
+ import { X as Resolvers } from "./contract-CDdIE_Es.js";
2
+ import { a as apiLastCall, c as currentApiEpoch, i as apiInFlight, l as hasTransport, n as BrokerUnreachableError, o as apiPromise, r as OwnChannelUnavailableError, s as apiWithin, t as API_DEADLINE_MS, u as onApiEpoch } from "./api-DhwJz0vo.js";
3
3
  export { API_DEADLINE_MS, BrokerUnreachableError, OwnChannelUnavailableError, type Resolvers, apiInFlight, apiLastCall, apiPromise, apiWithin, currentApiEpoch, hasTransport, onApiEpoch };
package/api.js CHANGED
@@ -1 +1 @@
1
- export { t as API_DEADLINE_MS, n as BrokerUnreachableError, r as OwnChannelUnavailableError, i as apiInFlight, a as apiLastCall, o as apiPromise, s as apiWithin, c as currentApiEpoch, l as hasTransport, u as onApiEpoch } from "./api-DRglK7ft.js";
1
+ export { t as API_DEADLINE_MS, n as BrokerUnreachableError, r as OwnChannelUnavailableError, i as apiInFlight, a as apiLastCall, o as apiPromise, s as apiWithin, c as currentApiEpoch, l as hasTransport, u as onApiEpoch } from "./api-DeGR_tzF.js";
@@ -1,5 +1,5 @@
1
1
  // ../platform-policy/src/index.ts
2
- var e = /* @__PURE__ */ "fkn.app,fkn.dev,sdbx.app,horionsoftware.com,webvpn.dev,fknmail.app,clairv.app,fkn.cloudflareaccess.com,me-62e.workers.dev,62e9d4fbf21d90ebd4342e54b4babbd3.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.eu.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.fedramp.r2.cloudflarestorage.com,pub-8a3dc68041874c7e9c9a54bde972605a.r2.dev,pub-3d97d79220b94243812e60b0e742f2c5.r2.dev,pub-f8bd4876cc3c4b4a951715da5958e49c.r2.dev,web-b3z.pages.dev,fkn-console.pages.dev,dev-dms.pages.dev,fkn-www.pages.dev,fkn-homepage.pages.dev,fkn-sandbox.pages.dev,internal-3ar.pages.dev,stub-ben.pages.dev,ripple-3t3.pages.dev,media-player-e3s.pages.dev,youtube-3c4.pages.dev,horionsoftware.pages.dev,container-ckf.pages.dev,stub-plugin.pages.dev,social-3n2.pages.dev,plugins.banou.dev".split(","), t = (e) => e.toLowerCase().replace(/\.+$/, ""), n = ["79.127.204.69", "152.233.49.59"], r = (e) => {
2
+ var e = /* @__PURE__ */ "fkn.app,fkn.dev,sdbx.app,horionsoftware.com,webvpn.dev,fknmail.app,clairv.app,fkn.cloudflareaccess.com,me-62e.workers.dev,62e9d4fbf21d90ebd4342e54b4babbd3.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.eu.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.fedramp.r2.cloudflarestorage.com,pub-8a3dc68041874c7e9c9a54bde972605a.r2.dev,pub-26b534eb9aa04cffbe1cdbb3be3fb1d2.r2.dev,pub-3d97d79220b94243812e60b0e742f2c5.r2.dev,pub-f8bd4876cc3c4b4a951715da5958e49c.r2.dev,web-b3z.pages.dev,fkn-console.pages.dev,dev-dms.pages.dev,fkn-www.pages.dev,fkn-homepage.pages.dev,fkn-sandbox.pages.dev,internal-3ar.pages.dev,stub-ben.pages.dev,ripple-3t3.pages.dev,media-player-e3s.pages.dev,youtube-3c4.pages.dev,horionsoftware.pages.dev,container-ckf.pages.dev,stub-plugin.pages.dev,social-3n2.pages.dev,plugins.banou.dev".split(","), t = (e) => e.toLowerCase().replace(/\.+$/, ""), n = ["79.127.204.69", "152.233.49.59"], r = (e) => {
3
3
  let t;
4
4
  try {
5
5
  t = new URL(`http://${e.includes(":") && !e.startsWith("[") ? `[${e}]` : e}/`).hostname;
@@ -46,6 +46,8 @@ var e = /* @__PURE__ */ "fkn.app,fkn.dev,sdbx.app,horionsoftware.com,webvpn.dev,
46
46
  frame.setAttribute('allow', ${JSON.stringify(s)}.concat(isolated ? ['cross-origin-isolated'] : []).filter(name => !known || known.includes(name)).join('; '))
47
47
  frame.src = isolated ? ${JSON.stringify(d(!0))} : ${JSON.stringify(d(!1))}
48
48
  frame.style.cssText = 'position:fixed!important;top:0!important;left:0!important;width:100%!important;height:100%!important;border:none!important;clip-path:inset(100%)!important'
49
+ frame.setAttribute('tabindex', '-1')
50
+ frame.setAttribute('aria-hidden', 'true')
49
51
  document.body.appendChild(frame)
50
52
  }`;
51
53
  export { l as i, d as n, o as r, f as t };
@@ -0,0 +1,11 @@
1
+ var e=`fkn.app,fkn.dev,sdbx.app,horionsoftware.com,webvpn.dev,fknmail.app,clairv.app,fkn.cloudflareaccess.com,me-62e.workers.dev,62e9d4fbf21d90ebd4342e54b4babbd3.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.eu.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.fedramp.r2.cloudflarestorage.com,pub-8a3dc68041874c7e9c9a54bde972605a.r2.dev,pub-26b534eb9aa04cffbe1cdbb3be3fb1d2.r2.dev,pub-3d97d79220b94243812e60b0e742f2c5.r2.dev,pub-f8bd4876cc3c4b4a951715da5958e49c.r2.dev,web-b3z.pages.dev,fkn-console.pages.dev,dev-dms.pages.dev,fkn-www.pages.dev,fkn-homepage.pages.dev,fkn-sandbox.pages.dev,internal-3ar.pages.dev,stub-ben.pages.dev,ripple-3t3.pages.dev,media-player-e3s.pages.dev,youtube-3c4.pages.dev,horionsoftware.pages.dev,container-ckf.pages.dev,stub-plugin.pages.dev,social-3n2.pages.dev,plugins.banou.dev`.split(`,`),t=e=>e.toLowerCase().replace(/\.+$/,``),n=[`79.127.204.69`,`152.233.49.59`],r=e=>{let t;try{t=new URL(`http://${e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}/`).hostname}catch{return}let n=/^\[(?:::ffff:|64:ff9b::)([0-9a-f]{1,4}):([0-9a-f]{1,4})\]$/.exec(t);if(n){let e=parseInt(n[1],16),t=parseInt(n[2],16);return[e>>8,e&255,t>>8,t&255].join(`.`)}return/^\d+\.\d+\.\d+\.\d+$/.test(t)?t:void 0},i=n=>{let r=t(n);return e.some(e=>r===e||r.endsWith(`.${e}`))},a=e=>{if(i(e))return!0;let a=r(t(e));return a!==void 0&&n.includes(a)},o=e=>{let t=typeof e==`string`?e:e instanceof URL?e.href:e.url,n;try{n=new URL(t)}catch{return}if(a(n.hostname))throw Error(`fetch refuses FKN platform domains (${n.hostname})`)},s=`autoplay.fullscreen.picture-in-picture.encrypted-media.screen-wake-lock.speaker-selection.captured-surface-control.camera.microphone.display-capture.geolocation.midi.usb.serial.hid.bluetooth.gamepad.keyboard-map.xr-spatial-tracking.accelerometer.gyroscope.magnetometer.ambient-light-sensor.compute-pressure.clipboard-read.clipboard-write.storage-access.window-management.local-fonts.idle-detection.web-share.sync-xhr.unload.payment.publickey-credentials-get.publickey-credentials-create.otp-credentials.identity-credentials-get.digital-credentials-get.local-network.local-network-access.loopback-network`.split(`.`),c=()=>{try{let e=globalThis.document?.featurePolicy?.features?.();return e===void 0?void 0:new Set(e)}catch{return}},l=(e=!0,t=c())=>[...s,...e?[`cross-origin-isolated`]:[]].filter(e=>t===void 0||t.has(e)).join(`; `),u=`https://fkn.app`,d=e=>`${u}/api${e?`?coi=1`:``}`,f=`if (window.parent === window) {
2
+ const isolated = window.crossOriginIsolated === true
3
+ const known = document.featurePolicy?.features?.()
4
+ const frame = document.createElement('iframe')
5
+ frame.setAttribute('allow', ${JSON.stringify(s)}.concat(isolated ? ['cross-origin-isolated'] : []).filter(name => !known || known.includes(name)).join('; '))
6
+ frame.src = isolated ? ${JSON.stringify(d(!0))} : ${JSON.stringify(d(!1))}
7
+ frame.style.cssText = 'position:fixed!important;top:0!important;left:0!important;width:100%!important;height:100%!important;border:none!important;clip-path:inset(100%)!important'
8
+ frame.setAttribute('tabindex', '-1')
9
+ frame.setAttribute('aria-hidden', 'true')
10
+ document.body.appendChild(frame)
11
+ }`;Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return f}});
package/broker-frame.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./broker-frame-CF4-yXtj.cjs");exports.brokerFrameScript=e.t,exports.brokerFrameSrc=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./broker-frame-BKHtDSjv.cjs");exports.brokerFrameScript=e.t,exports.brokerFrameSrc=e.n;
package/broker-frame.d.ts CHANGED
@@ -5,7 +5,8 @@ export declare const brokerFrameSrc: (isolated: boolean) => string;
5
5
  * parsed, for the start of `<body>`. `@fkn/lib` adopts the frame instead of mounting its own once
6
6
  * the bundle runs, so the broker loads alongside the bundle rather than after it.
7
7
  *
8
- * It mounts the same frame the lib would (address, `allow` list, clipped out of view), and nothing
8
+ * It mounts the same frame the lib would (address, `allow` list, clipped out of view and out of the Tab order and the
9
+ * accessibility tree until FKN draws something in it), and nothing
9
10
  * in a framed page, which asks its parent for a broker first. Every step that fails leaves the
10
11
  * mount to the lib, as without it.
11
12
  */
package/broker-frame.js CHANGED
@@ -1 +1 @@
1
- export { t as brokerFrameScript, n as brokerFrameSrc } from "./broker-frame-vjSpBa8d.js";
1
+ export { t as brokerFrameScript, n as brokerFrameSrc } from "./broker-frame-BClLp2ZV.js";
package/cloud/dgram.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../dgram-D9ljiUFh.cjs");exports.Socket=e.t,exports.createSocket=e.n,exports.default=e.r;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../dgram-Xrt2rPrC.cjs");exports.Socket=e.t,exports.createSocket=e.n,exports.default=e.r;
package/cloud/dgram.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as _default, r as createSocket, t as Socket } from "../dgram-DSgktX7M.js";
1
+ import { n as _default, r as createSocket, t as Socket } from "../dgram-CPQqam5Z.js";
2
2
  export { Socket, createSocket, _default as default };
package/cloud/dgram.js CHANGED
@@ -1 +1 @@
1
- export { t as Socket, n as createSocket, r as default } from "../dgram-BBbLokVF.js";
1
+ export { t as Socket, n as createSocket, r as default } from "../dgram-BMCYdn0Q.js";
package/cloud/dns.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../dns-2v96zoEh.cjs");exports.lookup=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../dns-ijWQw2NO.cjs");exports.lookup=e.n;
package/cloud/dns.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { s as AddressLookupResult } from "../contract-CJk3vE9P.js";
2
- import { n as lookup } from "../dns-BwS2LM9b.js";
1
+ import { s as AddressLookupResult } from "../contract-CDdIE_Es.js";
2
+ import { n as lookup } from "../dns-_NCe2YLS.js";
3
3
  export { type AddressLookupResult, lookup };
package/cloud/dns.js CHANGED
@@ -1 +1 @@
1
- export { n as lookup } from "../dns-o8DLFjP1.js";
1
+ export { n as lookup } from "../dns-CxfA8mGU.js";
package/cloud/fetch.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../proxy-DVgGp6A8.cjs");exports.fetch=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../proxy-BFa0n5gx.cjs");exports.fetch=e.t;
package/cloud/fetch.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { t as cloudFetch } from "../proxy-CfgavvzR.js";
1
+ import { t as cloudFetch } from "../proxy-CzP07me0.js";
2
2
  export { cloudFetch as fetch };
package/cloud/fetch.js CHANGED
@@ -1 +1 @@
1
- export { t as fetch } from "../proxy-BBAQxJmP.js";
1
+ export { t as fetch } from "../proxy-FSgMUaD3.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var{readFile:e,writeFile:t,unlink:n,rename:r,readdir:i,mkdir:a,rm:o,rmdir:s,stat:c,lstat:l,access:u}=require("../../fs-BX_ghRy0.cjs").a;exports.access=u,exports.lstat=l,exports.mkdir=a,exports.readFile=e,exports.readdir=i,exports.rename=r,exports.rm=o,exports.rmdir=s,exports.stat=c,exports.unlink=n,exports.writeFile=t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var{readFile:e,writeFile:t,unlink:n,rename:r,readdir:i,mkdir:a,rm:o,rmdir:s,stat:c,lstat:l,access:u}=require("../../fs-BVISC6T6.cjs").a;exports.access=u,exports.lstat=l,exports.mkdir=a,exports.readFile=e,exports.readdir=i,exports.rename=r,exports.rm=o,exports.rmdir=s,exports.stat=c,exports.unlink=n,exports.writeFile=t;
@@ -1,4 +1,4 @@
1
- import { a as e } from "../../fs-BnWXGRik.js";
1
+ import { a as e } from "../../fs-D16P3dtE.js";
2
2
  // src/cloud/fs-promises.ts
3
3
  var { readFile: t, writeFile: n, unlink: r, rename: i, readdir: a, mkdir: o, rm: s, rmdir: c, stat: l, lstat: u, access: d } = e;
4
4
  export { d as access, u as lstat, o as mkdir, t as readFile, a as readdir, i as rename, s as rm, c as rmdir, l as stat, r as unlink, n as writeFile };
package/cloud/fs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../messages.cjs"),t=require("../account-storage-dYWDpqsr.cjs"),n=require("../fs-BX_ghRy0.cjs");exports.STORAGE_ACCOUNT_CHANGED=e.STORAGE_ACCOUNT_CHANGED,exports.STORAGE_ACCOUNT_PIN_UNSUPPORTED=e.STORAGE_ACCOUNT_PIN_UNSUPPORTED,exports.STORAGE_NOT_FOUND=e.STORAGE_NOT_FOUND,exports.StorageAccountChangedError=t.t,exports.StorageAccountPinUnsupportedError=t.n,exports.StorageLockedError=t.r,exports.StorageNotFoundError=t.i,exports.availability=t.o,exports.available=n.t,exports.encryption=t.c,exports.isAccountChanged=t.l,exports.isNotFound=t.d,exports.list=n.r,exports.mkdir=n.i,exports.promises=n.a,exports.quota=t.h,exports.readFile=n.o,exports.readFileSealed=n.s,exports.readdir=n.c,exports.rename=n.l,exports.rm=n.u,exports.stat=n.d,exports.unlink=n.f,exports.unlock=t.y,exports.writeFile=n.p;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../messages.cjs"),t=require("../account-storage-gOL0HE6i.cjs"),n=require("../fs-BVISC6T6.cjs");exports.STORAGE_ACCOUNT_CHANGED=e.STORAGE_ACCOUNT_CHANGED,exports.STORAGE_ACCOUNT_PIN_UNSUPPORTED=e.STORAGE_ACCOUNT_PIN_UNSUPPORTED,exports.STORAGE_NOT_FOUND=e.STORAGE_NOT_FOUND,exports.StorageAccountChangedError=t.t,exports.StorageAccountPinUnsupportedError=t.n,exports.StorageLockedError=t.r,exports.StorageNotFoundError=t.i,exports.availability=t.o,exports.available=n.t,exports.encryption=t.c,exports.isAccountChanged=t.l,exports.isNotFound=t.d,exports.list=n.r,exports.mkdir=n.i,exports.promises=n.a,exports.quota=t.h,exports.readFile=n.o,exports.readFileSealed=n.s,exports.readdir=n.c,exports.rename=n.l,exports.rm=n.u,exports.stat=n.d,exports.unlink=n.f,exports.unlock=t.y,exports.writeFile=n.p;
package/cloud/fs.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { STORAGE_ACCOUNT_CHANGED as e, STORAGE_ACCOUNT_PIN_UNSUPPORTED as t, STORAGE_NOT_FOUND as n } from "../messages.js";
2
- import { c as r, d as i, h as a, i as o, l as s, n as c, o as l, r as u, t as d, y as f } from "../account-storage-BmCVutNL.js";
3
- import { a as p, c as m, d as h, f as g, i as _, l as v, o as y, p as b, r as x, s as S, t as C, u as w } from "../fs-BnWXGRik.js";
2
+ import { c as r, d as i, h as a, i as o, l as s, n as c, o as l, r as u, t as d, y as f } from "../account-storage-C7Lyae5Q.js";
3
+ import { a as p, c as m, d as h, f as g, i as _, l as v, o as y, p as b, r as x, s as S, t as C, u as w } from "../fs-D16P3dtE.js";
4
4
  export { e as STORAGE_ACCOUNT_CHANGED, t as STORAGE_ACCOUNT_PIN_UNSUPPORTED, n as STORAGE_NOT_FOUND, d as StorageAccountChangedError, c as StorageAccountPinUnsupportedError, u as StorageLockedError, o as StorageNotFoundError, l as availability, C as available, r as encryption, s as isAccountChanged, i as isNotFound, x as list, _ as mkdir, p as promises, a as quota, y as readFile, S as readFileSealed, m as readdir, v as rename, w as rm, h as stat, g as unlink, f as unlock, b as writeFile };