@fkn/lib 0.9.38 → 0.9.39

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 (69) hide show
  1. package/account.cjs +1 -1
  2. package/account.js +1 -1
  3. package/{api-DF4nHz2Q.d.ts → api-BxXnHxbd.d.ts} +7 -1
  4. package/{api-CtiKFcK3.js → api-Dp-2AT3u.js} +84 -77
  5. package/api-jOTOA-5n.cjs +3 -0
  6. package/api.cjs +1 -1
  7. package/api.d.ts +2 -2
  8. package/api.js +1 -1
  9. package/cloud/dns.d.ts +1 -1
  10. package/cloud/fetch.cjs +1 -1
  11. package/cloud/fetch.d.ts +1 -1
  12. package/cloud/fetch.js +1 -1
  13. package/cloud/fs.cjs +1 -1
  14. package/cloud/fs.js +1 -1
  15. package/cloud/net.d.ts +1 -1
  16. package/{cloud-Bfc6rkF2.d.ts → cloud-B8QYSmW3.d.ts} +3 -3
  17. package/cloud-BZIJFvPF.cjs +1 -0
  18. package/{cloud-EfyYfgVT.js → cloud-oMACx7NL.js} +75 -75
  19. package/cloud.cjs +1 -1
  20. package/cloud.d.ts +3 -3
  21. package/cloud.js +2 -2
  22. package/{contract-InuLU8bI.d.ts → contract-sDmsw-9f.d.ts} +44 -2
  23. package/contract.cjs +1 -1
  24. package/contract.d.ts +2 -2
  25. package/contract.js +6 -2
  26. package/dgram.cjs +1 -1
  27. package/dgram.d.ts +2 -2
  28. package/dgram.js +1 -1
  29. package/dns.cjs +1 -1
  30. package/dns.d.ts +1 -1
  31. package/dns.js +1 -1
  32. package/{extension-B7jDaJVp.cjs → extension-Bl5ZNj0d.cjs} +1 -1
  33. package/{extension-sNRjVbET.js → extension-ChZyZgAL.js} +3 -3
  34. package/{extension-Bm5x5R4R.d.ts → extension-DMU-CwMw.d.ts} +1 -1
  35. package/extension.cjs +1 -1
  36. package/extension.d.ts +2 -2
  37. package/extension.js +2 -2
  38. package/fs/promises.cjs +1 -1
  39. package/fs/promises.js +1 -1
  40. package/{fs-D8RCGFNc.cjs → fs-CaQFRiIT.cjs} +1 -1
  41. package/{fs-BvNZePtN.js → fs-D3IsGdnN.js} +1 -1
  42. package/fs.cjs +1 -1
  43. package/fs.js +1 -1
  44. package/http.d.ts +1 -1
  45. package/{index-DiOxvYoa.d.ts → index-D2CA-NX5.d.ts} +6 -0
  46. package/index.cjs +1 -1
  47. package/index.d.ts +4 -4
  48. package/index.js +5 -5
  49. package/{lib-FD1Ssqjt.js → lib-BlyFPeSv.js} +16 -11
  50. package/lib-tQKlXzhv.cjs +53 -0
  51. package/{net-DnXxFGm8.d.ts → net-Qmt9L_7t.d.ts} +2 -2
  52. package/net.cjs +1 -1
  53. package/net.d.ts +1 -1
  54. package/net.js +1 -1
  55. package/package.json +1 -1
  56. package/packages.cjs +1 -1
  57. package/packages.d.ts +1 -1
  58. package/packages.js +1 -1
  59. package/{proxy-BkaVTZAf.d.ts → proxy-CxRQLGNG.d.ts} +2 -2
  60. package/{proxy-DDwY3AVG.js → proxy-DMTdQ4dN.js} +1 -1
  61. package/{proxy-CYcaW5ew.cjs → proxy-DjoPtJH9.cjs} +1 -1
  62. package/rooms.cjs +1 -1
  63. package/rooms.d.ts +16 -3
  64. package/rooms.js +111 -97
  65. package/{storage-dSi2dUKx.cjs → storage-BJd-mWHE.cjs} +1 -1
  66. package/{storage-BbcnDCnc.js → storage-DSvL-t80.js} +1 -1
  67. package/api-Djf-XdZ4.cjs +0 -3
  68. package/cloud-Beg4iCRU.cjs +0 -1
  69. package/lib-DYKLnpWs.cjs +0 -53
package/account.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-Djf-XdZ4.cjs");var n=e.t({info:()=>a,login:()=>r,logout:()=>i,onChange:()=>u}),r=async()=>typeof window>`u`?!1:(await t.a).account.login(location.origin).catch(()=>!1),i=async()=>{typeof window<`u`&&await(await t.a).account.logout().catch(()=>{})},a=async()=>{if(typeof window>`u`)return null;let e=await t.a.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},o=new Set,s=()=>{for(let e of[...o])try{e()}catch{}},c=0,l=()=>{let e=t.s();e&&o.size!==0&&c!==e.epoch&&(c=e.epoch,Promise.resolve(e.remote.account.onChange(s)).catch(()=>{c===e.epoch&&(c=0)}))};typeof window<`u`&&t.l(l);var u=async e=>typeof window>`u`?()=>{}:(o.add(e),l(),()=>{o.delete(e)});exports.info=a,exports.login=r,exports.logout=i,exports.onChange=u,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-jOTOA-5n.cjs");var n=e.t({info:()=>a,login:()=>r,logout:()=>i,onChange:()=>u}),r=async()=>typeof window>`u`?!1:(await t.a).account.login(location.origin).catch(()=>!1),i=async()=>{typeof window<`u`&&await(await t.a).account.logout().catch(()=>{})},a=async()=>{if(typeof window>`u`)return null;let e=await t.a.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},o=new Set,s=()=>{for(let e of[...o])try{e()}catch{}},c=0,l=()=>{let e=t.s();e&&o.size!==0&&c!==e.epoch&&(c=e.epoch,Promise.resolve(e.remote.account.onChange(s)).catch(()=>{c===e.epoch&&(c=0)}))};typeof window<`u`&&t.l(l);var u=async e=>typeof window>`u`?()=>{}:(o.add(e),l(),()=>{o.delete(e)});exports.info=a,exports.login=r,exports.logout=i,exports.onChange=u,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
package/account.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { a as t, l as n, s as r } from "./api-CtiKFcK3.js";
2
+ import { a as t, l as n, s as r } from "./api-Dp-2AT3u.js";
3
3
  //#region src/account.ts
4
4
  var i = /* @__PURE__ */ e({
5
5
  info: () => s,
@@ -1,5 +1,5 @@
1
1
  import { o as TcpSocketOption, v as UdpSocketOption } from "./wire-Gbo-D74t.js";
2
- import { A as OverlayState, C as InstallOptions, Ct as UdpSocketOptions, F as PickOptions, H as Resolvers, I as Placement, J as RoomEvent, N as PackagesErrorCode, R as ProxyFetchInit, St as UdpDatagram, T as IpFamily, W as RoomClaimOptions, X as RoomJoinOptions, Z as RoomMailbox, bt as TcpSocketOptions, c as ConflictChoice, d as ConnectAvailability, et as RoomOpenOptions, f as ConnectOptions, j as PackageQuery, kt as WriteData, l as ConflictRequest, o as AdoptRequest, rt as RoomsErrorCode, s as AdoptState, tt as RoomPermission, v as FrameConsentAnswer, vt as TcpSocketListenerOptions, y as FrameConsentRequest, z as ProxyFetchInput } from "./contract-InuLU8bI.js";
2
+ import { A as OverlayState, At as WriteData, C as InstallOptions, Ct as UdpDatagram, F as PickOptions, G as RoomClaimOptions, I as Placement, N as PackagesErrorCode, Q as RoomMailbox, R as ProxyFetchInit, T as IpFamily, U as Resolvers, Y as RoomEvent, Z as RoomJoinOptions, c as ConflictChoice, d as ConnectAvailability, f as ConnectOptions, it as RoomsErrorCode, j as PackageQuery, l as ConflictRequest, nt as RoomPermission, o as AdoptRequest, s as AdoptState, tt as RoomOpenOptions, v as FrameConsentAnswer, wt as UdpSocketOptions, xt as TcpSocketOptions, y as FrameConsentRequest, yt as TcpSocketListenerOptions, z as ProxyFetchInput } from "./contract-sDmsw-9f.js";
3
3
  import { Remote } from "osra";
4
4
  //#region src/api-epochs.d.ts
5
5
  type EpochListener<T> = (remote: T, epoch: number) => void;
@@ -298,6 +298,7 @@ declare const onApiEpoch: (listener: EpochListener<{
298
298
  owner: string;
299
299
  claimed: boolean;
300
300
  mailbox: RoomMailbox | null;
301
+ temporaryClaims?: true;
301
302
  defaults: () => Promise<{
302
303
  readonly send: boolean;
303
304
  readonly receive: boolean;
@@ -428,6 +429,7 @@ declare const onApiEpoch: (listener: EpochListener<{
428
429
  owner: string;
429
430
  claimed: boolean;
430
431
  mailbox: RoomMailbox | null;
432
+ temporaryClaims?: true;
431
433
  defaults: () => Promise<{
432
434
  readonly send: boolean;
433
435
  readonly receive: boolean;
@@ -558,6 +560,7 @@ declare const onApiEpoch: (listener: EpochListener<{
558
560
  owner: string;
559
561
  claimed: boolean;
560
562
  mailbox: RoomMailbox | null;
563
+ temporaryClaims?: true;
561
564
  defaults: () => Promise<{
562
565
  readonly send: boolean;
563
566
  readonly receive: boolean;
@@ -1011,6 +1014,7 @@ declare const currentApiEpoch: () => {
1011
1014
  owner: string;
1012
1015
  claimed: boolean;
1013
1016
  mailbox: RoomMailbox | null;
1017
+ temporaryClaims?: true;
1014
1018
  defaults: () => Promise<{
1015
1019
  readonly send: boolean;
1016
1020
  readonly receive: boolean;
@@ -1141,6 +1145,7 @@ declare const currentApiEpoch: () => {
1141
1145
  owner: string;
1142
1146
  claimed: boolean;
1143
1147
  mailbox: RoomMailbox | null;
1148
+ temporaryClaims?: true;
1144
1149
  defaults: () => Promise<{
1145
1150
  readonly send: boolean;
1146
1151
  readonly receive: boolean;
@@ -1271,6 +1276,7 @@ declare const currentApiEpoch: () => {
1271
1276
  owner: string;
1272
1277
  claimed: boolean;
1273
1278
  mailbox: RoomMailbox | null;
1279
+ temporaryClaims?: true;
1274
1280
  defaults: () => Promise<{
1275
1281
  readonly send: boolean;
1276
1282
  readonly receive: boolean;
@@ -59,51 +59,51 @@ var t = 1e4, n = 16, r = (e) => {
59
59
  width: Math.max(...e.map((e) => e.x + e.width)) - t,
60
60
  height: Math.max(...e.map((e) => e.y + e.height)) - n
61
61
  };
62
- }, te = (e, t, n) => t >= e.x && t < e.x + e.width && n >= e.y && n < e.y + e.height, ne = 16, v = (e, t, n) => t === 1 ? e * ne : t === 2 ? e * n : e, y = (e, t, n) => {
62
+ }, te = (e, t, n) => t >= e.x && t < e.x + e.width && n >= e.y && n < e.y + e.height, ne = 16, v = (e, t, n) => t === 1 ? e * ne : t === 2 ? e * n : e, re = (e, t, n) => {
63
63
  let r = getComputedStyle(e);
64
64
  return n !== 0 && /auto|scroll/.test(r.overflowY) && e.scrollHeight > e.clientHeight ? !0 : t !== 0 && /auto|scroll/.test(r.overflowX) && e.scrollWidth > e.clientWidth;
65
- }, re = (e, t, n) => {
66
- for (let r = e; r; r = r.parentElement) if (y(r, t, n)) return r;
65
+ }, ie = (e, t, n) => {
66
+ for (let r = e; r; r = r.parentElement) if (re(r, t, n)) return r;
67
67
  return document.scrollingElement;
68
- }, b = null, x = null, S = (e) => ({
68
+ }, y = null, b = null, x = (e) => ({
69
69
  width: e.offsetWidth || window.innerWidth,
70
70
  height: e.offsetHeight || window.innerHeight
71
- }), C = (e) => {
72
- if (!x || !b || !te(x, e.clientX, e.clientY)) return;
71
+ }), S = (e) => {
72
+ if (!b || !y || !te(b, e.clientX, e.clientY)) return;
73
73
  let t = document.elementFromPoint(e.clientX, e.clientY);
74
- if (!t || t === b) return;
75
- let n = v(e.deltaX, e.deltaMode, window.innerWidth), r = v(e.deltaY, e.deltaMode, window.innerHeight), i = re(t, n, r);
74
+ if (!t || t === y) return;
75
+ let n = v(e.deltaX, e.deltaMode, window.innerWidth), r = v(e.deltaY, e.deltaMode, window.innerHeight), i = ie(t, n, r);
76
76
  i && (i.scrollBy({
77
77
  left: n,
78
78
  top: r,
79
79
  behavior: "instant"
80
80
  }), e.cancelable && e.preventDefault());
81
- }, ie = (e) => {
82
- let t = x !== null;
83
- x = e, t !== (e !== null) && (e ? window.addEventListener("wheel", C, {
81
+ }, ae = (e) => {
82
+ let t = b !== null;
83
+ b = e, t !== (e !== null) && (e ? window.addEventListener("wheel", S, {
84
84
  capture: !0,
85
85
  passive: !1
86
- }) : window.removeEventListener("wheel", C, { capture: !0 }));
87
- }, w = 0, ae = (e) => {
88
- if (e === w) return;
89
- w = e;
86
+ }) : window.removeEventListener("wheel", S, { capture: !0 }));
87
+ }, C = 0, oe = (e) => {
88
+ if (e === C) return;
89
+ C = e;
90
90
  let t = document.documentElement.style;
91
91
  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"));
92
- }, T = (e, { modal: t, rects: n, inset: r }, i) => {
93
- if (ae(r), !c) {
92
+ }, w = (e, { modal: t, rects: n, inset: r }, i) => {
93
+ if (oe(r), !c) {
94
94
  let r = t || n.length > 0;
95
95
  e.style.setProperty("pointer-events", r ? "auto" : "none", "important"), e.style.setProperty("visibility", r ? "visible" : "hidden", "important");
96
96
  return;
97
97
  }
98
98
  let a = g(n, t, i), o = a === "none" || CSS.supports("clip-path", a) ? a : "inset(100%)";
99
- e.style.setProperty("clip-path", o, "important"), ie(t || o !== a ? null : _(n));
100
- }, oe = (e) => {
99
+ e.style.setProperty("clip-path", o, "important"), ae(t || o !== a ? null : _(n));
100
+ }, se = (e) => {
101
101
  if (typeof e != "object" || !e) return 0;
102
102
  let { top: t } = e;
103
103
  return typeof t != "number" || !Number.isFinite(t) || t <= 0 ? 0 : Math.min(Math.round(t), s);
104
- }, se = (e) => {
104
+ }, ce = (e) => {
105
105
  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;
106
- }, ce = (e, t) => {
106
+ }, le = (e, t) => {
107
107
  if (typeof e != "object" || !e) return null;
108
108
  let { x: n, y: r, width: i, height: a } = e;
109
109
  if (![
@@ -112,7 +112,7 @@ var t = 1e4, n = 16, r = (e) => {
112
112
  i,
113
113
  a
114
114
  ].every((e) => typeof e == "number" && Number.isFinite(e))) return null;
115
- 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 = se(e.radius);
115
+ 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 = ce(e.radius);
116
116
  return {
117
117
  x: c,
118
118
  y: l,
@@ -120,64 +120,71 @@ var t = 1e4, n = 16, r = (e) => {
120
120
  height: d - l,
121
121
  ...f ? { radius: f } : {}
122
122
  };
123
- }, E = {
123
+ }, T = {
124
124
  "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",
125
125
  clipped: "it is clipped away or positioned outside the viewport",
126
126
  "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"
127
- }, le = (e) => Array.isArray(e) ? e.slice(0, o).flatMap((e) => {
127
+ }, ue = (e) => Array.isArray(e) ? e.slice(0, o).flatMap((e) => {
128
128
  if (typeof e != "object" || !e) return [];
129
129
  let { kind: t, cause: n, level: r } = e;
130
- return typeof t != "string" || t.length > 40 || typeof n != "string" || !(n in E) || r !== "full" && r !== "liveness" ? [] : [{
130
+ return typeof t != "string" || t.length > 40 || typeof n != "string" || !(n in T) || r !== "full" && r !== "liveness" ? [] : [{
131
131
  kind: t,
132
132
  cause: n,
133
133
  level: r
134
134
  }];
135
- }) : [], D = /* @__PURE__ */ new Set(), ue = (e) => {
136
- 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.
135
+ }) : [], E = /* @__PURE__ */ new Set(), de = (e) => {
136
+ 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.
137
137
  @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." : "")));
138
- }, O = (e, t) => {
138
+ }, D = (e, t) => {
139
139
  if (typeof e != "object" || !e) return null;
140
- let n = e, r = (Array.isArray(n.rects) ? n.rects.slice(0, a) : []).map((e) => ce(e, t)).filter((e) => e !== null && e.width > 0 && e.height > 0);
140
+ let n = e, r = (Array.isArray(n.rects) ? n.rects.slice(0, a) : []).map((e) => le(e, t)).filter((e) => e !== null && e.width > 0 && e.height > 0);
141
141
  return {
142
142
  modal: n.modal === !0,
143
143
  rects: r,
144
- hidden: le(n.hidden),
145
- inset: oe(n.inset)
144
+ hidden: ue(n.hidden),
145
+ inset: se(n.inset)
146
146
  };
147
- }, k = () => b !== null, A = null, j = null, M = () => {
148
- if (!b || A === null) return;
149
- let e = S(b), t = O(A, e);
150
- t && T(b, t, e);
151
- }, N = (e) => {
152
- typeof ResizeObserver < "u" && (j ??= new ResizeObserver(M), j.disconnect(), j.observe(e));
153
- }, P = (e) => {
154
- u(e), T(e, {
147
+ }, fe = () => y !== null, O = null, k = null, A = () => {
148
+ if (!y || O === null) return;
149
+ let e = x(y), t = D(O, e);
150
+ t && w(y, t, e);
151
+ }, j = (e) => {
152
+ typeof ResizeObserver < "u" && (k ??= new ResizeObserver(A), k.disconnect(), k.observe(e));
153
+ }, M = (e) => {
154
+ u(e), w(e, {
155
155
  modal: !1,
156
156
  rects: [],
157
157
  hidden: [],
158
158
  inset: 0
159
- }, S(e)), b = e, N(e);
160
- }, F = (e) => {
161
- if (!b) return;
162
- let t = S(b), n = O(e, t);
163
- n && (A = e, T(b, n, t), ue(n.hidden));
164
- }, I = [
159
+ }, x(e)), y = e, j(e);
160
+ }, N = (e) => {
161
+ if (!y) return;
162
+ let t = x(y), n = D(e, t);
163
+ n && (O = e, w(y, n, t), de(n.hidden));
164
+ }, P = [
165
165
  "fkn.app",
166
166
  "fkn.dev",
167
167
  "sdbx.app"
168
- ], L = (e) => e.replace(/\.+$/, ""), R = (e) => {
169
- let t = L(e);
170
- return I.some((e) => t === e || t.endsWith(`.${e}`));
171
- }, z = (e) => {
168
+ ], F = (e) => e.replace(/\.+$/, ""), I = (e) => {
169
+ let t = F(e);
170
+ return P.some((e) => t === e || t.endsWith(`.${e}`));
171
+ }, L = (e) => {
172
172
  let t = typeof e == "string" ? e : e instanceof URL ? e.href : e.url, n;
173
173
  try {
174
174
  n = new URL(t);
175
175
  } catch {
176
176
  return;
177
177
  }
178
- if (R(n.hostname)) throw Error(`fetch refuses FKN platform domains (${n.hostname})`);
179
- }, B = /* @__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("."), V = (e = !0) => [...B, ...e ? ["cross-origin-isolated"] : []].join("; "), H = "https://fkn.app", U = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, W = typeof globalThis < "u" && globalThis.crossOriginIsolated === !0, G = `${H}/api${W ? "?coi=1" : ""}`, de = "fkn-api-port", fe = "fkn-api-port-ack", pe = 2e3, me = () => {
180
- if (!U || typeof window > "u" || window.parent === window) return Promise.resolve(void 0);
178
+ if (I(n.hostname)) throw Error(`fetch refuses FKN platform domains (${n.hostname})`);
179
+ }, R = /* @__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("."), z = () => {
180
+ try {
181
+ let e = globalThis.document?.featurePolicy?.features?.();
182
+ return e === void 0 ? void 0 : new Set(e);
183
+ } catch {
184
+ return;
185
+ }
186
+ }, B = (e = !0, t = z()) => [...R, ...e ? ["cross-origin-isolated"] : []].filter((e) => t === void 0 || t.has(e)).join("; "), V = "https://fkn.app", H = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, U = typeof globalThis < "u" && globalThis.crossOriginIsolated === !0, W = `${V}/api${U ? "?coi=1" : ""}`, pe = "fkn-api-port", me = "fkn-api-port-ack", he = 2e3, ge = () => {
187
+ if (!H || typeof window > "u" || window.parent === window) return Promise.resolve(void 0);
181
188
  let e;
182
189
  try {
183
190
  e = window.parent;
@@ -192,32 +199,32 @@ var t = 1e4, n = 16, r = (e) => {
192
199
  } catch {}
193
200
  n(e);
194
201
  }, i = (e) => {
195
- e.data?.type === fe && r(t.port1);
196
- }, a = setTimeout(() => r(void 0), pe);
202
+ e.data?.type === me && r(t.port1);
203
+ }, a = setTimeout(() => r(void 0), he);
197
204
  t.port1.addEventListener("message", i), t.port1.start();
198
205
  try {
199
- e.postMessage({ type: de }, H, [t.port2]);
206
+ e.postMessage({ type: pe }, V, [t.port2]);
200
207
  } catch {
201
208
  r(void 0);
202
209
  }
203
210
  });
204
- }, K, he = () => {
205
- if (K || !U) return K;
206
- let e = U.querySelector(`iframe[src="${G}"]`);
207
- if (e) K = e;
211
+ }, G, _e = () => {
212
+ if (G || !H) return G;
213
+ let e = H.querySelector(`iframe[src="${W}"]`);
214
+ if (e) G = e;
208
215
  else {
209
- let e = U.createElement("iframe");
210
- e.setAttribute("allow", V(W)), e.src = G, U.body.appendChild(e), K = e;
216
+ let e = H.createElement("iframe");
217
+ e.setAttribute("allow", B(U)), e.src = W, H.body.appendChild(e), G = e;
211
218
  }
212
- return P(K), K;
213
- }, q = (async () => {
214
- if (!U) return;
215
- let e = await me();
219
+ return M(G), G;
220
+ }, K = (async () => {
221
+ if (!H) return;
222
+ let e = await ge();
216
223
  if (e) return {
217
224
  receive: e,
218
225
  emit: e
219
226
  };
220
- let t = he();
227
+ let t = _e();
221
228
  if (!t) return;
222
229
  await i(t);
223
230
  let n = t.contentWindow;
@@ -225,7 +232,7 @@ var t = 1e4, n = 16, r = (e) => {
225
232
  receive: window,
226
233
  emit: n
227
234
  } : void 0;
228
- })(), ge = (e) => {
235
+ })(), ve = (e) => {
229
236
  let t, n = () => {}, r = new Promise((e) => {
230
237
  n = e;
231
238
  }), i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set(), o = 0, s = 0;
@@ -294,14 +301,14 @@ var t = 1e4, n = 16, r = (e) => {
294
301
  lastCall: () => o,
295
302
  inFlight: () => s
296
303
  };
297
- }, _e = typeof window < "u" || typeof self < "u", ve = async () => {
298
- if (typeof window < "u") return q;
304
+ }, ye = typeof window < "u" || typeof self < "u", q = async () => {
305
+ if (typeof window < "u") return K;
299
306
  if (typeof self < "u") return {
300
307
  receive: self,
301
308
  emit: self
302
309
  };
303
- }, J = ge({ async *[Symbol.asyncIterator]() {
304
- let t = await ve();
310
+ }, J = ve({ async *[Symbol.asyncIterator]() {
311
+ let t = await q();
305
312
  if (!t) {
306
313
  await new Promise(() => {});
307
314
  return;
@@ -310,18 +317,18 @@ var t = 1e4, n = 16, r = (e) => {
310
317
  key: "fkn-api",
311
318
  transport: t
312
319
  });
313
- } }), Y = J.first.then(() => J.facade), X = 8e3, ye = 1e3, Z = !1, Q = class extends Error {
320
+ } }), Y = J.first.then(() => J.facade), X = 8e3, be = 1e3, Z = !1, Q = class extends Error {
314
321
  constructor(e, t) {
315
322
  super(`@fkn/lib: no broker connection within ${t}ms, so ${e} could not be requested`), this.name = "BrokerUnreachableError";
316
323
  }
317
- }, be = (e) => {
318
- let t = Z ? ye : X;
324
+ }, xe = (e) => {
325
+ let t = Z ? be : X;
319
326
  return Promise.race([Y, new Promise((n, r) => setTimeout(() => {
320
327
  Z = !0, r(new Q(e, t));
321
328
  }, t))]);
322
- }, $ = J.onEpoch, xe = J.current, Se = J.lastCall, Ce = J.inFlight;
329
+ }, $ = J.onEpoch, Se = J.current, Ce = J.lastCall, we = J.inFlight;
323
330
  $((e) => {
324
- k() && e.overlay.setHost(F, { exactClips: f() }).catch(() => {});
331
+ fe() && e.overlay.setHost(N, { exactClips: f() }).catch(() => {});
325
332
  });
326
333
  //#endregion
327
- export { Y as a, _e as c, z as d, Se as i, $ as l, Q as n, be as o, Ce as r, xe as s, X as t, q as u };
334
+ export { Y as a, ye as c, L as d, B as f, Ce as i, $ as l, Q as n, xe as o, we as r, Se as s, X as t, K 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=32,o=8,s=120,c=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),l=typeof CSS<`u`&&CSS.supports(`clip-path`,`polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)`),u=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`,`normal`),t.setProperty(`z-index`,`2147483647`),e.setAttribute(`title`,`FKN`)},d=({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`},f=()=>c&&l,p=({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=p(t)[0],r=[];return e.forEach((t,i)=>{r.push(...p(t)),i>0&&i<e.length-1&&r.push(n)}),r},m=e=>`polygon(nonzero, ${ee(e).map(([e,t])=>`${e}px ${t}px`).join(`, `)})`,h=({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})`},g=(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?h(r,n):l&&e.length<=5&&!e.some(e=>e.radius)?m(e):`path('${e.map(d).join(``)}')`},_=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}},te=(e,t,n)=>t>=e.x&&t<e.x+e.width&&n>=e.y&&n<e.y+e.height,ne=16,v=(e,t,n)=>t===1?e*ne:t===2?e*n:e,re=(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},ie=(e,t,n)=>{for(let r=e;r;r=r.parentElement)if(re(r,t,n))return r;return document.scrollingElement},y=null,b=null,x=e=>({width:e.offsetWidth||window.innerWidth,height:e.offsetHeight||window.innerHeight}),S=e=>{if(!b||!y||!te(b,e.clientX,e.clientY))return;let t=document.elementFromPoint(e.clientX,e.clientY);if(!t||t===y)return;let n=v(e.deltaX,e.deltaMode,window.innerWidth),r=v(e.deltaY,e.deltaMode,window.innerHeight),i=ie(t,n,r);i&&(i.scrollBy({left:n,top:r,behavior:`instant`}),e.cancelable&&e.preventDefault())},ae=e=>{let t=b!==null;b=e,t!==(e!==null)&&(e?window.addEventListener(`wheel`,S,{capture:!0,passive:!1}):window.removeEventListener(`wheel`,S,{capture:!0}))},C=0,oe=e=>{if(e===C)return;C=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(oe(r),!c){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=g(n,t,i),o=a===`none`||CSS.supports(`clip-path`,a)?a:`inset(100%)`;e.style.setProperty(`clip-path`,o,`important`),ae(t||o!==a?null:_(n))},se=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),s)},ce=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},le=(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=ce(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`},ue=e=>Array.isArray(e)?e.slice(0,o).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,de=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,a):[]).map(e=>le(e,t)).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:n.modal===!0,rects:r,hidden:ue(n.hidden),inset:se(n.inset)}},fe=()=>y!==null,O=null,k=null,A=()=>{if(!y||O===null)return;let e=x(y),t=D(O,e);t&&w(y,t,e)},j=e=>{typeof ResizeObserver<`u`&&(k??=new ResizeObserver(A),k.disconnect(),k.observe(e))},M=e=>{u(e),w(e,{modal:!1,rects:[],hidden:[],inset:0},x(e)),y=e,j(e)},N=e=>{if(!y)return;let t=x(y),n=D(e,t);n&&(O=e,w(y,n,t),de(n.hidden))},P=[`fkn.app`,`fkn.dev`,`sdbx.app`],F=e=>e.replace(/\.+$/,``),I=e=>{let t=F(e);return P.some(e=>t===e||t.endsWith(`.${e}`))},L=e=>{let t=typeof e==`string`?e:e instanceof URL?e.href:e.url,n;try{n=new URL(t)}catch{return}if(I(n.hostname))throw Error(`fetch refuses FKN platform domains (${n.hostname})`)},R=`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(`.`),z=()=>{try{let e=globalThis.document?.featurePolicy?.features?.();return e===void 0?void 0:new Set(e)}catch{return}},B=(e=!0,t=z())=>[...R,...e?[`cross-origin-isolated`]:[]].filter(e=>t===void 0||t.has(e)).join(`; `),V=`https://fkn.app`,H=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,U=typeof globalThis<`u`&&globalThis.crossOriginIsolated===!0,W=`${V}/api${U?`?coi=1`:``}`,pe=`fkn-api-port`,me=`fkn-api-port-ack`,he=2e3,ge=()=>{if(!H||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===me&&r(t.port1)},a=setTimeout(()=>r(void 0),he);t.port1.addEventListener(`message`,i),t.port1.start();try{e.postMessage({type:pe},V,[t.port2])}catch{r(void 0)}})},G,_e=()=>{if(G||!H)return G;let e=H.querySelector(`iframe[src="${W}"]`);if(e)G=e;else{let e=H.createElement(`iframe`);e.setAttribute(`allow`,B(U)),e.src=W,H.body.appendChild(e),G=e}return M(G),G},K=(async()=>{if(!H)return;let e=await ge();if(e)return{receive:e,emit:e};let t=_e();if(!t)return;await i(t);let n=t.contentWindow;return n?{receive:window,emit:n}:void 0})(),ve=e=>{let t,n=()=>{},r=new Promise(e=>{n=e}),i=new Set,a=new Set,o=0,s=0;(async()=>{for await(let r of e){let e=(t?.epoch??0)+1;t={remote:r,epoch:e},e===1&&n(r);let o=[...a];a.clear();let s=Error(`FKN: the broker was replaced while this call was pending; retry it`);for(let e of o)try{e(s)}catch{}for(let t of[...i])try{t(r,e)}catch{}}})().catch(()=>{});let c=async(e,n)=>{let i=t?.remote??await r;for(let t of e.slice(0,-1))i=i[t];let c=i[e[e.length-1]??``];o=Date.now(),s+=1;let l=()=>{},u=new Promise((e,t)=>{l=t});a.add(l);try{return await Promise.race([Promise.resolve(c.apply(i,n)),u])}finally{--s,a.delete(l),o=Date.now()}},l=new Map,u=e=>{let n=e.join(`\0`),r=l.get(n);if(r)return r;let i=new Proxy(function(){},{get:(n,r)=>{if(typeof r!=`string`||r===`then`)return;let i=t;if(i){let t=i.remote;for(let n of e)t=t?.[n];if(t?.[r]===void 0)return}return u([...e,r])},apply:(t,n,r)=>c(e,r)});return l.set(n,i),i};return{facade:u([]),first:r.then(()=>{}),current:()=>t,onEpoch:e=>{if(i.add(e),t)try{e(t.remote,t.epoch)}catch{}return()=>{i.delete(e)}},lastCall:()=>o,inFlight:()=>s}},ye=typeof window<`u`||typeof self<`u`,q=async()=>{if(typeof window<`u`)return K;if(typeof self<`u`)return{receive:self,emit:self}},J=ve({async*[Symbol.asyncIterator](){let t=await q();if(!t){await new Promise(()=>{});return}yield*(0,e.expose)({},{key:`fkn-api`,transport:t})}}),Y=J.first.then(()=>J.facade),X=8e3,be=1e3,Z=!1,Q=class extends Error{constructor(e,t){super(`@fkn/lib: no broker connection within ${t}ms, so ${e} could not be requested`),this.name=`BrokerUnreachableError`}},xe=e=>{let t=Z?be:X;return Promise.race([Y,new Promise((n,r)=>setTimeout(()=>{Z=!0,r(new Q(e,t))},t))])},$=J.onEpoch,Se=J.current,Ce=J.lastCall,we=J.inFlight;$(e=>{fe()&&e.overlay.setHost(N,{exactClips:f()}).catch(()=>{})}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return K}});
package/api.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./api-Djf-XdZ4.cjs");exports.API_DEADLINE_MS=e.t,exports.BrokerUnreachableError=e.n,exports.apiInFlight=e.r,exports.apiLastCall=e.i,exports.apiPromise=e.a,exports.apiWithin=e.o,exports.currentApiEpoch=e.s,exports.hasTransport=e.c,exports.onApiEpoch=e.l;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./api-jOTOA-5n.cjs");exports.API_DEADLINE_MS=e.t,exports.BrokerUnreachableError=e.n,exports.apiInFlight=e.r,exports.apiLastCall=e.i,exports.apiPromise=e.a,exports.apiWithin=e.o,exports.currentApiEpoch=e.s,exports.hasTransport=e.c,exports.onApiEpoch=e.l;
package/api.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { H as Resolvers } from "./contract-InuLU8bI.js";
2
- import { a as apiPromise, c as hasTransport, i as apiLastCall, l as onApiEpoch, n as BrokerUnreachableError, o as apiWithin, r as apiInFlight, s as currentApiEpoch, t as API_DEADLINE_MS } from "./api-DF4nHz2Q.js";
1
+ import { U as Resolvers } from "./contract-sDmsw-9f.js";
2
+ import { a as apiPromise, c as hasTransport, i as apiLastCall, l as onApiEpoch, n as BrokerUnreachableError, o as apiWithin, r as apiInFlight, s as currentApiEpoch, t as API_DEADLINE_MS } from "./api-BxXnHxbd.js";
3
3
  export { API_DEADLINE_MS, BrokerUnreachableError, type Resolvers, apiInFlight, apiLastCall, apiPromise, apiWithin, currentApiEpoch, hasTransport, onApiEpoch };
package/api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./api-CtiKFcK3.js";
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "./api-Dp-2AT3u.js";
2
2
  export { c as API_DEADLINE_MS, i as BrokerUnreachableError, o as apiInFlight, n as apiLastCall, e as apiPromise, a as apiWithin, s as currentApiEpoch, t as hasTransport, r as onApiEpoch };
package/cloud/dns.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { a as AddressLookupResult } from "../contract-InuLU8bI.js";
1
+ import { a as AddressLookupResult } from "../contract-sDmsw-9f.js";
2
2
  import { lookup } from "../dns.js";
3
3
  export { type AddressLookupResult, lookup };
package/cloud/fetch.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../proxy-CYcaW5ew.cjs");exports.fetch=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../proxy-DjoPtJH9.cjs");exports.fetch=e.t;
package/cloud/fetch.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { t as cloudFetch } from "../proxy-BkaVTZAf.js";
1
+ import { t as cloudFetch } from "../proxy-CxRQLGNG.js";
2
2
  export { cloudFetch as fetch };
package/cloud/fetch.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "../proxy-DDwY3AVG.js";
1
+ import { t as e } from "../proxy-DMTdQ4dN.js";
2
2
  export { e as fetch };
package/cloud/fs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../rolldown-runtime-BIInC43l.cjs"),t=require("../node-fs-BNTPsX5c.cjs"),n=require("../messages.cjs"),r=require("../storage-dSi2dUKx.cjs");var i=e.t({STORAGE_NOT_FOUND:()=>n.STORAGE_NOT_FOUND,StorageLockedError:()=>r.t,StorageNotFoundError:()=>r.n,available:()=>a,encryption:()=>r.i,isNotFound:()=>r.a,mkdir:()=>d,promises:()=>m,quota:()=>r.s,readFile:()=>o,readFileSealed:()=>r.l,readdir:()=>u,rename:()=>l,rm:()=>f,stat:()=>p,unlink:()=>c,unlock:()=>r.f,writeFile:()=>s}),{available:a,readFile:o,writeFile:s,unlink:c,rename:l,readdir:u,mkdir:d,rm:f,stat:p,promises:m}=t.t(r.d,{memfs:!1});exports.STORAGE_NOT_FOUND=n.STORAGE_NOT_FOUND,exports.StorageLockedError=r.t,exports.StorageNotFoundError=r.n,exports.available=a,exports.encryption=r.i,exports.isNotFound=r.a,exports.mkdir=d,exports.promises=m,exports.quota=r.s,exports.readFile=o,exports.readFileSealed=r.l,exports.readdir=u,exports.rename=l,exports.rm=f,exports.stat=p,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}}),exports.unlink=c,exports.unlock=r.f,exports.writeFile=s;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../rolldown-runtime-BIInC43l.cjs"),t=require("../node-fs-BNTPsX5c.cjs"),n=require("../messages.cjs"),r=require("../storage-BJd-mWHE.cjs");var i=e.t({STORAGE_NOT_FOUND:()=>n.STORAGE_NOT_FOUND,StorageLockedError:()=>r.t,StorageNotFoundError:()=>r.n,available:()=>a,encryption:()=>r.i,isNotFound:()=>r.a,mkdir:()=>d,promises:()=>m,quota:()=>r.s,readFile:()=>o,readFileSealed:()=>r.l,readdir:()=>u,rename:()=>l,rm:()=>f,stat:()=>p,unlink:()=>c,unlock:()=>r.f,writeFile:()=>s}),{available:a,readFile:o,writeFile:s,unlink:c,rename:l,readdir:u,mkdir:d,rm:f,stat:p,promises:m}=t.t(r.d,{memfs:!1});exports.STORAGE_NOT_FOUND=n.STORAGE_NOT_FOUND,exports.StorageLockedError=r.t,exports.StorageNotFoundError=r.n,exports.available=a,exports.encryption=r.i,exports.isNotFound=r.a,exports.mkdir=d,exports.promises=m,exports.quota=r.s,exports.readFile=o,exports.readFileSealed=r.l,exports.readdir=u,exports.rename=l,exports.rm=f,exports.stat=p,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}}),exports.unlink=c,exports.unlock=r.f,exports.writeFile=s;
package/cloud/fs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "../rolldown-runtime-Dy4uBu1J.js";
2
2
  import { t } from "../node-fs-BZy9bzKd.js";
3
3
  import { STORAGE_NOT_FOUND as n } from "../messages.js";
4
- import { a as r, d as i, f as a, i as o, l as s, n as c, s as l, t as u } from "../storage-BbcnDCnc.js";
4
+ import { a as r, d as i, f as a, i as o, l as s, n as c, s as l, t as u } from "../storage-DSvL-t80.js";
5
5
  //#region src/cloud/fs.ts
6
6
  var d = /* @__PURE__ */ e({
7
7
  STORAGE_NOT_FOUND: () => n,
package/cloud/net.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "../net-DnXxFGm8.js";
1
+ import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "../net-Qmt9L_7t.js";
2
2
  export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
@@ -1,8 +1,8 @@
1
- import { r as AttachFrameFunction } from "./index-DiOxvYoa.js";
2
- import { t as cloudFetch } from "./proxy-BkaVTZAf.js";
1
+ import { r as AttachFrameFunction } from "./index-D2CA-NX5.js";
2
+ import { t as cloudFetch } from "./proxy-CxRQLGNG.js";
3
3
  import { t as dns_d_exports } from "./dns.js";
4
4
  import { n as fs_d_exports } from "./fs--NhtUyYa.js";
5
- import { s as net_d_exports } from "./net-DnXxFGm8.js";
5
+ import { s as net_d_exports } from "./net-Qmt9L_7t.js";
6
6
  import { t as dgram_d_exports } from "./dgram.js";
7
7
  import { t as http_d_exports } from "./http.js";
8
8
  //#region src/cloud/frame.d.ts
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-tQKlXzhv.cjs"),n=require("./hosts-9dYv63ud.cjs"),r=require("./api-jOTOA-5n.cjs"),i=require("./busy-Dv8wzE5M.cjs"),a=require("./proxy-DjoPtJH9.cjs"),o=require("./attach-policy.cjs"),s=require("./contract.cjs"),c=require("./dns.cjs"),l=require("./cloud/fs.cjs"),u=require("./net.cjs"),d=require("./dgram.cjs"),f=require("./http.cjs");let p=require("osra");var m=async()=>{let e=()=>r.o(`frame consent`);try{let t=await e();return{request:typeof t.frameConsent.request==`function`?t.frameConsent.request:void 0,ensure:t.frameConsent.ensure}}catch(t){if(!(t instanceof r.n))throw t;return{request:void 0,ensure:t=>e().then(e=>e.frameConsent.ensure(t))}}},h=3e4,g=()=>t.S(`frame.evaluate: the code did not settle within ${h}ms`,`evaluate`),_=`frame: this frame no longer holds the document the app attached it to`,v=!1,y=()=>{v||(v=!0,console.warn(`[fkn-frame] this FKN broker is too old to ask for permission categories, so nothing was asked for upfront and each capability is asked for as it is first used. Reloading the page picks up the current broker.`))},b=e=>[...e].flatMap(e=>{try{return[new URL(e).hostname]}catch{return[]}}),x=(e,t,n)=>n===null?`frame.${e}: the user did not grant ${t} here`:`frame.${e}: the user did not grant ${t} on ${n}`,S=e=>{let{assertLive:r,attach:i,current:a,declaredHosts:s,documentHost:c,ensure:l,request:u,session:d,approvedOrigins:f}=e,p=new Set,m=async()=>c?await c():(()=>{try{return new URL(a()).hostname}catch{return``}})(),h=()=>n.t([...s,...b(f)]),g=async e=>(await u([e]))[0]??!1;return{gate:async({operation:e,args:a,phase:c})=>{r();let v=n.m(e,a);if(v===null)return;let y=t.u(v);if(y===void 0||y===`auto`)return;if(e===`fetch`){let e=o.frameFetchVerdict({session:d,declaredHosts:s,approvedOrigins:f},c===`ensure`?void 0:a[0],{classifier:`fetchTarget`});if(c===`ensure`&&!d)throw t.C(e.kind===`refuse`?e.reason:``,`fetch`);if(c!==`ensure`&&e.kind===`refuse`)throw t.C(e.reason,`fetch`);if(!u){if(e.kind===`refuse`)throw t.C(e.reason,`fetch`);if(!await l({scope:n.c(a[0],a[1]).scope,hosts:e.promptHosts}))throw t.C(`frame.fetch: the user did not grant this`,`fetch`);return}let r=e.kind===`consent`?e.targetHost:await m(),i=n.t([r,...s]);if(!i.length)throw t.C(`frame: navigate the frame before fetch`,`fetch`);if(await g({category:`network`,hosts:i})===!1)throw t.C(x(`fetch`,`network`,r||null),`fetch`);return}let b=await m();if(!b)throw t.C(`frame: navigate the frame before ${e}`,e);if(!h().includes(b))throw t.C(_,e);if(!u)return;let S=t.l(v);if(S===void 0||y===`critical`&&p.has(`${v} ${b}`))return;let C=n.t([b,...s]),w=await g(y===`critical`?{key:v,hosts:C,attach:i}:{category:S,hosts:C});if(w===!1)throw t.C(x(e,S,null),e);if(w===`once`&&c!==`ensure`)for(let e of C)p.add(`${v} ${e}`)},requestCategories:async e=>{r();let a=await m(),o=n.t(a?[a,...s]:s);if(!o.length)throw TypeError(`frame.request: navigate the frame or declare domains first`);let c=e.map(e=>{let n=e.key;return{named:n,critical:n!==void 0&&t.u(n)===`critical`,category:e.category??(n===void 0?void 0:t.c(n))??`interaction`}}),l=({named:e,critical:t,category:n},r)=>({category:n,...t?{key:e}:{},hosts:o,allow:r});if(!u)return y(),c.map(e=>l(e,!1));let d=await u(c.map(({named:e,critical:t,category:n})=>t?{key:e,hosts:o,attach:i}:{category:n,hosts:o}));return c.map((e,t)=>l(e,d[t]!==void 0&&d[t]!==!1))},boundary:h}},C=e=>e,w=5e3,T=new Set([]),E=()=>`https://fkn.app`,D=e=>e?``:`incognito-${crypto.randomUUID()}`,O=(e,t,n)=>{let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(typeof n==`string`?Error(n):n()),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))},k=e=>Object.assign(Error(e),{name:t.b}),A=`frame.postMessage: this FKN page predates frame messaging; reload the app to load the current one`,j=!1,M=()=>{j||(j=!0,console.warn(`[fkn-frame] this FKN page predates frame messaging, so the page's messages and documents are never reported. Reloading the app loads the current one.`))},N=({from:e,origin:t,attach:n,signal:r})=>i=>{let a=r=>{if(r.source===null||r.source!==e()||r.origin!==t)return;let a=r.data;typeof a==`object`&&a&&a.type===`fkn-frame-message`&&a.attach===n&&typeof a.origin==`string`&&(a.kind===`message`?i({type:`message`,data:a.data,origin:a.origin,ports:r.ports}):a.kind===`document`&&i({type:`document`,origin:a.origin}))};return window.addEventListener(`message`,a,{signal:r}),()=>window.removeEventListener(`message`,a)},P=({control:e,target:n,session:r,declaredHosts:i,approvedOrigins:a,attach:o,assertLive:s,guard:c,consent:l,onNavigated:u,relay:d})=>{let f=n,p=Promise.resolve(),{gate:m,requestCategories:v,boundary:y}=S({session:r,declaredHosts:i,approvedOrigins:a,attach:o,assertLive:s,documentHost:typeof e.documentHost==`function`?()=>c(()=>e.documentHost()):void 0,current:()=>f,...l});return t.m({executor:{execute:(n,r,i)=>T.has(r)?Promise.reject(t.T(r,`cloud`)):(s(),c(()=>e.executeLocator(n,r,i))),highlight:async()=>{}},gate:m,request:v,evaluate:async(t,n)=>(s(),await m({parts:[],operation:`evaluate`,args:[t,n],phase:`execute`}),O(c(()=>e.executeLocator([],`evaluate`,[t,n])),h,g)),postMessage:(n,r,i)=>{if(s(),typeof e.messaging!=`function`)throw t.E(A,`postMessage`,`cloud`);if(r!==`*`&&!y().includes(new URL(r).hostname))throw t.C(_,`postMessage`);let{port1:a,port2:o}=new MessageChannel;a.postMessage({data:n,transfer:i},i);let l=[o,r],u=p.then(async()=>(await m({parts:[],operation:`postMessage`,args:l,phase:`execute`}),{answer:c(()=>e.executeLocator([],`postMessage`,l))}));return p=u.catch(()=>{}),u.then(async({answer:e})=>{await e})},listen:t=>(typeof e.messaging!=`function`&&M(),d(t)),goto:async(t,n={})=>{let r=new URL(t,location.href).href;s();let{timeoutMs:i}=n,o=(()=>{try{return new URL(r).origin}catch{return``}})(),l=o!==``&&!a.has(o);l&&a.add(o);try{await O(c(()=>e.goto(r,n)),(i??3e4)+w,`cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded`)}catch(e){throw l&&a.delete(o),e}f=r,u()},url:()=>f})},F=250,I=500,L=65e3,R=2e3,z=2e3,ee=2,te=2e3,ne=2e3,re=({origin:e,target:t,session:n,domains:r,attach:i})=>{let a=new URL(`/attach-window`,e);return a.searchParams.set(`attach`,i),t&&a.searchParams.set(`url`,t),n&&a.searchParams.set(`session`,n),r.length&&a.searchParams.set(`domains`,r.join(`,`)),a.href},ie=(e,t)=>{let n=document.createElement(`iframe`),r=new URL(`/attach-jar`,e);return r.searchParams.set(`attach`,t),n.src=r.href,n.tabIndex=-1,n.setAttribute(`aria-hidden`,`true`),n.setAttribute(`style`,`display:none`),(document.body??document.documentElement).appendChild(n),n},B=(e,t)=>{let n=new MutationObserver(()=>{e.isConnected||t.aborted||(n.disconnect(),console.warn(`cloud.attachFrame: the window's jar anchor was removed from this page, so a sign-in in the window no longer reaches this app's cookie jar`))});e.parentNode&&n.observe(e.parentNode,{childList:!0}),n.observe(document.documentElement,{childList:!0}),t.addEventListener(`abort`,()=>n.disconnect(),{once:!0})},V=()=>k(`cloud.attachFrame: the attached window closed, reloaded or left the page FKN attached; attach a fresh window`),H=()=>k(`cloud.attachFrame: the attached window stopped answering; attach a fresh window`),U=()=>k(`cloud.attachFrame: the window went away before it connected; attach a fresh window`),W=()=>k(`cloud.attachFrame: the window closed before it connected. Either the user closed it, or this page's Cross-Origin-Opener-Policy cut its link to the window`),G=async e=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);let{domains:r=[],syncCookies:a=!0,permissions:o}=e,{url:c,width:l,height:u}=t.s(e.window);if(window.origin===`null`)throw new t.f(`opaque-opener`);let d=E(),f=crypto.randomUUID(),m=D(a),h=n.t(r),g=new Set;c&&g.add(new URL(c).origin);let _=a?ie(d,f):null,v=window.open(re({origin:d,target:c,session:m,domains:h,attach:f}),`_blank`,`popup,width=${l},height=${u}`);if(!v)throw _?.remove(),new t.d;let y=new AbortController,b=!1,x=null,S=(e,t=!1)=>{if(x===null){x=e,y.abort(t?H():V());try{v.closed||v.postMessage({type:s.ATTACH_WINDOW_MESSAGE.detach,attach:f,...t?{unanswered:t}:{}},d)}catch{}_&&setTimeout(()=>_.remove(),ne)}};_&&B(_,y.signal);let w=new Promise((e,t)=>{y.signal.addEventListener(`abort`,()=>t(y.signal.reason),{once:!0})});w.catch(()=>{});let T=w.then(()=>{},()=>{}),k=()=>{if(y.signal.aborted)throw y.signal.reason},A=e=>y.signal.aborted?Promise.reject(y.signal.reason):Promise.race([e(),w]),j=e=>e.source===v&&e.origin===d;window.addEventListener(`message`,e=>{if(!j(e))return;let n=e.data;typeof n==`object`&&n&&n.attach===f&&(n.type===s.ATTACH_WINDOW_MESSAGE.refused?S(new t.f(n.reason)):n.type===s.ATTACH_WINDOW_MESSAGE.gone&&S(b?V():U()))},{signal:y.signal}),window.addEventListener(`pagehide`,()=>S(V()),{signal:y.signal});let M=()=>{try{v.postMessage({type:s.ATTACH_WINDOW_MESSAGE.hello,attach:f},d)}catch{}};M();let G=setInterval(M,F),K=setInterval(()=>{v.closed&&S(b?V():W())},I);y.signal.addEventListener(`abort`,()=>{clearInterval(G),clearInterval(K)},{once:!0});let q=async e=>{try{return await Promise.race([e,w])}catch(e){throw x??e}};try{let e=await q(O((0,p.expose)({},{key:s.ATTACH_WINDOW_KEY,transport:{emit:(e,t)=>v.postMessage(e,d,t??[]),receive:e=>{let t=t=>{j(t)&&e(t.data,{source:t.source,origin:t.origin})};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)}},unregisterSignal:y.signal,revivableModules:C(t.nt)}),s.WINDOW_HANDSHAKE_TIMEOUT_MS,`cloud.attachFrame: timed out connecting to the window`));b=!0,clearInterval(G);let n=0,r=setInterval(()=>{O(A(()=>e.ping()),z,`ping`).then(()=>{n=0},()=>{y.signal.aborted||(document.visibilityState===`hidden`?n=0:++n>=ee&&S(H(),!0))})},R);y.signal.addEventListener(`abort`,()=>clearInterval(r),{once:!0}),await q(O(e.ready(),L,`cloud.attachFrame: the window never became ready`));let a=i.t(`attached frame`);y.signal.aborted?a():y.signal.addEventListener(`abort`,a,{once:!0});let l=P({control:e,target:c,session:m,declaredHosts:h,approvedOrigins:g,attach:f,assertLive:k,guard:A,consent:{request:t=>A(()=>e.requestConsent(t)),ensure:t=>A(()=>e.requestConsent([t])).then(([e])=>e!==void 0&&e!==!1)},onNavigated:()=>{},relay:N({from:()=>v,origin:d,attach:f,signal:y.signal})}),u=null,_=Object.assign(l,{close:()=>u??=(async()=>{y.signal.aborted||await O(Promise.allSettled([A(()=>e.flushCookies()),A(()=>e.sweepStorage())]),te,`close`).catch(()=>{});try{v.close()}catch{}S(V())})(),closed:T});return o?.length&&await q(_.request(o)),_}catch(e){let n=x??e;if(!(n instanceof t.f))try{v.close()}catch{}throw S(n),n}},K=2e4,q=65e3,J=e=>!e||e===`about:blank`,ae=({target:e,session:t,domains:n,attach:r})=>{let i=new URL(`/attach-frame`,E());return e&&i.searchParams.set(`url`,e),t&&i.searchParams.set(`session`,t),n.length&&i.searchParams.set(`domains`,n.join(`,`)),i.searchParams.set(`attach`,r),i.href},oe=(e,t)=>{let n=()=>{a(),t()},r=e.parentNode,i=new MutationObserver(()=>{(!e.isConnected||e.parentNode!==r)&&(a(),t())}),a=()=>{window.removeEventListener(`pagehide`,n),i.disconnect()};window.addEventListener(`pagehide`,n,{once:!0}),r&&i.observe(r,{childList:!0}),e.isConnected||(a(),t())},se=()=>k(`cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe`),ce=(e,t)=>{let n=[...e.split(`;`),...t.split(`;`)].map(e=>e.trim()).filter(Boolean);return[...new Set(n)].join(`; `)},le=[300,1200,4e3],Y=e=>{let t=()=>{if(!e.isConnected)return;let t=e.style.height,n=e.getBoundingClientRect();n.height&&(e.style.height=`${n.height-1}px`,setTimeout(()=>{e.style.height=t},50))};t();for(let e of le)setTimeout(t,e)},X=e=>{let t=e.getAttribute(`sandbox`);if(t===null)return;let n=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),r=[`allow-scripts`,`allow-same-origin`].filter(e=>!n.has(e));if(r.length)throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(` and `)} for the render proxy to load`)},ue=async({iframe:e,domains:a=[],syncCookies:o=!0,lockdown:c=!1,permissions:l})=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);if(c)throw Error(`cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame`);if(!e.isConnected)throw Error(`cloud.attachFrame: the iframe must be connected to the document before attaching`);X(e);let u=e.getAttribute(`src`)??``,d=(()=>{if(J(u))return null;try{return new URL(e.src||u,location.href)}catch{throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${u}`)}})();if(d){let e=new URL(`/attach-frame`,E());if(d.origin===e.origin&&d.pathname===e.pathname)throw Error(`cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe`)}let f=d?.href??``;f&&t.g(f);let h=D(o),g=n.t(a),_=new Set;try{_.add(new URL(f).origin)}catch{}let v=new AbortController,y=e.referrerPolicy,b=e.allow,x=crypto.randomUUID();if(e.referrerPolicy=`origin`,e.allow=ce(r.f(),e.allow),e.src=ae({target:f,session:h,domains:g,attach:x}),!e.contentWindow)throw Error(`cloud.attachFrame: the iframe window is not available`);try{let n=await O((0,p.expose)({},{key:s.ATTACH_FRAME_KEY,origin:E(),transport:{receive:window,emit:e.contentWindow},unregisterSignal:v.signal,revivableModules:C(t.nt)}),K,`cloud.attachFrame: timed out connecting to the render proxy page`);await O(n.ready(),q,`cloud.attachFrame: the render proxy never became ready`),f&&Y(e),oe(e,()=>v.abort());let r=i.t(`attached frame`);v.signal.aborted?r():v.signal.addEventListener(`abort`,r,{once:!0});let a=e.contentWindow,o=P({control:n,target:f,session:h,declaredHosts:g,approvedOrigins:_,attach:x,assertLive:()=>{if(v.signal.aborted||!e.isConnected||e.contentWindow!==a)throw v.abort(),se()},guard:e=>e(),consent:await m(),onNavigated:()=>Y(e),relay:N({from:()=>a,origin:E(),attach:x,signal:v.signal})});return l?.length&&await o.request(l),o}catch(t){throw v.abort(),e.referrerPolicy=y,e.allow=b,e.src=f||`about:blank`,t}},Z=(async e=>t.o(e)===`window`?G(e):ue(e)),de=()=>typeof window<`u`&&!0,Q=async()=>{let e=await r.a.then(e=>e.cloud.quota());return{premium:e.premium,overQuota:e.overQuota,throttled:e.overQuota&&!e.premium,usedBytes:e.usedBytes,limitBytes:e.limitBytes,remainingBytes:e.remaining,bytesPerSecond:e.bytesPerSecond,bitsPerSecond:e.bytesPerSecond*8}},fe=e.t({attachFrame:()=>Z,available:()=>$,dgram:()=>d.t,dns:()=>c.t,fetch:()=>a.t,fs:()=>l.t,http:()=>f.t,net:()=>u.t,quota:()=>Q}),$=()=>r.c;Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return $}});