@fkn/lib 0.9.40 → 0.9.41

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 (57) hide show
  1. package/account-generation-CSnZiN18.cjs +1 -0
  2. package/account-generation-D7TpIoKt.js +28 -0
  3. package/account.cjs +1 -1
  4. package/account.d.ts +11 -0
  5. package/account.js +5 -17
  6. package/{api-BE5zPvFZ.d.ts → api-Cbty0JUM.d.ts} +15 -13
  7. package/api.d.ts +2 -2
  8. package/cloud/dns.d.ts +1 -1
  9. package/cloud/fetch.d.ts +1 -1
  10. package/cloud/fs/promises.d.ts +1 -1
  11. package/cloud/fs.cjs +1 -1
  12. package/cloud/fs.d.ts +4 -4
  13. package/cloud/fs.js +31 -24
  14. package/cloud/net.d.ts +1 -1
  15. package/{cloud-5eldoFxK.d.ts → cloud-4t1WoEZn.d.ts} +3 -3
  16. package/cloud.d.ts +4 -4
  17. package/{contract-Cvr_8gCL.d.ts → contract-BRc2ptdC.d.ts} +29 -7
  18. package/contract.d.ts +2 -2
  19. package/dgram.d.ts +2 -2
  20. package/dns.d.ts +1 -1
  21. package/fs/promises.cjs +1 -1
  22. package/fs/promises.d.ts +1 -1
  23. package/fs/promises.js +1 -1
  24. package/fs-BTyRnUPI.cjs +1 -0
  25. package/{fs--NhtUyYa.d.ts → fs-D0MMRnHC.d.ts} +8 -4
  26. package/fs-q7Kg51hq.js +513 -0
  27. package/fs.cjs +1 -1
  28. package/fs.d.ts +4 -3
  29. package/fs.js +4 -2
  30. package/http.d.ts +1 -1
  31. package/{index-kuPqkS_-.d.ts → index-D2lvaQDs.d.ts} +28 -38
  32. package/index.cjs +1 -1
  33. package/index.d.ts +3 -3
  34. package/index.js +1 -1
  35. package/{messages-C66ghz_A.d.ts → messages-CRcziTuC.d.ts} +17 -1
  36. package/messages.cjs +1 -1
  37. package/messages.d.ts +2 -2
  38. package/messages.js +2 -2
  39. package/{net-zThwNoA8.d.ts → net-CcEZP6Bb.d.ts} +2 -2
  40. package/net.d.ts +1 -1
  41. package/{node-fs-BZy9bzKd.js → node-fs-CK2wWIYS.js} +140 -137
  42. package/node-fs-nfX7wisL.cjs +1 -0
  43. package/opfs.cjs +1 -1
  44. package/opfs.js +1 -1
  45. package/package.json +1 -1
  46. package/packages.d.ts +1 -1
  47. package/{proxy-Dc0gDOxz.d.ts → proxy-D6YtsO1g.d.ts} +2 -2
  48. package/rooms.d.ts +1 -1
  49. package/storage-BS5WMO4f.cjs +1 -0
  50. package/storage-BVr2Rb-d.d.ts +167 -0
  51. package/storage-BWmGrO6a.js +123 -0
  52. package/fs-CaQFRiIT.cjs +0 -1
  53. package/fs-D3IsGdnN.js +0 -360
  54. package/node-fs-BNTPsX5c.cjs +0 -1
  55. package/storage-BJd-mWHE.cjs +0 -1
  56. package/storage-DSvL-t80.js +0 -67
  57. package/storage-ZrY4Y4L5.d.ts +0 -88
@@ -1 +0,0 @@
1
- const e=require("./busy-Dv8wzE5M.cjs");let t=require("buffer");var n={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`},r=(e,t)=>{if(t)return t;let r=e.split(`/`).pop()??``,i=r.lastIndexOf(`.`);if(!(i<=0))return n[r.slice(i+1).toLowerCase()]},i=(e,t)=>({size:e,mtimeMs:t,mtime:new Date(t),atimeMs:t,ctimeMs:t,mode:420,isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}),a=(e=0)=>({size:0,mtimeMs:e,mtime:new Date(e),atimeMs:e,ctimeMs:e,mode:493,isFile:()=>!1,isDirectory:()=>!0,isSymbolicLink:()=>!1}),o=(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},s=e=>{let t=[];for(let n of e.split(`/`))if(n&&n!==`.`){if(n===`..`){t.pop();continue}t.push(n)}return t.join(`/`)},c=e=>e.split(`/`).slice(0,-1).join(`/`),l=e=>typeof e==`string`?e:e instanceof URL?decodeURIComponent(e.pathname):e.toString(),u=e=>typeof e==`string`?e:e?.encoding??void 0,d=e=>typeof e==`object`?e?.contentType:void 0,f=e=>typeof e==`object`&&!!e?.recursive,p=(e,n)=>{let r=u(n);return r?t.Buffer.from(e).toString(r):t.Buffer.from(e)},m=(e,n)=>{if(typeof e==`string`)return new Uint8Array(t.Buffer.from(e,u(n)??`utf8`));if(e instanceof Uint8Array)return e.slice();if(e instanceof ArrayBuffer)return new Uint8Array(e).slice();if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice();throw TypeError(`The "data" argument must be of type string, Buffer, TypedArray, or DataView`)},h=t=>{let n=new Map([[``,{kind:`dir`,mtimeMs:0}]]),l=new Set,u=new Set;e.r(`unsaved files`,()=>l.size>0||u.size>0);let d=new Set,f=()=>Date.now(),p=e=>{if(!e)return;let t=e.split(`/`),r=``;for(let e of t){r=r?`${r}/${e}`:e;let t=n.get(r);if(!t)n.set(r,{kind:`dir`,mtimeMs:f()});else if(t.kind===`file`)throw o(`ENOTDIR`,r,`mkdir`)}},m,h=0,g=async()=>{let e=await t.list().catch(()=>[]),r=new Set,i=!1;for(let a of e){let e=s(a.path);if(r.add(e),!u.has(e)&&(!l.has(e)||d.has(e)))try{let r=await(await t.readFile(a.path)).arrayBuffer();if(u.has(e)||l.has(e)&&!d.has(e))continue;p(c(e));let i=Date.parse(a.updatedAt??``);n.set(e,{kind:`file`,data:new Uint8Array(r),mtimeMs:Number.isFinite(i)?i:f(),contentType:a.contentType??void 0}),d.delete(e),l.delete(e)}catch{i=!0,d.add(e)}}for(let e of d)r.has(e)||d.delete(e);h=i?Date.now():0},_=()=>(m&&(h===0||Date.now()-h<5e3)||(m=g()),m),v=async()=>{m=void 0,h=0,await _()},y=async()=>{let e=[...l].map(async e=>{if(d.has(e))return;let i=n.get(e);if(i?.kind!==`file`){l.delete(e);return}let a=i.data,o=r(e,i.contentType);try{await t.writeFile(e,a,o?{contentType:o}:void 0);let r=n.get(e);r?.kind===`file`&&r.data===a&&l.delete(e)}catch{}}),i=[...u].map(async e=>{try{await t.remove(e),u.delete(e)}catch{}});await Promise.all([...e,...i])},b,x=()=>{b||=setTimeout(()=>{b=void 0,y().catch(()=>{})},250)};typeof addEventListener<`u`&&(addEventListener(`pagehide`,()=>{y().catch(()=>{})}),addEventListener(`visibilitychange`,()=>{typeof document<`u`&&document.visibilityState===`hidden`&&y().catch(()=>{})}));let S=e=>e.kind===`file`?i(e.data.byteLength,e.mtimeMs):a(e.mtimeMs),C=e=>Object.assign(Error(`storage: ${e} exists but could not be read, retry once its scope is available`),{code:`FKN_E2E_LOCKED`}),w=e=>{let t=s(e);return n.has(t)||d.has(t)},T=e=>{let t=s(e),r=n.get(t);if(!r)throw d.has(t)?C(e):o(`ENOENT`,e,`stat`);return S(r)},E=e=>{let t=s(e),r=n.get(t);if(!r)throw d.has(t)?C(e):o(`ENOENT`,e,`open`);if(r.kind===`dir`)throw o(`EISDIR`,e,`read`);return r.data},D=(e,t)=>{let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n},O=(e,t,r,i)=>{let a=s(e);if(!a)throw o(`EISDIR`,e,`open`);if(d.has(a))throw C(e);let m=n.get(a);if(m?.kind===`dir`)throw o(`EISDIR`,e,`open`);p(c(a));let h=r&&m?.kind===`file`?D(m.data,t):t;n.set(a,{kind:`file`,data:h,mtimeMs:f(),contentType:i??(m?.kind===`file`?m.contentType:void 0)}),l.add(a),u.delete(a),x()},k=(e,t)=>{let r=s(e);if(r){if(n.has(r)){if(t)return;throw o(`EEXIST`,e,`mkdir`)}if(!t&&!n.has(c(r)))throw o(`ENOENT`,e,`mkdir`);p(r)}},A=e=>{let t=s(e),r=n.get(t);if(!r)throw o(`ENOENT`,e,`scandir`);if(r.kind===`file`)throw o(`ENOTDIR`,e,`scandir`);let i=t?`${t}/`:``,a=new Set;for(let e of[...n.keys(),...d]){if(!e||!e.startsWith(i))continue;let t=e.slice(i.length);t&&a.add(t.split(`/`)[0])}return[...a]},j=(e,{op:t,recursive:r,force:i})=>{let a=s(e),c=n.get(a);if(!c&&d.has(a)){if(t===`rmdir`)throw o(`ENOTDIR`,e,`rmdir`);d.delete(a),l.delete(a),u.add(a),x();return}if(!c){if(i||t===`rmdir`&&r)return;throw o(`ENOENT`,e,t===`rmdir`?`rmdir`:`unlink`)}if(t===`unlink`&&c.kind===`dir`)throw o(`EISDIR`,e,`unlink`);if(t===`rmdir`&&c.kind===`file`)throw o(`ENOTDIR`,e,`rmdir`);if(t===`rm`&&c.kind===`dir`&&!r)throw o(`ERR_FS_EISDIR`,e,`rm`);let f=`${a}/`,p=[...n.keys()].filter(e=>e.startsWith(f));if(p.length&&!r)throw o(`ENOTEMPTY`,e,`rmdir`);for(let e of[a,...p]){let t=n.get(e);n.delete(e),t?.kind===`file`&&(l.delete(e),u.add(e))}x()};return{mount:_,remount:v,flush:y,exists:w,stat:T,readFile:E,writeFile:O,mkdir:k,readdir:A,remove:j,rename:(e,t)=>{let r=s(e),i=s(t);if(!r)throw o(`EBUSY`,e,`rename`);if(i===r||i.startsWith(`${r}/`))throw o(`EINVAL`,e,`rename`);if(d.has(r))throw C(e);if(d.has(i))throw C(t);let a=n.get(r);if(!a)throw o(`ENOENT`,e,`rename`);let f=n.get(i);if(f){if(f.kind!==a.kind)throw o(a.kind===`dir`?`ENOTDIR`:`EISDIR`,t,`rename`);j(i,{op:`rm`,recursive:!0,force:!0})}p(c(i));let m=`${r}/`,h=[r,...[...n.keys()].filter(e=>e.startsWith(m))];for(let e of h){let t=i+e.slice(r.length),a=n.get(e);n.set(t,a),n.delete(e),a.kind===`file`&&(l.add(t),u.delete(t),l.delete(e),u.add(e))}x()}}},g=(e,t)=>typeof e==`function`?e:t,_=e=>typeof e==`function`?void 0:e,v=(e,t)=>{e.then(e=>t(null,e),e=>t(e))},y=e=>{let t=h(e),n=(e,n)=>p(t.readFile(l(e)),n),r=(e,n,r)=>t.writeFile(l(e),m(n,r),!1,d(r)),i=(e,n,r)=>t.writeFile(l(e),m(n,r),!0,d(r)),a=e=>t.exists(l(e)),s=e=>t.stat(l(e)),c=e=>t.readdir(l(e)),u=(e,n)=>t.mkdir(l(e),f(n)),v=(e,n)=>t.remove(l(e),{op:`rm`,...n}),y=(e,n)=>t.remove(l(e),{op:`rmdir`,...n}),b=e=>t.remove(l(e),{op:`unlink`}),x=(e,n)=>t.rename(l(e),l(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:a,statSync:s,lstatSync:s,readdirSync:c,mkdirSync:u,rmSync:v,rmdirSync:y,unlinkSync:b,renameSync:x,readFile:(e,n,r)=>S(()=>p(t.readFile(l(e)),_(n)),g(n,r)),writeFile:(e,n,r,i)=>S(()=>t.writeFile(l(e),m(n,_(r)),!1,d(_(r))),g(r,i)),appendFile:(e,n,r,i)=>S(()=>t.writeFile(l(e),m(n,_(r)),!0,d(_(r))),g(r,i)),stat:(e,n)=>S(()=>t.stat(l(e)),n),readdir:(e,n,r)=>S(()=>t.readdir(l(e)),g(n,r)),mkdir:(e,n,r)=>S(()=>t.mkdir(l(e),f(_(n))),g(n,r)),rm:(e,n,r)=>S(()=>t.remove(l(e),{op:`rm`,..._(n)}),g(n,r)),unlink:(e,n)=>S(()=>t.remove(l(e),{op:`unlink`}),n),rename:(e,n,r)=>S(()=>t.rename(l(e),l(n)),r),exists:(e,n)=>{t.mount().finally(()=>n(t.exists(l(e))))},promises:{readFile:(e,n)=>C(()=>p(t.readFile(l(e)),n)),writeFile:(e,n,r)=>C(()=>t.writeFile(l(e),m(n,r),!1,d(r))),appendFile:(e,n,r)=>C(()=>t.writeFile(l(e),m(n,r),!0,d(r))),stat:e=>C(()=>t.stat(l(e))),lstat:e=>C(()=>t.stat(l(e))),readdir:e=>C(()=>t.readdir(l(e))),mkdir:(e,n)=>C(()=>t.mkdir(l(e),f(n))),rm:(e,n)=>C(()=>t.remove(l(e),{op:`rm`,...n})),rmdir:(e,n)=>C(()=>t.remove(l(e),{op:`rmdir`,...n})),unlink:e=>C(()=>t.remove(l(e),{op:`unlink`})),rename:(e,n)=>C(()=>t.rename(l(e),l(n))),access:e=>C(()=>{if(!t.exists(l(e)))throw o(`ENOENT`,l(e),`access`)})},mount:t.mount,flush:t.flush,remount:t.remount}},b=e=>{let t=async(t,n)=>{let r=await e.readFile(l(t));return p(new Uint8Array(await r.arrayBuffer()),n)},n=async(t,n,i)=>{let a=l(t),o=r(a,d(i));await e.writeFile(a,m(n,i),o?{contentType:o}:void 0)},c=t=>e.remove(l(t)),u=async(t,n)=>{let r=s(l(t)),i=s(l(n));if(r===i)return;let a=await e.readFile(r);await e.writeFile(i,a),await e.remove(r)},f=async t=>{let n=s(l(t)),r=n?`${n}/`:``,i=new Set;for(let t of await e.list()){let e=s(t.path);if(r&&!e.startsWith(r))continue;let n=e.slice(r.length);n&&i.add(n.split(`/`)[0])}return[...i]},h=async(e,t)=>{},y=async(t,n)=>{let r=s(l(t));if(!n?.recursive){await e.remove(l(t));return}let i=`${r}/`,a=await e.list();await Promise.all(a.filter(e=>{let t=s(e.path);return t===r||t.startsWith(i)}).map(t=>e.remove(t.path).catch(()=>{})))},b=async t=>{let n=s(l(t)),r=await e.list(),c=r.find(e=>s(e.path)===n);if(c){let e=Date.parse(c.updatedAt??``);return i(c.size,Number.isFinite(e)?e:0)}if(r.some(e=>s(e.path).startsWith(`${n}/`)))return a();throw o(`ENOENT`,l(t),`stat`)},x={readFile:t,writeFile:n,unlink:c,rename:u,readdir:f,mkdir:h,rm:y,rmdir:y,stat:b,lstat:b,access:async e=>{await b(e)}};return{available:e.available,promises:x,readFile:(e,n,r)=>v(t(e,_(n)),g(n,r)),writeFile:(e,t,r,i)=>v(n(e,t,_(r)),g(r,i)),unlink:(e,t)=>v(c(e),t),rename:(e,t,n)=>v(u(e,t),n),readdir:(e,t,n)=>v(f(e),g(t,n)),mkdir:(e,t,n)=>v(h(),g(t,n)),rm:(e,t,n)=>v(y(e,_(t)),g(t,n)),stat:(e,t)=>v(b(e),t)}};function x(e,t){return t.memfs?y(e):b(e)}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return x}});
@@ -1 +0,0 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-jOTOA-5n.cjs"),n=require("./messages.cjs");var r=e.t({StorageLockedError:()=>i,StorageNotFoundError:()=>a,availability:()=>p,available:()=>c,encryption:()=>x,isNotFound:()=>o,list:()=>m,quota:()=>h,readFile:()=>g,readFileSealed:()=>v,remove:()=>b,unlock:()=>S,writeFile:()=>y}),i=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: connect the app again to open encrypted data`)}},a=class extends Error{code=n.STORAGE_NOT_FOUND;constructor(e=`storage: no object at that path`){super(e)}},o=e=>e?.code===n.STORAGE_NOT_FOUND,s=e=>{throw e instanceof Error&&e.message.startsWith(`fkn:e2e-locked`)?new i:o(e)||e instanceof Error&&(/^not found$/i.test(e.message)||/\(404\)$/.test(e.message))?new a(e.message):e},c=()=>t.a.then(e=>e.cloud.fs.available()).catch(()=>!1),l=8e3,u=1e3,d=!1,f=async()=>{let e=(await t.a).cloud.fs;return typeof e.availability==`function`?e.availability():await e.available()?`connected`:`disconnected`},p=async()=>{let e=d?u:l,t=await new Promise(t=>{let n=setTimeout(()=>t(`timeout`),e);f().then(e=>{clearTimeout(n),t(e)},()=>{clearTimeout(n),t(`unknown`)})});return t===`timeout`?(d=!0,`unknown`):(d=!1,t)},m=()=>t.a.then(e=>e.cloud.fs.list()),h=()=>t.a.then(e=>e.cloud.fs.quota()),g=async e=>{let n=await(await t.a).cloud.fs.readFile(e).catch(s);return new Blob([n])},_=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()},v=async e=>{let n=(await t.a).cloud.fs;if(typeof n.readFileSealed!=`function`)return{data:await n.readFile(e).catch(s),sealedAt:null};let r=await n.readFileSealed(e).catch(s);return{data:r.bytes,sealedAt:_(r.sealedAt)}},y=async(e,n,r)=>{let i=await t.a,a=n instanceof Blob?new Uint8Array(await n.arrayBuffer()):n;await i.cloud.fs.writeFile(e,a,r?.contentType??null).catch(s)},b=e=>t.a.then(t=>t.cloud.fs.remove(e)).then(()=>void 0),x=()=>t.a.then(e=>e.cloud.fs.encryption()),S=()=>t.a.then(e=>e.cloud.fs.unlock());Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return b}});
@@ -1,67 +0,0 @@
1
- import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { a as t } from "./api-Dp-2AT3u.js";
3
- import { STORAGE_NOT_FOUND as n } from "./messages.js";
4
- //#region src/storage.ts
5
- var r = /* @__PURE__ */ e({
6
- StorageLockedError: () => i,
7
- StorageNotFoundError: () => a,
8
- availability: () => p,
9
- available: () => c,
10
- encryption: () => x,
11
- isNotFound: () => o,
12
- list: () => m,
13
- quota: () => h,
14
- readFile: () => g,
15
- readFileSealed: () => v,
16
- remove: () => b,
17
- unlock: () => S,
18
- writeFile: () => y
19
- }), i = class extends Error {
20
- code = "FKN_E2E_LOCKED";
21
- constructor() {
22
- super("storage locked: connect the app again to open encrypted data");
23
- }
24
- }, a = class extends Error {
25
- code = n;
26
- constructor(e = "storage: no object at that path") {
27
- super(e);
28
- }
29
- }, o = (e) => e?.code === n, s = (e) => {
30
- throw e instanceof Error && e.message.startsWith("fkn:e2e-locked") ? new i() : o(e) || e instanceof Error && (/^not found$/i.test(e.message) || /\(404\)$/.test(e.message)) ? new a(e.message) : e;
31
- }, c = () => t.then((e) => e.cloud.fs.available()).catch(() => !1), l = 8e3, u = 1e3, d = !1, f = async () => {
32
- let e = (await t).cloud.fs;
33
- return typeof e.availability == "function" ? e.availability() : await e.available() ? "connected" : "disconnected";
34
- }, p = async () => {
35
- let e = d ? u : l, t = await new Promise((t) => {
36
- let n = setTimeout(() => t("timeout"), e);
37
- f().then((e) => {
38
- clearTimeout(n), t(e);
39
- }, () => {
40
- clearTimeout(n), t("unknown");
41
- });
42
- });
43
- return t === "timeout" ? (d = !0, "unknown") : (d = !1, t);
44
- }, m = () => t.then((e) => e.cloud.fs.list()), h = () => t.then((e) => e.cloud.fs.quota()), g = async (e) => {
45
- let n = await (await t).cloud.fs.readFile(e).catch(s);
46
- return new Blob([n]);
47
- }, _ = (e) => {
48
- if (e === null || !Number.isFinite(e)) return null;
49
- let t = new Date(e);
50
- return Number.isNaN(t.getTime()) ? null : t.toISOString();
51
- }, v = async (e) => {
52
- let n = (await t).cloud.fs;
53
- if (typeof n.readFileSealed != "function") return {
54
- data: await n.readFile(e).catch(s),
55
- sealedAt: null
56
- };
57
- let r = await n.readFileSealed(e).catch(s);
58
- return {
59
- data: r.bytes,
60
- sealedAt: _(r.sealedAt)
61
- };
62
- }, y = async (e, n, r) => {
63
- let i = await t, a = n instanceof Blob ? new Uint8Array(await n.arrayBuffer()) : n;
64
- await i.cloud.fs.writeFile(e, a, r?.contentType ?? null).catch(s);
65
- }, b = (e) => t.then((t) => t.cloud.fs.remove(e)).then(() => void 0), x = () => t.then((e) => e.cloud.fs.encryption()), S = () => t.then((e) => e.cloud.fs.unlock());
66
- //#endregion
67
- export { o as a, g as c, r as d, S as f, x as i, v as l, a as n, m as o, y as p, p as r, h as s, i as t, b as u };
@@ -1,88 +0,0 @@
1
- declare namespace storage_d_exports {
2
- export { CloudAvailability, EncryptionStatus, FileEntry, SealedRead, StorageLockedError, StorageNotFoundError, StorageQuota, WriteData, availability, available, encryption, isNotFound, list, quota, readFile, readFileSealed, remove, unlock, writeFile };
3
- }
4
- type FileEntry = {
5
- path: string;
6
- size: number;
7
- contentType: string | null;
8
- updatedAt: string;
9
- encryption: string | null;
10
- };
11
- type StorageQuota = {
12
- usedBytes: number;
13
- limitBytes: number;
14
- remaining: number;
15
- objects: number;
16
- maxObjects: number;
17
- };
18
- type EncryptionStatus = {
19
- unlocked: boolean;
20
- enrolled: boolean;
21
- keyEpoch: number | null;
22
- };
23
- type WriteData = Blob | ArrayBuffer | Uint8Array | string;
24
- declare class StorageLockedError extends Error {
25
- code: string;
26
- constructor();
27
- }
28
- /**
29
- * There is no object at this path. Test `err.code === STORAGE_NOT_FOUND`, never the message.
30
- *
31
- * Absence arrives from two places that word it completely differently: the api refusing to presign
32
- * a path with no committed row says "Not found", and a presign that succeeded followed by an object
33
- * fetch that 404s says "storage: read failed (404)". Neither is a fault, both mean the same thing,
34
- * and matching either by hand means matching both. Ripple matched only the first, so a missing
35
- * backup read as a transient failure, retried forever, and a library went un-backed-up for a day
36
- * without a single error anywhere.
37
- *
38
- * The distinction matters more than it sounds. "There is nothing here" is safe to overwrite;
39
- * "I could not tell you" is not, and a caller that confuses them either never writes a first
40
- * backup or destroys a real one.
41
- */
42
- declare class StorageNotFoundError extends Error {
43
- code: string;
44
- constructor(message?: string);
45
- }
46
- /** Whether an error from this module means the path is empty, as opposed to unreadable. */
47
- declare const isNotFound: (error: unknown) => boolean;
48
- declare const available: () => Promise<boolean>;
49
- type CloudAvailability = 'connected' | 'disconnected' | 'unknown';
50
- /**
51
- * Whether the cloud half is backed by an account, as three answers rather than two:
52
- * 'disconnected' is an ANSWER (signed out, or the api refusing the stored token), 'unknown'
53
- * means nobody could be asked, including a broker that never came up. Always settles within
54
- * the probe deadline. A caller owing data to the cloud may drop that obligation only on
55
- * 'disconnected'; treating 'unknown' the same silently loses the write.
56
- */
57
- declare const availability: () => Promise<CloudAvailability>;
58
- declare const list: () => Promise<FileEntry[]>;
59
- declare const quota: () => Promise<StorageQuota>;
60
- declare const readFile: (path: string) => Promise<Blob>;
61
- /** The bytes of a cloud object and the seal time they carry, as an ISO string or null. */
62
- type SealedRead = {
63
- data: Uint8Array;
64
- sealedAt: string | null;
65
- };
66
- /**
67
- * A cloud read that also reports when the copy was sealed.
68
- *
69
- * `sealedAt` is an ISO string, or null when the envelope carries no such field (one written before
70
- * the seal time existed) or when the data plane is older than this call. The value is
71
- * AUTHENTICATED, so the server can neither forge nor alter it, and it is the WRITER's own claim
72
- * about when it sealed, so on its own it does not prove this copy is the newest one: an older but
73
- * perfectly authentic copy of the same path is still authentic. An app that needs that answer keeps
74
- * a high-water mark per path and compares. Do not confuse it with the `updatedAt` on a listing,
75
- * which is the server's hint and is fine for display and nothing else.
76
- *
77
- * The bytes and the stamp come from ONE read of ONE envelope, which is what makes the stamp
78
- * describe the bytes returned beside it. `readFile` is unchanged and unaffected.
79
- */
80
- declare const readFileSealed: (path: string) => Promise<SealedRead>;
81
- declare const writeFile: (path: string, data: WriteData, opts?: {
82
- contentType?: string;
83
- }) => Promise<void>;
84
- declare const remove: (path: string) => Promise<void>;
85
- declare const encryption: () => Promise<EncryptionStatus>;
86
- declare const unlock: () => Promise<boolean>;
87
- //#endregion
88
- export { StorageNotFoundError as a, isNotFound as c, storage_d_exports as d, unlock as f, StorageLockedError as i, quota as l, FileEntry as n, StorageQuota as o, SealedRead as r, encryption as s, EncryptionStatus as t, readFileSealed as u };