@fkn/lib 0.5.5 → 0.6.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 (190) hide show
  1. package/account.cjs +1 -1
  2. package/account.js +2 -2
  3. package/api/account.d.ts +7 -0
  4. package/api/broker-bridge.d.ts +12 -0
  5. package/api/connect-store.d.ts +9 -0
  6. package/api/connect.d.ts +2 -0
  7. package/api/data-plane.d.ts +28 -0
  8. package/api/dns/index.d.ts +1 -0
  9. package/{cloud/dns.d.ts → api/dns/lookup.d.ts} +2 -6
  10. package/api/index.d.ts +78 -0
  11. package/api/install-prompt.d.ts +2 -0
  12. package/api/local-net/index.d.ts +43 -0
  13. package/api/overlay-mount.d.ts +2 -0
  14. package/api/overlay.d.ts +17 -0
  15. package/api/packages/host.d.ts +12 -0
  16. package/api/packages/identity.d.ts +1 -0
  17. package/api/packages/index.d.ts +34 -0
  18. package/api/packages/picker.d.ts +28 -0
  19. package/api/packages/registry.d.ts +20 -0
  20. package/api/packages/store.d.ts +6 -0
  21. package/api/packages/types.d.ts +56 -0
  22. package/api/preconnect.d.ts +1 -0
  23. package/api/proxy/index.d.ts +1 -0
  24. package/api/proxy/proxy-fetch.d.ts +5 -0
  25. package/api/quota.d.ts +10 -0
  26. package/api/rate-token.d.ts +3 -0
  27. package/api/session-limit.d.ts +1 -0
  28. package/api/storage.d.ts +20 -0
  29. package/api/toast.d.ts +1 -0
  30. package/api/token-source.d.ts +4 -0
  31. package/api/ui-events.d.ts +8 -0
  32. package/api/ui-host.d.ts +2 -0
  33. package/api/webvpn/index.d.ts +3 -0
  34. package/api/webvpn/packets/metadata.d.ts +31 -0
  35. package/api/webvpn/packets/tcp-listener.d.ts +39 -0
  36. package/api/webvpn/packets/tcp.d.ts +88 -0
  37. package/api/webvpn/packets/udp.d.ts +183 -0
  38. package/api/webvpn/packets/utils.d.ts +24 -0
  39. package/api/webvpn/tcp-listener.d.ts +11 -0
  40. package/api/webvpn/tcp.d.ts +33 -0
  41. package/api/webvpn/udp.d.ts +33 -0
  42. package/api/webvpn/utils.d.ts +26 -0
  43. package/api/webvpn/webtransport.d.ts +62 -0
  44. package/api/worker/client.d.ts +3 -0
  45. package/api/worker/protocol.d.ts +15 -0
  46. package/{api-CDb2pv7C.cjs → api-DD5v1qP9.cjs} +1 -1
  47. package/{background-DvQm1JHR.js → background-BVBbBOmL.js} +41 -68
  48. package/background-B_VgpARk.cjs +1 -0
  49. package/cloud/dgram.cjs +1 -1
  50. package/cloud/dgram.js +1 -3
  51. package/cloud/dns.cjs +1 -1
  52. package/cloud/dns.js +0 -1
  53. package/cloud/fs/promises.cjs +1 -1
  54. package/cloud/fs/promises.js +0 -3
  55. package/cloud/fs.cjs +1 -1
  56. package/cloud/fs.js +3 -4
  57. package/cloud/http.cjs +1 -1
  58. package/cloud/http.js +0 -3
  59. package/cloud/net.cjs +1 -1
  60. package/cloud/net.js +2 -3
  61. package/cloud-5o7yJHeX.cjs +1 -0
  62. package/cloud-BFyf2uC7.js +112 -0
  63. package/cloud.cjs +1 -1
  64. package/cloud.js +8 -12
  65. package/{connect-button-poDZVmq2.cjs → connect-button-BBEjXzB3.cjs} +1 -1
  66. package/desktop.cjs +1 -1
  67. package/desktop.js +1 -1
  68. package/dgram-CE43gJq9.cjs +1 -0
  69. package/{dgram-c_Xk7ckJ.js → dgram-wtjARbt0.js} +3 -3
  70. package/dgram.cjs +1 -1
  71. package/dgram.js +1 -3
  72. package/dns.cjs +1 -1
  73. package/dns.js +2 -2
  74. package/extension-CPj10qwa.js +67 -0
  75. package/extension-D-NUXxzF.cjs +1 -0
  76. package/extension.cjs +1 -1
  77. package/extension.js +3 -5
  78. package/fs/promises.cjs +1 -1
  79. package/fs/promises.js +1 -4
  80. package/fs-BfmfMBiw.cjs +1 -0
  81. package/{fs-BQs-x3_j.js → fs-D6nNf1mR.js} +4 -4
  82. package/fs.cjs +1 -1
  83. package/fs.js +1 -4
  84. package/http.cjs +2 -2
  85. package/http.js +7 -7
  86. package/index.cjs +1 -1
  87. package/index.js +23 -26
  88. package/{account.d.ts → lib/account.d.ts} +5 -8
  89. package/lib/api.d.ts +300 -0
  90. package/lib/auto.d.ts +5 -0
  91. package/lib/cloud/dgram.d.ts +2 -0
  92. package/lib/cloud/dns.d.ts +1 -0
  93. package/lib/cloud/frame.d.ts +3 -0
  94. package/lib/cloud/fs-promises.d.ts +5 -0
  95. package/lib/cloud/fs.d.ts +22 -0
  96. package/lib/cloud/http.d.ts +2 -0
  97. package/lib/cloud/net.d.ts +2 -0
  98. package/lib/cloud.d.ts +10 -0
  99. package/lib/connect-button.d.ts +1 -0
  100. package/lib/connect.d.ts +1 -0
  101. package/{desktop.d.ts → lib/desktop.d.ts} +6 -8
  102. package/lib/dns.d.ts +6 -0
  103. package/lib/dom.d.ts +2 -0
  104. package/lib/extension-prompt.d.ts +1 -0
  105. package/lib/extension.d.ts +4 -0
  106. package/lib/fkn-target.d.ts +1 -0
  107. package/lib/frame.d.ts +2 -0
  108. package/lib/fs/content-type.d.ts +1 -0
  109. package/lib/fs/hybrid.d.ts +10 -0
  110. package/lib/fs/index.d.ts +87 -0
  111. package/lib/fs/opfs.d.ts +8 -0
  112. package/lib/fs/promises.d.ts +8 -0
  113. package/lib/fs/types.d.ts +16 -0
  114. package/lib/index.d.ts +18 -0
  115. package/lib/node-fs/index.d.ts +95 -0
  116. package/lib/node-fs/shared.d.ts +39 -0
  117. package/lib/node-fs/store.d.ts +21 -0
  118. package/lib/opfs/index.d.ts +84 -0
  119. package/lib/opfs/promises.d.ts +8 -0
  120. package/lib/overlay.d.ts +14 -0
  121. package/lib/packages.d.ts +69 -0
  122. package/lib/proxy.d.ts +5 -0
  123. package/lib/quota.d.ts +20 -0
  124. package/lib/react.d.ts +7 -0
  125. package/lib/relay.d.ts +5 -0
  126. package/lib/storage.d.ts +22 -0
  127. package/lib/webvpn/dgram.d.ts +86 -0
  128. package/lib/webvpn/http.d.ts +180 -0
  129. package/lib/webvpn/index.d.ts +1 -0
  130. package/lib/webvpn/net.d.ts +132 -0
  131. package/lib/webvpn/utils.d.ts +32 -0
  132. package/net-CpuAhaQC.cjs +1 -0
  133. package/{net-Bl6_W3bd.js → net-DKMWPXb_.js} +3 -3
  134. package/net.cjs +1 -1
  135. package/net.js +2 -3
  136. package/{node-fs-DQn1TGJz.cjs → node-fs-C0eKnboT.cjs} +1 -1
  137. package/{node-fs-CdKPXPtW.js → node-fs-Dbf93qP7.js} +1 -1
  138. package/opfs/promises.cjs +1 -1
  139. package/opfs/promises.js +0 -1
  140. package/{opfs-BfcYLPGb.js → opfs-7_GmzQ93.js} +1 -1
  141. package/opfs-uClkgnb5.cjs +1 -0
  142. package/opfs.cjs +1 -1
  143. package/opfs.js +3 -3
  144. package/package.json +27 -22
  145. package/packages.cjs +1 -0
  146. package/packages.js +150 -0
  147. package/{locator-9s7jNIA2.js → proxy-C8SG1Beo.js} +542 -344
  148. package/proxy-bPaU3-Cz.cjs +53 -0
  149. package/react.cjs +1 -1
  150. package/react.js +1 -1
  151. package/{chunk-CPXzm0be.js → rolldown-runtime-DF993M8W.js} +1 -1
  152. package/rolldown-runtime-Doa5O59j.cjs +1 -0
  153. package/sandbox.d.ts +7 -0
  154. package/storage-OkwsFLN1.cjs +1 -0
  155. package/{storage-BcJfnkm3.js → storage-TmeyhZGt.js} +2 -2
  156. package/{utils-BsNRWMfl.cjs → utils-CoimMjf9.cjs} +1 -1
  157. package/background-CbU8TkWo.cjs +0 -1
  158. package/chunk-B6C_zzib.cjs +0 -1
  159. package/cloud/dgram.d.ts +0 -541
  160. package/cloud/fs/promises.d.ts +0 -45
  161. package/cloud/fs.d.ts +0 -75
  162. package/cloud/http.d.ts +0 -767
  163. package/cloud/net.d.ts +0 -606
  164. package/cloud-CWg9zCWm.cjs +0 -1
  165. package/cloud-eLyGYzbA.js +0 -33
  166. package/cloud.d.ts +0 -1053
  167. package/dgram-B3WC4VdJ.cjs +0 -1
  168. package/dgram.d.ts +0 -541
  169. package/dns.d.ts +0 -12
  170. package/extension-BLkZiaAP.js +0 -253
  171. package/extension-DAiRg5ny.cjs +0 -1
  172. package/extension.d.ts +0 -859
  173. package/fs/promises.d.ts +0 -67
  174. package/fs-DI1maxcZ.cjs +0 -1
  175. package/fs.d.ts +0 -142
  176. package/http.d.ts +0 -767
  177. package/index.d.ts +0 -2316
  178. package/locator-CHfEe3Jv.cjs +0 -53
  179. package/net-C5kWnI4C.cjs +0 -1
  180. package/net.d.ts +0 -606
  181. package/opfs/promises.d.ts +0 -67
  182. package/opfs-Dsi4FkJU.cjs +0 -1
  183. package/opfs.d.ts +0 -140
  184. package/proxy-A9UvWUaF.cjs +0 -1
  185. package/proxy-wiZN4eTR.js +0 -14
  186. package/react.d.ts +0 -12
  187. package/storage-C2-_-bTO.cjs +0 -1
  188. /package/{api-ByfayMm1.js → api--bnCFd4w.js} +0 -0
  189. /package/{connect-button-B_63ldmg.js → connect-button-Ds9KpXHe.js} +0 -0
  190. /package/{utils-CNydj3OT.js → utils-DPtyxGQu.js} +0 -0
@@ -1 +1 @@
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`,ERR_FS_EISDIR:`is a directory`}[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,{op:n,recursive:r,force:i})=>{let s=o(e),u=t.get(s);if(!u){if(i||n===`rmdir`&&r)return;throw a(`ENOENT`,e,n===`rmdir`?`rmdir`:`unlink`)}if(n===`unlink`&&u.kind===`dir`)throw a(`EISDIR`,e,`unlink`);if(n===`rmdir`&&u.kind===`file`)throw a(`ENOTDIR`,e,`rmdir`);if(n===`rm`&&u.kind===`dir`&&!r)throw a(`ERR_FS_EISDIR`,e,`rm`);let d=`${s}/`,f=[...t.keys()].filter(e=>e.startsWith(d));if(f.length&&!r)throw a(`ENOTEMPTY`,e,`rmdir`);for(let e of[s,...f]){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,{op:`rm`,recursive:!0,force:!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),{op:`rm`,...n}),y=(e,n)=>t.remove(c(e),{op:`rmdir`,...n}),b=e=>t.remove(c(e),{op:`unlink`}),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),{op:`rm`,...g(n)}),h(n,r)),unlink:(e,n)=>S(()=>t.remove(c(e),{op:`unlink`}),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),{op:`rm`,...n})),rmdir:(e,n)=>C(()=>t.remove(c(e),{op:`rmdir`,...n})),unlink:e=>C(()=>t.remove(c(e),{op:`unlink`})),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}});
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`,ERR_FS_EISDIR:`is a directory`}[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,{op:n,recursive:r,force:i})=>{let s=o(e),u=t.get(s);if(!u){if(i||n===`rmdir`&&r)return;throw a(`ENOENT`,e,n===`rmdir`?`rmdir`:`unlink`)}if(n===`unlink`&&u.kind===`dir`)throw a(`EISDIR`,e,`unlink`);if(n===`rmdir`&&u.kind===`file`)throw a(`ENOTDIR`,e,`rmdir`);if(n===`rm`&&u.kind===`dir`&&!r)throw a(`ERR_FS_EISDIR`,e,`rm`);let d=`${s}/`,f=[...t.keys()].filter(e=>e.startsWith(d));if(f.length&&!r)throw a(`ENOTEMPTY`,e,`rmdir`);for(let e of[s,...f]){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,{op:`rm`,recursive:!0,force:!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),{op:`rm`,...n}),y=(e,n)=>t.remove(c(e),{op:`rmdir`,...n}),b=e=>t.remove(c(e),{op:`unlink`}),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),{op:`rm`,...g(n)}),h(n,r)),unlink:(e,n)=>S(()=>t.remove(c(e),{op:`unlink`}),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),{op:`rm`,...n})),rmdir:(e,n)=>C(()=>t.remove(c(e),{op:`rmdir`,...n})),unlink:e=>C(()=>t.remove(c(e),{op:`unlink`})),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}});
@@ -73,7 +73,7 @@ var t = {
73
73
  if (ArrayBuffer.isView(t)) return new Uint8Array(t.buffer, t.byteOffset, t.byteLength).slice();
74
74
  throw TypeError("The \"data\" argument must be of type string, Buffer, TypedArray, or DataView");
75
75
  }, m = (e) => {
76
- let t = new Map([["", {
76
+ let t = /* @__PURE__ */ new Map([["", {
77
77
  kind: "dir",
78
78
  mtimeMs: 0
79
79
  }]]), c = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), u = () => Date.now(), d = (e) => {
package/opfs/promises.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../node-fs-DQn1TGJz.cjs`);const e=require(`../opfs.cjs`);var{readFile:t,writeFile:n,appendFile:r,unlink:i,rename:a,readdir:o,mkdir:s,rm:c,rmdir:l,stat:u,lstat:d,access:f}=e.promises,p=e.promises;exports.access=f,exports.appendFile=r,exports.default=p,exports.lstat=d,exports.mkdir=s,exports.readFile=t,exports.readdir=o,exports.rename=a,exports.rm=c,exports.rmdir=l,exports.stat=u,exports.unlink=i,exports.writeFile=n;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../opfs.cjs");var{readFile:t,writeFile:n,appendFile:r,unlink:i,rename:a,readdir:o,mkdir:s,rm:c,rmdir:l,stat:u,lstat:d,access:f}=e.promises,p=e.promises;exports.access=f,exports.appendFile=r,exports.default=p,exports.lstat=d,exports.mkdir=s,exports.readFile=t,exports.readdir=o,exports.rename=a,exports.rm=c,exports.rmdir=l,exports.stat=u,exports.unlink=i,exports.writeFile=n;
package/opfs/promises.js CHANGED
@@ -1,4 +1,3 @@
1
- import "../node-fs-CdKPXPtW.js";
2
1
  import { promises as e } from "../opfs.js";
3
2
  //#region src/lib/opfs/promises.ts
4
3
  var { readFile: t, writeFile: n, appendFile: r, unlink: i, rename: a, readdir: o, mkdir: s, rm: c, rmdir: l, stat: u, lstat: d, access: f } = e, p = e;
@@ -1,4 +1,4 @@
1
- import { n as e } from "./chunk-CPXzm0be.js";
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
2
  //#region src/lib/fs/opfs.ts
3
3
  var t = /* @__PURE__ */ e({
4
4
  available: () => a,
@@ -0,0 +1 @@
1
+ var e=require("./rolldown-runtime-Doa5O59j.cjs").n({available:()=>i,list:()=>c,readFile:()=>o,remove:()=>s,writeFile:()=>a}),t=()=>navigator.storage.getDirectory(),n=e=>{let t=e.split(`/`).filter(e=>e&&e!==`.`);if(t.some(e=>e===`..`)||!t.length)throw Error(`opfs: invalid path`);return t},r=async(e,n)=>{let r=await t();for(let t of e)r=await r.getDirectoryHandle(t,{create:n});return r},i=async()=>{try{return typeof navigator<`u`&&!!navigator.storage?.getDirectory&&!!await t()}catch{return!1}},a=async(e,t,i)=>{let a=n(e),o=a.pop(),s=await(await(await r(a,!0)).getFileHandle(o,{create:!0})).createWritable({keepExistingData:!1});try{let e=t instanceof Blob?t:new Blob([t],i?.contentType?{type:i.contentType}:void 0);await s.write(e)}finally{await s.close()}},o=async e=>{let t=n(e),i=t.pop();return(await(await r(t,!1)).getFileHandle(i)).getFile()},s=async e=>{let t=n(e),i=t.pop();await(await r(t,!1)).removeEntry(i,{recursive:!0})},c=async()=>{let e=[],n=async(t,r)=>{for await(let[i,a]of t.entries()){let t=r?`${r}/${i}`:i;if(a.kind===`file`){let n=await a.getFile();e.push({path:t,size:n.size,contentType:n.type||null,updatedAt:new Date(n.lastModified).toISOString()})}else await n(a,t)}};return await n(await t(),``),e};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
package/opfs.cjs CHANGED
@@ -1 +1 @@
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;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./node-fs-C0eKnboT.cjs"),n=require("./opfs-uClkgnb5.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.js CHANGED
@@ -1,6 +1,6 @@
1
- import { n as e } from "./chunk-CPXzm0be.js";
2
- import { t } from "./node-fs-CdKPXPtW.js";
3
- import { r as n } from "./opfs-BfcYLPGb.js";
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
+ import { t } from "./node-fs-Dbf93qP7.js";
3
+ import { r as n } from "./opfs-7_GmzQ93.js";
4
4
  //#region src/lib/opfs/index.ts
5
5
  var r = /* @__PURE__ */ e({
6
6
  appendFile: () => b,
package/package.json CHANGED
@@ -1,107 +1,112 @@
1
1
  {
2
2
  "name": "@fkn/lib",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "main": "index.js",
5
- "types": "index.d.ts",
5
+ "types": "lib/index.d.ts",
6
6
  "type": "module",
7
7
  "exports": {
8
8
  ".": {
9
- "types": "./index.d.ts",
9
+ "types": "./lib/index.d.ts",
10
10
  "import": "./index.js",
11
11
  "require": "./index.cjs"
12
12
  },
13
13
  "./fs": {
14
- "types": "./fs.d.ts",
14
+ "types": "./lib/fs/index.d.ts",
15
15
  "import": "./fs.js",
16
16
  "require": "./fs.cjs"
17
17
  },
18
18
  "./fs/promises": {
19
- "types": "./fs/promises.d.ts",
19
+ "types": "./lib/fs/promises.d.ts",
20
20
  "import": "./fs/promises.js",
21
21
  "require": "./fs/promises.cjs"
22
22
  },
23
23
  "./opfs": {
24
- "types": "./opfs.d.ts",
24
+ "types": "./lib/opfs/index.d.ts",
25
25
  "import": "./opfs.js",
26
26
  "require": "./opfs.cjs"
27
27
  },
28
28
  "./opfs/promises": {
29
- "types": "./opfs/promises.d.ts",
29
+ "types": "./lib/opfs/promises.d.ts",
30
30
  "import": "./opfs/promises.js",
31
31
  "require": "./opfs/promises.cjs"
32
32
  },
33
33
  "./cloud": {
34
- "types": "./cloud.d.ts",
34
+ "types": "./lib/cloud.d.ts",
35
35
  "import": "./cloud.js",
36
36
  "require": "./cloud.cjs"
37
37
  },
38
38
  "./cloud/fs": {
39
- "types": "./cloud/fs.d.ts",
39
+ "types": "./lib/cloud/fs.d.ts",
40
40
  "import": "./cloud/fs.js",
41
41
  "require": "./cloud/fs.cjs"
42
42
  },
43
43
  "./cloud/fs/promises": {
44
- "types": "./cloud/fs/promises.d.ts",
44
+ "types": "./lib/cloud/fs-promises.d.ts",
45
45
  "import": "./cloud/fs/promises.js",
46
46
  "require": "./cloud/fs/promises.cjs"
47
47
  },
48
48
  "./cloud/net": {
49
- "types": "./cloud/net.d.ts",
49
+ "types": "./lib/cloud/net.d.ts",
50
50
  "import": "./cloud/net.js",
51
51
  "require": "./cloud/net.cjs"
52
52
  },
53
53
  "./cloud/dgram": {
54
- "types": "./cloud/dgram.d.ts",
54
+ "types": "./lib/cloud/dgram.d.ts",
55
55
  "import": "./cloud/dgram.js",
56
56
  "require": "./cloud/dgram.cjs"
57
57
  },
58
58
  "./cloud/http": {
59
- "types": "./cloud/http.d.ts",
59
+ "types": "./lib/cloud/http.d.ts",
60
60
  "import": "./cloud/http.js",
61
61
  "require": "./cloud/http.cjs"
62
62
  },
63
63
  "./cloud/dns": {
64
- "types": "./cloud/dns.d.ts",
64
+ "types": "./lib/cloud/dns.d.ts",
65
65
  "import": "./cloud/dns.js",
66
66
  "require": "./cloud/dns.cjs"
67
67
  },
68
68
  "./net": {
69
- "types": "./net.d.ts",
69
+ "types": "./lib/webvpn/net.d.ts",
70
70
  "import": "./net.js",
71
71
  "require": "./net.cjs"
72
72
  },
73
73
  "./dgram": {
74
- "types": "./dgram.d.ts",
74
+ "types": "./lib/webvpn/dgram.d.ts",
75
75
  "import": "./dgram.js",
76
76
  "require": "./dgram.cjs"
77
77
  },
78
78
  "./http": {
79
- "types": "./http.d.ts",
79
+ "types": "./lib/webvpn/http.d.ts",
80
80
  "import": "./http.js",
81
81
  "require": "./http.cjs"
82
82
  },
83
83
  "./dns": {
84
- "types": "./dns.d.ts",
84
+ "types": "./lib/dns.d.ts",
85
85
  "import": "./dns.js",
86
86
  "require": "./dns.cjs"
87
87
  },
88
88
  "./extension": {
89
- "types": "./extension.d.ts",
89
+ "types": "./lib/extension.d.ts",
90
90
  "import": "./extension.js",
91
91
  "require": "./extension.cjs"
92
92
  },
93
93
  "./desktop": {
94
- "types": "./desktop.d.ts",
94
+ "types": "./lib/desktop.d.ts",
95
95
  "import": "./desktop.js",
96
96
  "require": "./desktop.cjs"
97
97
  },
98
98
  "./account": {
99
- "types": "./account.d.ts",
99
+ "types": "./lib/account.d.ts",
100
100
  "import": "./account.js",
101
101
  "require": "./account.cjs"
102
102
  },
103
+ "./packages": {
104
+ "types": "./lib/packages.d.ts",
105
+ "import": "./packages.js",
106
+ "require": "./packages.cjs"
107
+ },
103
108
  "./react": {
104
- "types": "./react.d.ts",
109
+ "types": "./lib/react.d.ts",
105
110
  "import": "./react.js",
106
111
  "require": "./react.cjs"
107
112
  },
package/packages.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-Doa5O59j.cjs"),t=require("./api-DD5v1qP9.cjs");let n=require("osra");var r=e.n({attach:()=>_,connect:()=>g,install:()=>p,list:()=>m,onConnect:()=>O,pick:()=>f,search:()=>d,uninstall:()=>h}),i=`https://fkn.app`,a=`fkn-packages-connection`,o=3e4,s=(e,t)=>Object.assign(Error(t),{code:e}),c=async()=>{if(!t.n)throw s(`unavailable`,`packages: no FKN transport in this realm - use relayWorker to bridge workers`);return t.t},l=(e,t,r)=>(0,n.expose)(e??{},{transport:t,key:a,unregisterSignal:r}),u=async(e,t,n={})=>{let{signal:r,closed:i}=n;if(r?.aborted)throw s(`unavailable`,`packages.connect: aborted before connecting`);let a=new AbortController;r&&r.addEventListener(`abort`,()=>a.abort(r.reason),{once:!0});let c=new AbortController,u=new Promise((e,n)=>{let a=setTimeout(()=>n(s(`timeout`,`packages.connect: the package did not complete the connection`)),o);c.signal.addEventListener(`abort`,()=>clearTimeout(a),{once:!0}),t.addEventListener(`message`,e=>{if(e.data?.type===`fkn-packages-nack`){let t=e.data.message;n(s(`unavailable`,typeof t==`string`&&t?t:`packages.connect: the package refused the connection`))}},{signal:c.signal}),t.start(),r&&r.addEventListener(`abort`,()=>n(s(`unavailable`,`packages.connect: aborted before connecting`)),{once:!0,signal:c.signal}),i?.then(()=>n(s(`unavailable`,`packages.connect: the package closed before connecting`)))});try{return await Promise.race([l(e,t,a.signal),u])}catch(e){a.abort(e);try{t.close()}catch{}throw e}finally{c.abort()}},d=async e=>{let t=await(await c()).packages.search(e);if(`error`in t)throw s(t.error,t.message);return t.results},f=async(e,t)=>{let n=await(await c()).packages.pick(e,t);if(`error`in n)throw s(n.error,n.message);return`declined`in n?[]:n.results},p=async(e,t)=>{let n=await(await c()).packages.install(e,t);if(`error`in n)throw s(n.error,n.message);return`declined`in n?null:n.installed},m=async()=>(await(await c()).packages.list()).results,h=async e=>{let t=await(await c()).packages.uninstall(e);if(`error`in t)throw s(t.error,t.message)},g=(async(e,t={})=>{let n=await(await c()).packages.connect(e,{protocol:t.protocol});if(`error`in n)throw s(n.error,n.message);let{port:r,closed:i}=n;if(t.raw)return{closed:i,port:r};let a=await u(t.payload,r,{signal:t.signal,closed:i});return t.signal&&t.signal.addEventListener(`abort`,()=>{try{r.postMessage({type:`fkn-packages-disconnect`})}catch{}},{once:!0}),{remote:a,closed:i,port:r}}),_=(e,t,n)=>u(t,e,{signal:n?.signal}),v=null,y=[],b=new Map,x=!1,S=!1,C=e=>{let t=b.get(e);t&&(b.delete(e),t())},w=(e,t)=>{try{e.postMessage({type:`fkn-packages-nack`,message:t})}catch{}try{e.close()}catch{}},T=async(e,t)=>{let{port:n,...r}=e;e.port.addEventListener(`message`,t=>{t.data?.type===`fkn-packages-disconnect`&&C(e.port)});let i;try{i=await t.createPayload(r)}catch(t){throw w(e.port,t instanceof Error?t.message:`the package failed to produce a connection`),t}let a=new Promise(t=>b.set(e.port,t)),o=await l(i,e.port);t.handler?.({...r,remote:o,closed:a,port:e.port})},E=()=>{x||typeof window>`u`||window.parent===window||(x=!0,window.addEventListener(`message`,e=>{if(e.source!==window.parent||e.origin!==i)return;let t=e.data;if(t?.type===`fkn-packages-port`){let n=e.ports[0];if(!n)return;let r={port:n,from:typeof t.from==`string`?t.from:``,protocol:typeof t.protocol==`string`?t.protocol:null,uri:typeof t.uri==`string`?t.uri:``,name:typeof t.name==`string`?t.name:``,version:typeof t.version==`string`?t.version:``};v?T(r,v).catch(e=>console.warn(`packages.onConnect:`,e)):y.push(r)}if(t?.type===`fkn-packages-close`)for(let e of[...b.keys()])C(e)}))},D=()=>{S||typeof window>`u`||window.parent===window||(S=!0,window.parent.postMessage({type:`fkn-packages-ready`},i))},O=(e,t)=>{if(typeof window>`u`)return{unsubscribe:()=>{}};E();let n={createPayload:e,handler:t};for(v=n,D();y.length&&v===n;)T(y.shift(),n).catch(e=>console.warn(`packages.onConnect:`,e));return{unsubscribe:()=>{v===n&&(v=null)}}};exports.attach=_,exports.connect=g,exports.install=p,exports.list=m,exports.onConnect=O,exports.pick=f,exports.search=d,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.uninstall=h;
package/packages.js ADDED
@@ -0,0 +1,150 @@
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
+ import { n as t, t as n } from "./api--bnCFd4w.js";
3
+ import { expose as r } from "osra";
4
+ //#region src/lib/packages.ts
5
+ var i = /* @__PURE__ */ e({
6
+ attach: () => v,
7
+ connect: () => _,
8
+ install: () => m,
9
+ list: () => h,
10
+ onConnect: () => k,
11
+ pick: () => p,
12
+ search: () => f,
13
+ uninstall: () => g
14
+ }), a = "https://fkn.app", o = "fkn-packages-connection", s = 3e4, c = (e, t) => Object.assign(Error(t), { code: e }), l = async () => {
15
+ if (!t) throw c("unavailable", "packages: no FKN transport in this realm - use relayWorker to bridge workers");
16
+ return n;
17
+ }, u = (e, t, n) => r(e ?? {}, {
18
+ transport: t,
19
+ key: o,
20
+ unregisterSignal: n
21
+ }), d = async (e, t, n = {}) => {
22
+ let { signal: r, closed: i } = n;
23
+ if (r?.aborted) throw c("unavailable", "packages.connect: aborted before connecting");
24
+ let a = new AbortController();
25
+ r && r.addEventListener("abort", () => a.abort(r.reason), { once: !0 });
26
+ let o = new AbortController(), l = new Promise((e, n) => {
27
+ let a = setTimeout(() => n(c("timeout", "packages.connect: the package did not complete the connection")), s);
28
+ o.signal.addEventListener("abort", () => clearTimeout(a), { once: !0 }), t.addEventListener("message", (e) => {
29
+ if (e.data?.type === "fkn-packages-nack") {
30
+ let t = e.data.message;
31
+ n(c("unavailable", typeof t == "string" && t ? t : "packages.connect: the package refused the connection"));
32
+ }
33
+ }, { signal: o.signal }), t.start(), r && r.addEventListener("abort", () => n(c("unavailable", "packages.connect: aborted before connecting")), {
34
+ once: !0,
35
+ signal: o.signal
36
+ }), i?.then(() => n(c("unavailable", "packages.connect: the package closed before connecting")));
37
+ });
38
+ try {
39
+ return await Promise.race([u(e, t, a.signal), l]);
40
+ } catch (e) {
41
+ a.abort(e);
42
+ try {
43
+ t.close();
44
+ } catch {}
45
+ throw e;
46
+ } finally {
47
+ o.abort();
48
+ }
49
+ }, f = async (e) => {
50
+ let t = await (await l()).packages.search(e);
51
+ if ("error" in t) throw c(t.error, t.message);
52
+ return t.results;
53
+ }, p = async (e, t) => {
54
+ let n = await (await l()).packages.pick(e, t);
55
+ if ("error" in n) throw c(n.error, n.message);
56
+ return "declined" in n ? [] : n.results;
57
+ }, m = async (e, t) => {
58
+ let n = await (await l()).packages.install(e, t);
59
+ if ("error" in n) throw c(n.error, n.message);
60
+ return "declined" in n ? null : n.installed;
61
+ }, h = async () => (await (await l()).packages.list()).results, g = async (e) => {
62
+ let t = await (await l()).packages.uninstall(e);
63
+ if ("error" in t) throw c(t.error, t.message);
64
+ }, _ = (async (e, t = {}) => {
65
+ let n = await (await l()).packages.connect(e, { protocol: t.protocol });
66
+ if ("error" in n) throw c(n.error, n.message);
67
+ let { port: r, closed: i } = n;
68
+ if (t.raw) return {
69
+ closed: i,
70
+ port: r
71
+ };
72
+ let a = await d(t.payload, r, {
73
+ signal: t.signal,
74
+ closed: i
75
+ });
76
+ return t.signal && t.signal.addEventListener("abort", () => {
77
+ try {
78
+ r.postMessage({ type: "fkn-packages-disconnect" });
79
+ } catch {}
80
+ }, { once: !0 }), {
81
+ remote: a,
82
+ closed: i,
83
+ port: r
84
+ };
85
+ }), v = (e, t, n) => d(t, e, { signal: n?.signal }), y = null, b = [], x = /* @__PURE__ */ new Map(), S = !1, C = !1, w = (e) => {
86
+ let t = x.get(e);
87
+ t && (x.delete(e), t());
88
+ }, T = (e, t) => {
89
+ try {
90
+ e.postMessage({
91
+ type: "fkn-packages-nack",
92
+ message: t
93
+ });
94
+ } catch {}
95
+ try {
96
+ e.close();
97
+ } catch {}
98
+ }, E = async (e, t) => {
99
+ let { port: n, ...r } = e;
100
+ e.port.addEventListener("message", (t) => {
101
+ t.data?.type === "fkn-packages-disconnect" && w(e.port);
102
+ });
103
+ let i;
104
+ try {
105
+ i = await t.createPayload(r);
106
+ } catch (t) {
107
+ throw T(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
108
+ }
109
+ let a = new Promise((t) => x.set(e.port, t)), o = await u(i, e.port);
110
+ t.handler?.({
111
+ ...r,
112
+ remote: o,
113
+ closed: a,
114
+ port: e.port
115
+ });
116
+ }, D = () => {
117
+ S || typeof window > "u" || window.parent === window || (S = !0, window.addEventListener("message", (e) => {
118
+ if (e.source !== window.parent || e.origin !== a) return;
119
+ let t = e.data;
120
+ if (t?.type === "fkn-packages-port") {
121
+ let n = e.ports[0];
122
+ if (!n) return;
123
+ let r = {
124
+ port: n,
125
+ from: typeof t.from == "string" ? t.from : "",
126
+ protocol: typeof t.protocol == "string" ? t.protocol : null,
127
+ uri: typeof t.uri == "string" ? t.uri : "",
128
+ name: typeof t.name == "string" ? t.name : "",
129
+ version: typeof t.version == "string" ? t.version : ""
130
+ };
131
+ y ? E(r, y).catch((e) => console.warn("packages.onConnect:", e)) : b.push(r);
132
+ }
133
+ if (t?.type === "fkn-packages-close") for (let e of [...x.keys()]) w(e);
134
+ }));
135
+ }, O = () => {
136
+ C || typeof window > "u" || window.parent === window || (C = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, a));
137
+ }, k = (e, t) => {
138
+ if (typeof window > "u") return { unsubscribe: () => {} };
139
+ D();
140
+ let n = {
141
+ createPayload: e,
142
+ handler: t
143
+ };
144
+ for (y = n, O(); b.length && y === n;) E(b.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
145
+ return { unsubscribe: () => {
146
+ y === n && (y = null);
147
+ } };
148
+ };
149
+ //#endregion
150
+ export { v as attach, _ as connect, m as install, h as list, k as onConnect, p as pick, f as search, i as t, g as uninstall };