@fkn/lib 0.9.56 → 0.9.58

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 (81) hide show
  1. package/{account-generation-D3jlXBbM.js → account-generation-2ZvMy2tZ.js} +1 -1
  2. package/{account-generation-DkrSMafa.cjs → account-generation-DIsOqkSQ.cjs} +1 -1
  3. package/{account-storage-C1VL6fpb.cjs → account-storage-CPTct4Vz.cjs} +1 -1
  4. package/{account-storage-BBL440_m.js → account-storage-Cmzz-67T.js} +2 -2
  5. package/account.cjs +1 -1
  6. package/account.d.ts +1 -1
  7. package/account.js +2 -2
  8. package/{api-BSpQkgnM.d.ts → api-BD_XUANc.d.ts} +28 -1
  9. package/{api-DEfkbHGB.js → api-C-N5AVos.js} +77 -74
  10. package/api-ibGqkmtA.cjs +3 -0
  11. package/api.cjs +1 -1
  12. package/api.d.ts +2 -2
  13. package/api.js +1 -1
  14. package/cloud/dns.d.ts +1 -1
  15. package/cloud/fetch.cjs +1 -1
  16. package/cloud/fetch.d.ts +1 -1
  17. package/cloud/fetch.js +1 -1
  18. package/cloud/fs.cjs +1 -1
  19. package/cloud/fs.js +1 -1
  20. package/cloud/net.d.ts +1 -1
  21. package/{cloud-DTpFBbBH.js → cloud-B6B2XcRU.js} +205 -184
  22. package/{cloud-BslRIoKs.d.ts → cloud-BEoUa04G.d.ts} +3 -3
  23. package/cloud-C0hcBrFd.cjs +1 -0
  24. package/cloud.cjs +1 -1
  25. package/cloud.d.ts +3 -3
  26. package/cloud.js +2 -2
  27. package/{contract-DFycgFJK.d.ts → contract-B8Rqx5BD.d.ts} +47 -4
  28. package/contract.cjs +1 -1
  29. package/contract.d.ts +3 -3
  30. package/contract.js +2 -2
  31. package/dgram.cjs +1 -1
  32. package/dgram.d.ts +10 -5
  33. package/dgram.js +64 -60
  34. package/dns.cjs +1 -1
  35. package/dns.d.ts +1 -1
  36. package/dns.js +1 -1
  37. package/extension-AidgSVhb.js +101 -0
  38. package/{extension-kE9yzbkW.d.ts → extension-C_eOfEjv.d.ts} +3 -2
  39. package/extension-M8bUhlML.cjs +1 -0
  40. package/extension.cjs +1 -1
  41. package/extension.d.ts +3 -3
  42. package/extension.js +1 -1
  43. package/fs/promises.cjs +1 -1
  44. package/fs/promises.js +1 -1
  45. package/{fs-C7ByWYF9.cjs → fs-BlRxCJQW.cjs} +1 -1
  46. package/{fs-gryDP9qw.js → fs-C_RmxWk9.js} +2 -2
  47. package/fs.cjs +1 -1
  48. package/fs.js +2 -2
  49. package/http.cjs +1 -1
  50. package/http.d.ts +4 -1
  51. package/http.js +2 -1
  52. package/{index-BQ5OZQhf.d.ts → index-C5DdoMGo.d.ts} +38 -1
  53. package/index.cjs +1 -1
  54. package/index.d.ts +7 -5
  55. package/index.js +53 -51
  56. package/{net-eEjhJ0AE.d.ts → net-CvJwokcz.d.ts} +14 -7
  57. package/net.cjs +1 -1
  58. package/net.d.ts +1 -1
  59. package/net.js +52 -46
  60. package/package.json +1 -1
  61. package/packages.cjs +1 -1
  62. package/packages.d.ts +1 -1
  63. package/packages.js +1 -1
  64. package/proxy-C1RlnrDC.js +61 -0
  65. package/proxy-CII2NFYV.cjs +1 -0
  66. package/{proxy-8hIHeEHD.d.ts → proxy-z0Y8IgW7.d.ts} +2 -2
  67. package/relay-choice-BGwXRC5d.js +14 -0
  68. package/relay-choice-BmXlqfD2.d.ts +28 -0
  69. package/relay-choice-JC_JJY_M.cjs +1 -0
  70. package/rooms.cjs +1 -1
  71. package/rooms.d.ts +1 -1
  72. package/rooms.js +1 -1
  73. package/storage.cjs +1 -1
  74. package/storage.d.ts +1 -1
  75. package/storage.js +3 -3
  76. package/api-BmaUJUUp.cjs +0 -3
  77. package/cloud-C_EPPfe_.cjs +0 -1
  78. package/extension-C13d41tq.js +0 -95
  79. package/extension-DA_Fx3Lx.cjs +0 -1
  80. package/proxy-Blzm-Dc1.cjs +0 -1
  81. package/proxy-C2HY5Ybc.js +0 -60
@@ -1,4 +1,4 @@
1
- import { c as e, l as t, u as n } from "./api-DEfkbHGB.js";
1
+ import { c as e, l as t, u as n } from "./api-C-N5AVos.js";
2
2
  //#region 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-BmaUJUUp.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-ibGqkmtA.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 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BmaUJUUp.cjs"),n=require("./messages.cjs"),r=require("./account-generation-DkrSMafa.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-ibGqkmtA.cjs"),n=require("./messages.cjs"),r=require("./account-generation-DIsOqkSQ.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,7 +1,7 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { o as t } from "./api-DEfkbHGB.js";
2
+ import { o as t } from "./api-C-N5AVos.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-D3jlXBbM.js";
4
+ import { n as a, r as o, t as s } from "./account-generation-2ZvMy2tZ.js";
5
5
  //#region src/account-storage.ts
6
6
  var c = /* @__PURE__ */ e({
7
7
  StorageAccountChangedError: () => f,
package/account.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BmaUJUUp.cjs"),n=require("./account-generation-DkrSMafa.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):()=>{};exports.info=o,exports.login=i,exports.logout=a,exports.onChange=s,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-ibGqkmtA.cjs"),n=require("./account-generation-DIsOqkSQ.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):()=>{};exports.info=o,exports.login=i,exports.logout=a,exports.onChange=s,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
package/account.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as AccountChange } from "./contract-DFycgFJK.js";
1
+ import { a as AccountChange } from "./contract-B8Rqx5BD.js";
2
2
  declare namespace account_d_exports {
3
3
  export { AccountChange, AccountInfo, info, login, logout, onChange };
4
4
  }
package/account.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { l as t, o as n } from "./api-DEfkbHGB.js";
3
- import { i as r } from "./account-generation-D3jlXBbM.js";
2
+ import { l as t, o as n } from "./api-C-N5AVos.js";
3
+ import { i as r } from "./account-generation-2ZvMy2tZ.js";
4
4
  //#region src/account.ts
5
5
  var i = /* @__PURE__ */ e({
6
6
  info: () => s,
@@ -1,4 +1,5 @@
1
- import { $ as RoomEvent, Bt as UdpSocketOptions, D as IpFamily, Ft as TcpSocketListenerOptions, H as ProxyFetchInput, I as PackagesErrorCode, J as RoomClaimOptions, K as Resolvers, Kt as WriteData, Lt as TcpSocketOptions, N as OverlayState, P as PackageQuery, R as PickOptions, T as InstallOptions, Tt as StorageErrorCode, V as ProxyFetchInit, a as AccountChange, b as FrameConsentAnswer, c as AdoptRequest, d as ConflictRequest, dt as RoomsErrorCode, kt as StoragePutWire, l as AdoptState, m as ConnectOptions, o as AccountPinOptions, ot as RoomOpenOptions, p as ConnectAvailability, rt as RoomMailbox, st as RoomPermission, tt as RoomJoinOptions, u as ConflictChoice, ut as RoomType, x as FrameConsentRequest, z as Placement, zt as UdpDatagram } from "./contract-DFycgFJK.js";
1
+ import { D as RelayChoice } from "./index-C5DdoMGo.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-B8Rqx5BD.js";
2
3
  import { o as TcpSocketOption, x as UdpSocketOption } from "./wire-Fk5pJaoy.js";
3
4
  import { Remote } from "osra";
4
5
  //#region src/api-epochs.d.ts
@@ -128,12 +129,14 @@ declare const onApiEpoch: (listener: EpochListener<{
128
129
  destroySoon: () => Promise<void>;
129
130
  resetAndDestroy: () => Promise<void>;
130
131
  setOption: (option: TcpSocketOption) => Promise<void>;
132
+ relay?: string;
131
133
  }>;
132
134
  tcpSocketListener: (options: TcpSocketListenerOptions) => Promise<{
133
135
  localAddress: string;
134
136
  localFamily: IpFamily;
135
137
  localPort: number;
136
138
  close: () => Promise<void>;
139
+ relay?: string;
137
140
  }>;
138
141
  udpSocket: (options: UdpSocketOptions) => Promise<{
139
142
  socketId: number;
@@ -163,12 +166,14 @@ declare const onApiEpoch: (listener: EpochListener<{
163
166
  }) => Promise<void>;
164
167
  close: () => Promise<void>;
165
168
  setOption: (option: UdpSocketOption) => Promise<void>;
169
+ relay?: string;
166
170
  }>;
167
171
  };
168
172
  };
169
173
  overlay: {
170
174
  setHost: (push: (state: OverlayState) => unknown, options?: {
171
175
  exactClips?: boolean;
176
+ colorScheme?: string;
172
177
  } | undefined) => Promise<void>;
173
178
  };
174
179
  installPrompt: {
@@ -184,6 +189,11 @@ declare const onApiEpoch: (listener: EpochListener<{
184
189
  };
185
190
  relay: {
186
191
  prompt: () => Promise<string>;
192
+ resolve: (choice?: RelayChoice | undefined) => Promise<{
193
+ id: string;
194
+ } | {
195
+ refused: string;
196
+ }>;
187
197
  };
188
198
  packages: {
189
199
  search: (query: PackageQuery) => Promise<{
@@ -1373,12 +1383,14 @@ declare const onApiEpoch: (listener: EpochListener<{
1373
1383
  destroySoon: () => Promise<void>;
1374
1384
  resetAndDestroy: () => Promise<void>;
1375
1385
  setOption: (option: TcpSocketOption) => Promise<void>;
1386
+ relay?: string;
1376
1387
  }>;
1377
1388
  webVpnTcpSocketListener: (options: TcpSocketListenerOptions) => Promise<{
1378
1389
  localAddress: string;
1379
1390
  localFamily: IpFamily;
1380
1391
  localPort: number;
1381
1392
  close: () => Promise<void>;
1393
+ relay?: string;
1382
1394
  }>;
1383
1395
  webVpnUdpSocket: (options: UdpSocketOptions) => Promise<{
1384
1396
  socketId: number;
@@ -1408,6 +1420,7 @@ declare const onApiEpoch: (listener: EpochListener<{
1408
1420
  }) => Promise<void>;
1409
1421
  close: () => Promise<void>;
1410
1422
  setOption: (option: UdpSocketOption) => Promise<void>;
1423
+ relay?: string;
1411
1424
  }>;
1412
1425
  dnsLookup: (hostname: string, options?: {
1413
1426
  all?: boolean | undefined;
@@ -1421,6 +1434,7 @@ declare const onApiEpoch: (listener: EpochListener<{
1421
1434
  } | undefined>;
1422
1435
  setOverlayHost: (push: (state: OverlayState) => unknown, options?: {
1423
1436
  exactClips?: boolean;
1437
+ colorScheme?: string;
1424
1438
  } | undefined) => Promise<void>;
1425
1439
  showInstallPrompt: (reason?: string | undefined) => Promise<void>;
1426
1440
  hideInstallPrompt: () => Promise<void>;
@@ -1499,12 +1513,14 @@ declare const currentApiEpoch: () => {
1499
1513
  destroySoon: () => Promise<void>;
1500
1514
  resetAndDestroy: () => Promise<void>;
1501
1515
  setOption: (option: TcpSocketOption) => Promise<void>;
1516
+ relay?: string;
1502
1517
  }>;
1503
1518
  tcpSocketListener: (options: TcpSocketListenerOptions) => Promise<{
1504
1519
  localAddress: string;
1505
1520
  localFamily: IpFamily;
1506
1521
  localPort: number;
1507
1522
  close: () => Promise<void>;
1523
+ relay?: string;
1508
1524
  }>;
1509
1525
  udpSocket: (options: UdpSocketOptions) => Promise<{
1510
1526
  socketId: number;
@@ -1534,12 +1550,14 @@ declare const currentApiEpoch: () => {
1534
1550
  }) => Promise<void>;
1535
1551
  close: () => Promise<void>;
1536
1552
  setOption: (option: UdpSocketOption) => Promise<void>;
1553
+ relay?: string;
1537
1554
  }>;
1538
1555
  };
1539
1556
  };
1540
1557
  overlay: {
1541
1558
  setHost: (push: (state: OverlayState) => unknown, options?: {
1542
1559
  exactClips?: boolean;
1560
+ colorScheme?: string;
1543
1561
  } | undefined) => Promise<void>;
1544
1562
  };
1545
1563
  installPrompt: {
@@ -1555,6 +1573,11 @@ declare const currentApiEpoch: () => {
1555
1573
  };
1556
1574
  relay: {
1557
1575
  prompt: () => Promise<string>;
1576
+ resolve: (choice?: RelayChoice | undefined) => Promise<{
1577
+ id: string;
1578
+ } | {
1579
+ refused: string;
1580
+ }>;
1558
1581
  };
1559
1582
  packages: {
1560
1583
  search: (query: PackageQuery) => Promise<{
@@ -2744,12 +2767,14 @@ declare const currentApiEpoch: () => {
2744
2767
  destroySoon: () => Promise<void>;
2745
2768
  resetAndDestroy: () => Promise<void>;
2746
2769
  setOption: (option: TcpSocketOption) => Promise<void>;
2770
+ relay?: string;
2747
2771
  }>;
2748
2772
  webVpnTcpSocketListener: (options: TcpSocketListenerOptions) => Promise<{
2749
2773
  localAddress: string;
2750
2774
  localFamily: IpFamily;
2751
2775
  localPort: number;
2752
2776
  close: () => Promise<void>;
2777
+ relay?: string;
2753
2778
  }>;
2754
2779
  webVpnUdpSocket: (options: UdpSocketOptions) => Promise<{
2755
2780
  socketId: number;
@@ -2779,6 +2804,7 @@ declare const currentApiEpoch: () => {
2779
2804
  }) => Promise<void>;
2780
2805
  close: () => Promise<void>;
2781
2806
  setOption: (option: UdpSocketOption) => Promise<void>;
2807
+ relay?: string;
2782
2808
  }>;
2783
2809
  dnsLookup: (hostname: string, options?: {
2784
2810
  all?: boolean | undefined;
@@ -2792,6 +2818,7 @@ declare const currentApiEpoch: () => {
2792
2818
  } | undefined>;
2793
2819
  setOverlayHost: (push: (state: OverlayState) => unknown, options?: {
2794
2820
  exactClips?: boolean;
2821
+ colorScheme?: string;
2795
2822
  } | undefined) => Promise<void>;
2796
2823
  showInstallPrompt: (reason?: string | undefined) => Promise<void>;
2797
2824
  hideInstallPrompt: () => Promise<void>;
@@ -23,25 +23,25 @@ var n = 1e4, r = 16, i = (e) => {
23
23
  }, r), s = setTimeout(a, t);
24
24
  e.addEventListener("load", a);
25
25
  }), o = 5e3, s = (e, t, n) => {
26
- let r = 1, a, s = () => {
26
+ let r = 1, a, s = e.ownerDocument.defaultView, c = () => {
27
27
  clearTimeout(a), a = setTimeout(() => {
28
28
  if (e.isConnected) {
29
29
  if (r >= 4) return console.error(`FKN @fkn/lib: ${t} did not load in ${r} tries; reload the page`);
30
30
  r += 1, e.contentWindow?.location.replace(t);
31
31
  }
32
32
  }, o);
33
- }, c = (t) => {
34
- t.source === e.contentWindow && t.origin === n && (clearTimeout(a), removeEventListener("message", c), e.removeEventListener("load", s));
33
+ }, l = (t) => {
34
+ t.source === e.contentWindow && t.origin === n && (clearTimeout(a), s?.removeEventListener("message", l), e.removeEventListener("load", c));
35
35
  };
36
- addEventListener("message", c), e.addEventListener("load", s), i(e) && s();
37
- }, c = 32, l = 8, u = 120, d = typeof CSS < "u" && CSS.supports("clip-path", "path('M0 0H1V1H0Z')"), f = typeof CSS < "u" && CSS.supports("clip-path", "polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)"), p = (e) => {
36
+ s?.addEventListener("message", l), e.addEventListener("load", c), i(e) && c();
37
+ }, c = 32, l = 8, u = 120, d = typeof CSS < "u" && CSS.supports("clip-path", "path('M0 0H1V1H0Z')"), f = typeof CSS < "u" && CSS.supports("clip-path", "polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)"), p = "light dark", m = (e) => {
38
38
  let t = e.style;
39
- 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", "normal"), t.setProperty("z-index", "2147483647"), e.setAttribute("title", "FKN");
40
- }, m = ({ x: e, y: t, width: n, height: r, radius: i }) => {
39
+ 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", p), t.setProperty("z-index", "2147483647"), e.setAttribute("title", "FKN");
40
+ }, h = ({ x: e, y: t, width: n, height: r, radius: i }) => {
41
41
  if (!i) return `M${e} ${t}h${n}v${r}h${-n}Z`;
42
42
  let a = Math.min(n, r) / 2, [o, s, c, l] = i.map((e) => Math.max(0, Math.min(e, a)));
43
43
  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`;
44
- }, h = () => d && f, g = ({ x: e, y: t, width: n, height: r }) => [
44
+ }, g = () => d && f, _ = ({ x: e, y: t, width: n, height: r }) => [
45
45
  [e, t],
46
46
  [e + n, t],
47
47
  [e + n, t + r],
@@ -50,9 +50,9 @@ var n = 1e4, r = 16, i = (e) => {
50
50
  ], ee = (e) => {
51
51
  let t = e[0];
52
52
  if (!t) return [];
53
- let n = g(t)[0], r = [];
53
+ let n = _(t)[0], r = [];
54
54
  return e.forEach((t, i) => {
55
- r.push(...g(t)), i > 0 && i < e.length - 1 && r.push(n);
55
+ r.push(..._(t)), i > 0 && i < e.length - 1 && r.push(n);
56
56
  }), r;
57
57
  }, te = (e) => `polygon(nonzero, ${ee(e).map(([e, t]) => `${e}px ${t}px`).join(", ")})`, ne = ({ x: e, y: t, width: n, height: r, radius: i }, a) => {
58
58
  let o = `${t}px ${a.width - e - n}px ${a.height - t - r}px ${e}px`;
@@ -61,7 +61,7 @@ var n = 1e4, r = 16, i = (e) => {
61
61
  if (t) return "none";
62
62
  if (e.length === 0) return "inset(100%)";
63
63
  let r = e.length === 1 ? e[0] : void 0;
64
- return r ? ne(r, n) : f && e.length <= 5 && !e.some((e) => e.radius) ? te(e) : `path('${e.map(m).join("")}')`;
64
+ return r ? ne(r, n) : f && e.length <= 5 && !e.some((e) => e.radius) ? te(e) : `path('${e.map(h).join("")}')`;
65
65
  }, ie = (e) => {
66
66
  if (e.length < 2) return null;
67
67
  let t = Math.min(...e.map((e) => e.x)), n = Math.min(...e.map((e) => e.y));
@@ -71,51 +71,51 @@ var n = 1e4, r = 16, i = (e) => {
71
71
  width: Math.max(...e.map((e) => e.x + e.width)) - t,
72
72
  height: Math.max(...e.map((e) => e.y + e.height)) - n
73
73
  };
74
- }, ae = (e, t, n) => t >= e.x && t < e.x + e.width && n >= e.y && n < e.y + e.height, oe = 16, _ = (e, t, n) => t === 1 ? e * oe : t === 2 ? e * n : e, se = (e, t, n) => {
74
+ }, ae = (e, t, n) => t >= e.x && t < e.x + e.width && n >= e.y && n < e.y + e.height, oe = 16, v = (e, t, n) => t === 1 ? e * oe : t === 2 ? e * n : e, se = (e, t, n) => {
75
75
  let r = getComputedStyle(e);
76
76
  return n !== 0 && /auto|scroll/.test(r.overflowY) && e.scrollHeight > e.clientHeight ? !0 : t !== 0 && /auto|scroll/.test(r.overflowX) && e.scrollWidth > e.clientWidth;
77
77
  }, ce = (e, t, n) => {
78
78
  for (let r = e; r; r = r.parentElement) if (se(r, t, n)) return r;
79
79
  return document.scrollingElement;
80
- }, v = null, y = null, b = (e) => ({
80
+ }, y = null, b = null, x = (e) => ({
81
81
  width: e.offsetWidth || window.innerWidth,
82
82
  height: e.offsetHeight || window.innerHeight
83
- }), x = (e) => {
84
- if (!y || !v || !ae(y, e.clientX, e.clientY)) return;
83
+ }), S = (e) => {
84
+ if (!b || !y || !ae(b, e.clientX, e.clientY)) return;
85
85
  let t = document.elementFromPoint(e.clientX, e.clientY);
86
- if (!t || t === v) return;
87
- let n = _(e.deltaX, e.deltaMode, window.innerWidth), r = _(e.deltaY, e.deltaMode, window.innerHeight), i = ce(t, n, r);
86
+ if (!t || t === y) return;
87
+ let n = v(e.deltaX, e.deltaMode, window.innerWidth), r = v(e.deltaY, e.deltaMode, window.innerHeight), i = ce(t, n, r);
88
88
  i && (i.scrollBy({
89
89
  left: n,
90
90
  top: r,
91
91
  behavior: "instant"
92
92
  }), e.cancelable && e.preventDefault());
93
93
  }, le = (e) => {
94
- let t = y !== null;
95
- y = e, t !== (e !== null) && (e ? window.addEventListener("wheel", x, {
94
+ let t = b !== null;
95
+ b = e, t !== (e !== null) && (e ? window.addEventListener("wheel", S, {
96
96
  capture: !0,
97
97
  passive: !1
98
- }) : window.removeEventListener("wheel", x, { capture: !0 }));
99
- }, S = 0, C = (e) => {
100
- if (e === S) return;
101
- S = e;
98
+ }) : window.removeEventListener("wheel", S, { capture: !0 }));
99
+ }, C = 0, ue = (e) => {
100
+ if (e === C) return;
101
+ C = e;
102
102
  let t = document.documentElement.style;
103
103
  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"));
104
104
  }, w = (e, { modal: t, rects: n, inset: r }, i) => {
105
- if (C(r), !d) {
105
+ if (ue(r), !d) {
106
106
  let r = t || n.length > 0;
107
107
  e.style.setProperty("pointer-events", r ? "auto" : "none", "important"), e.style.setProperty("visibility", r ? "visible" : "hidden", "important");
108
108
  return;
109
109
  }
110
110
  let a = re(n, t, i), o = a === "none" || CSS.supports("clip-path", a) ? a : "inset(100%)";
111
111
  e.style.setProperty("clip-path", o, "important"), le(t || o !== a ? null : ie(n));
112
- }, ue = (e) => {
112
+ }, de = (e) => {
113
113
  if (typeof e != "object" || !e) return 0;
114
114
  let { top: t } = e;
115
115
  return typeof t != "number" || !Number.isFinite(t) || t <= 0 ? 0 : Math.min(Math.round(t), u);
116
- }, de = (e) => {
116
+ }, fe = (e) => {
117
117
  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;
118
- }, fe = (e, t) => {
118
+ }, pe = (e, t) => {
119
119
  if (typeof e != "object" || !e) return null;
120
120
  let { x: n, y: r, width: i, height: a } = e;
121
121
  if (![
@@ -124,7 +124,7 @@ var n = 1e4, r = 16, i = (e) => {
124
124
  i,
125
125
  a
126
126
  ].every((e) => typeof e == "number" && Number.isFinite(e))) return null;
127
- 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 = de(e.radius);
127
+ 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);
128
128
  return {
129
129
  x: c,
130
130
  y: l,
@@ -136,7 +136,7 @@ var n = 1e4, r = 16, i = (e) => {
136
136
  "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",
137
137
  clipped: "it is clipped away or positioned outside the viewport",
138
138
  "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"
139
- }, pe = (e) => Array.isArray(e) ? e.slice(0, l).flatMap((e) => {
139
+ }, me = (e) => Array.isArray(e) ? e.slice(0, l).flatMap((e) => {
140
140
  if (typeof e != "object" || !e) return [];
141
141
  let { kind: t, cause: n, level: r } = e;
142
142
  return typeof t != "string" || t.length > 40 || typeof n != "string" || !(n in T) || r !== "full" && r !== "liveness" ? [] : [{
@@ -144,36 +144,36 @@ var n = 1e4, r = 16, i = (e) => {
144
144
  cause: n,
145
145
  level: r
146
146
  }];
147
- }) : [], E = /* @__PURE__ */ new Set(), me = (e) => {
147
+ }) : [], E = /* @__PURE__ */ new Set(), he = (e) => {
148
148
  for (let { kind: t, cause: n, level: r } of e) E.has(t) || (E.add(t), console.error(`[FKN] The FKN ${JSON.stringify(t)} is not visible on this page: ${T[n]}. Nobody using this page can see or answer it.
149
149
  @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." : "")));
150
150
  }, D = (e, t) => {
151
151
  if (typeof e != "object" || !e) return null;
152
- let n = e, r = (Array.isArray(n.rects) ? n.rects.slice(0, c) : []).map((e) => fe(e, t)).filter((e) => e !== null && e.width > 0 && e.height > 0);
152
+ let n = e, r = (Array.isArray(n.rects) ? n.rects.slice(0, c) : []).map((e) => pe(e, t)).filter((e) => e !== null && e.width > 0 && e.height > 0);
153
153
  return {
154
154
  modal: n.modal === !0,
155
155
  rects: r,
156
- hidden: pe(n.hidden),
157
- inset: ue(n.inset)
156
+ hidden: me(n.hidden),
157
+ inset: de(n.inset)
158
158
  };
159
- }, he = () => v !== null, O = null, k = null, ge = () => {
160
- if (!v || O === null) return;
161
- let e = b(v), t = D(O, e);
162
- t && w(v, t, e);
163
- }, _e = (e) => {
164
- typeof ResizeObserver < "u" && (k ??= new ResizeObserver(ge), k.disconnect(), k.observe(e));
159
+ }, ge = () => y !== null, O = null, k = null, _e = () => {
160
+ if (!y || O === null) return;
161
+ let e = x(y), t = D(O, e);
162
+ t && w(y, t, e);
165
163
  }, ve = (e) => {
166
- p(e), w(e, {
164
+ typeof ResizeObserver < "u" && (k ??= new ResizeObserver(_e), k.disconnect(), k.observe(e));
165
+ }, ye = (e) => {
166
+ m(e), w(e, {
167
167
  modal: !1,
168
168
  rects: [],
169
169
  hidden: [],
170
170
  inset: 0
171
- }, b(e)), v = e, _e(e);
172
- }, ye = (e) => {
173
- if (!v) return;
174
- let t = b(v), n = D(e, t);
175
- n && (O = e, w(v, n, t), me(n.hidden));
176
- }, be = /* @__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(","), A = (e) => e.toLowerCase().replace(/\.+$/, ""), xe = ["79.127.204.69", "152.233.49.59"], Se = (e) => {
171
+ }, x(e)), y = e, ve(e);
172
+ }, be = (e) => {
173
+ if (!y) return;
174
+ let t = x(y), n = D(e, t);
175
+ n && (O = e, w(y, n, t), he(n.hidden));
176
+ }, xe = /* @__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(","), A = (e) => e.toLowerCase().replace(/\.+$/, ""), Se = ["79.127.204.69", "152.233.49.59"], Ce = (e) => {
177
177
  let t;
178
178
  try {
179
179
  t = new URL(`http://${e.includes(":") && !e.startsWith("[") ? `[${e}]` : e}/`).hostname;
@@ -191,29 +191,29 @@ var n = 1e4, r = 16, i = (e) => {
191
191
  ].join(".");
192
192
  }
193
193
  return /^\d+\.\d+\.\d+\.\d+$/.test(t) ? t : void 0;
194
- }, Ce = (e) => {
195
- let t = A(e);
196
- return be.some((e) => t === e || t.endsWith(`.${e}`));
197
194
  }, we = (e) => {
198
- if (Ce(e)) return !0;
199
- let t = Se(A(e));
200
- return t !== void 0 && xe.includes(t);
195
+ let t = A(e);
196
+ return xe.some((e) => t === e || t.endsWith(`.${e}`));
201
197
  }, Te = (e) => {
198
+ if (we(e)) return !0;
199
+ let t = Ce(A(e));
200
+ return t !== void 0 && Se.includes(t);
201
+ }, Ee = (e) => {
202
202
  let t = typeof e == "string" ? e : e instanceof URL ? e.href : e.url, n;
203
203
  try {
204
204
  n = new URL(t);
205
205
  } catch {
206
206
  return;
207
207
  }
208
- if (we(n.hostname)) throw Error(`fetch refuses FKN platform domains (${n.hostname})`);
209
- }, Ee = /* @__PURE__ */ "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("."), De = () => {
208
+ if (Te(n.hostname)) throw Error(`fetch refuses FKN platform domains (${n.hostname})`);
209
+ }, De = /* @__PURE__ */ "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("."), Oe = () => {
210
210
  try {
211
211
  let e = globalThis.document?.featurePolicy?.features?.();
212
212
  return e === void 0 ? void 0 : new Set(e);
213
213
  } catch {
214
214
  return;
215
215
  }
216
- }, j = (e = !0, t = De()) => [...Ee, ...e ? ["cross-origin-isolated"] : []].filter((e) => t === void 0 || t.has(e)).join("; "), M = "https://fkn.app", N = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, P = typeof globalThis < "u" && globalThis.crossOriginIsolated === !0, F = `${M}/api${P ? "?coi=1" : ""}`, Oe = "fkn-api-port", ke = "fkn-api-port-ack", Ae = 2e3, je = () => {
216
+ }, j = (e = !0, t = Oe()) => [...De, ...e ? ["cross-origin-isolated"] : []].filter((e) => t === void 0 || t.has(e)).join("; "), M = "https://fkn.app", N = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, P = typeof globalThis < "u" && globalThis.crossOriginIsolated === !0, F = `${M}/api${P ? "?coi=1" : ""}`, ke = "fkn-api-port", Ae = "fkn-api-port-ack", je = 2e3, Me = () => {
217
217
  if (!N || typeof window > "u" || window.parent === window) return Promise.resolve(void 0);
218
218
  let e;
219
219
  try {
@@ -229,16 +229,16 @@ var n = 1e4, r = 16, i = (e) => {
229
229
  } catch {}
230
230
  n(e);
231
231
  }, i = (e) => {
232
- e.data?.type === ke && r(t.port1);
233
- }, a = setTimeout(() => r(void 0), Ae);
232
+ e.data?.type === Ae && r(t.port1);
233
+ }, a = setTimeout(() => r(void 0), je);
234
234
  t.port1.addEventListener("message", i), t.port1.start();
235
235
  try {
236
- e.postMessage({ type: Oe }, M, [t.port2]);
236
+ e.postMessage({ type: ke }, M, [t.port2]);
237
237
  } catch {
238
238
  r(void 0);
239
239
  }
240
240
  });
241
- }, I, Me = () => {
241
+ }, I, Ne = () => {
242
242
  if (I || !N) return I;
243
243
  let e = N.querySelector(`iframe[src="${F}"]`);
244
244
  if (e) I = e;
@@ -246,15 +246,15 @@ var n = 1e4, r = 16, i = (e) => {
246
246
  let e = N.createElement("iframe");
247
247
  e.setAttribute("allow", j(P)), e.src = F, N.body.appendChild(e), I = e;
248
248
  }
249
- return s(I, F, M), ve(I), I;
249
+ return s(I, F, M), ye(I), I;
250
250
  }, L = (async () => {
251
251
  if (!N) return;
252
- let e = await je();
252
+ let e = await Me();
253
253
  if (e) return {
254
254
  receive: e,
255
255
  emit: e
256
256
  };
257
- let t = Me();
257
+ let t = Ne();
258
258
  if (!t) return;
259
259
  await a(t);
260
260
  let n = t.contentWindow;
@@ -262,7 +262,7 @@ var n = 1e4, r = 16, i = (e) => {
262
262
  receive: window,
263
263
  emit: n
264
264
  } : void 0;
265
- })(), Ne = (e, { boundRetired: t = (e) => e } = {}) => {
265
+ })(), Pe = (e, { boundRetired: t = (e) => e } = {}) => {
266
266
  let n, r = 0, i = !1, a = () => {}, o = () => new Promise((e) => {
267
267
  a = e;
268
268
  }), s = o(), c = s, l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set(), d = 0, f = 0, p = () => {
@@ -338,7 +338,7 @@ var n = 1e4, r = 16, i = (e) => {
338
338
  i = !0, n = void 0, p();
339
339
  }
340
340
  };
341
- }, R = !1, z = /* @__PURE__ */ new Set(), B = () => R, Pe = () => {
341
+ }, R = !1, z = /* @__PURE__ */ new Set(), B = () => R, Fe = () => {
342
342
  if (!R) {
343
343
  R = !0;
344
344
  for (let e of [...z]) try {
@@ -348,13 +348,13 @@ var n = 1e4, r = 16, i = (e) => {
348
348
  }
349
349
  }, V = (e) => {
350
350
  R ? e() : z.add(e);
351
- }, Fe = typeof window < "u" || typeof self < "u", H = async () => {
351
+ }, Ie = typeof window < "u" || typeof self < "u", H = async () => {
352
352
  if (typeof window < "u") return L;
353
353
  if (typeof self < "u") return {
354
354
  receive: self,
355
355
  emit: self
356
356
  };
357
- }, U = "fkn-api", Ie = "fkn-api-window", Le = { async *[Symbol.asyncIterator]() {
357
+ }, U = "fkn-api", Le = "fkn-api-window", Re = { async *[Symbol.asyncIterator]() {
358
358
  let e = await H();
359
359
  if (!e) {
360
360
  await new Promise(() => {});
@@ -373,7 +373,7 @@ var n = 1e4, r = 16, i = (e) => {
373
373
  }
374
374
  }
375
375
  yield* t({}, {
376
- key: Ie,
376
+ key: Le,
377
377
  transport: e
378
378
  });
379
379
  } }, W = !1, G = H().then((t) => new Promise((n) => {
@@ -382,9 +382,9 @@ var n = 1e4, r = 16, i = (e) => {
382
382
  e(t.data, U) && (r.removeEventListener("message", i), W = !0, n());
383
383
  };
384
384
  r.addEventListener("message", i);
385
- })), K = Ne(Le, { boundRetired: (e) => Promise.race([e, G.then(() => Q(e, () => new Z()))]) });
385
+ })), K = Pe(Re, { boundRetired: (e) => Promise.race([e, G.then(() => Q(e, () => new Z()))]) });
386
386
  V(() => K.retire());
387
- var q = Promise.race([K.first, new Promise((e) => V(e))]).then(() => K.facade), J = 8e3, Re = 1e3, Y = !1, X = class extends Error {
387
+ var q = Promise.race([K.first, new Promise((e) => V(e))]).then(() => K.facade), J = 8e3, ze = 1e3, Y = !1, X = class extends Error {
388
388
  constructor(e, t) {
389
389
  super(`@fkn/lib: no broker connection within ${t}ms, so ${e} could not be requested`), this.name = "BrokerUnreachableError";
390
390
  }
@@ -393,20 +393,23 @@ var q = Promise.race([K.first, new Promise((e) => V(e))]).then(() => K.facade),
393
393
  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";
394
394
  }
395
395
  }, Q = (e, t) => {
396
- let n = Y ? Re : J;
396
+ let n = Y ? ze : J;
397
397
  return Promise.race([e, new Promise((e, r) => setTimeout(() => {
398
398
  Y = !0, r(t(n));
399
399
  }, n))]);
400
- }, ze = (e) => B() ? Q(K.routable().then(() => K.facade), (t) => W ? new Z() : new X(e, t)) : Q(q, (t) => new X(e, t));
400
+ }, Be = (e) => B() ? Q(K.routable().then(() => K.facade), (t) => W ? new Z() : new X(e, t)) : Q(q, (t) => new X(e, t));
401
401
  V(() => {
402
402
  G.then(() => {
403
403
  let e = setTimeout(() => console.error(new Z()), J);
404
404
  K.routable().then(() => clearTimeout(e));
405
405
  });
406
406
  });
407
- var $ = K.onEpoch, Be = K.current, Ve = K.lastCall, He = K.inFlight;
407
+ var $ = K.onEpoch, Ve = K.current, He = K.lastCall, Ue = K.inFlight;
408
408
  $((e) => {
409
- he() && e.overlay.setHost(ye, { exactClips: h() }).catch(() => {});
409
+ ge() && e.overlay.setHost(be, {
410
+ exactClips: g(),
411
+ colorScheme: p
412
+ }).catch(() => {});
410
413
  });
411
414
  //#endregion
412
- export { Ve as a, Be as c, Pe as d, L as f, He as i, Fe as l, j as m, X as n, q as o, Te as p, Z as r, ze as s, J as t, $ as u };
415
+ export { He as a, Ve as c, Fe as d, L as f, Ue as i, Ie as l, j as m, X as n, q as o, Ee as p, Z as r, Be as s, J as t, $ as u };
@@ -0,0 +1,3 @@
1
+ let e=require("osra");var t=1e4,n=16,r=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}},i=(e,i=t)=>new Promise(t=>{if(r(e))return t();let a=()=>{clearInterval(o),clearTimeout(s),e.removeEventListener(`load`,a),t()},o=setInterval(()=>{r(e)&&a()},n),s=setTimeout(a,i);e.addEventListener(`load`,a)}),a=5e3,o=(e,t,n)=>{let i=1,o,s=e.ownerDocument.defaultView,c=()=>{clearTimeout(o),o=setTimeout(()=>{if(e.isConnected){if(i>=4)return console.error(`FKN @fkn/lib: ${t} did not load in ${i} tries; reload the page`);i+=1,e.contentWindow?.location.replace(t)}},a)},l=t=>{t.source===e.contentWindow&&t.origin===n&&(clearTimeout(o),s?.removeEventListener(`message`,l),e.removeEventListener(`load`,c))};s?.addEventListener(`message`,l),e.addEventListener(`load`,c),r(e)&&c()},s=32,c=8,l=120,u=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),d=typeof CSS<`u`&&CSS.supports(`clip-path`,`polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)`),f=`light dark`,p=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`,f),t.setProperty(`z-index`,`2147483647`),e.setAttribute(`title`,`FKN`)},m=({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`},h=()=>u&&d,g=({x:e,y:t,width:n,height:r})=>[[e,t],[e+n,t],[e+n,t+r],[e,t+r],[e,t]],ee=e=>{let t=e[0];if(!t)return[];let n=g(t)[0],r=[];return e.forEach((t,i)=>{r.push(...g(t)),i>0&&i<e.length-1&&r.push(n)}),r},te=e=>`polygon(nonzero, ${ee(e).map(([e,t])=>`${e}px ${t}px`).join(`, `)})`,ne=({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})`},re=(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?ne(r,n):d&&e.length<=5&&!e.some(e=>e.radius)?te(e):`path('${e.map(m).join(``)}')`},ie=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,_=(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},v=null,y=null,b=e=>({width:e.offsetWidth||window.innerWidth,height:e.offsetHeight||window.innerHeight}),x=e=>{if(!y||!v||!ae(y,e.clientX,e.clientY))return;let t=document.elementFromPoint(e.clientX,e.clientY);if(!t||t===v)return;let n=_(e.deltaX,e.deltaMode,window.innerWidth),r=_(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=y!==null;y=e,t!==(e!==null)&&(e?window.addEventListener(`wheel`,x,{capture:!0,passive:!1}):window.removeEventListener(`wheel`,x,{capture:!0}))},S=0,C=e=>{if(e===S)return;S=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`))},w=(e,{modal:t,rects:n,inset:r},i)=>{if(C(r),!u){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 a=re(n,t,i),o=a===`none`||CSS.supports(`clip-path`,a)?a:`inset(100%)`;e.style.setProperty(`clip-path`,o,`important`),le(t||o!==a?null:ie(n))},ue=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),l)},de=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},fe=(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=de(e.radius);return{x:c,y:l,width:u-c,height:d-l,...f?{radius:f}:{}}},T={"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`},pe=e=>Array.isArray(e)?e.slice(0,c).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 T)||r!==`full`&&r!==`liveness`?[]:[{kind:t,cause:n,level:r}]}):[],E=new Set,me=e=>{for(let{kind:t,cause:n,level:r}of e)E.has(t)||(E.add(t),console.error(`[FKN] The FKN ${JSON.stringify(t)} is not visible on this page: ${T[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.`:``)))},D=(e,t)=>{if(typeof e!=`object`||!e)return null;let n=e,r=(Array.isArray(n.rects)?n.rects.slice(0,s):[]).map(e=>fe(e,t)).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:n.modal===!0,rects:r,hidden:pe(n.hidden),inset:ue(n.inset)}},he=()=>v!==null,O=null,k=null,ge=()=>{if(!v||O===null)return;let e=b(v),t=D(O,e);t&&w(v,t,e)},_e=e=>{typeof ResizeObserver<`u`&&(k??=new ResizeObserver(ge),k.disconnect(),k.observe(e))},ve=e=>{p(e),w(e,{modal:!1,rects:[],hidden:[],inset:0},b(e)),v=e,_e(e)},ye=e=>{if(!v)return;let t=b(v),n=D(e,t);n&&(O=e,w(v,n,t),me(n.hidden))},be=`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(`,`),A=e=>e.toLowerCase().replace(/\.+$/,``),xe=[`79.127.204.69`,`152.233.49.59`],Se=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},Ce=e=>{let t=A(e);return be.some(e=>t===e||t.endsWith(`.${e}`))},we=e=>{if(Ce(e))return!0;let t=Se(A(e));return t!==void 0&&xe.includes(t)},Te=e=>{let t=typeof e==`string`?e:e instanceof URL?e.href:e.url,n;try{n=new URL(t)}catch{return}if(we(n.hostname))throw Error(`fetch refuses FKN platform domains (${n.hostname})`)},Ee=`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(`.`),De=()=>{try{let e=globalThis.document?.featurePolicy?.features?.();return e===void 0?void 0:new Set(e)}catch{return}},j=(e=!0,t=De())=>[...Ee,...e?[`cross-origin-isolated`]:[]].filter(e=>t===void 0||t.has(e)).join(`; `),M=`https://fkn.app`,N=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,P=typeof globalThis<`u`&&globalThis.crossOriginIsolated===!0,F=`${M}/api${P?`?coi=1`:``}`,Oe=`fkn-api-port`,ke=`fkn-api-port-ack`,Ae=2e3,je=()=>{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===ke&&r(t.port1)},a=setTimeout(()=>r(void 0),Ae);t.port1.addEventListener(`message`,i),t.port1.start();try{e.postMessage({type:Oe},M,[t.port2])}catch{r(void 0)}})},I,Me=()=>{if(I||!N)return I;let e=N.querySelector(`iframe[src="${F}"]`);if(e)I=e;else{let e=N.createElement(`iframe`);e.setAttribute(`allow`,j(P)),e.src=F,N.body.appendChild(e),I=e}return o(I,F,M),ve(I),I},L=(async()=>{if(!N)return;let e=await je();if(e)return{receive:e,emit:e};let t=Me();if(!t)return;await i(t);let n=t.contentWindow;return n?{receive:window,emit:n}:void 0})(),Ne=(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,Pe=()=>{if(!R){R=!0;for(let e of[...z])try{e()}catch{}z.clear()}},V=e=>{R?e():z.add(e)},Fe=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`,Ie=`fkn-api-window`,Le={async*[Symbol.asyncIterator](){let t=await H();if(!t){await new Promise(()=>{});return}if(!B()){let n=new AbortController;V(()=>n.abort());for await(let r of(0,e.expose)({},{key:U,transport:t,unregisterSignal:n.signal})){if(n.signal.aborted)break;yield r}}yield*(0,e.expose)({},{key:Ie,transport:t})}},W=!1,G=H().then(t=>new Promise(n=>{if(!t)return;let{receive:r}=t,i=t=>{(0,e.checkOsraMessageKey)(t.data,U)&&(r.removeEventListener(`message`,i),W=!0,n())};r.addEventListener(`message`,i)})),K=Ne(Le,{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,Re=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?Re:J;return Promise.race([e,new Promise((e,r)=>setTimeout(()=>{Y=!0,r(t(n))},n))])},ze=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,Be=K.current,Ve=K.lastCall,He=K.inFlight;$(e=>{he()&&e.overlay.setHost(ye,{exactClips:h(),colorScheme:f}).catch(()=>{})}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return $}});
package/api.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./api-BmaUJUUp.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-ibGqkmtA.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;