@fkn/lib 0.6.1 → 0.6.2

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.
@@ -90,27 +90,6 @@ type LocalTcpSocket = {
90
90
  setOption: (option: TcpSocketOption) => Promise<void>;
91
91
  };
92
92
  //#endregion
93
- //#region src/api/webvpn/packets/tcp-listener.d.ts
94
- declare const parseServerMetadataTcpSocketListenerBoundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
95
- readonly _type: 'ServerMetadataTcpSocketListenerBoundPacket';
96
- readonly offset: number;
97
- readonly id: number;
98
- readonly socketId: number;
99
- readonly localAddressType: 0 | 1;
100
- readonly localAddress: import("ip-address").Address4 | import("ip-address").Address6;
101
- readonly localPort: number;
102
- readonly errorLength: number;
103
- readonly error: string;
104
- };
105
- type ServerMetadataTcpSocketListenerBoundPacket = ReturnType<typeof parseServerMetadataTcpSocketListenerBoundPacket>;
106
- declare const parseServerMetadataTcpSocketListenerUnboundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
107
- readonly _type: 'ServerMetadataTcpSocketListenerUnboundPacket';
108
- readonly offset: number;
109
- readonly id: number;
110
- readonly socketId: number;
111
- };
112
- type ServerMetadataTcpSocketListenerUnboundPacket = ReturnType<typeof parseServerMetadataTcpSocketListenerUnboundPacket>;
113
- //#endregion
114
93
  //#region src/api/webvpn/packets/udp.d.ts
115
94
  declare const parseServerMetadataUdpSocketBoundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
116
95
  readonly _type: 'ServerMetadataUdpSocketBoundPacket';
@@ -143,6 +122,17 @@ declare const parseServerMetadataUdpSocketConnectedPacket: (offset: number, buff
143
122
  readonly error: string;
144
123
  };
145
124
  type ServerMetadataUdpSocketConnectedPacket = ReturnType<typeof parseServerMetadataUdpSocketConnectedPacket>;
125
+ declare const parseServerUdpDataPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
126
+ readonly _type: 'ServerUdpDataPacket';
127
+ readonly offset: number;
128
+ readonly socketId: number;
129
+ readonly remoteAddressType: 0 | 1 | 2;
130
+ readonly remoteAddress: import("ip-address").Address4 | import("ip-address").Address6 | undefined;
131
+ readonly remotePort: number | undefined;
132
+ readonly dataLength: number;
133
+ readonly data: ArrayBuffer;
134
+ };
135
+ type ServerUdpDataPacket = ReturnType<typeof parseServerUdpDataPacket>;
146
136
  declare const UDP_OPTION_BROADCAST: 0;
147
137
  declare const UDP_OPTION_TTL: 1;
148
138
  declare const UDP_OPTION_MULTICAST_TTL_V4: 2;
@@ -202,6 +192,27 @@ declare const parseServerMetadataUdpSetOptionAckPacket: (offset: number, buffer:
202
192
  };
203
193
  type ServerMetadataUdpSetOptionAckPacket = ReturnType<typeof parseServerMetadataUdpSetOptionAckPacket>;
204
194
  //#endregion
195
+ //#region src/api/webvpn/packets/tcp-listener.d.ts
196
+ declare const parseServerMetadataTcpSocketListenerBoundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
197
+ readonly _type: 'ServerMetadataTcpSocketListenerBoundPacket';
198
+ readonly offset: number;
199
+ readonly id: number;
200
+ readonly socketId: number;
201
+ readonly localAddressType: 0 | 1;
202
+ readonly localAddress: import("ip-address").Address4 | import("ip-address").Address6;
203
+ readonly localPort: number;
204
+ readonly errorLength: number;
205
+ readonly error: string;
206
+ };
207
+ type ServerMetadataTcpSocketListenerBoundPacket = ReturnType<typeof parseServerMetadataTcpSocketListenerBoundPacket>;
208
+ declare const parseServerMetadataTcpSocketListenerUnboundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
209
+ readonly _type: 'ServerMetadataTcpSocketListenerUnboundPacket';
210
+ readonly offset: number;
211
+ readonly id: number;
212
+ readonly socketId: number;
213
+ };
214
+ type ServerMetadataTcpSocketListenerUnboundPacket = ReturnType<typeof parseServerMetadataTcpSocketListenerUnboundPacket>;
215
+ //#endregion
205
216
  //#region src/api/webvpn/packets/metadata.d.ts
206
217
  declare const parseServerMetadataHeaderPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
207
218
  readonly _type: 'ServerMetadataHeaderPacket';
@@ -214,13 +225,27 @@ declare const parseServerMetadataHeaderPacket: (offset: number, buffer: ArrayBuf
214
225
  type ServerMetadataHeaderPacket = ReturnType<typeof parseServerMetadataHeaderPacket>;
215
226
  type ServerMetadataPacket = ServerMetadataHeaderPacket | ServerMetadataTcpSocketConnectedPacket | ServerMetadataTcpSocketShutdownPacket | ServerMetadataTcpSocketListenerBoundPacket | ServerMetadataTcpSocketListenerUnboundPacket | ServerMetadataUdpSocketBoundPacket | ServerMetadataUdpSocketUnboundPacket | ServerMetadataUdpSocketConnectedPacket | ServerMetadataTcpSetOptionAckPacket | ServerMetadataUdpSetOptionAckPacket;
216
227
  //#endregion
217
- //#region src/api/webvpn/webtransport.d.ts
228
+ //#region src/api/webvpn/session-core.d.ts
218
229
  type BidirectionalStreams = {
219
230
  readable: ReadableStream<Uint8Array>;
220
231
  writable: WritableStream<Uint8Array>;
221
232
  };
222
- declare const makeWebVPNWebTransport: () => Promise<{
223
- webtransport: WebTransport;
233
+ type TransportPrimitives = {
234
+ metadataReadable: ReadableStream<Uint8Array>;
235
+ metadataWriter: WritableStreamDefaultWriter<Uint8Array>;
236
+ datagramWriter: WritableStreamDefaultWriter<Uint8Array>;
237
+ incomingBidi: ReadableStream<BidirectionalStreams>;
238
+ incomingUni: ReadableStream<ReadableStream<Uint8Array>>;
239
+ serverDatagrams?: ReadableStream<ServerUdpDataPacket>;
240
+ closed: Promise<{
241
+ reason: string;
242
+ }>;
243
+ close: (reason: string) => void;
244
+ };
245
+ declare const makeWebVpnSession: (primitives: TransportPrimitives) => Promise<{
246
+ closed: Promise<{
247
+ reason: string;
248
+ }>;
224
249
  isClosed: () => boolean;
225
250
  getNewPacketId: () => number;
226
251
  getTcpDataReadableStreamForSocketId: (socketId: number, options?: {
@@ -246,7 +271,10 @@ declare const makeWebVPNWebTransport: () => Promise<{
246
271
  getDatagramWritableStream: () => WritableStream<Uint8Array<ArrayBufferLike>>;
247
272
  presentRateToken: () => Promise<void>;
248
273
  }>;
249
- type WebVPNWebTransport = Awaited<ReturnType<typeof makeWebVPNWebTransport>>;
274
+ type WebVPNSession = Awaited<ReturnType<typeof makeWebVpnSession>>;
275
+ //#endregion
276
+ //#region src/api/webvpn/transport.d.ts
277
+ type WebVPNWebTransport = WebVPNSession;
250
278
  //#endregion
251
279
  //#region src/api/webvpn/tcp.d.ts
252
280
  declare const processTcpSocket: ({
@@ -256,7 +284,8 @@ declare const processTcpSocket: ({
256
284
  metadataReadableStream,
257
285
  metadataWriter,
258
286
  dataStreamAbort,
259
- webVpnWebTransport
287
+ webVpnWebTransport,
288
+ ownsMetadataWriter
260
289
  }: {
261
290
  connectedPacket: ServerMetadataTcpSocketConnectedPacket;
262
291
  dataReadableStream: ReadableStream<Uint8Array>;
@@ -265,6 +294,7 @@ declare const processTcpSocket: ({
265
294
  metadataWriter: WritableStreamDefaultWriter<Uint8Array>;
266
295
  dataStreamAbort?: AbortController;
267
296
  webVpnWebTransport: WebVPNWebTransport;
297
+ ownsMetadataWriter?: boolean;
268
298
  }) => Promise<{
269
299
  localAddress: string;
270
300
  localFamily: "IPv4" | "IPv6";
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-BDW1AVX1.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-5SVFcuzM.js";
2
2
  export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-bPaU3-Cz.cjs"),n=require("./api-DD5v1qP9.cjs"),r=require("./dns.cjs"),i=require("./cloud/fs.cjs"),a=require("./net-CpuAhaQC.cjs"),o=require("./dgram-CE43gJq9.cjs"),s=require("./http.cjs");let c=require("osra");var l=`autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write`,u=2e4,d=65e3,f=3e4,p=5e3,m=new Set([`videoElement`]),h=()=>`https://fkn.app`,g=e=>!e||e===`about:blank`,_=e=>e?``:`incognito-${crypto.randomUUID()}`,v=({target:e,session:t})=>{let n=new URL(`/attach-frame`,h());return e&&n.searchParams.set(`url`,e),t&&n.searchParams.set(`session`,t),n.href},y=(e,t,n)=>{let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(n)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))},b=(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())},x=()=>Object.assign(Error(`cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe`),{name:t.v}),S=(e,t)=>{let n=[...e.split(`;`),...t.split(`;`)].map(e=>e.trim()).filter(Boolean);return[...new Set(n)].join(`; `)},C=[300,1200,4e3],w=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 C)setTimeout(t,e)},T=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`)},E=async({iframe:e,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);if(i)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`);T(e);let a=e.getAttribute(`src`)??``,o=(()=>{if(g(a))return null;try{return new URL(e.src||a,location.href)}catch{throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${a}`)}})();if(o){let e=new URL(`/attach-frame`,h());if(o.origin===e.origin&&o.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 s=o?.href??``;s&&t.l(s);let C=s,E=_(r),D=new AbortController;if(e.referrerPolicy=`origin`,e.allow=S(l,e.allow),e.src=v({target:s,session:E}),!e.contentWindow)throw Error(`cloud.attachFrame: the iframe window is not available`);try{let n=await y((0,c.expose)({},{key:`fkn-attach-frame`,origin:h(),transport:{receive:window,emit:e.contentWindow},unregisterSignal:D.signal}),u,`cloud.attachFrame: timed out connecting to the render proxy page`);await y(n.ready(),d,`cloud.attachFrame: the render proxy never became ready`),s&&w(e),b(e,()=>D.abort());let r=e.contentWindow,i=()=>{if(!(!D.signal.aborted&&e.isConnected&&e.contentWindow===r))throw D.abort(),x()};return t.s({executeLocator:(e,r,a)=>m.has(r)?Promise.reject(t.y(r,`cloud`)):(i(),n.executeLocator(e,r,a)),ensurePermission:async()=>{},goto:async(t,r={})=>{let a=new URL(t,location.href).href;i();let{timeoutMs:o}=r;await y(n.goto(a,r),(o??f)+p,`cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded`),C=a,w(e)},url:()=>C})}catch(t){throw D.abort(),e.src=s||`about:blank`,t}},D=async()=>{let e=await n.t.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}},O=e.n({attachFrame:()=>E,available:()=>k,dgram:()=>o.i,dns:()=>r.t,fetch:()=>t.t,fs:()=>i.t,http:()=>s.t,net:()=>a.s,quota:()=>D}),k=()=>n.n;Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return k}});
@@ -28,16 +28,30 @@ var m = "autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-re
28
28
  }, E = () => Object.assign(/* @__PURE__ */ Error("cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe"), { name: i }), D = (e, t) => {
29
29
  let n = [...e.split(";"), ...t.split(";")].map((e) => e.trim()).filter(Boolean);
30
30
  return [...new Set(n)].join("; ");
31
- }, O = (e) => {
31
+ }, O = [
32
+ 300,
33
+ 1200,
34
+ 4e3
35
+ ], k = (e) => {
36
+ let t = () => {
37
+ if (!e.isConnected) return;
38
+ let t = e.style.height, n = e.getBoundingClientRect();
39
+ n.height && (e.style.height = `${n.height - 1}px`, setTimeout(() => {
40
+ e.style.height = t;
41
+ }, 50));
42
+ };
43
+ t();
44
+ for (let e of O) setTimeout(t, e);
45
+ }, A = (e) => {
32
46
  let t = e.getAttribute("sandbox");
33
47
  if (t === null) return;
34
48
  let n = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), r = ["allow-scripts", "allow-same-origin"].filter((e) => !n.has(e));
35
49
  if (r.length) throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(" and ")} for the render proxy to load`);
36
- }, k = async ({ iframe: e, domains: r = [], syncCookies: i = !0, lockdown: o = !1 }) => {
50
+ }, j = async ({ iframe: e, domains: r = [], syncCookies: i = !0, lockdown: o = !1 }) => {
37
51
  if (typeof window > "u") throw Error("cloud.attachFrame needs a window realm");
38
52
  if (o) throw Error("cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame");
39
53
  if (!e.isConnected) throw Error("cloud.attachFrame: the iframe must be connected to the document before attaching");
40
- O(e);
54
+ A(e);
41
55
  let s = e.getAttribute("src") ?? "", c = (() => {
42
56
  if (x(s)) return null;
43
57
  try {
@@ -67,25 +81,25 @@ var m = "autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-re
67
81
  },
68
82
  unregisterSignal: f.signal
69
83
  }), h, "cloud.attachFrame: timed out connecting to the render proxy page");
70
- await w(t.ready(), g, "cloud.attachFrame: the render proxy never became ready"), T(e, () => f.abort());
84
+ await w(t.ready(), g, "cloud.attachFrame: the render proxy never became ready"), l && k(e), T(e, () => f.abort());
71
85
  let r = e.contentWindow, i = () => {
72
86
  if (!(!f.signal.aborted && e.isConnected && e.contentWindow === r)) throw f.abort(), E();
73
87
  };
74
88
  return n({
75
89
  executeLocator: (e, n, r) => y.has(n) ? Promise.reject(a(n, "cloud")) : (i(), t.executeLocator(e, n, r)),
76
90
  ensurePermission: async () => {},
77
- goto: async (e, n = {}) => {
78
- let r = new URL(e, location.href).href;
91
+ goto: async (n, r = {}) => {
92
+ let a = new URL(n, location.href).href;
79
93
  i();
80
- let { timeoutMs: a } = n;
81
- await w(t.goto(r, n), (a ?? _) + v, "cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded"), u = r;
94
+ let { timeoutMs: o } = r;
95
+ await w(t.goto(a, r), (o ?? _) + v, "cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded"), u = a, k(e);
82
96
  },
83
97
  url: () => u
84
98
  });
85
99
  } catch (t) {
86
100
  throw f.abort(), e.src = l || "about:blank", t;
87
101
  }
88
- }, A = async () => {
102
+ }, M = async () => {
89
103
  let e = await s.then((e) => e.cloud.quota());
90
104
  return {
91
105
  premium: e.premium,
@@ -97,16 +111,16 @@ var m = "autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-re
97
111
  bytesPerSecond: e.bytesPerSecond,
98
112
  bitsPerSecond: e.bytesPerSecond * 8
99
113
  };
100
- }, j = /* @__PURE__ */ e({
101
- attachFrame: () => k,
102
- available: () => M,
114
+ }, N = /* @__PURE__ */ e({
115
+ attachFrame: () => j,
116
+ available: () => P,
103
117
  dgram: () => d,
104
118
  dns: () => c,
105
119
  fetch: () => r,
106
120
  fs: () => l,
107
121
  http: () => f,
108
122
  net: () => u,
109
- quota: () => A
110
- }), M = () => o;
123
+ quota: () => M
124
+ }), P = () => o;
111
125
  //#endregion
112
- export { k as i, j as n, A as r, M as t };
126
+ export { j as i, N as n, M as r, P as t };
@@ -1,8 +1,8 @@
1
- import { t as Resolvers } from "./api-BYUraih6.js";
1
+ import { t as Resolvers } from "./api-B0jZnr_N.js";
2
2
  import { b as Frame, y as AttachFrameOptions } from "./index-BJztAQIP.js";
3
3
  import { t as dns_d_exports } from "./dns.js";
4
4
  import { n as fs_d_exports } from "./fs-K7ROdxDx.js";
5
- import { s as net_d_exports } from "./net-BDW1AVX1.js";
5
+ import { s as net_d_exports } from "./net-5SVFcuzM.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
 
package/cloud.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-bPaU3-Cz.cjs"),t=require("./cloud-5o7yJHeX.cjs"),n=require("./dns.cjs"),r=require("./cloud/fs.cjs"),i=require("./net-CpuAhaQC.cjs"),a=require("./dgram-CE43gJq9.cjs"),o=require("./http.cjs");exports.attachFrame=t.i,exports.available=t.t,Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return n.t}}),exports.fetch=e.t,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),exports.quota=t.r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-bPaU3-Cz.cjs"),t=require("./cloud-B4KIFGwa.cjs"),n=require("./dns.cjs"),r=require("./cloud/fs.cjs"),i=require("./net-CpuAhaQC.cjs"),a=require("./dgram-CE43gJq9.cjs"),o=require("./http.cjs");exports.attachFrame=t.i,exports.available=t.t,Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return n.t}}),exports.fetch=e.t,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),exports.quota=t.r;
package/cloud.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { a as attachFrame, i as quota, o as cloudFetch, r as QuotaStatus, t as available } from "./cloud-gklfa4ZN.js";
1
+ import { a as attachFrame, i as quota, o as cloudFetch, r as QuotaStatus, t as available } from "./cloud-jJi2d0cs.js";
2
2
  import { t as dns_d_exports } from "./dns.js";
3
3
  import { n as fs_d_exports } from "./fs-K7ROdxDx.js";
4
- import { s as net_d_exports } from "./net-BDW1AVX1.js";
4
+ import { s as net_d_exports } from "./net-5SVFcuzM.js";
5
5
  import { t as dgram_d_exports } from "./dgram.js";
6
6
  import { t as http_d_exports } from "./http.js";
7
7
  export { type QuotaStatus, attachFrame, available, dgram_d_exports as dgram, dns_d_exports as dns, cloudFetch as fetch, fs_d_exports as fs, http_d_exports as http, net_d_exports as net, quota };
package/cloud.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./proxy-C8SG1Beo.js";
2
- import { i as t, r as n, t as r } from "./cloud-BFyf2uC7.js";
2
+ import { i as t, r as n, t as r } from "./cloud-Dsb33tl6.js";
3
3
  import { t as i } from "./dns.js";
4
4
  import { t as a } from "./cloud/fs.js";
5
5
  import { s as o } from "./net-DKMWPXb_.js";
package/dgram.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { n as UdpSocketOption, t as Resolvers } from "./api-BYUraih6.js";
1
+ import { n as UdpSocketOption, t as Resolvers } from "./api-B0jZnr_N.js";
2
2
  import { Buffer } from "buffer";
3
3
  import { AddressInfo } from "net";
4
4
  import { EventEmitter } from "events";
package/http.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { n as Socket, t as Server$1 } from "./net-BDW1AVX1.js";
1
+ import { n as Socket, t as Server$1 } from "./net-5SVFcuzM.js";
2
2
  import { Buffer } from "buffer";
3
3
  import { Stream } from "stream";
4
4
  import { IncomingHttpHeaders, OutgoingHttpHeaders, RequestOptions } from "http";
package/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-bPaU3-Cz.cjs"),t=require("./api-DD5v1qP9.cjs"),n=require("./cloud-5o7yJHeX.cjs"),r=require("./dns.cjs"),i=require("./net-CpuAhaQC.cjs"),a=require("./dgram-CE43gJq9.cjs"),o=require("./http.cjs"),s=require("./extension-D-NUXxzF.cjs"),c=require("./desktop.cjs"),l=require("./fs-BfmfMBiw.cjs"),u=require("./opfs.cjs"),d=require("./packages.cjs"),f=require("./account.cjs"),p=require("./connect-button-BBEjXzB3.cjs");let m=require("osra");var h=t=>s.r()||t.syncCookies!==!1?e.a(t):n.i(t),g=`https://fkn.app`,_=(e,n)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!t.r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,m.relay)({receive:window,emit:t.r.contentWindow},e,{key:`fkn-api`,originA:n?.originA??g,originB:n?.originB??`*`,unregisterSignal:n?.unregisterSignal})},v=async()=>typeof window>`u`?!1:(await t.t).connect.prompt(location.origin).catch(()=>!1);exports.ATTACH_FRAME_EVENT_KEY=e.i,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return f.t}}),exports.assertAttachableFrameUrl=e.l,exports.assertFetchableUrl=e.E,exports.assertLockdownApplicable=e.u,exports.attachFrame=h,exports.attachFramePermission=e.o,exports.box=e.R,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return n.n}}),exports.connect=v,exports.connectButtonUrl=p.t,exports.cookies=e.w,exports.createFrame=e.s,exports.createVideoElementHandle=e.z,Object.defineProperty(exports,"desktop",{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"extension",{enumerable:!0,get:function(){return s.t}}),exports.fetch=s.n,exports.fetchCredentialedPermission=e.O,exports.fetchLocalPermission=e.k,exports.fetchPermission=e.A,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return l.c}}),exports.gotoPermission=e.c,exports.handleRevivableModules=e.L,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),exports.isBlockedFetchUrl=e.j,exports.isBlockedFrameUrl=e.d,exports.isExtensionExposed=e.P,exports.isLocalNetworkUrl=e.M,exports.isType=e.B,exports.modifyRequestHeadersPermission=e.x,Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),Object.defineProperty(exports,"opfs",{enumerable:!0,get:function(){return u.t}}),Object.defineProperty(exports,"packages",{enumerable:!0,get:function(){return d.t}}),exports.permissions=e.r,exports.promptInstall=s.i,exports.readCookiePermission=e.T,exports.relayWorker=_,exports.removeRequestHeaderRule=e.S,exports.revive=e.V,exports.setMissingExtensionHandler=e.F,exports.setRequestHeaderRule=e.C,exports.type=e.H,exports.waitForExtensionExposure=e.I;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-bPaU3-Cz.cjs"),t=require("./api-DD5v1qP9.cjs"),n=require("./cloud-B4KIFGwa.cjs"),r=require("./dns.cjs"),i=require("./net-CpuAhaQC.cjs"),a=require("./dgram-CE43gJq9.cjs"),o=require("./http.cjs"),s=require("./extension-D-NUXxzF.cjs"),c=require("./desktop.cjs"),l=require("./fs-BfmfMBiw.cjs"),u=require("./opfs.cjs"),d=require("./packages.cjs"),f=require("./account.cjs"),p=require("./connect-button-BBEjXzB3.cjs");let m=require("osra");var h=t=>s.r()||t.syncCookies!==!1?e.a(t):n.i(t),g=`https://fkn.app`,_=(e,n)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!t.r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,m.relay)({receive:window,emit:t.r.contentWindow},e,{key:`fkn-api`,originA:n?.originA??g,originB:n?.originB??`*`,unregisterSignal:n?.unregisterSignal})},v=async()=>typeof window>`u`?!1:(await t.t).connect.prompt(location.origin).catch(()=>!1);exports.ATTACH_FRAME_EVENT_KEY=e.i,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return f.t}}),exports.assertAttachableFrameUrl=e.l,exports.assertFetchableUrl=e.E,exports.assertLockdownApplicable=e.u,exports.attachFrame=h,exports.attachFramePermission=e.o,exports.box=e.R,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return n.n}}),exports.connect=v,exports.connectButtonUrl=p.t,exports.cookies=e.w,exports.createFrame=e.s,exports.createVideoElementHandle=e.z,Object.defineProperty(exports,"desktop",{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"extension",{enumerable:!0,get:function(){return s.t}}),exports.fetch=s.n,exports.fetchCredentialedPermission=e.O,exports.fetchLocalPermission=e.k,exports.fetchPermission=e.A,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return l.c}}),exports.gotoPermission=e.c,exports.handleRevivableModules=e.L,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),exports.isBlockedFetchUrl=e.j,exports.isBlockedFrameUrl=e.d,exports.isExtensionExposed=e.P,exports.isLocalNetworkUrl=e.M,exports.isType=e.B,exports.modifyRequestHeadersPermission=e.x,Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),Object.defineProperty(exports,"opfs",{enumerable:!0,get:function(){return u.t}}),Object.defineProperty(exports,"packages",{enumerable:!0,get:function(){return d.t}}),exports.permissions=e.r,exports.promptInstall=s.i,exports.readCookiePermission=e.T,exports.relayWorker=_,exports.removeRequestHeaderRule=e.S,exports.revive=e.V,exports.setMissingExtensionHandler=e.F,exports.setRequestHeaderRule=e.C,exports.type=e.H,exports.waitForExtensionExposure=e.I;
package/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { t as account_d_exports } from "./account.js";
2
2
  import { p as packages_d_exports } from "./packages-D36R2vBv.js";
3
- import { n as cloud_d_exports } from "./cloud-gklfa4ZN.js";
3
+ import { n as cloud_d_exports } from "./cloud-jJi2d0cs.js";
4
4
  import { A as RequestHeaderRule, B as assertFetchableUrl, C as attachFramePermission, D as assertLockdownApplicable, E as assertAttachableFrameUrl, F as SiteCookie, G as isBlockedFetchUrl, H as fetchCredentialedPermission, I as cookies, K as isLocalNetworkUrl, L as readCookiePermission, M as removeRequestHeaderRule, N as setRequestHeaderRule, O as isBlockedFrameUrl, P as CookieDetails, R as FetchInit, S as GotoOptions, T as gotoPermission, U as fetchLocalPermission, W as fetchPermission, _ as ATTACH_FRAME_EVENT_KEY, a as handleRevivableModules, b as Frame, c as VideoElementState, d as isType, f as revive, g as permissions, h as PermissionRequest, i as waitForExtensionExposure, j as modifyRequestHeadersPermission, k as HeaderOperation, l as box, m as PermissionGrant, n as isExtensionExposed, o as BoxedVideoElement, p as type, r as setMissingExtensionHandler, s as RemoteVideoElement, u as createVideoElementHandle, w as createFrame, x as FrameBackend, y as AttachFrameOptions, z as ProxyFetchRequest } from "./index-BJztAQIP.js";
5
5
  import { t as dns_d_exports } from "./dns.js";
6
- import { s as net_d_exports } from "./net-BDW1AVX1.js";
6
+ import { s as net_d_exports } from "./net-5SVFcuzM.js";
7
7
  import { t as dgram_d_exports } from "./dgram.js";
8
8
  import { t as http_d_exports } from "./http.js";
9
9
  import { t as desktop_d_exports } from "./desktop.js";
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { A as e, B as t, C as n, E as r, F as i, H as a, I as o, L as s, M as c, O as l, P as u, R as d, S as f, T as p, V as m, a as h, c as g, d as _, i as v, j as y, k as b, l as x, o as S, r as C, s as w, u as T, w as E, x as D, z as O } from "./proxy-C8SG1Beo.js";
2
2
  import { r as k, t as A } from "./api--bnCFd4w.js";
3
- import { i as j, n as M } from "./cloud-BFyf2uC7.js";
3
+ import { i as j, n as M } from "./cloud-Dsb33tl6.js";
4
4
  import { t as N } from "./dns.js";
5
5
  import { s as P } from "./net-DKMWPXb_.js";
6
6
  import { i as F } from "./dgram-wtjARbt0.js";
@@ -1,4 +1,4 @@
1
- import { i as TcpSocketOption, r as LocalTcpSocket, t as Resolvers } from "./api-BYUraih6.js";
1
+ import { i as TcpSocketOption, r as LocalTcpSocket, t as Resolvers } from "./api-B0jZnr_N.js";
2
2
  import { AddressInfo, ListenOptions, Server, ServerOpts, Socket, SocketConnectOpts, SocketConstructorOpts } from "net";
3
3
  import { DuplexOptions, Stream } from "stream";
4
4
  import { EventEmitter } from "events";
package/net.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "./net-BDW1AVX1.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-5SVFcuzM.js";
2
2
  export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fkn/lib",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-bPaU3-Cz.cjs"),n=require("./api-DD5v1qP9.cjs"),r=require("./dns.cjs"),i=require("./cloud/fs.cjs"),a=require("./net-CpuAhaQC.cjs"),o=require("./dgram-CE43gJq9.cjs"),s=require("./http.cjs");let c=require("osra");var l=`autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write`,u=2e4,d=65e3,f=3e4,p=5e3,m=new Set([`videoElement`]),h=()=>`https://fkn.app`,g=e=>!e||e===`about:blank`,_=e=>e?``:`incognito-${crypto.randomUUID()}`,v=({target:e,session:t})=>{let n=new URL(`/attach-frame`,h());return e&&n.searchParams.set(`url`,e),t&&n.searchParams.set(`session`,t),n.href},y=(e,t,n)=>{let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(n)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))},b=(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())},x=()=>Object.assign(Error(`cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe`),{name:t.v}),S=(e,t)=>{let n=[...e.split(`;`),...t.split(`;`)].map(e=>e.trim()).filter(Boolean);return[...new Set(n)].join(`; `)},C=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`)},w=async({iframe:e,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);if(i)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`);C(e);let a=e.getAttribute(`src`)??``,o=(()=>{if(g(a))return null;try{return new URL(e.src||a,location.href)}catch{throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${a}`)}})();if(o){let e=new URL(`/attach-frame`,h());if(o.origin===e.origin&&o.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 s=o?.href??``;s&&t.l(s);let w=s,T=_(r),E=new AbortController;if(e.referrerPolicy=`origin`,e.allow=S(l,e.allow),e.src=v({target:s,session:T}),!e.contentWindow)throw Error(`cloud.attachFrame: the iframe window is not available`);try{let n=await y((0,c.expose)({},{key:`fkn-attach-frame`,origin:h(),transport:{receive:window,emit:e.contentWindow},unregisterSignal:E.signal}),u,`cloud.attachFrame: timed out connecting to the render proxy page`);await y(n.ready(),d,`cloud.attachFrame: the render proxy never became ready`),b(e,()=>E.abort());let r=e.contentWindow,i=()=>{if(!(!E.signal.aborted&&e.isConnected&&e.contentWindow===r))throw E.abort(),x()};return t.s({executeLocator:(e,r,a)=>m.has(r)?Promise.reject(t.y(r,`cloud`)):(i(),n.executeLocator(e,r,a)),ensurePermission:async()=>{},goto:async(e,t={})=>{let r=new URL(e,location.href).href;i();let{timeoutMs:a}=t;await y(n.goto(r,t),(a??f)+p,`cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded`),w=r},url:()=>w})}catch(t){throw E.abort(),e.src=s||`about:blank`,t}},T=async()=>{let e=await n.t.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}},E=e.n({attachFrame:()=>w,available:()=>D,dgram:()=>o.i,dns:()=>r.t,fetch:()=>t.t,fs:()=>i.t,http:()=>s.t,net:()=>a.s,quota:()=>T}),D=()=>n.n;Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}});