@fkn/lib 0.5.3 → 0.5.5

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/{background-Dk_vaVP1.cjs → background-CbU8TkWo.cjs} +1 -1
  2. package/{background-TtzKw6g0.js → background-DvQm1JHR.js} +8 -6
  3. package/cloud/dgram.cjs +1 -1
  4. package/cloud/dgram.d.ts +7 -3
  5. package/cloud/dgram.js +2 -2
  6. package/cloud/dns.d.ts +1 -1
  7. package/cloud/fs/promises.cjs +1 -1
  8. package/cloud/fs/promises.js +1 -1
  9. package/cloud/fs.cjs +1 -1
  10. package/cloud/fs.js +1 -1
  11. package/cloud/http.d.ts +2 -2
  12. package/cloud/net.d.ts +2 -2
  13. package/{cloud-BrY9dKwV.cjs → cloud-CWg9zCWm.cjs} +1 -1
  14. package/{cloud-C-LK4DWa.js → cloud-eLyGYzbA.js} +1 -1
  15. package/cloud.cjs +1 -1
  16. package/cloud.d.ts +3 -3
  17. package/cloud.js +3 -3
  18. package/connect-button-B_63ldmg.js +7 -0
  19. package/connect-button-poDZVmq2.cjs +1 -0
  20. package/dgram-B3WC4VdJ.cjs +1 -0
  21. package/{dgram-DS5_yPc5.js → dgram-c_Xk7ckJ.js} +27 -19
  22. package/dgram.cjs +1 -1
  23. package/dgram.d.ts +2 -2
  24. package/dgram.js +1 -1
  25. package/dns.d.ts +1 -1
  26. package/{extension-Dgz0UTy0.js → extension-BLkZiaAP.js} +65 -57
  27. package/extension-DAiRg5ny.cjs +1 -0
  28. package/extension.cjs +1 -1
  29. package/extension.d.ts +14 -7
  30. package/extension.js +3 -3
  31. package/fs/promises.cjs +1 -1
  32. package/fs/promises.d.ts +2 -0
  33. package/fs/promises.js +2 -2
  34. package/{fs-CQ-eWjXw.js → fs-BQs-x3_j.js} +1 -1
  35. package/{fs-Bc6087fG.cjs → fs-DI1maxcZ.cjs} +1 -1
  36. package/fs.cjs +1 -1
  37. package/fs.d.ts +4 -0
  38. package/fs.js +2 -2
  39. package/http.d.ts +2 -2
  40. package/index.cjs +1 -1
  41. package/index.d.ts +92 -30
  42. package/index.js +22 -34
  43. package/{locator-DxAsGV_o.js → locator-9s7jNIA2.js} +1 -1
  44. package/{locator-Cf7M3QKN.cjs → locator-CHfEe3Jv.cjs} +1 -1
  45. package/net.d.ts +2 -2
  46. package/{node-fs-Bd_UUx1m.js → node-fs-CdKPXPtW.js} +39 -16
  47. package/node-fs-DQn1TGJz.cjs +1 -0
  48. package/opfs/promises.cjs +1 -1
  49. package/opfs/promises.d.ts +22 -1
  50. package/opfs/promises.js +3 -3
  51. package/opfs.cjs +1 -1
  52. package/opfs.d.ts +58 -1
  53. package/opfs.js +31 -30
  54. package/package.json +6 -1
  55. package/react.cjs +1 -0
  56. package/react.d.ts +12 -0
  57. package/react.js +18 -0
  58. package/dgram-C5rGcbej.cjs +0 -1
  59. package/extension-9Uv_0HdS.cjs +0 -1
  60. package/favicon.svg +0 -5
  61. package/node-fs-lrlD_zqB.cjs +0 -1
package/opfs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./node-fs-lrlD_zqB.cjs`),n=require(`./opfs-Dsi4FkJU.cjs`);var r=e.n({appendFile:()=>y,appendFileSync:()=>s,available:()=>i,exists:()=>E,existsSync:()=>c,flush:()=>k,lstatSync:()=>u,mkdir:()=>S,mkdirSync:()=>f,mount:()=>O,promises:()=>D,readFile:()=>_,readFileSync:()=>a,readdir:()=>x,readdirSync:()=>d,remount:()=>A,rename:()=>T,renameSync:()=>g,rm:()=>C,rmSync:()=>p,rmdirSync:()=>m,stat:()=>b,statSync:()=>l,unlink:()=>w,unlinkSync:()=>h,writeFile:()=>v,writeFileSync:()=>o}),{available:i,readFileSync:a,writeFileSync:o,appendFileSync:s,existsSync:c,statSync:l,lstatSync:u,readdirSync:d,mkdirSync:f,rmSync:p,rmdirSync:m,unlinkSync:h,renameSync:g,readFile:_,writeFile:v,appendFile:y,stat:b,readdir:x,mkdir:S,rm:C,unlink:w,rename:T,exists:E,promises:D,mount:O,flush:k,remount:A}=t.t(n.r,{memfs:!0});exports.appendFile=y,exports.appendFileSync=s,exports.available=i,exports.exists=E,exports.existsSync=c,exports.flush=k,exports.lstatSync=u,exports.mkdir=S,exports.mkdirSync=f,exports.mount=O,exports.promises=D,exports.readFile=_,exports.readFileSync=a,exports.readdir=x,exports.readdirSync=d,exports.remount=A,exports.rename=T,exports.renameSync=g,exports.rm=C,exports.rmSync=p,exports.rmdirSync=m,exports.stat=b,exports.statSync=l,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}}),exports.unlink=w,exports.unlinkSync=h,exports.writeFile=v,exports.writeFileSync=o;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./node-fs-DQn1TGJz.cjs`),n=require(`./opfs-Dsi4FkJU.cjs`);var r=e.n({appendFile:()=>b,appendFileSync:()=>c,available:()=>a,default:()=>i,exists:()=>D,existsSync:()=>l,flush:()=>A,lstatSync:()=>d,mkdir:()=>C,mkdirSync:()=>p,mount:()=>k,promises:()=>O,readFile:()=>v,readFileSync:()=>o,readdir:()=>S,readdirSync:()=>f,remount:()=>j,rename:()=>E,renameSync:()=>_,rm:()=>w,rmSync:()=>m,rmdirSync:()=>h,stat:()=>x,statSync:()=>u,unlink:()=>T,unlinkSync:()=>g,writeFile:()=>y,writeFileSync:()=>s}),i=t.t(n.r,{memfs:!0}),{available:a,readFileSync:o,writeFileSync:s,appendFileSync:c,existsSync:l,statSync:u,lstatSync:d,readdirSync:f,mkdirSync:p,rmSync:m,rmdirSync:h,unlinkSync:g,renameSync:_,readFile:v,writeFile:y,appendFile:b,stat:x,readdir:S,mkdir:C,rm:w,unlink:T,rename:E,exists:D,promises:O,mount:k,flush:A,remount:j}=i;exports.appendFile=b,exports.appendFileSync=c,exports.available=a,exports.default=i,exports.exists=D,exports.existsSync=l,exports.flush=A,exports.lstatSync=d,exports.mkdir=C,exports.mkdirSync=p,exports.mount=k,exports.promises=O,exports.readFile=v,exports.readFileSync=o,exports.readdir=S,exports.readdirSync=f,exports.remount=j,exports.rename=E,exports.renameSync=_,exports.rm=w,exports.rmSync=m,exports.rmdirSync=h,exports.stat=x,exports.statSync=u,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}}),exports.unlink=T,exports.unlinkSync=g,exports.writeFile=y,exports.writeFileSync=s;
package/opfs.d.ts CHANGED
@@ -27,6 +27,61 @@ type Stats = {
27
27
  isSymbolicLink: () => boolean;
28
28
  };
29
29
 
30
+ declare const fs: {
31
+ available: () => Promise<boolean>;
32
+ readFileSync: (path: node_fs.PathLike, options?: ReadOptions) => Buffer | string;
33
+ writeFileSync: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
34
+ appendFileSync: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
35
+ existsSync: (path: node_fs.PathLike) => boolean;
36
+ statSync: (path: node_fs.PathLike) => Stats;
37
+ lstatSync: (path: node_fs.PathLike) => Stats;
38
+ readdirSync: (path: node_fs.PathLike) => string[];
39
+ mkdirSync: (path: node_fs.PathLike, options?: MakeOptions) => void;
40
+ rmSync: (path: node_fs.PathLike, options?: {
41
+ recursive?: boolean;
42
+ force?: boolean;
43
+ }) => void;
44
+ rmdirSync: (path: node_fs.PathLike, options?: {
45
+ recursive?: boolean;
46
+ }) => void;
47
+ unlinkSync: (path: node_fs.PathLike) => void;
48
+ renameSync: (from: node_fs.PathLike, to: node_fs.PathLike) => void;
49
+ readFile: (path: node_fs.PathLike, a: ReadOptions | Callback<Buffer | string>, b?: Callback<Buffer | string>) => void;
50
+ writeFile: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
51
+ appendFile: (path: node_fs.PathLike, data: WriteData, a: WriteOptions | Callback<void>, b?: Callback<void>) => void;
52
+ stat: (path: node_fs.PathLike, callback: Callback<Stats>) => void;
53
+ readdir: (path: node_fs.PathLike, a: unknown, b?: Callback<string[]>) => void;
54
+ mkdir: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
55
+ rm: (path: node_fs.PathLike, a: {
56
+ recursive?: boolean;
57
+ force?: boolean;
58
+ } | Callback<void>, b?: Callback<void>) => void;
59
+ unlink: (path: node_fs.PathLike, callback: Callback<void>) => void;
60
+ rename: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
61
+ exists: (path: node_fs.PathLike, callback: (exists: boolean) => void) => void;
62
+ promises: {
63
+ readFile: (path: node_fs.PathLike, options?: ReadOptions) => Promise<Buffer | string>;
64
+ writeFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
65
+ appendFile: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => Promise<void>;
66
+ stat: (path: node_fs.PathLike) => Promise<Stats>;
67
+ lstat: (path: node_fs.PathLike) => Promise<Stats>;
68
+ readdir: (path: node_fs.PathLike) => Promise<string[]>;
69
+ mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
70
+ rm: (path: node_fs.PathLike, options?: {
71
+ recursive?: boolean;
72
+ force?: boolean;
73
+ }) => Promise<void>;
74
+ rmdir: (path: node_fs.PathLike, options?: {
75
+ recursive?: boolean;
76
+ }) => Promise<void>;
77
+ unlink: (path: node_fs.PathLike) => Promise<void>;
78
+ rename: (from: node_fs.PathLike, to: node_fs.PathLike) => Promise<void>;
79
+ access: (path: node_fs.PathLike) => Promise<void>;
80
+ };
81
+ mount: () => Promise<void>;
82
+ flush: () => Promise<void>;
83
+ remount: () => Promise<void>;
84
+ };
30
85
  declare const available: () => Promise<boolean>;
31
86
  declare const readFileSync: (path: node_fs.PathLike, options?: ReadOptions) => Buffer | string;
32
87
  declare const writeFileSync: (path: node_fs.PathLike, data: WriteData, options?: WriteOptions) => void;
@@ -53,6 +108,7 @@ declare const readdir: (path: node_fs.PathLike, a: unknown, b?: Callback<string[
53
108
  declare const mkdir: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
54
109
  declare const rm: (path: node_fs.PathLike, a: {
55
110
  recursive?: boolean;
111
+ force?: boolean;
56
112
  } | Callback<void>, b?: Callback<void>) => void;
57
113
  declare const unlink: (path: node_fs.PathLike, callback: Callback<void>) => void;
58
114
  declare const rename: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
@@ -67,6 +123,7 @@ declare const promises: {
67
123
  mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
68
124
  rm: (path: node_fs.PathLike, options?: {
69
125
  recursive?: boolean;
126
+ force?: boolean;
70
127
  }) => Promise<void>;
71
128
  rmdir: (path: node_fs.PathLike, options?: {
72
129
  recursive?: boolean;
@@ -79,5 +136,5 @@ declare const mount: () => Promise<void>;
79
136
  declare const flush: () => Promise<void>;
80
137
  declare const remount: () => Promise<void>;
81
138
 
82
- export { appendFile, appendFileSync, available, exists, existsSync, flush, lstatSync, mkdir, mkdirSync, mount, promises, readFile, readFileSync, readdir, readdirSync, remount, rename, renameSync, rm, rmSync, rmdirSync, stat, statSync, unlink, unlinkSync, writeFile, writeFileSync };
139
+ export { appendFile, appendFileSync, available, fs as default, exists, existsSync, flush, lstatSync, mkdir, mkdirSync, mount, promises, readFile, readFileSync, readdir, readdirSync, remount, rename, renameSync, rm, rmSync, rmdirSync, stat, statSync, unlink, unlinkSync, writeFile, writeFileSync };
83
140
  export type { Stats };
package/opfs.js CHANGED
@@ -1,35 +1,36 @@
1
1
  import { n as e } from "./chunk-CPXzm0be.js";
2
- import { t } from "./node-fs-Bd_UUx1m.js";
2
+ import { t } from "./node-fs-CdKPXPtW.js";
3
3
  import { r as n } from "./opfs-BfcYLPGb.js";
4
4
  //#region src/lib/opfs/index.ts
5
5
  var r = /* @__PURE__ */ e({
6
- appendFile: () => y,
7
- appendFileSync: () => s,
8
- available: () => i,
9
- exists: () => E,
10
- existsSync: () => c,
11
- flush: () => k,
12
- lstatSync: () => u,
13
- mkdir: () => S,
14
- mkdirSync: () => f,
15
- mount: () => O,
16
- promises: () => D,
17
- readFile: () => _,
18
- readFileSync: () => a,
19
- readdir: () => x,
20
- readdirSync: () => d,
21
- remount: () => A,
22
- rename: () => T,
23
- renameSync: () => g,
24
- rm: () => C,
25
- rmSync: () => p,
26
- rmdirSync: () => m,
27
- stat: () => b,
28
- statSync: () => l,
29
- unlink: () => w,
30
- unlinkSync: () => h,
31
- writeFile: () => v,
32
- writeFileSync: () => o
33
- }), { available: i, readFileSync: a, writeFileSync: o, appendFileSync: s, existsSync: c, statSync: l, lstatSync: u, readdirSync: d, mkdirSync: f, rmSync: p, rmdirSync: m, unlinkSync: h, renameSync: g, readFile: _, writeFile: v, appendFile: y, stat: b, readdir: x, mkdir: S, rm: C, unlink: w, rename: T, exists: E, promises: D, mount: O, flush: k, remount: A } = t(n, { memfs: !0 });
6
+ appendFile: () => b,
7
+ appendFileSync: () => c,
8
+ available: () => a,
9
+ default: () => i,
10
+ exists: () => D,
11
+ existsSync: () => l,
12
+ flush: () => A,
13
+ lstatSync: () => d,
14
+ mkdir: () => C,
15
+ mkdirSync: () => p,
16
+ mount: () => k,
17
+ promises: () => O,
18
+ readFile: () => v,
19
+ readFileSync: () => o,
20
+ readdir: () => S,
21
+ readdirSync: () => f,
22
+ remount: () => j,
23
+ rename: () => E,
24
+ renameSync: () => _,
25
+ rm: () => w,
26
+ rmSync: () => m,
27
+ rmdirSync: () => h,
28
+ stat: () => x,
29
+ statSync: () => u,
30
+ unlink: () => T,
31
+ unlinkSync: () => g,
32
+ writeFile: () => y,
33
+ writeFileSync: () => s
34
+ }), i = t(n, { memfs: !0 }), { available: a, readFileSync: o, writeFileSync: s, appendFileSync: c, existsSync: l, statSync: u, lstatSync: d, readdirSync: f, mkdirSync: p, rmSync: m, rmdirSync: h, unlinkSync: g, renameSync: _, readFile: v, writeFile: y, appendFile: b, stat: x, readdir: S, mkdir: C, rm: w, unlink: T, rename: E, exists: D, promises: O, mount: k, flush: A, remount: j } = i;
34
35
  //#endregion
35
- export { y as appendFile, s as appendFileSync, i as available, E as exists, c as existsSync, k as flush, u as lstatSync, S as mkdir, f as mkdirSync, O as mount, D as promises, _ as readFile, a as readFileSync, x as readdir, d as readdirSync, A as remount, T as rename, g as renameSync, C as rm, p as rmSync, m as rmdirSync, b as stat, l as statSync, r as t, w as unlink, h as unlinkSync, v as writeFile, o as writeFileSync };
36
+ export { b as appendFile, c as appendFileSync, a as available, i as default, D as exists, l as existsSync, A as flush, d as lstatSync, C as mkdir, p as mkdirSync, k as mount, O as promises, v as readFile, o as readFileSync, S as readdir, f as readdirSync, j as remount, E as rename, _ as renameSync, w as rm, m as rmSync, h as rmdirSync, x as stat, u as statSync, r as t, T as unlink, g as unlinkSync, y as writeFile, s as writeFileSync };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fkn/lib",
3
- "version": "0.5.3",
3
+ "version": "0.5.5",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
@@ -100,6 +100,11 @@
100
100
  "import": "./account.js",
101
101
  "require": "./account.cjs"
102
102
  },
103
+ "./react": {
104
+ "types": "./react.d.ts",
105
+ "import": "./react.js",
106
+ "require": "./react.cjs"
107
+ },
103
108
  "./package.json": "./package.json"
104
109
  },
105
110
  "dependencies": {
package/react.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./connect-button-poDZVmq2.cjs`);let t=require(`react`);var n=({className:n,style:r}={})=>(0,t.createElement)(`iframe`,{src:e.t(),title:`Connect your FKN account`,className:n,style:{border:`none`,width:150,height:40,background:`transparent`,colorScheme:`normal`,...r}});exports.ConnectButton=n,exports.connectButtonUrl=e.t;
package/react.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { CSSProperties, ReactElement } from 'react';
2
+
3
+ declare const connectButtonUrl: (origin?: string) => string;
4
+
5
+ type ConnectButtonProps = {
6
+ className?: string;
7
+ style?: CSSProperties;
8
+ };
9
+ declare const ConnectButton: ({ className, style }?: ConnectButtonProps) => ReactElement;
10
+
11
+ export { ConnectButton, connectButtonUrl };
12
+ export type { ConnectButtonProps };
package/react.js ADDED
@@ -0,0 +1,18 @@
1
+ import { t as e } from "./connect-button-B_63ldmg.js";
2
+ import { createElement as t } from "react";
3
+ //#region src/lib/react.ts
4
+ var n = ({ className: n, style: r } = {}) => t("iframe", {
5
+ src: e(),
6
+ title: "Connect your FKN account",
7
+ className: n,
8
+ style: {
9
+ border: "none",
10
+ width: 150,
11
+ height: 40,
12
+ background: "transparent",
13
+ colorScheme: "normal",
14
+ ...r
15
+ }
16
+ });
17
+ //#endregion
18
+ export { n as ConnectButton, e as connectButtonUrl };
@@ -1 +0,0 @@
1
- const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./api-CDb2pv7C.cjs`),n=require(`./utils-BsNRWMfl.cjs`);let r=require(`buffer`),i=require(`events`),a=require(`ip-address`);var o=e.n({Socket:()=>s,createSocket:()=>f,default:()=>p}),s=class extends i.EventEmitter{_type;_localAddress;_remoteAddress;_webVPNUdpSocketPromise;_dataPort;_socketId;_sendQueue=[];_sendQueueBytes=0;_sendFlushScheduled=!1;_peerTailCache=new Map;constructor(e){if(super(e),!e)throw Error(`Missing options`);this._type=e.type}_lastRecvBufferSize=0;_lastSendBufferSize=0;_lastTtl=64;_lastMulticastTtl=1;_lastMulticastLoopback=!0;_setUdpOption(e){if(!this._webVPNUdpSocketPromise){this.emit(`error`,Error(`Cannot set socket option before bind`));return}this._webVPNUdpSocketPromise.then(async t=>{if(t)try{await t.setOption(e)}catch(e){this.emit(`error`,e)}})}_onDataPortBatch(e){let t=new DataView(e),n=0;for(;n+4<=e.byteLength;){let i=t.getUint32(n);n+=4;let a=n+i;if(a>e.byteLength)break;let o=n+4,s=t.getUint8(o);o+=1;let c,l,u;if(s===2){if(!this._remoteAddress){n=a;continue}c=this._remoteAddress.address,l=this._remoteAddress.family,u=this._remoteAddress.port}else{let n=new Uint8Array(e,o,s===0?4:16);if(s===0)l=`IPv4`,c=`${n[0]}.${n[1]}.${n[2]}.${n[3]}`;else{l=`IPv6`;let e=[];for(let t=0;t<16;t+=2)e.push(((n[t]<<8|n[t+1])>>>0).toString(16));c=e.join(`:`)}o+=n.byteLength,u=t.getUint16(o),o+=2}let d=t.getUint32(o);o+=4,this.emit(`message`,r.Buffer.from(e.slice(o,o+d)),{address:c,family:l,port:u,size:d}),n=a}}_peerTail(e,t){if(e===void 0||t===void 0)return c;let n=`${e}|${t}`,r=this._peerTailCache.get(n);if(r)return r;let i=a.Address4.isValid(e)?u(e):d(e),o=new Uint8Array(1+i.byteLength+2);return o[0]=i.byteLength===4?0:1,o.set(i,1),new DataView(o.buffer).setUint16(1+i.byteLength,t),this._peerTailCache.set(n,o),o}_portSend(e,t,n){let r=this._peerTail(t,n),i=new Uint8Array(8+r.byteLength+4+e.byteLength),a=new DataView(i.buffer);a.setUint32(0,i.byteLength-4),a.setUint32(4,this._socketId),i.set(r,8),a.setUint32(8+r.byteLength,e.byteLength),i.set(e,12+r.byteLength),this._sendQueue.push(i),this._sendQueueBytes+=i.byteLength,!this._sendFlushScheduled&&(this._sendFlushScheduled=!0,queueMicrotask(()=>{this._sendFlushScheduled=!1;let e=this._sendQueue,t=this._sendQueueBytes;if(this._sendQueue=[],this._sendQueueBytes=0,!e.length||!this._dataPort)return;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.byteLength;this._dataPort.postMessage(n.buffer,[n.buffer])}))}addMembership(e,t){if(a.Address4.isValid(e)){let n=u(e),r=t&&a.Address4.isValid(t)?u(t):new Uint8Array([0,0,0,0]);this._setUdpOption({type:5,group:n,interface:r})}else if(a.Address6.isValid(e)){let t=d(e);this._setUdpOption({type:7,group:t,ifIndex:0})}else this.emit(`error`,Error(`Invalid multicast address: ${e}`))}address(){if(!this._localAddress)throw Error(`EBADF`);return this._localAddress}bind(...e){let i=n.i(...e),a=this._type===`udp6`?`::`:`0.0.0.0`;return this._webVPNUdpSocketPromise=t.t.then(e=>e.cloud.webvpn.udpSocket({type:this._type,address:i.address??a,port:i.port,dataPort:!0})).then(e=>{if(e.dataPort)this._socketId=e.socketId,this._dataPort=e.dataPort,this._dataPort.onmessage=e=>this._onDataPortBatch(e.data);else{let t=e.dataReadableStream.getReader(),n=async()=>{let{value:e,done:i}=await t.read();i||(this.emit(`message`,r.Buffer.from(e.data),{address:e.address,family:e.family,port:e.port,size:e.size}),n())};n()}return this._localAddress={address:e.localAddress,family:e.localFamily,port:e.localPort},e}).catch(e=>{this.emit(`error`,e)}),this._webVPNUdpSocketPromise.then(e=>{e&&this.emit(`listening`)}),i.callback&&this._webVPNUdpSocketPromise.then(e=>{e&&i.callback.call(this)}),this}close(e){if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);return this._webVPNUdpSocketPromise.then(async t=>{if(!t)throw Error(`Socket not bound`);this._dataPort?.close(),this._dataPort=void 0,await t.close(),e&&e(),this.emit(`close`)}),this}connect(...e){if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);this._webVPNUdpSocketPromise.then(async t=>{if(!t)throw Error(`Socket not bound`);let n=e[0],r=this._type===`udp6`?`::1`:`127.0.0.1`,i=typeof e[1]==`string`?e[1]:r,a=typeof e.at(-1)==`function`?e.at(-1):void 0;await t.connect({remotePort:n,remoteAddress:i}),this._remoteAddress={address:i,family:this._type===`udp6`?`IPv6`:`IPv4`,port:n},a&&a()})}disconnect(){if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);this._webVPNUdpSocketPromise.then(async e=>{if(!e)throw Error(`Socket not bound`);await e.connect({remotePort:0,remoteAddress:this._type===`udp4`?`0.0.0.0`:`::`})})}dropMembership(e,t){if(a.Address4.isValid(e)){let n=u(e),r=t&&a.Address4.isValid(t)?u(t):new Uint8Array([0,0,0,0]);this._setUdpOption({type:6,group:n,interface:r})}else if(a.Address6.isValid(e)){let t=d(e);this._setUdpOption({type:8,group:t,ifIndex:0})}else this.emit(`error`,Error(`Invalid multicast address: ${e}`))}getRecvBufferSize(){return this._lastRecvBufferSize}getSendBufferSize(){return this._lastSendBufferSize}getSendQueueSize(){return 0}getSendQueueCount(){return 0}ref(){return this}remoteAddress(){if(!this._remoteAddress)throw Error(`ERR_SOCKET_DGRAM_NOT_CONNECTED`);return{address:this._remoteAddress.address,family:this._remoteAddress.family,port:this._remoteAddress.port}}send(...e){this._webVPNUdpSocketPromise||this.bind();let t=n.a(...e),r=this._type===`udp6`?`::1`:`127.0.0.1`;if(!this._webVPNUdpSocketPromise)throw Error(`Socket not bound`);this._webVPNUdpSocketPromise.then(e=>{if(!e)throw Error(`Socket not bound`);let n=l(t.message),i=t.callback,o=t.address??r,s=this._remoteAddress!==void 0&&t.address===void 0;if(this._dataPort&&(s||a.Address4.isValid(o)||a.Address6.isValid(o))){this._portSend(n,s?void 0:o,s?void 0:t.port),i?.call(this,null,n.byteLength);return}e.send({...t,address:o,message:n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}).then(()=>i?.call(this,null,n.byteLength),e=>i?i.call(this,e,0):this.emit(`error`,e))})}setBroadcast(e){this._setUdpOption({type:0,value:e})}setMulticastInterface(e){}setMulticastLoopback(e){return this._setUdpOption({type:3,value:e}),this._setUdpOption({type:4,value:e}),this._lastMulticastLoopback=e,e}setMulticastTTL(e){return this._setUdpOption({type:2,value:e}),this._lastMulticastTtl=e,e}setRecvBufferSize(e){this._setUdpOption({type:10,value:e}),this._lastRecvBufferSize=e}setSendBufferSize(e){this._setUdpOption({type:9,value:e}),this._lastSendBufferSize=e}setTTL(e){return this._setUdpOption({type:1,value:e}),this._lastTtl=e,e}unref(){return this}addSourceSpecificMembership(e,t,n){}dropSourceSpecificMembership(e,t,n){}async[Symbol.asyncDispose](){await new Promise(e=>{this.close(e)})}},c=new Uint8Array([2]),l=e=>{if(typeof e==`string`)return n.s.encode(e);if(e instanceof Uint8Array)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(Array.isArray(e)){let t=e.map(l),n=new Uint8Array(t.reduce((e,t)=>e+t.byteLength,0)),r=0;for(let e of t)n.set(e,r),r+=e.byteLength;return n}return new Uint8Array(e)},u=e=>{let t=e.split(`.`).map(e=>parseInt(e,10));if(t.length!==4||t.some(e=>Number.isNaN(e)||e<0||e>255))throw Error(`Invalid IPv4 address: ${e}`);return new Uint8Array(t)},d=e=>{let t=new a.Address6(e).getBitsBase16(0,128).match(/.{2}/g);if(!t||t.length!==16)throw Error(`Invalid IPv6 address: ${e}`);return new Uint8Array(t.map(e=>parseInt(e,16)))},f=(e,t)=>{let n=new s(typeof e==`string`?{type:e}:e);return t&&n.on(`message`,t),n},p={Socket:s,createSocket:f};Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
@@ -1 +0,0 @@
1
- const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./locator-Cf7M3QKN.cjs`),n=require(`./api-CDb2pv7C.cjs`),r=require(`./proxy-A9UvWUaF.cjs`),i=require(`./desktop.cjs`);let a=require(`osra`);var o=`FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY`,s=`fknExtension`,c=(0,a.createTypedEventTarget)();typeof document<`u`&&document.addEventListener(o,()=>{c.dispatchEvent(new CustomEvent(`statuschange`,{detail:{enabled:l()}}))});var l=()=>typeof document>`u`?!1:document.documentElement.dataset[s]===`true`,u=null,d=e=>{u=e},f=150,p=(e=1e3)=>new Promise((t,n)=>{if(l())return t();let r,i=e=>{clearTimeout(r),s.disconnect(),document.removeEventListener(`readystatechange`,c),e()},a=()=>i(async()=>{if(u&&(await u().catch(()=>{}),l()))return t();n(Error(`The FKN WebExtension is not installed, enabled or not exposed on this page.`))}),o=()=>{clearTimeout(r),r=setTimeout(()=>l()?i(t):a(),f)},s=new MutationObserver(()=>{l()&&i(t)}),c=()=>{document.readyState===`complete`&&!l()&&o()};if(r=setTimeout(a,e),s.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-fkn-extension`]}),document.addEventListener(`readystatechange`,c),document.readyState===`complete`)return o();l()&&i(t)}),m,h=new Proxy({},{get:(e,n)=>async(...e)=>{await p(),m??=(0,a.expose)({},{transport:window,revivableModules:t.l});let r=(await m)[n];return r(...e)}}),g={scope:`network.fetch`,category:`network`,severity:0,title:`Fetch data from other sites`,description:`Lets the app download public data from other websites directly, past the usual cross-origin limits.`},_={scope:`network.fetchCredentialed`,category:`network`,severity:3,unsafe:!0,title:`Fetch from other sites, signed in as you`,description:`Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see.`},v={scope:`network.fetchLocal`,category:`network`,severity:3,unsafe:!0,title:`Access devices on your local network`,description:`Lets the app reach devices and services on your home or work network, which websites normally cannot touch.`},y=e=>{let t=e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);if(!t)return!1;let[n,r]=[Number(t[1]),Number(t[2])];return n===10||n===127||n===0||n===169&&r===254||n===172&&r>=16&&r<=31||n===192&&r===168},b=e=>{let t;try{t=new URL(e)}catch{return!1}let n=t.hostname.replace(/^\[|\]$/g,``).toLowerCase().replace(/\.$/,``);return n===`localhost`||n.endsWith(`.localhost`)||n.endsWith(`.local`)||n.endsWith(`.internal`)||n.endsWith(`.home.arpa`)?!0:n.includes(`:`)?n===`::`||n===`::1`||n.startsWith(`fc`)||n.startsWith(`fd`)||/^fe[89ab]/.test(n)||n.startsWith(`::ffff:`):y(n)},x=[`fkn.app`,`fkn.dev`],S=e=>{let t;try{t=new URL(e)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;let n=t.hostname;return x.some(e=>n===e||n.endsWith(`.${e}`))},C=e=>{if(S(e))throw Error(`fetch: refusing to target the extension's own pages or FKN platform domains`)},w=[`origin`,`referer`],T=e=>{if(!e?.headers)return;let t=new Headers(e.headers),n=w.map(e=>{let n=t.get(e);return n===null?void 0:[e,n]}).filter(e=>e!==void 0);return n.length?n:void 0},E=async(e,t)=>{let n=new Request(e,t);C(n.url);let r=n.body?await n.arrayBuffer():null;return h.proxyFetch({url:n.url,method:n.method,headers:[...n.headers],body:r,credentials:t?.credentials===`include`?`include`:`omit`,redirect:n.redirect,unsafeHeaders:T(t),reason:t?.reason,signal:t?.signal??void 0})},D={scope:`network.readCookie`,category:`network`,severity:3,unsafe:!0,title:`Read a site’s cookie`,description:`Lets the app read a named cookie from another site, which can include the login token only that site should see.`},O={get:e=>h.getCookie(e)},k={scope:`network.modifyRequestHeaders`,category:`network`,severity:2,unsafe:!0,title:`Rewrite request headers to other sites`,description:`Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites.`},A=e=>h.setRequestHeaderRule(e),j=e=>h.removeRequestHeaderRule({ruleId:e});(()=>{let e={},n=[...t.t.selectorModules,...t.i.selectorModules];for(let t of n)t.render&&!(t.type in e)&&(e[t.type]=t.render);return e})();var M=`FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY`,N=e=>{if(!e||e===`about:blank`)return!1;let t;try{t=new URL(e,location.href)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;if(t.protocol===`about:`)return!1;let n=t.hostname;return n===`fkn.app`||n.endsWith(`.fkn.app`)},P=e=>{if(N(e))throw Error(`attachFrame: refusing to target the extension's own pages or fkn.app`)},F={scope:`embed.iframe`,category:`embed`,severity:0,title:`Load another website inside this app`,description:`Lets the app embed external pages directly inside its own view.`},I={scope:`embed.open`,category:`embed`,severity:0,title:`Open a website inside this app`,description:`Lets the app navigate to another site without leaving its window.`},L={scope:`embed.evaluate`,category:`embed`,severity:0,title:`Run app code inside an embedded frame`,description:`Lets the app execute its own code inside a page it embedded, to read back a computed result.`},R=async({iframe:e,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{let a=crypto.randomUUID();if(P(e.src),await p(),!e.isConnected)throw Error(`attachFrame: the iframe must be connected to the document before attaching`);e.dispatchEvent(new CustomEvent(M,{detail:a}));let{executeLocator:o,ensureLocatorPermission:s,goto:c,evaluate:l}=await h.attachFrame({marker:a,domains:n,syncCookies:r,lockdown:i}),u=t.r(o,s),d=(e,t={})=>(P(e),c({url:e,...t})),f=((e,t)=>l(e,t)),m=()=>e.src;return{...u,goto:d,evaluate:f,url:m}},z={request:e=>h.requestPermissions(e.map(e=>({key:e.key,scope:e.scope??``,reason:e.reason})))},B=async e=>{if(typeof window>`u`)return!1;if(l())return!0;let t=await n.t,r=null,i=new Promise(e=>{r=()=>{l()&&e(!0)},c.addEventListener(`statuschange`,r)}),a=t.installPrompt.show(e).then(()=>!1),o=await Promise.race([i,a]);return r&&c.removeEventListener(`statuschange`,r),await t.installPrompt.hide().catch(()=>{}),o},V=null;d(()=>(V||=B().then(()=>void 0).finally(()=>{V=null}),V));var H=()=>typeof document<`u`&&l(),U=async(e,t)=>{if(r.n(e),t?.credentials===`include`){if(typeof document>`u`)throw Error(`fetch with credentials needs the FKN extension, which only exists in window realms`);return E(e,t)}return H()?E(e,{...t,credentials:`omit`}):i.available()?i.fetch(e,t):r.t(e,t)},W=e.n({ATTACH_FRAME_EVENT_KEY:()=>M,assertAttachableFrameUrl:()=>P,assertFetchableUrl:()=>C,attachFrame:()=>R,attachFramePermission:()=>F,available:()=>H,box:()=>t.u,cookies:()=>O,createVideoElementHandle:()=>t.d,evaluatePermission:()=>L,events:()=>c,extension:()=>c,fetch:()=>E,fetchCredentialedPermission:()=>_,fetchLocalPermission:()=>v,fetchPermission:()=>g,gotoPermission:()=>I,handleRevivableModules:()=>t.l,isBlockedFetchUrl:()=>S,isBlockedFrameUrl:()=>N,isExtensionExposed:()=>l,isLocalNetworkUrl:()=>b,isType:()=>t.f,modifyRequestHeadersPermission:()=>k,permissions:()=>z,promptInstall:()=>B,readCookiePermission:()=>D,removeRequestHeaderRule:()=>j,revive:()=>t.p,setMissingExtensionHandler:()=>d,setRequestHeaderRule:()=>A,type:()=>t.m,waitForExtensionExposure:()=>p});Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return E}});
package/favicon.svg DELETED
@@ -1,5 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -30.9 461.9 461.9">
2
- <path d="M198.4,0.1L365,288.6H162.3l-31.8,55l331.4-0.2L263.6,0L198.4,0.1z" fill="#f9aa40"/>
3
- <path d="M198.3,0L0,343.6l32.6,56.5l165.1-285.9l100.7,174.4h66.5L198.3,0z" fill="#4572b5"/>
4
- <path d="M197.7,114.2l32.6,56.5l-99.8,172.9h331.4l-32.6,56.5H32.6L197.7,114.2z" fill="#51bb8d"/>
5
- </svg>
@@ -1 +0,0 @@
1
- let e=require(`buffer`);var t={json:`application/json`,txt:`text/plain`,html:`text/html`,htm:`text/html`,css:`text/css`,js:`text/javascript`,mjs:`text/javascript`,xml:`application/xml`,csv:`text/csv`,md:`text/markdown`,svg:`image/svg+xml`,png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,pdf:`application/pdf`,wasm:`application/wasm`},n=(e,n)=>{if(n)return n;let r=e.split(`/`).pop()??``,i=r.lastIndexOf(`.`);if(!(i<=0))return t[r.slice(i+1).toLowerCase()]},r=(e,t)=>({size:e,mtimeMs:t,mtime:new Date(t),atimeMs:t,ctimeMs:t,mode:420,isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}),i=(e=0)=>({size:0,mtimeMs:e,mtime:new Date(e),atimeMs:e,ctimeMs:e,mode:493,isFile:()=>!1,isDirectory:()=>!0,isSymbolicLink:()=>!1}),a=(e,t,n)=>{let r=Error(`${e}: ${{ENOENT:`no such file or directory`,EEXIST:`file already exists`,ENOTDIR:`not a directory`,EISDIR:`illegal operation on a directory`,ENOTEMPTY:`directory not empty`}[e]??e}, ${n} '${t}'`);return r.code=e,r.path=t,r.syscall=n,r},o=e=>{let t=[];for(let n of e.split(`/`))if(!(!n||n===`.`)){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},s=e=>e.split(`/`).slice(0,-1).join(`/`),c=e=>typeof e==`string`?e:e instanceof URL?decodeURIComponent(e.pathname):e.toString(),l=e=>typeof e==`string`?e:e?.encoding??void 0,u=e=>typeof e==`object`?e?.contentType:void 0,d=e=>typeof e==`object`&&!!e?.recursive,f=(t,n)=>{let r=l(n);return r?e.Buffer.from(t).toString(r):e.Buffer.from(t)},p=(t,n)=>{if(typeof t==`string`)return new Uint8Array(e.Buffer.from(t,l(n)??`utf8`));if(t instanceof Uint8Array)return t.slice();if(t instanceof ArrayBuffer)return new Uint8Array(t).slice();if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice();throw TypeError(`The "data" argument must be of type string, Buffer, TypedArray, or DataView`)},m=e=>{let t=new Map([[``,{kind:`dir`,mtimeMs:0}]]),c=new Set,l=new Set,u=()=>Date.now(),d=e=>{if(!e)return;let n=e.split(`/`),r=``;for(let e of n){r=r?`${r}/${e}`:e;let n=t.get(r);if(!n)t.set(r,{kind:`dir`,mtimeMs:u()});else if(n.kind===`file`)throw a(`ENOTDIR`,r,`mkdir`)}},f,p=()=>f??=(async()=>{let n=await e.list().catch(()=>[]);for(let r of n)try{let n=o(r.path);if(c.has(n))continue;let i=await(await e.readFile(r.path)).arrayBuffer();if(c.has(n)||l.has(n))continue;d(s(n));let a=Date.parse(r.updatedAt??``);t.set(n,{kind:`file`,data:new Uint8Array(i),mtimeMs:Number.isFinite(a)?a:u(),contentType:r.contentType??void 0})}catch{}})(),m=async()=>{f=void 0,await p()},h=async()=>{let r=[...c].map(async r=>{let i=t.get(r);if(i?.kind!==`file`){c.delete(r);return}let a=i.data,o=n(r,i.contentType);try{await e.writeFile(r,a,o?{contentType:o}:void 0);let n=t.get(r);n?.kind===`file`&&n.data===a&&c.delete(r)}catch{}}),i=[...l].map(async t=>{try{await e.remove(t),l.delete(t)}catch{}});await Promise.all([...r,...i])},g,_=()=>{g||=setTimeout(()=>{g=void 0,h().catch(()=>{})},250)};typeof addEventListener<`u`&&(addEventListener(`pagehide`,()=>{h().catch(()=>{})}),addEventListener(`visibilitychange`,()=>{typeof document<`u`&&document.visibilityState===`hidden`&&h().catch(()=>{})}));let v=e=>e.kind===`file`?r(e.data.byteLength,e.mtimeMs):i(e.mtimeMs),y=e=>t.has(o(e)),b=e=>{let n=t.get(o(e));if(!n)throw a(`ENOENT`,e,`stat`);return v(n)},x=e=>{let n=t.get(o(e));if(!n)throw a(`ENOENT`,e,`open`);if(n.kind===`dir`)throw a(`EISDIR`,e,`read`);return n.data},S=(e,t)=>{let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n},C=(e,n,r,i)=>{let f=o(e);if(!f)throw a(`EISDIR`,e,`open`);let p=t.get(f);if(p?.kind===`dir`)throw a(`EISDIR`,e,`open`);d(s(f));let m=r&&p?.kind===`file`?S(p.data,n):n;t.set(f,{kind:`file`,data:m,mtimeMs:u(),contentType:i??(p?.kind===`file`?p.contentType:void 0)}),c.add(f),l.delete(f),_()},w=(e,n)=>{let r=o(e);if(r){if(t.has(r)){if(n)return;throw a(`EEXIST`,e,`mkdir`)}if(!n&&!t.has(s(r)))throw a(`ENOENT`,e,`mkdir`);d(r)}},T=e=>{let n=o(e),r=t.get(n);if(!r)throw a(`ENOENT`,e,`scandir`);if(r.kind===`file`)throw a(`ENOTDIR`,e,`scandir`);let i=n?`${n}/`:``,s=new Set;for(let e of t.keys()){if(!e||!e.startsWith(i))continue;let t=e.slice(i.length);t&&s.add(t.split(`/`)[0])}return[...s]},E=(e,n)=>{let r=o(e);if(!t.get(r)){if(n)return;throw a(`ENOENT`,e,`unlink`)}let i=`${r}/`,s=[...t.keys()].filter(e=>e.startsWith(i));if(s.length&&!n)throw a(`ENOTEMPTY`,e,`rmdir`);for(let e of[r,...s]){let n=t.get(e);t.delete(e),n?.kind===`file`&&(c.delete(e),l.add(e))}_()};return{mount:p,remount:m,flush:h,exists:y,stat:b,readFile:x,writeFile:C,mkdir:w,readdir:T,remove:E,rename:(e,n)=>{let r=o(e),i=o(n);if(!r)throw a(`EBUSY`,e,`rename`);if(i===r||i.startsWith(`${r}/`))throw a(`EINVAL`,e,`rename`);let u=t.get(r);if(!u)throw a(`ENOENT`,e,`rename`);let f=t.get(i);if(f){if(f.kind!==u.kind)throw a(u.kind===`dir`?`ENOTDIR`:`EISDIR`,n,`rename`);E(i,!0)}d(s(i));let p=`${r}/`,m=[r,...[...t.keys()].filter(e=>e.startsWith(p))];for(let e of m){let n=i+e.slice(r.length),a=t.get(e);t.set(n,a),t.delete(e),a.kind===`file`&&(c.add(n),l.delete(n),c.delete(e),l.add(e))}_()}}},h=(e,t)=>typeof e==`function`?e:t,g=e=>typeof e==`function`?void 0:e,_=(e,t)=>{e.then(e=>t(null,e),e=>t(e))},v=e=>{let t=m(e),n=(e,n)=>f(t.readFile(c(e)),n),r=(e,n,r)=>t.writeFile(c(e),p(n,r),!1,u(r)),i=(e,n,r)=>t.writeFile(c(e),p(n,r),!0,u(r)),o=e=>t.exists(c(e)),s=e=>t.stat(c(e)),l=e=>t.readdir(c(e)),_=(e,n)=>t.mkdir(c(e),d(n)),v=(e,n)=>t.remove(c(e),!!n?.recursive),y=(e,n)=>t.remove(c(e),!!n?.recursive),b=e=>t.remove(c(e),!1),x=(e,n)=>t.rename(c(e),c(n)),S=(e,n)=>{t.mount().finally(()=>{let t;try{t=e()}catch(e){n(e);return}n(null,t)})},C=e=>t.mount().then(()=>e());return{available:e.available,readFileSync:n,writeFileSync:r,appendFileSync:i,existsSync:o,statSync:s,lstatSync:s,readdirSync:l,mkdirSync:_,rmSync:v,rmdirSync:y,unlinkSync:b,renameSync:x,readFile:(e,n,r)=>S(()=>f(t.readFile(c(e)),g(n)),h(n,r)),writeFile:(e,n,r,i)=>S(()=>t.writeFile(c(e),p(n,g(r)),!1,u(g(r))),h(r,i)),appendFile:(e,n,r,i)=>S(()=>t.writeFile(c(e),p(n,g(r)),!0,u(g(r))),h(r,i)),stat:(e,n)=>S(()=>t.stat(c(e)),n),readdir:(e,n,r)=>S(()=>t.readdir(c(e)),h(n,r)),mkdir:(e,n,r)=>S(()=>t.mkdir(c(e),d(g(n))),h(n,r)),rm:(e,n,r)=>S(()=>t.remove(c(e),!!g(n)?.recursive),h(n,r)),unlink:(e,n)=>S(()=>t.remove(c(e),!1),n),rename:(e,n,r)=>S(()=>t.rename(c(e),c(n)),r),exists:(e,n)=>{t.mount().finally(()=>n(t.exists(c(e))))},promises:{readFile:(e,n)=>C(()=>f(t.readFile(c(e)),n)),writeFile:(e,n,r)=>C(()=>t.writeFile(c(e),p(n,r),!1,u(r))),appendFile:(e,n,r)=>C(()=>t.writeFile(c(e),p(n,r),!0,u(r))),stat:e=>C(()=>t.stat(c(e))),lstat:e=>C(()=>t.stat(c(e))),readdir:e=>C(()=>t.readdir(c(e))),mkdir:(e,n)=>C(()=>t.mkdir(c(e),d(n))),rm:(e,n)=>C(()=>t.remove(c(e),!!n?.recursive)),rmdir:(e,n)=>C(()=>t.remove(c(e),!!n?.recursive)),unlink:e=>C(()=>t.remove(c(e),!1)),rename:(e,n)=>C(()=>t.rename(c(e),c(n))),access:e=>C(()=>{if(!t.exists(c(e)))throw a(`ENOENT`,c(e),`access`)})},mount:t.mount,flush:t.flush,remount:t.remount}},y=e=>{let t=async(t,n)=>{let r=await e.readFile(c(t));return f(new Uint8Array(await r.arrayBuffer()),n)},s=async(t,r,i)=>{let a=c(t),o=n(a,u(i));await e.writeFile(a,p(r,i),o?{contentType:o}:void 0)},l=t=>e.remove(c(t)),d=async(t,n)=>{let r=o(c(t)),i=o(c(n));if(r===i)return;let a=await e.readFile(r);await e.writeFile(i,a),await e.remove(r)},m=async t=>{let n=o(c(t)),r=n?`${n}/`:``,i=new Set;for(let t of await e.list()){let e=o(t.path);if(r&&!e.startsWith(r))continue;let n=e.slice(r.length);n&&i.add(n.split(`/`)[0])}return[...i]},v=async(e,t)=>{},y=async(t,n)=>{let r=o(c(t));if(!n?.recursive){await e.remove(c(t));return}let i=`${r}/`,a=await e.list();await Promise.all(a.filter(e=>{let t=o(e.path);return t===r||t.startsWith(i)}).map(t=>e.remove(t.path).catch(()=>{})))},b=async t=>{let n=o(c(t)),s=await e.list(),l=s.find(e=>o(e.path)===n);if(l){let e=Date.parse(l.updatedAt??``);return r(l.size,Number.isFinite(e)?e:0)}if(s.some(e=>o(e.path).startsWith(`${n}/`)))return i();throw a(`ENOENT`,c(t),`stat`)},x={readFile:t,writeFile:s,unlink:l,rename:d,readdir:m,mkdir:v,rm:y,rmdir:y,stat:b,lstat:b,access:async e=>{await b(e)}};return{available:e.available,promises:x,readFile:(e,n,r)=>_(t(e,g(n)),h(n,r)),writeFile:(e,t,n,r)=>_(s(e,t,g(n)),h(n,r)),unlink:(e,t)=>_(l(e),t),rename:(e,t,n)=>_(d(e,t),n),readdir:(e,t,n)=>_(m(e),h(t,n)),mkdir:(e,t,n)=>_(v(),h(t,n)),rm:(e,t,n)=>_(y(e,g(t)),h(t,n)),stat:(e,t)=>_(b(e),t)}};function b(e,t){return t.memfs?v(e):y(e)}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return b}});