@fkn/lib 0.6.2 → 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 (60) hide show
  1. package/{api-B0jZnr_N.d.ts → api-CI4d96Ty.d.ts} +142 -40
  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-jJi2d0cs.d.ts → cloud-BxPdeAuj.d.ts} +4 -4
  13. package/{cloud-B4KIFGwa.cjs → cloud-DevROE3T.cjs} +1 -1
  14. package/{cloud-Dsb33tl6.js → cloud-Pibu_mY3.js} +3 -3
  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-5SVFcuzM.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/dgram-CE43gJq9.cjs +0 -1
  57. package/net-CpuAhaQC.cjs +0 -1
  58. package/storage-OkwsFLN1.cjs +0 -1
  59. package/storage-TmeyhZGt.js +0 -19
  60. 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;
@@ -90,6 +89,43 @@ type LocalTcpSocket = {
90
89
  setOption: (option: TcpSocketOption) => Promise<void>;
91
90
  };
92
91
  //#endregion
92
+ //#region src/api/webvpn/packets/tcp-listener.d.ts
93
+ declare const parseServerMetadataTcpSocketListenerBoundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
94
+ readonly _type: 'ServerMetadataTcpSocketListenerBoundPacket';
95
+ readonly offset: number;
96
+ readonly id: number;
97
+ readonly socketId: number;
98
+ readonly localAddressType: 0 | 1;
99
+ readonly localAddress: import("ip-address").Address4 | import("ip-address").Address6;
100
+ readonly localPort: number;
101
+ readonly errorLength: number;
102
+ readonly error: string;
103
+ };
104
+ type ServerMetadataTcpSocketListenerBoundPacket = ReturnType<typeof parseServerMetadataTcpSocketListenerBoundPacket>;
105
+ declare const parseServerMetadataTcpSocketListenerUnboundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
106
+ readonly _type: 'ServerMetadataTcpSocketListenerUnboundPacket';
107
+ readonly offset: number;
108
+ readonly id: number;
109
+ readonly socketId: number;
110
+ };
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>;
128
+ //#endregion
93
129
  //#region src/api/webvpn/packets/udp.d.ts
94
130
  declare const parseServerMetadataUdpSocketBoundPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
95
131
  readonly _type: 'ServerMetadataUdpSocketBoundPacket';
@@ -122,6 +158,15 @@ declare const parseServerMetadataUdpSocketConnectedPacket: (offset: number, buff
122
158
  readonly error: string;
123
159
  };
124
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>;
125
170
  declare const parseServerUdpDataPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
126
171
  readonly _type: 'ServerUdpDataPacket';
127
172
  readonly offset: number;
@@ -192,27 +237,6 @@ declare const parseServerMetadataUdpSetOptionAckPacket: (offset: number, buffer:
192
237
  };
193
238
  type ServerMetadataUdpSetOptionAckPacket = ReturnType<typeof parseServerMetadataUdpSetOptionAckPacket>;
194
239
  //#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
216
240
  //#region src/api/webvpn/packets/metadata.d.ts
217
241
  declare const parseServerMetadataHeaderPacket: (offset: number, buffer: ArrayBuffer, view: DataView) => {
218
242
  readonly _type: 'ServerMetadataHeaderPacket';
@@ -223,9 +247,31 @@ declare const parseServerMetadataHeaderPacket: (offset: number, buffer: ArrayBuf
223
247
  readonly version: string;
224
248
  };
225
249
  type ServerMetadataHeaderPacket = ReturnType<typeof parseServerMetadataHeaderPacket>;
226
- 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;
227
268
  //#endregion
228
269
  //#region src/api/webvpn/session-core.d.ts
270
+ type MetadataRequestOptions = {
271
+ timeoutMs?: number;
272
+ what?: string;
273
+ signal?: AbortSignal;
274
+ };
229
275
  type BidirectionalStreams = {
230
276
  readable: ReadableStream<Uint8Array>;
231
277
  writable: WritableStream<Uint8Array>;
@@ -236,6 +282,7 @@ type TransportPrimitives = {
236
282
  datagramWriter: WritableStreamDefaultWriter<Uint8Array>;
237
283
  incomingBidi: ReadableStream<BidirectionalStreams>;
238
284
  incomingUni: ReadableStream<ReadableStream<Uint8Array>>;
285
+ openUniStream?: () => Promise<WritableStream<Uint8Array>>;
239
286
  serverDatagrams?: ReadableStream<ServerUdpDataPacket>;
240
287
  closed: Promise<{
241
288
  reason: string;
@@ -247,7 +294,14 @@ declare const makeWebVpnSession: (primitives: TransportPrimitives) => Promise<{
247
294
  reason: string;
248
295
  }>;
249
296
  isClosed: () => boolean;
297
+ isProvenAlive: () => boolean;
298
+ fail: (reason: string) => void;
299
+ relayVersion: string;
250
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);
251
305
  getTcpDataReadableStreamForSocketId: (socketId: number, options?: {
252
306
  signal?: AbortSignal;
253
307
  }) => Promise<BidirectionalStreams>;
@@ -256,20 +310,26 @@ declare const makeWebVpnSession: (primitives: TransportPrimitives) => Promise<{
256
310
  readonly offset: number;
257
311
  readonly socketId: number;
258
312
  readonly remoteAddressType: 0 | 1 | 2;
259
- readonly remoteAddress: Address4 | Address6 | undefined;
313
+ readonly remoteAddress: import("ip-address").Address4 | import("ip-address").Address6 | undefined;
260
314
  readonly remotePort: number | undefined;
261
315
  readonly dataLength: number;
262
316
  readonly data: ArrayBuffer;
263
317
  }>;
264
318
  claimUdpRawStream: (socketId: number, sink: (packetBytes: Uint8Array) => void) => void;
265
319
  releaseUdpRawStream: (socketId: number) => void;
266
- getPacketForId: (packetId: number) => Promise<ServerMetadataPacket>;
320
+ getPacketForId: (packetId: number, options?: {
321
+ signal?: AbortSignal;
322
+ }) => Promise<ServerMetadataPacket>;
267
323
  getMetadataReadableStreamForSocketId: (socketId: number) => ReadableStream<ServerMetadataPacket>;
268
- getMetadataReadableStreamForLocalAddress: (address: Address4 | Address6) => ReadableStream<ServerMetadataPacket>;
269
- getMetadataReadableStreamForLocalPort: (port: number) => ReadableStream<ServerMetadataPacket>;
324
+ getMetadataReadableStreamForListenerSocketId: (listenerSocketId: number) => ReadableStream<ServerMetadataPacket>;
270
325
  getMetadataWritableStream: () => WritableStream<Uint8Array<ArrayBufferLike>>;
271
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;
272
331
  presentRateToken: () => Promise<void>;
332
+ clearAccount: () => Promise<void>;
273
333
  }>;
274
334
  type WebVPNSession = Awaited<ReturnType<typeof makeWebVpnSession>>;
275
335
  //#endregion
@@ -287,7 +347,7 @@ declare const processTcpSocket: ({
287
347
  webVpnWebTransport,
288
348
  ownsMetadataWriter
289
349
  }: {
290
- connectedPacket: ServerMetadataTcpSocketConnectedPacket;
350
+ connectedPacket: ServerMetadataTcpSocketConnectedPacket | ServerMetadataTcpSocketAcceptedPacket;
291
351
  dataReadableStream: ReadableStream<Uint8Array>;
292
352
  dataWritableStream: WritableStream<Uint8Array>;
293
353
  metadataReadableStream: ReadableStream<ServerMetadataPacket>;
@@ -350,23 +410,35 @@ declare const resolvers: {
350
410
  readonly readFile: (path: string) => Promise<Uint8Array>;
351
411
  readonly writeFile: (path: string, data: WriteData, contentType: string | null) => Promise<void>;
352
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>;
353
419
  };
354
420
  readonly webvpn: {
355
421
  readonly tcpSocket: ({
356
422
  remoteAddress: _remoteAddress,
357
- remotePort
423
+ remotePort,
424
+ usageTag
358
425
  }: {
359
426
  remoteAddress: string;
360
427
  remotePort: number;
428
+ usageTag?: string;
361
429
  }) => Promise<LocalTcpSocket>;
362
430
  readonly tcpSocketListener: ({
363
431
  localAddress: _localAddress,
364
432
  localPort,
365
- onConnection
433
+ onConnection,
434
+ onClose,
435
+ usageTag
366
436
  }: {
367
437
  localAddress: string;
368
438
  localPort: number;
369
- onConnection: (connection: TcpSocketResult) => void;
439
+ onConnection: (connection: TcpSocketResult) => void | Promise<void>;
440
+ onClose?: (error?: Error) => void | Promise<void>;
441
+ usageTag?: string;
370
442
  }) => Promise<{
371
443
  localAddress: string;
372
444
  localFamily: "IPv4" | "IPv6";
@@ -377,15 +449,21 @@ declare const resolvers: {
377
449
  type,
378
450
  port,
379
451
  address,
380
- dataPort
452
+ dataPort,
453
+ usageTag
381
454
  }: {
382
455
  type: 'udp4' | 'udp6';
383
456
  port: number;
384
457
  address: string;
385
458
  dataPort?: boolean;
459
+ usageTag?: string;
386
460
  }) => Promise<{
387
461
  socketId: number;
388
462
  dataPort: MessagePort | undefined;
463
+ dataPortAcks: true | undefined;
464
+ closed: Promise<{
465
+ reason: string;
466
+ }>;
389
467
  localAddress: string;
390
468
  localFamily: "IPv4" | "IPv6";
391
469
  localPort: number;
@@ -402,7 +480,13 @@ declare const resolvers: {
402
480
  }: {
403
481
  remoteAddress: string;
404
482
  remotePort: number;
405
- }) => Promise<void>;
483
+ }) => Promise<{
484
+ local: boolean;
485
+ address: string;
486
+ family: "IPv4" | "IPv6";
487
+ port: number;
488
+ }>;
489
+ disconnect: () => Promise<void>;
406
490
  send: ({
407
491
  message,
408
492
  address: _remoteAddress,
@@ -472,19 +556,25 @@ declare const resolvers: {
472
556
  }) => Promise<Response>;
473
557
  readonly webVpnTcpSocket: ({
474
558
  remoteAddress: _remoteAddress,
475
- remotePort
559
+ remotePort,
560
+ usageTag
476
561
  }: {
477
562
  remoteAddress: string;
478
563
  remotePort: number;
564
+ usageTag?: string;
479
565
  }) => Promise<LocalTcpSocket>;
480
566
  readonly webVpnTcpSocketListener: ({
481
567
  localAddress: _localAddress,
482
568
  localPort,
483
- onConnection
569
+ onConnection,
570
+ onClose,
571
+ usageTag
484
572
  }: {
485
573
  localAddress: string;
486
574
  localPort: number;
487
- onConnection: (connection: TcpSocketResult) => void;
575
+ onConnection: (connection: TcpSocketResult) => void | Promise<void>;
576
+ onClose?: (error?: Error) => void | Promise<void>;
577
+ usageTag?: string;
488
578
  }) => Promise<{
489
579
  localAddress: string;
490
580
  localFamily: "IPv4" | "IPv6";
@@ -495,15 +585,21 @@ declare const resolvers: {
495
585
  type,
496
586
  port,
497
587
  address,
498
- dataPort
588
+ dataPort,
589
+ usageTag
499
590
  }: {
500
591
  type: 'udp4' | 'udp6';
501
592
  port: number;
502
593
  address: string;
503
594
  dataPort?: boolean;
595
+ usageTag?: string;
504
596
  }) => Promise<{
505
597
  socketId: number;
506
598
  dataPort: MessagePort | undefined;
599
+ dataPortAcks: true | undefined;
600
+ closed: Promise<{
601
+ reason: string;
602
+ }>;
507
603
  localAddress: string;
508
604
  localFamily: "IPv4" | "IPv6";
509
605
  localPort: number;
@@ -520,7 +616,13 @@ declare const resolvers: {
520
616
  }: {
521
617
  remoteAddress: string;
522
618
  remotePort: number;
523
- }) => Promise<void>;
619
+ }) => Promise<{
620
+ local: boolean;
621
+ address: string;
622
+ family: "IPv4" | "IPv6";
623
+ port: number;
624
+ }>;
625
+ disconnect: () => Promise<void>;
524
626
  send: ({
525
627
  message,
526
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-5SVFcuzM.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-B0jZnr_N.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-5SVFcuzM.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 */
@@ -1 +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}});
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
package/cloud.cjs CHANGED
@@ -1 +1 @@
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;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-Du95zAKk.cjs"),t=require("./cloud-DevROE3T.cjs"),n=require("./dns.cjs"),r=require("./cloud/fs.cjs"),i=require("./net-BPpdNdpy.cjs"),a=require("./dgram-DcvdNkg6.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-jJi2d0cs.js";
1
+ import { a as attachFrame, i as quota, o as cloudFetch, r as QuotaStatus, t as available } from "./cloud-BxPdeAuj.js";
2
2
  import { t as dns_d_exports } from "./dns.js";
3
- import { n as fs_d_exports } from "./fs-K7ROdxDx.js";
4
- import { s as net_d_exports } from "./net-5SVFcuzM.js";
3
+ import { n as fs_d_exports } from "./fs-BEfsbriO.js";
4
+ import { s as net_d_exports } from "./net-Cx8lDWau.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,8 +1,8 @@
1
- import { t as e } from "./proxy-C8SG1Beo.js";
2
- import { i as t, r as n, t as r } from "./cloud-Dsb33tl6.js";
1
+ import { t as e } from "./proxy-Cusnx9Ex.js";
2
+ import { i as t, r as n, t as r } from "./cloud-Pibu_mY3.js";
3
3
  import { t as i } from "./dns.js";
4
4
  import { t as a } from "./cloud/fs.js";
5
- import { s as o } from "./net-DKMWPXb_.js";
6
- import { i as s } from "./dgram-wtjARbt0.js";
5
+ import { s as o } from "./net-BFYMbE4N.js";
6
+ import { i as s } from "./dgram-CKRbKVzG.js";
7
7
  import { t as c } from "./http.js";
8
8
  export { t as attachFrame, r as available, s as dgram, i as dns, e as fetch, a as fs, c as http, o as net, n as quota };