@fkn/lib 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/{api-BYUraih6.d.ts → api-CI4d96Ty.d.ts} +156 -24
  2. package/{background-B_VgpARk.cjs → background-Bu7dBd_Z.cjs} +1 -1
  3. package/{background-BVBbBOmL.js → background-DLnt6fYS.js} +5 -5
  4. package/cloud/dgram.cjs +1 -1
  5. package/cloud/dgram.js +1 -1
  6. package/cloud/fs.cjs +1 -1
  7. package/cloud/fs.d.ts +2 -2
  8. package/cloud/fs.js +18 -15
  9. package/cloud/net.cjs +1 -1
  10. package/cloud/net.d.ts +1 -1
  11. package/cloud/net.js +3 -3
  12. package/{cloud-gklfa4ZN.d.ts → cloud-BxPdeAuj.d.ts} +4 -4
  13. package/cloud-DevROE3T.cjs +1 -0
  14. package/{cloud-BFyf2uC7.js → cloud-Pibu_mY3.js} +32 -18
  15. package/cloud.cjs +1 -1
  16. package/cloud.d.ts +3 -3
  17. package/cloud.js +4 -4
  18. package/desktop.d.ts +6 -0
  19. package/{dgram-wtjARbt0.js → dgram-CKRbKVzG.js} +140 -86
  20. package/dgram-DcvdNkg6.cjs +1 -0
  21. package/dgram.cjs +1 -1
  22. package/dgram.d.ts +16 -1
  23. package/dgram.js +1 -1
  24. package/{extension-CPj10qwa.js → extension-4ib5y95s.js} +1 -1
  25. package/{extension-D-NUXxzF.cjs → extension-DVHdBvOz.cjs} +1 -1
  26. package/extension.cjs +1 -1
  27. package/extension.js +2 -2
  28. package/fs/promises.cjs +1 -1
  29. package/fs/promises.js +1 -1
  30. package/{fs-D6nNf1mR.js → fs-7E0-tE2x.js} +11 -11
  31. package/{fs-K7ROdxDx.d.ts → fs-BEfsbriO.d.ts} +14 -2
  32. package/{fs-BfmfMBiw.cjs → fs-BN4hkppN.cjs} +1 -1
  33. package/fs.cjs +1 -1
  34. package/fs.js +1 -1
  35. package/http.cjs +1 -1
  36. package/http.d.ts +1 -1
  37. package/http.js +1 -1
  38. package/index.cjs +1 -1
  39. package/index.d.ts +3 -3
  40. package/index.js +6 -6
  41. package/{net-DKMWPXb_.js → net-BFYMbE4N.js} +49 -26
  42. package/net-BPpdNdpy.cjs +1 -0
  43. package/{net-BDW1AVX1.d.ts → net-Cx8lDWau.d.ts} +13 -4
  44. package/net.cjs +1 -1
  45. package/net.d.ts +1 -1
  46. package/net.js +3 -3
  47. package/package.json +1 -1
  48. package/{packages-D36R2vBv.d.ts → packages-CErlrrLB.d.ts} +2 -2
  49. package/packages.d.ts +2 -2
  50. package/{proxy-C8SG1Beo.js → proxy-Cusnx9Ex.js} +1 -1
  51. package/{proxy-bPaU3-Cz.cjs → proxy-Du95zAKk.cjs} +1 -1
  52. package/storage-DMETg6sP.js +30 -0
  53. package/storage-ezLkqmQR.cjs +1 -0
  54. package/{utils-DPtyxGQu.js → utils-DVlbuXmW.js} +6 -4
  55. package/utils-QfNXtEhb.cjs +1 -0
  56. package/cloud-5o7yJHeX.cjs +0 -1
  57. package/dgram-CE43gJq9.cjs +0 -1
  58. package/net-CpuAhaQC.cjs +0 -1
  59. package/storage-OkwsFLN1.cjs +0 -1
  60. package/storage-TmeyhZGt.js +0 -19
  61. package/utils-CoimMjf9.cjs +0 -1
@@ -1,13 +1,12 @@
1
- import { C as PackagesFail, _ as ConnectOptions, b as PackageQuery, v as InstallOptions, w as PickOptions, x as PackageResult, y as InstalledPackage } from "./packages-D36R2vBv.js";
1
+ import { S as PackageResult, T as PickOptions, b as InstalledPackage, v as ConnectOptions, w as PackagesFail, x as PackageQuery, y as InstallOptions } from "./packages-CErlrrLB.js";
2
2
  import { t as AddressLookupResult } from "./lookup-BtwWaCZJ.js";
3
- import { Address4, Address6 } from "ip-address";
4
-
5
3
  //#region src/api/storage.d.ts
6
4
  type StorageEntry = {
7
5
  path: string;
8
6
  size: number;
9
7
  contentType: string | null;
10
8
  updatedAt: string;
9
+ encryption: string | null;
11
10
  };
12
11
  type StorageQuota = {
13
12
  usedBytes: number;
@@ -110,6 +109,22 @@ declare const parseServerMetadataTcpSocketListenerUnboundPacket: (offset: number
110
109
  readonly socketId: number;
111
110
  };
112
111
  type ServerMetadataTcpSocketListenerUnboundPacket = ReturnType<typeof parseServerMetadataTcpSocketListenerUnboundPacket>;
112
+ declare const parseServerMetadataTcpSocketAcceptedPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
113
+ readonly _type: 'ServerMetadataTcpSocketAcceptedPacket';
114
+ readonly offset: number;
115
+ readonly id: number;
116
+ readonly socketId: number;
117
+ readonly listenerSocketId: number;
118
+ readonly localAddressType: 0 | 1;
119
+ readonly localAddress: import("ip-address").Address4 | import("ip-address").Address6;
120
+ readonly localPort: number;
121
+ readonly remoteAddressType: 0 | 1;
122
+ readonly remoteAddress: import("ip-address").Address4 | import("ip-address").Address6;
123
+ readonly remotePort: number;
124
+ readonly errorLength: number;
125
+ readonly error: string;
126
+ };
127
+ type ServerMetadataTcpSocketAcceptedPacket = ReturnType<typeof parseServerMetadataTcpSocketAcceptedPacket>;
113
128
  //#endregion
114
129
  //#region src/api/webvpn/packets/udp.d.ts
115
130
  declare const parseServerMetadataUdpSocketBoundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
@@ -143,6 +158,26 @@ declare const parseServerMetadataUdpSocketConnectedPacket: (offset: number, buff
143
158
  readonly error: string;
144
159
  };
145
160
  type ServerMetadataUdpSocketConnectedPacket = ReturnType<typeof parseServerMetadataUdpSocketConnectedPacket>;
161
+ declare const parseServerMetadataUdpSocketDisconnectedPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
162
+ readonly _type: 'ServerMetadataUdpSocketDisconnectedPacket';
163
+ readonly offset: number;
164
+ readonly id: number;
165
+ readonly socketId: number;
166
+ readonly errorLength: number;
167
+ readonly error: string;
168
+ };
169
+ type ServerMetadataUdpSocketDisconnectedPacket = ReturnType<typeof parseServerMetadataUdpSocketDisconnectedPacket>;
170
+ declare const parseServerUdpDataPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
171
+ readonly _type: 'ServerUdpDataPacket';
172
+ readonly offset: number;
173
+ readonly socketId: number;
174
+ readonly remoteAddressType: 0 | 1 | 2;
175
+ readonly remoteAddress: import("ip-address").Address4 | import("ip-address").Address6 | undefined;
176
+ readonly remotePort: number | undefined;
177
+ readonly dataLength: number;
178
+ readonly data: ArrayBuffer;
179
+ };
180
+ type ServerUdpDataPacket = ReturnType<typeof parseServerUdpDataPacket>;
146
181
  declare const UDP_OPTION_BROADCAST: 0;
147
182
  declare const UDP_OPTION_TTL: 1;
148
183
  declare const UDP_OPTION_MULTICAST_TTL_V4: 2;
@@ -212,17 +247,61 @@ declare const parseServerMetadataHeaderPacket: (offset: number, buffer: ArrayBuf
212
247
  readonly version: string;
213
248
  };
214
249
  type ServerMetadataHeaderPacket = ReturnType<typeof parseServerMetadataHeaderPacket>;
215
- type ServerMetadataPacket = ServerMetadataHeaderPacket | ServerMetadataTcpSocketConnectedPacket | ServerMetadataTcpSocketShutdownPacket | ServerMetadataTcpSocketListenerBoundPacket | ServerMetadataTcpSocketListenerUnboundPacket | ServerMetadataUdpSocketBoundPacket | ServerMetadataUdpSocketUnboundPacket | ServerMetadataUdpSocketConnectedPacket | ServerMetadataTcpSetOptionAckPacket | ServerMetadataUdpSetOptionAckPacket;
250
+ declare const parseServerMetadataAccountStatusPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
251
+ readonly _type: 'ServerMetadataAccountStatusPacket';
252
+ readonly offset: number;
253
+ readonly id: number;
254
+ readonly adopted: boolean;
255
+ readonly errorLength: number;
256
+ readonly error: string;
257
+ };
258
+ type ServerMetadataAccountStatusPacket = ReturnType<typeof parseServerMetadataAccountStatusPacket>;
259
+ declare const parseServerMetadataAccountClearedPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
260
+ readonly _type: 'ServerMetadataAccountClearedPacket';
261
+ readonly offset: number;
262
+ readonly id: number;
263
+ readonly errorLength: number;
264
+ readonly error: string;
265
+ };
266
+ type ServerMetadataAccountClearedPacket = ReturnType<typeof parseServerMetadataAccountClearedPacket>;
267
+ type ServerMetadataPacket = ServerMetadataHeaderPacket | ServerMetadataTcpSocketConnectedPacket | ServerMetadataTcpSocketShutdownPacket | ServerMetadataTcpSocketListenerBoundPacket | ServerMetadataTcpSocketListenerUnboundPacket | ServerMetadataUdpSocketBoundPacket | ServerMetadataUdpSocketUnboundPacket | ServerMetadataUdpSocketConnectedPacket | ServerMetadataTcpSetOptionAckPacket | ServerMetadataUdpSetOptionAckPacket | ServerMetadataUdpSocketDisconnectedPacket | ServerMetadataAccountStatusPacket | ServerMetadataAccountClearedPacket | ServerMetadataTcpSocketAcceptedPacket;
216
268
  //#endregion
217
- //#region src/api/webvpn/webtransport.d.ts
269
+ //#region src/api/webvpn/session-core.d.ts
270
+ type MetadataRequestOptions = {
271
+ timeoutMs?: number;
272
+ what?: string;
273
+ signal?: AbortSignal;
274
+ };
218
275
  type BidirectionalStreams = {
219
276
  readable: ReadableStream<Uint8Array>;
220
277
  writable: WritableStream<Uint8Array>;
221
278
  };
222
- declare const makeWebVPNWebTransport: () => Promise<{
223
- webtransport: WebTransport;
279
+ type TransportPrimitives = {
280
+ metadataReadable: ReadableStream<Uint8Array>;
281
+ metadataWriter: WritableStreamDefaultWriter<Uint8Array>;
282
+ datagramWriter: WritableStreamDefaultWriter<Uint8Array>;
283
+ incomingBidi: ReadableStream<BidirectionalStreams>;
284
+ incomingUni: ReadableStream<ReadableStream<Uint8Array>>;
285
+ openUniStream?: () => Promise<WritableStream<Uint8Array>>;
286
+ serverDatagrams?: ReadableStream<ServerUdpDataPacket>;
287
+ closed: Promise<{
288
+ reason: string;
289
+ }>;
290
+ close: (reason: string) => void;
291
+ };
292
+ declare const makeWebVpnSession: (primitives: TransportPrimitives) => Promise<{
293
+ closed: Promise<{
294
+ reason: string;
295
+ }>;
224
296
  isClosed: () => boolean;
297
+ isProvenAlive: () => boolean;
298
+ fail: (reason: string) => void;
299
+ relayVersion: string;
225
300
  getNewPacketId: () => number;
301
+ requestMetadataPacket: (requestWriter: WritableStreamDefaultWriter<Uint8Array>, packRequest: (packetId: number) => Uint8Array, options?: MetadataRequestOptions) => Promise<ServerMetadataPacket>;
302
+ tombstoneMetadataRequest: (packetId: number) => void;
303
+ retireSocketId: (socketId: number) => void;
304
+ bindToSessionClosed: (handler: (err: Error) => void) => (() => void);
226
305
  getTcpDataReadableStreamForSocketId: (socketId: number, options?: {
227
306
  signal?: AbortSignal;
228
307
  }) => Promise<BidirectionalStreams>;
@@ -231,22 +310,31 @@ declare const makeWebVPNWebTransport: () => Promise<{
231
310
  readonly offset: number;
232
311
  readonly socketId: number;
233
312
  readonly remoteAddressType: 0 | 1 | 2;
234
- readonly remoteAddress: Address4 | Address6 | undefined;
313
+ readonly remoteAddress: import("ip-address").Address4 | import("ip-address").Address6 | undefined;
235
314
  readonly remotePort: number | undefined;
236
315
  readonly dataLength: number;
237
316
  readonly data: ArrayBuffer;
238
317
  }>;
239
318
  claimUdpRawStream: (socketId: number, sink: (packetBytes: Uint8Array) => void) => void;
240
319
  releaseUdpRawStream: (socketId: number) => void;
241
- getPacketForId: (packetId: number) => Promise<ServerMetadataPacket>;
320
+ getPacketForId: (packetId: number, options?: {
321
+ signal?: AbortSignal;
322
+ }) => Promise<ServerMetadataPacket>;
242
323
  getMetadataReadableStreamForSocketId: (socketId: number) => ReadableStream<ServerMetadataPacket>;
243
- getMetadataReadableStreamForLocalAddress: (address: Address4 | Address6) => ReadableStream<ServerMetadataPacket>;
244
- getMetadataReadableStreamForLocalPort: (port: number) => ReadableStream<ServerMetadataPacket>;
324
+ getMetadataReadableStreamForListenerSocketId: (listenerSocketId: number) => ReadableStream<ServerMetadataPacket>;
245
325
  getMetadataWritableStream: () => WritableStream<Uint8Array<ArrayBufferLike>>;
246
326
  getDatagramWritableStream: () => WritableStream<Uint8Array<ArrayBufferLike>>;
327
+ openUdpUploadStream: ((socketId: number) => Promise<WritableStreamDefaultWriter<Uint8Array<ArrayBufferLike>>>) | undefined;
328
+ claimUdpBidiStream: ((socketId: number, options?: {
329
+ signal?: AbortSignal;
330
+ }) => Promise<WritableStreamDefaultWriter<Uint8Array<ArrayBufferLike>>>) | undefined;
247
331
  presentRateToken: () => Promise<void>;
332
+ clearAccount: () => Promise<void>;
248
333
  }>;
249
- type WebVPNWebTransport = Awaited<ReturnType<typeof makeWebVPNWebTransport>>;
334
+ type WebVPNSession = Awaited<ReturnType<typeof makeWebVpnSession>>;
335
+ //#endregion
336
+ //#region src/api/webvpn/transport.d.ts
337
+ type WebVPNWebTransport = WebVPNSession;
250
338
  //#endregion
251
339
  //#region src/api/webvpn/tcp.d.ts
252
340
  declare const processTcpSocket: ({
@@ -256,15 +344,17 @@ declare const processTcpSocket: ({
256
344
  metadataReadableStream,
257
345
  metadataWriter,
258
346
  dataStreamAbort,
259
- webVpnWebTransport
347
+ webVpnWebTransport,
348
+ ownsMetadataWriter
260
349
  }: {
261
- connectedPacket: ServerMetadataTcpSocketConnectedPacket;
350
+ connectedPacket: ServerMetadataTcpSocketConnectedPacket | ServerMetadataTcpSocketAcceptedPacket;
262
351
  dataReadableStream: ReadableStream<Uint8Array>;
263
352
  dataWritableStream: WritableStream<Uint8Array>;
264
353
  metadataReadableStream: ReadableStream<ServerMetadataPacket>;
265
354
  metadataWriter: WritableStreamDefaultWriter<Uint8Array>;
266
355
  dataStreamAbort?: AbortController;
267
356
  webVpnWebTransport: WebVPNWebTransport;
357
+ ownsMetadataWriter?: boolean;
268
358
  }) => Promise<{
269
359
  localAddress: string;
270
360
  localFamily: "IPv4" | "IPv6";
@@ -320,23 +410,35 @@ declare const resolvers: {
320
410
  readonly readFile: (path: string) => Promise<Uint8Array>;
321
411
  readonly writeFile: (path: string, data: WriteData, contentType: string | null) => Promise<void>;
322
412
  readonly remove: (path: string) => Promise<void>;
413
+ readonly encryption: () => Promise<{
414
+ accountEnabled: boolean;
415
+ appMode: string;
416
+ unlocked: boolean;
417
+ }>;
418
+ readonly unlock: () => Promise<boolean>;
323
419
  };
324
420
  readonly webvpn: {
325
421
  readonly tcpSocket: ({
326
422
  remoteAddress: _remoteAddress,
327
- remotePort
423
+ remotePort,
424
+ usageTag
328
425
  }: {
329
426
  remoteAddress: string;
330
427
  remotePort: number;
428
+ usageTag?: string;
331
429
  }) => Promise<LocalTcpSocket>;
332
430
  readonly tcpSocketListener: ({
333
431
  localAddress: _localAddress,
334
432
  localPort,
335
- onConnection
433
+ onConnection,
434
+ onClose,
435
+ usageTag
336
436
  }: {
337
437
  localAddress: string;
338
438
  localPort: number;
339
- onConnection: (connection: TcpSocketResult) => void;
439
+ onConnection: (connection: TcpSocketResult) => void | Promise<void>;
440
+ onClose?: (error?: Error) => void | Promise<void>;
441
+ usageTag?: string;
340
442
  }) => Promise<{
341
443
  localAddress: string;
342
444
  localFamily: "IPv4" | "IPv6";
@@ -347,15 +449,21 @@ declare const resolvers: {
347
449
  type,
348
450
  port,
349
451
  address,
350
- dataPort
452
+ dataPort,
453
+ usageTag
351
454
  }: {
352
455
  type: 'udp4' | 'udp6';
353
456
  port: number;
354
457
  address: string;
355
458
  dataPort?: boolean;
459
+ usageTag?: string;
356
460
  }) => Promise<{
357
461
  socketId: number;
358
462
  dataPort: MessagePort | undefined;
463
+ dataPortAcks: true | undefined;
464
+ closed: Promise<{
465
+ reason: string;
466
+ }>;
359
467
  localAddress: string;
360
468
  localFamily: "IPv4" | "IPv6";
361
469
  localPort: number;
@@ -372,7 +480,13 @@ declare const resolvers: {
372
480
  }: {
373
481
  remoteAddress: string;
374
482
  remotePort: number;
375
- }) => Promise<void>;
483
+ }) => Promise<{
484
+ local: boolean;
485
+ address: string;
486
+ family: "IPv4" | "IPv6";
487
+ port: number;
488
+ }>;
489
+ disconnect: () => Promise<void>;
376
490
  send: ({
377
491
  message,
378
492
  address: _remoteAddress,
@@ -442,19 +556,25 @@ declare const resolvers: {
442
556
  }) => Promise<Response>;
443
557
  readonly webVpnTcpSocket: ({
444
558
  remoteAddress: _remoteAddress,
445
- remotePort
559
+ remotePort,
560
+ usageTag
446
561
  }: {
447
562
  remoteAddress: string;
448
563
  remotePort: number;
564
+ usageTag?: string;
449
565
  }) => Promise<LocalTcpSocket>;
450
566
  readonly webVpnTcpSocketListener: ({
451
567
  localAddress: _localAddress,
452
568
  localPort,
453
- onConnection
569
+ onConnection,
570
+ onClose,
571
+ usageTag
454
572
  }: {
455
573
  localAddress: string;
456
574
  localPort: number;
457
- onConnection: (connection: TcpSocketResult) => void;
575
+ onConnection: (connection: TcpSocketResult) => void | Promise<void>;
576
+ onClose?: (error?: Error) => void | Promise<void>;
577
+ usageTag?: string;
458
578
  }) => Promise<{
459
579
  localAddress: string;
460
580
  localFamily: "IPv4" | "IPv6";
@@ -465,15 +585,21 @@ declare const resolvers: {
465
585
  type,
466
586
  port,
467
587
  address,
468
- dataPort
588
+ dataPort,
589
+ usageTag
469
590
  }: {
470
591
  type: 'udp4' | 'udp6';
471
592
  port: number;
472
593
  address: string;
473
594
  dataPort?: boolean;
595
+ usageTag?: string;
474
596
  }) => Promise<{
475
597
  socketId: number;
476
598
  dataPort: MessagePort | undefined;
599
+ dataPortAcks: true | undefined;
600
+ closed: Promise<{
601
+ reason: string;
602
+ }>;
477
603
  localAddress: string;
478
604
  localFamily: "IPv4" | "IPv6";
479
605
  localPort: number;
@@ -490,7 +616,13 @@ declare const resolvers: {
490
616
  }: {
491
617
  remoteAddress: string;
492
618
  remotePort: number;
493
- }) => Promise<void>;
619
+ }) => Promise<{
620
+ local: boolean;
621
+ address: string;
622
+ family: "IPv4" | "IPv6";
623
+ port: number;
624
+ }>;
625
+ disconnect: () => Promise<void>;
494
626
  send: ({
495
627
  message,
496
628
  address: _remoteAddress,
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-bPaU3-Cz.cjs");let n=require("osra");var r=e.t(((e,t)=>{(function(n,r){if(typeof define==`function`&&define.amd)define(`webextension-polyfill`,[`module`],r);else if(e!==void 0)r(t);else{var i={exports:{}};r(i),n.browser=i.exports}})(typeof globalThis<`u`?globalThis:typeof self<`u`?self:e,function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw Error(`This script should only be loaded in a browser extension.`);globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id?e.exports=globalThis.browser:e.exports=(e=>{let t={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(Object.keys(t).length===0)throw Error(`api-metadata.json has not been included in browser-polyfill`);class n extends WeakMap{constructor(e,t=void 0){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}let r=e=>e&&typeof e==`object`&&typeof e.then==`function`,i=(t,n)=>(...r)=>{e.runtime.lastError?t.reject(Error(e.runtime.lastError.message)):n.singleCallbackArg||r.length<=1&&n.singleCallbackArg!==!1?t.resolve(r[0]):t.resolve(r)},a=e=>e==1?`argument`:`arguments`,o=(e,t)=>function(n,...r){if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((a,o)=>{if(t.fallbackToNoCallback)try{n[e](...r,i({resolve:a,reject:o},t))}catch(i){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,i),n[e](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,a()}else t.noCallback?(n[e](...r),a()):n[e](...r,i({resolve:a,reject:o},t))})},s=(e,t,n)=>new Proxy(t,{apply(t,r,i){return n.call(r,e,...i)}}),c=Function.call.bind(Object.prototype.hasOwnProperty),l=(e,t={},n={})=>{let r=Object.create(null),i={has(t,n){return n in e||n in r},get(i,a,u){if(a in r)return r[a];if(!(a in e))return;let d=e[a];if(typeof d==`function`)if(typeof t[a]==`function`)d=s(e,e[a],t[a]);else if(c(n,a)){let t=o(a,n[a]);d=s(e,e[a],t)}else d=d.bind(e);else if(typeof d==`object`&&d&&(c(t,a)||c(n,a)))d=l(d,t[a],n[a]);else if(c(n,`*`))d=l(d,t[a],n[`*`]);else return Object.defineProperty(r,a,{configurable:!0,enumerable:!0,get(){return e[a]},set(t){e[a]=t}}),d;return r[a]=d,d},set(t,n,i,a){return n in r?r[n]=i:e[n]=i,!0},defineProperty(e,t,n){return Reflect.defineProperty(r,t,n)},deleteProperty(e,t){return Reflect.deleteProperty(r,t)}},a=Object.create(e);return new Proxy(a,i)},u=e=>({addListener(t,n,...r){t.addListener(e.get(n),...r)},hasListener(t,n){return t.hasListener(e.get(n))},removeListener(t,n){t.removeListener(e.get(n))}}),d=new n(e=>typeof e==`function`?function(t){e(l(t,{},{getContent:{minArgs:0,maxArgs:0}}))}:e),f=new n(e=>typeof e==`function`?function(t,n,i){let a=!1,o,s=new Promise(e=>{o=function(t){a=!0,e(t)}}),c;try{c=e(t,n,o)}catch(e){c=Promise.reject(e)}let l=c!==!0&&r(c);return c!==!0&&!l&&!a?!1:((e=>{e.then(e=>{i(e)},e=>{let t;t=e&&(e instanceof Error||typeof e.message==`string`)?e.message:`An unexpected error occurred`,i({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error(`Failed to send onMessage rejected reply`,e)})})(l?c:s),!0)}:e),p=({reject:t,resolve:n},r)=>{e.runtime.lastError?e.runtime.lastError.message===`The message port closed before a response was received.`?n():t(Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?t(Error(r.message)):n(r)},m=(e,t,n,...r)=>{if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((e,t)=>{let i=p.bind(null,{resolve:e,reject:t});r.push(i),n.sendMessage(...r)})},h={devtools:{network:{onRequestFinished:u(d)}},runtime:{onMessage:u(f),onMessageExternal:u(f),sendMessage:m.bind(null,`sendMessage`,{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,`sendMessage`,{minArgs:2,maxArgs:3})}},g={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":g},services:{"*":g},websites:{"*":g}},l(e,h,t)})(chrome)})}))(),i=`FKN_WEB_EXTENSION_BACKGROUND_COMMUNICATION_OSRA_KEY`,a=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`,o=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY`,s=e=>t.b(e)&&e.FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY===!0&&typeof e.from==`string`&&t.b(e.message),c=new Map,l=e=>{let i=c.get(e);if(i)return i;let{promise:s,resolve:l}=Promise.withResolvers(),{promise:u,resolve:d}=Promise.withResolvers(),f={resolvers:(0,n.expose)(O,{key:a,revivableModules:t.L,transport:{isJson:!0,receive:e=>l(e),emit:t=>{r.runtime.sendMessage({[o]:!0,target:e,message:t}).catch(()=>{})}}}),listener:s,stale:u,markStale:d};return c.set(e,f),f};r.runtime.onMessage.addListener((e,t)=>{s(e)&&(0,n.checkOsraMessageKey)(e.message,`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`)&&l(e.from).listener.then(n=>n(e.message,{sender:t}))}),t._(e=>{let t=c.get(e);t&&(t.markStale(),c.delete(e))});var u=async e=>{let t=l(e);return{resolvers:await Promise.race([t.resolvers,t.stale.then(()=>{throw Error(`peer ${e} became stale before connect completed`)})]),stale:t.stale}},d=[`position: fixed`,`border: 2px solid oklch(63% 0.24 25)`,`border-radius: 4px`,`background: oklch(63% 0.24 25 / 0.12)`,`box-shadow: 0 0 0 2px oklch(63% 0.24 25 / 0.5), 0 0 0 100vmax oklch(0% 0 0 / 0.5)`,`z-index: 2147483647`,`pointer-events: none`,`box-sizing: border-box`],f=(e,t)=>{let n=t.getBoundingClientRect();e.setAttribute(`style`,[...d,`left: ${n.left}px`,`top: ${n.top}px`,`width: ${n.width}px`,`height: ${n.height}px`].map(e=>`${e} !important`).join(`; `))},p=e=>{let t=e.getBoundingClientRect();return{clientX:t.left+t.width/2,clientY:t.top+t.height/2}},m=0,h=e=>{m^=1;let{clientX:t,clientY:n}=p(e),r={bubbles:!0,cancelable:!0,composed:!0,clientX:t+m,clientY:n};e.dispatchEvent(new PointerEvent(`pointermove`,{...r,pointerType:`mouse`,pointerId:1,isPrimary:!0})),e.dispatchEvent(new MouseEvent(`mousemove`,r))},g=[[PointerEvent,`pointerover`,!0],[PointerEvent,`pointerenter`,!1],[MouseEvent,`mouseover`,!0],[MouseEvent,`mouseenter`,!1]],_=[[PointerEvent,`pointerout`,!0],[PointerEvent,`pointerleave`,!1],[MouseEvent,`mouseout`,!0],[MouseEvent,`mouseleave`,!1]],v=(e,t)=>t.forEach(([t,n,r])=>e.dispatchEvent(new t(n,{bubbles:r,cancelable:!0,composed:!0,...p(e)}))),y=e=>{v(e,g),h(e)},b=e=>v(e,_),x=null,S=e=>{C();try{e.scrollIntoView({block:`center`,inline:`center`})}catch{}let t=document.createElement(`div`);(document.body??document.documentElement).appendChild(t),y(e);let n=requestAnimationFrame(function r(){f(t,e),n=requestAnimationFrame(r)}),r=window.setInterval(()=>h(e),300);x={stop:()=>{cancelAnimationFrame(n),clearInterval(r),b(e),t.remove()}}},C=()=>{x?.stop(),x=null},w={[t.p]:t.f,[t.h]:t.m},T=e=>{let t=w[e.locatorType];if(!t)throw Error(`Unknown locator kind: "${e.locatorType}"`);let n=t.selectorModules.find(t=>t.type===e.type);if(!n)throw Error(`Unknown selector: "${e.locatorType}.${e.type}"`);return n},E=e=>e.reduce((e,t)=>T(t).resolve({elements:e},...t.args),[document.documentElement]),D=e=>{for(let t=0;t<e.length;t++){let n=T(e[t]);if(n.resolvePeer)return{module:n,index:t}}return null},O={contentScriptDummy:()=>{},executeLocator:async(e,n,r)=>{let i=D(e);if(i){let t=await i.module.resolvePeer({parts:e,selfIndex:i.index,resolveLocal:E}),{resolvers:a,stale:o}=await u(t),s=e.slice(i.index+1);return Promise.race([a.executeLocator(s,n,r),o.then(()=>{throw Error(`peer ${t} became stale during call, retrying`)})])}if(n===`__fkn_highlight`){if(r[0]?.on){let n=E(e)[0];n&&(t.g(!0),S(n))}else C(),t.g(!1);return}let a=[...t.f.operationModules,...t.m.operationModules].find(e=>e.type===n);if(!a)throw Error(`Unknown operation: "${n}"`);return a.resolve({elements:E(e)},...r)}},k=(0,n.expose)(O,{key:i,transport:{isJson:!0,receive:r.runtime.onMessage,emit:r.runtime}});exports.backgroundResolvers=k;
1
+ const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Du95zAKk.cjs");let n=require("osra");var r=e.t(((e,t)=>{(function(n,r){if(typeof define==`function`&&define.amd)define(`webextension-polyfill`,[`module`],r);else if(e!==void 0)r(t);else{var i={exports:{}};r(i),n.browser=i.exports}})(typeof globalThis<`u`?globalThis:typeof self<`u`?self:e,function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw Error(`This script should only be loaded in a browser extension.`);globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id?e.exports=globalThis.browser:e.exports=(e=>{let t={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(Object.keys(t).length===0)throw Error(`api-metadata.json has not been included in browser-polyfill`);class n extends WeakMap{constructor(e,t=void 0){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}let r=e=>e&&typeof e==`object`&&typeof e.then==`function`,i=(t,n)=>(...r)=>{e.runtime.lastError?t.reject(Error(e.runtime.lastError.message)):n.singleCallbackArg||r.length<=1&&n.singleCallbackArg!==!1?t.resolve(r[0]):t.resolve(r)},a=e=>e==1?`argument`:`arguments`,o=(e,t)=>function(n,...r){if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((a,o)=>{if(t.fallbackToNoCallback)try{n[e](...r,i({resolve:a,reject:o},t))}catch(i){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,i),n[e](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,a()}else t.noCallback?(n[e](...r),a()):n[e](...r,i({resolve:a,reject:o},t))})},s=(e,t,n)=>new Proxy(t,{apply(t,r,i){return n.call(r,e,...i)}}),c=Function.call.bind(Object.prototype.hasOwnProperty),l=(e,t={},n={})=>{let r=Object.create(null),i={has(t,n){return n in e||n in r},get(i,a,u){if(a in r)return r[a];if(!(a in e))return;let d=e[a];if(typeof d==`function`)if(typeof t[a]==`function`)d=s(e,e[a],t[a]);else if(c(n,a)){let t=o(a,n[a]);d=s(e,e[a],t)}else d=d.bind(e);else if(typeof d==`object`&&d&&(c(t,a)||c(n,a)))d=l(d,t[a],n[a]);else if(c(n,`*`))d=l(d,t[a],n[`*`]);else return Object.defineProperty(r,a,{configurable:!0,enumerable:!0,get(){return e[a]},set(t){e[a]=t}}),d;return r[a]=d,d},set(t,n,i,a){return n in r?r[n]=i:e[n]=i,!0},defineProperty(e,t,n){return Reflect.defineProperty(r,t,n)},deleteProperty(e,t){return Reflect.deleteProperty(r,t)}},a=Object.create(e);return new Proxy(a,i)},u=e=>({addListener(t,n,...r){t.addListener(e.get(n),...r)},hasListener(t,n){return t.hasListener(e.get(n))},removeListener(t,n){t.removeListener(e.get(n))}}),d=new n(e=>typeof e==`function`?function(t){e(l(t,{},{getContent:{minArgs:0,maxArgs:0}}))}:e),f=new n(e=>typeof e==`function`?function(t,n,i){let a=!1,o,s=new Promise(e=>{o=function(t){a=!0,e(t)}}),c;try{c=e(t,n,o)}catch(e){c=Promise.reject(e)}let l=c!==!0&&r(c);return c!==!0&&!l&&!a?!1:((e=>{e.then(e=>{i(e)},e=>{let t;t=e&&(e instanceof Error||typeof e.message==`string`)?e.message:`An unexpected error occurred`,i({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error(`Failed to send onMessage rejected reply`,e)})})(l?c:s),!0)}:e),p=({reject:t,resolve:n},r)=>{e.runtime.lastError?e.runtime.lastError.message===`The message port closed before a response was received.`?n():t(Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?t(Error(r.message)):n(r)},m=(e,t,n,...r)=>{if(r.length<t.minArgs)throw Error(`Expected at least ${t.minArgs} ${a(t.minArgs)} for ${e}(), got ${r.length}`);if(r.length>t.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${a(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((e,t)=>{let i=p.bind(null,{resolve:e,reject:t});r.push(i),n.sendMessage(...r)})},h={devtools:{network:{onRequestFinished:u(d)}},runtime:{onMessage:u(f),onMessageExternal:u(f),sendMessage:m.bind(null,`sendMessage`,{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,`sendMessage`,{minArgs:2,maxArgs:3})}},g={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":g},services:{"*":g},websites:{"*":g}},l(e,h,t)})(chrome)})}))(),i=`FKN_WEB_EXTENSION_BACKGROUND_COMMUNICATION_OSRA_KEY`,a=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`,o=`FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY`,s=e=>t.b(e)&&e.FKN_WEB_EXTENSION_CONTENT_SCRIPT_RELAY_ENVELOPE_KEY===!0&&typeof e.from==`string`&&t.b(e.message),c=new Map,l=e=>{let i=c.get(e);if(i)return i;let{promise:s,resolve:l}=Promise.withResolvers(),{promise:u,resolve:d}=Promise.withResolvers(),f={resolvers:(0,n.expose)(O,{key:a,revivableModules:t.L,transport:{isJson:!0,receive:e=>l(e),emit:t=>{r.runtime.sendMessage({[o]:!0,target:e,message:t}).catch(()=>{})}}}),listener:s,stale:u,markStale:d};return c.set(e,f),f};r.runtime.onMessage.addListener((e,t)=>{s(e)&&(0,n.checkOsraMessageKey)(e.message,`FKN_WEB_EXTENSION_CONTENT_SCRIPT_PEER_OSRA_KEY`)&&l(e.from).listener.then(n=>n(e.message,{sender:t}))}),t._(e=>{let t=c.get(e);t&&(t.markStale(),c.delete(e))});var u=async e=>{let t=l(e);return{resolvers:await Promise.race([t.resolvers,t.stale.then(()=>{throw Error(`peer ${e} became stale before connect completed`)})]),stale:t.stale}},d=[`position: fixed`,`border: 2px solid oklch(63% 0.24 25)`,`border-radius: 4px`,`background: oklch(63% 0.24 25 / 0.12)`,`box-shadow: 0 0 0 2px oklch(63% 0.24 25 / 0.5), 0 0 0 100vmax oklch(0% 0 0 / 0.5)`,`z-index: 2147483647`,`pointer-events: none`,`box-sizing: border-box`],f=(e,t)=>{let n=t.getBoundingClientRect();e.setAttribute(`style`,[...d,`left: ${n.left}px`,`top: ${n.top}px`,`width: ${n.width}px`,`height: ${n.height}px`].map(e=>`${e} !important`).join(`; `))},p=e=>{let t=e.getBoundingClientRect();return{clientX:t.left+t.width/2,clientY:t.top+t.height/2}},m=0,h=e=>{m^=1;let{clientX:t,clientY:n}=p(e),r={bubbles:!0,cancelable:!0,composed:!0,clientX:t+m,clientY:n};e.dispatchEvent(new PointerEvent(`pointermove`,{...r,pointerType:`mouse`,pointerId:1,isPrimary:!0})),e.dispatchEvent(new MouseEvent(`mousemove`,r))},g=[[PointerEvent,`pointerover`,!0],[PointerEvent,`pointerenter`,!1],[MouseEvent,`mouseover`,!0],[MouseEvent,`mouseenter`,!1]],_=[[PointerEvent,`pointerout`,!0],[PointerEvent,`pointerleave`,!1],[MouseEvent,`mouseout`,!0],[MouseEvent,`mouseleave`,!1]],v=(e,t)=>t.forEach(([t,n,r])=>e.dispatchEvent(new t(n,{bubbles:r,cancelable:!0,composed:!0,...p(e)}))),y=e=>{v(e,g),h(e)},b=e=>v(e,_),x=null,S=e=>{C();try{e.scrollIntoView({block:`center`,inline:`center`})}catch{}let t=document.createElement(`div`);(document.body??document.documentElement).appendChild(t),y(e);let n=requestAnimationFrame(function r(){f(t,e),n=requestAnimationFrame(r)}),r=window.setInterval(()=>h(e),300);x={stop:()=>{cancelAnimationFrame(n),clearInterval(r),b(e),t.remove()}}},C=()=>{x?.stop(),x=null},w={[t.p]:t.f,[t.h]:t.m},T=e=>{let t=w[e.locatorType];if(!t)throw Error(`Unknown locator kind: "${e.locatorType}"`);let n=t.selectorModules.find(t=>t.type===e.type);if(!n)throw Error(`Unknown selector: "${e.locatorType}.${e.type}"`);return n},E=e=>e.reduce((e,t)=>T(t).resolve({elements:e},...t.args),[document.documentElement]),D=e=>{for(let t=0;t<e.length;t++){let n=T(e[t]);if(n.resolvePeer)return{module:n,index:t}}return null},O={contentScriptDummy:()=>{},executeLocator:async(e,n,r)=>{let i=D(e);if(i){let t=await i.module.resolvePeer({parts:e,selfIndex:i.index,resolveLocal:E}),{resolvers:a,stale:o}=await u(t),s=e.slice(i.index+1);return Promise.race([a.executeLocator(s,n,r),o.then(()=>{throw Error(`peer ${t} became stale during call, retrying`)})])}if(n===`__fkn_highlight`){if(r[0]?.on){let n=E(e)[0];n&&(t.g(!0),S(n))}else C(),t.g(!1);return}let a=[...t.f.operationModules,...t.m.operationModules].find(e=>e.type===n);if(!a)throw Error(`Unknown operation: "${n}"`);return a.resolve({elements:E(e)},...r)}},k=(globalThis.browser??globalThis.chrome).runtime,A=(0,n.expose)(O,{key:i,transport:{isJson:!0,receive:k.onMessage,emit:k}});exports.backgroundResolvers=A;
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-DF993M8W.js";
2
- import { L as t, _ as n, b as r, f as i, g as a, h as o, m as s, p as c } from "./proxy-C8SG1Beo.js";
2
+ import { L as t, _ as n, b as r, f as i, g as a, h as o, m as s, p as c } from "./proxy-Cusnx9Ex.js";
3
3
  import { checkOsraMessageKey as l, expose as u } from "osra";
4
4
  //#endregion
5
5
  //#region node_modules/@mfkn/web-extension/lib/background/constants.js
@@ -1016,13 +1016,13 @@ var v = async (e) => {
1016
1016
  if (!o) throw Error(`Unknown operation: "${t}"`);
1017
1017
  return o.resolve({ elements: P(e) }, ...n);
1018
1018
  }
1019
- }, L = u(I, {
1019
+ }, L = (globalThis.browser ?? globalThis.chrome).runtime, R = u(I, {
1020
1020
  key: f,
1021
1021
  transport: {
1022
1022
  isJson: !0,
1023
- receive: d.runtime.onMessage,
1024
- emit: d.runtime
1023
+ receive: L.onMessage,
1024
+ emit: L
1025
1025
  }
1026
1026
  });
1027
1027
  //#endregion
1028
- export { L as backgroundResolvers };
1028
+ export { R as backgroundResolvers };
package/cloud/dgram.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../dgram-CE43gJq9.cjs");exports.Socket=e.t,exports.createSocket=e.n,exports.default=e.r;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../dgram-DcvdNkg6.cjs");exports.Socket=e.t,exports.createSocket=e.n,exports.default=e.r;
package/cloud/dgram.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../dgram-wtjARbt0.js";
1
+ import { n as e, r as t, t as n } from "../dgram-CKRbKVzG.js";
2
2
  export { n as Socket, e as createSocket, t as default };
package/cloud/fs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../rolldown-runtime-Doa5O59j.cjs"),t=require("../node-fs-C0eKnboT.cjs"),n=require("../storage-OkwsFLN1.cjs");var r=e.n({available:()=>i,mkdir:()=>u,promises:()=>p,quota:()=>n.r,readFile:()=>a,readdir:()=>l,rename:()=>c,rm:()=>d,stat:()=>f,unlink:()=>s,writeFile:()=>o}),{available:i,readFile:a,writeFile:o,unlink:s,rename:c,readdir:l,mkdir:u,rm:d,stat:f,promises:p}=t.t(n.o,{memfs:!1});exports.available=i,exports.mkdir=u,exports.promises=p,exports.quota=n.r,exports.readFile=a,exports.readdir=l,exports.rename=c,exports.rm=d,exports.stat=f,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.unlink=s,exports.writeFile=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../rolldown-runtime-Doa5O59j.cjs"),t=require("../node-fs-C0eKnboT.cjs"),n=require("../storage-ezLkqmQR.cjs");var r=e.n({StorageLockedError:()=>n.t,available:()=>i,encryption:()=>n.r,mkdir:()=>u,promises:()=>p,quota:()=>n.a,readFile:()=>a,readdir:()=>l,rename:()=>c,rm:()=>d,stat:()=>f,unlink:()=>s,unlock:()=>n.l,writeFile:()=>o}),{available:i,readFile:a,writeFile:o,unlink:s,rename:c,readdir:l,mkdir:u,rm:d,stat:f,promises:p}=t.t(n.c,{memfs:!1});exports.StorageLockedError=n.t,exports.available=i,exports.encryption=n.r,exports.mkdir=u,exports.promises=p,exports.quota=n.a,exports.readFile=a,exports.readdir=l,exports.rename=c,exports.rm=d,exports.stat=f,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.unlink=s,exports.unlock=n.l,exports.writeFile=o;
package/cloud/fs.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { i as Stats } from "../index-C6ZoDJg8.js";
2
- import { a as readFile, c as rm, d as writeFile, f as FileEntry, i as promises, l as stat, m as quota, o as readdir, p as StorageQuota, r as mkdir, s as rename, t as available, u as unlink } from "../fs-K7ROdxDx.js";
3
- export { type FileEntry, type Stats, type StorageQuota, available, mkdir, promises, quota, readFile, readdir, rename, rm, stat, unlink, writeFile };
2
+ import { _ as quota, a as readFile, c as rm, d as writeFile, f as EncryptionStatus, g as encryption, h as StorageQuota, i as promises, l as stat, m as StorageLockedError, o as readdir, p as FileEntry, r as mkdir, s as rename, t as available, u as unlink, v as unlock } from "../fs-BEfsbriO.js";
3
+ export { type EncryptionStatus, type FileEntry, type Stats, StorageLockedError, type StorageQuota, available, encryption, mkdir, promises, quota, readFile, readdir, rename, rm, stat, unlink, unlock, writeFile };
package/cloud/fs.js CHANGED
@@ -1,19 +1,22 @@
1
1
  import { n as e } from "../rolldown-runtime-DF993M8W.js";
2
2
  import { t } from "../node-fs-Dbf93qP7.js";
3
- import { o as n, r } from "../storage-TmeyhZGt.js";
3
+ import { a as n, c as r, l as i, r as a, t as o } from "../storage-DMETg6sP.js";
4
4
  //#region src/lib/cloud/fs.ts
5
- var i = /* @__PURE__ */ e({
6
- available: () => a,
7
- mkdir: () => d,
8
- promises: () => m,
9
- quota: () => r,
10
- readFile: () => o,
11
- readdir: () => u,
12
- rename: () => l,
13
- rm: () => f,
14
- stat: () => p,
15
- unlink: () => c,
16
- writeFile: () => s
17
- }), { available: a, readFile: o, writeFile: s, unlink: c, rename: l, readdir: u, mkdir: d, rm: f, stat: p, promises: m } = t(n, { memfs: !1 });
5
+ var s = /* @__PURE__ */ e({
6
+ StorageLockedError: () => o,
7
+ available: () => c,
8
+ encryption: () => a,
9
+ mkdir: () => m,
10
+ promises: () => _,
11
+ quota: () => n,
12
+ readFile: () => l,
13
+ readdir: () => p,
14
+ rename: () => f,
15
+ rm: () => h,
16
+ stat: () => g,
17
+ unlink: () => d,
18
+ unlock: () => i,
19
+ writeFile: () => u
20
+ }), { available: c, readFile: l, writeFile: u, unlink: d, rename: f, readdir: p, mkdir: m, rm: h, stat: g, promises: _ } = t(r, { memfs: !1 });
18
21
  //#endregion
19
- export { a as available, d as mkdir, m as promises, r as quota, o as readFile, u as readdir, l as rename, f as rm, p as stat, i as t, c as unlink, s as writeFile };
22
+ export { o as StorageLockedError, c as available, a as encryption, m as mkdir, _ as promises, n as quota, l as readFile, p as readdir, f as rename, h as rm, g as stat, s as t, d as unlink, i as unlock, u as writeFile };
package/cloud/net.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../utils-CoimMjf9.cjs"),t=require("../net-CpuAhaQC.cjs");exports.Server=t.t,exports.Socket=t.n,exports._default=t.r,exports.default=t.r,exports.connect=t.i,exports.createConnection=t.a,exports.createServer=t.o,exports.isIP=e.t,exports.isIPv4=e.n,exports.isIPv6=e.r;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../utils-QfNXtEhb.cjs"),t=require("../net-BPpdNdpy.cjs");exports.Server=t.t,exports.Socket=t.n,exports._default=t.r,exports.default=t.r,exports.connect=t.i,exports.createConnection=t.a,exports.createServer=t.o,exports.isIP=e.r,exports.isIPv4=e.i,exports.isIPv6=e.a;
package/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-Cx8lDWau.js";
2
2
  export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
package/cloud/net.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as e, r as t, t as n } from "../utils-DPtyxGQu.js";
2
- import { a as r, i, n as a, o, r as s, t as c } from "../net-DKMWPXb_.js";
3
- export { c as Server, a as Socket, s as _default, s as default, i as connect, r as createConnection, o as createServer, n as isIP, e as isIPv4, t as isIPv6 };
1
+ import { a as e, i as t, r as n } from "../utils-DVlbuXmW.js";
2
+ import { a as r, i, n as a, o, r as s, t as c } from "../net-BFYMbE4N.js";
3
+ export { c as Server, a as Socket, s as _default, s as default, i as connect, r as createConnection, o as createServer, n as isIP, t as isIPv4, e as isIPv6 };
@@ -1,8 +1,8 @@
1
- import { t as Resolvers } from "./api-BYUraih6.js";
1
+ import { t as Resolvers } from "./api-CI4d96Ty.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
- import { n as fs_d_exports } from "./fs-K7ROdxDx.js";
5
- import { s as net_d_exports } from "./net-BDW1AVX1.js";
4
+ import { n as fs_d_exports } from "./fs-BEfsbriO.js";
5
+ import { s as net_d_exports } from "./net-Cx8lDWau.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
 
@@ -24,7 +24,7 @@ type QuotaStatus = {
24
24
  /** the user has a paid subscription, throttle never applies */premium: boolean; /** today's free-tier volume is spent (true even for premium, see `throttled`) */
25
25
  overQuota: boolean; /** transfers are actually being rate-limited right now (overQuota and not premium) */
26
26
  throttled: boolean;
27
- /** bytes egressed through FKN relays today (per anonymized IP), saturates at limitBytes:
27
+ /** bytes egressed through FKN relays today (per connected account or anonymized IP), saturates at limitBytes:
28
28
  * consumption past the free-tier volume is private and never reported */
29
29
  usedBytes: number; /** free-tier daily volume before throttling kicks in */
30
30
  limitBytes: number; /** bytes of free-tier volume left today */
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./proxy-Du95zAKk.cjs"),n=require("./api-DD5v1qP9.cjs"),r=require("./dns.cjs"),i=require("./cloud/fs.cjs"),a=require("./net-BPpdNdpy.cjs"),o=require("./dgram-DcvdNkg6.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}});
@@ -1,10 +1,10 @@
1
1
  import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
- import { l as t, s as n, t as r, v as i, y as a } from "./proxy-C8SG1Beo.js";
2
+ import { l as t, s as n, t as r, v as i, y as a } from "./proxy-Cusnx9Ex.js";
3
3
  import { n as o, t as s } from "./api--bnCFd4w.js";
4
4
  import { t as c } from "./dns.js";
5
5
  import { t as l } from "./cloud/fs.js";
6
- import { s as u } from "./net-DKMWPXb_.js";
7
- import { i as d } from "./dgram-wtjARbt0.js";
6
+ import { s as u } from "./net-BFYMbE4N.js";
7
+ import { i as d } from "./dgram-CKRbKVzG.js";
8
8
  import { t as f } from "./http.js";
9
9
  import { expose as p } from "osra";
10
10
  //#region src/lib/cloud/frame.ts
@@ -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 };