@fkn/lib 0.9.17 → 0.9.19

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 (67) hide show
  1. package/account.cjs +1 -1
  2. package/account.js +1 -1
  3. package/{api-X8SBbrBZ.js → api-DQ-V4Lls.js} +73 -67
  4. package/{api-Dhc2hNCz.d.ts → api-DnO1DsJC.d.ts} +19 -2
  5. package/api-kHMHDGar.cjs +3 -0
  6. package/cloud/dgram.cjs +1 -1
  7. package/cloud/dgram.js +1 -1
  8. package/cloud/fetch.cjs +1 -1
  9. package/cloud/fetch.d.ts +1 -1
  10. package/cloud/fetch.js +1 -1
  11. package/cloud/fs.cjs +1 -1
  12. package/cloud/fs.d.ts +2 -2
  13. package/cloud/fs.js +1 -1
  14. package/cloud/net.cjs +1 -1
  15. package/cloud/net.d.ts +1 -1
  16. package/cloud/net.js +1 -1
  17. package/{cloud-CcKsidlt.cjs → cloud-BQoppUw4.cjs} +1 -1
  18. package/{cloud-DohLHbg2.js → cloud-C8CeqUht.js} +4 -4
  19. package/{cloud-CvEqxYM6.d.ts → cloud-uE4g-WqI.d.ts} +3 -3
  20. package/cloud.cjs +1 -1
  21. package/cloud.d.ts +4 -4
  22. package/cloud.js +4 -4
  23. package/{dgram-CW53Betg.cjs → dgram-D2Or5f2e.cjs} +1 -1
  24. package/{dgram-qpKjZosS.js → dgram-DlGl_ho1.js} +1 -1
  25. package/dgram.cjs +1 -1
  26. package/dgram.d.ts +1 -1
  27. package/dgram.js +1 -1
  28. package/dns.cjs +1 -1
  29. package/dns.js +1 -1
  30. package/{extension-1l_UXQsi.cjs → extension-4BM5hKrn.cjs} +1 -1
  31. package/{extension-DQcp_LKK.js → extension-DVO10P3i.js} +2 -2
  32. package/extension.cjs +1 -1
  33. package/extension.js +1 -1
  34. package/fs/promises.cjs +1 -1
  35. package/fs/promises.js +1 -1
  36. package/fs-BW5mVMmu.js +340 -0
  37. package/{fs-D5LFP4_n.d.ts → fs-CUmugp10.d.ts} +1 -1
  38. package/fs-DJm0bhjg.cjs +1 -0
  39. package/fs.cjs +1 -1
  40. package/fs.js +1 -1
  41. package/http.cjs +1 -1
  42. package/http.d.ts +1 -1
  43. package/http.js +1 -1
  44. package/index.cjs +1 -1
  45. package/index.d.ts +34 -3
  46. package/index.js +38 -27
  47. package/{net-B-LNnKps.js → net-BbmQeMpt.js} +1 -1
  48. package/{net-luhw3yr7.cjs → net-COzDDBnS.cjs} +1 -1
  49. package/{net-BtdN07IP.d.ts → net-l7JVHsIR.d.ts} +1 -1
  50. package/net.cjs +1 -1
  51. package/net.d.ts +1 -1
  52. package/net.js +1 -1
  53. package/package.json +1 -1
  54. package/packages.cjs +1 -1
  55. package/packages.js +1 -1
  56. package/{proxy-etZJARWe.d.ts → proxy-7ib45Uo-.d.ts} +1 -1
  57. package/{proxy-B0W1qzCo.cjs → proxy-B0gNjT8-.cjs} +1 -1
  58. package/{proxy-CtS_JiZL.js → proxy-BpqvCJmA.js} +1 -1
  59. package/storage-BW-jDLUL.cjs +1 -0
  60. package/storage-C8hBot2f.js +51 -0
  61. package/storage-qxXFLgTM.d.ts +44 -0
  62. package/api-DLGGoSnx.cjs +0 -3
  63. package/fs-B-NZzzSX.js +0 -315
  64. package/fs-C5L6CqmF.cjs +0 -1
  65. package/storage-CXIXrIxB.d.ts +0 -38
  66. package/storage-D2a8SsY5.cjs +0 -1
  67. package/storage-XKGhInxm.js +0 -37
package/fs-B-NZzzSX.js DELETED
@@ -1,315 +0,0 @@
1
- import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { t } from "./node-fs-DKfokOlh.js";
3
- import { c as n, f as r, l as i, o as a, r as o } from "./storage-XKGhInxm.js";
4
- import { a as s, i as c, n as l, o as u, t as d } from "./opfs-BibrNGF0.js";
5
- //#region src/lib/fs/hybrid.ts
6
- var f = /* @__PURE__ */ e({
7
- adopt: () => F,
8
- adoptable: () => I,
9
- available: () => te,
10
- list: () => ie,
11
- onConflict: () => N,
12
- pending: () => D,
13
- pendingDeletes: () => O,
14
- pull: () => ce,
15
- readFile: () => ae,
16
- remove: () => se,
17
- replicating: () => k,
18
- writeFile: () => oe
19
- }), ee, p = async () => await (ee ??= d().catch(() => !1)) ? !0 : (ee = void 0, !1), m = () => o().catch(() => !1), te = async () => await p() || await m(), h = "fkn:fs:pending", g = "fkn:fs:pending-delete", _ = "fkn:fs:adopt-declined", v = !0, y = /* @__PURE__ */ new Map(), b = (e) => {
20
- try {
21
- let t = localStorage.getItem(e);
22
- if (!t) return {};
23
- let n = JSON.parse(t);
24
- return Array.isArray(n) ? Object.fromEntries(n.filter((e) => typeof e == "string").map((e) => [e, null])) : n && typeof n == "object" ? n : {};
25
- } catch {
26
- return {};
27
- }
28
- }, x = (e, t) => {
29
- try {
30
- Object.keys(t).length ? localStorage.setItem(e, JSON.stringify(t)) : localStorage.removeItem(e);
31
- } catch {}
32
- }, S = () => b(h), C = (e) => {
33
- let t = S();
34
- e in t || (t[e] = y.get(e) ?? null, x(h, t));
35
- }, w = (e) => {
36
- let t = S();
37
- e in t && (delete t[e], x(h, t));
38
- }, T = () => b(g), ne = (e) => {
39
- let t = T();
40
- e in t || (t[e] = y.get(e) ?? null, x(g, t));
41
- }, E = (e) => {
42
- let t = T();
43
- e in t && (delete t[e], x(g, t));
44
- }, D = () => Object.keys(S()), O = () => Object.keys(T()), k = () => v, A = null, re = null, j = () => re ??= import("./api-X8SBbrBZ.js").then((e) => e.n).then((e) => e.apiPromise), ie = async () => {
45
- me();
46
- let e = await m(), [t, n] = await Promise.all([p().then((e) => e ? l() : []).catch(() => []), e ? a().then((e) => ({
47
- ok: !0,
48
- entries: e
49
- })).catch(() => ({
50
- ok: !1,
51
- entries: []
52
- })) : Promise.resolve({
53
- ok: !0,
54
- entries: []
55
- })]);
56
- v = n.ok, n.ok && (y = new Map(n.entries.map((e) => [e.path, e.updatedAt])));
57
- let r = /* @__PURE__ */ new Map(), i = (e) => {
58
- let t = Date.parse(e.updatedAt ?? "");
59
- return Number.isFinite(t) ? t : 0;
60
- }, o = (e) => {
61
- let t = r.get(e.path);
62
- (!t || i(e) >= i(t)) && r.set(e.path, e);
63
- };
64
- for (let e of t) o(e);
65
- for (let e of n.entries) o(e);
66
- if (n.ok && e) {
67
- pe(t, n.entries).catch(() => {});
68
- let e = Object.keys(S()).length || Object.keys(T()).length;
69
- e && !A ? A = P(!1).catch(() => {}).finally(() => {
70
- A = null;
71
- }) : e || R({
72
- local: t,
73
- remote: n.entries
74
- }).catch(() => {});
75
- }
76
- return [...r.values()];
77
- }, ae = async (e) => {
78
- if (await p()) try {
79
- return await c(e);
80
- } catch (e) {
81
- if (e?.name !== "NotFoundError") throw e;
82
- }
83
- let t = await n(e);
84
- return await p() && u(e, t).catch(() => {}), t;
85
- }, oe = async (e, t, n) => {
86
- let i = t instanceof Blob ? t : new Blob([t], n?.contentType ? { type: n.contentType } : void 0);
87
- if (await p()) {
88
- if (await u(e, i, n), !await m()) return;
89
- if (!v) {
90
- C(e);
91
- return;
92
- }
93
- r(e, i, n).then(() => w(e)).catch((t) => {
94
- C(e), console.warn("fs: cloud replicate failed, queued for adopt()", t);
95
- });
96
- return;
97
- }
98
- if (await m()) return r(e, i, n);
99
- throw Error("fs: no storage backend available");
100
- }, se = async (e) => {
101
- let t = [];
102
- await p() && t.push(s(e).catch(() => {}));
103
- let n = await m();
104
- if (n && t.push(i(e).then(() => E(e)).catch((t) => {
105
- ne(e), console.warn("fs: cloud delete failed, queued for retry", t);
106
- })), !t.length) throw Error("fs: no storage backend available");
107
- n && w(e), await Promise.all(t);
108
- }, ce = async (e) => {
109
- let t = await n(e);
110
- return await p() && await u(e, t), t;
111
- }, M = null, N = (e) => (M = e, () => {
112
- M === e && (M = null);
113
- }), le = async (e) => (await j()).cloud.fs.promptConflict({
114
- path: e.path,
115
- local: e.local,
116
- cloud: e.cloud
117
- }).catch(() => null), ue = async (e) => {
118
- if (M) try {
119
- return await M(e);
120
- } catch {
121
- return null;
122
- }
123
- return le(e);
124
- }, P = async (e) => {
125
- let t = {
126
- uploaded: [],
127
- kept: [],
128
- resolved: [],
129
- unresolved: [],
130
- deleted: [],
131
- failed: []
132
- };
133
- if (!await m()) throw Error("fs: this needs a signed-in account");
134
- if (!await p()) return t;
135
- let [o, s] = await Promise.all([l(), a()]), d = new Map(s.map((e) => [e.path, e])), f = S();
136
- for (let [e, n] of Object.entries(T())) {
137
- let r = d.get(e);
138
- if (!r) {
139
- E(e);
140
- continue;
141
- }
142
- if (o.some((t) => t.path === e)) {
143
- E(e);
144
- continue;
145
- }
146
- if (r.updatedAt !== n) {
147
- E(e);
148
- continue;
149
- }
150
- try {
151
- await i(e), E(e), t.deleted.push(e);
152
- } catch (n) {
153
- t.failed.push({
154
- path: e,
155
- error: n instanceof Error ? n.message : String(n)
156
- });
157
- }
158
- }
159
- for (let i of o) {
160
- let a = d.get(i.path), o = i.path in f;
161
- if (!o && (a || !e)) {
162
- a && t.kept.push(i.path);
163
- continue;
164
- }
165
- if (o && a && a.updatedAt !== f[i.path]) {
166
- let e = await ue({
167
- path: i.path,
168
- local: {
169
- size: i.size,
170
- updatedAt: i.updatedAt
171
- },
172
- cloud: {
173
- size: a.size,
174
- updatedAt: a.updatedAt
175
- },
176
- readLocal: () => c(i.path),
177
- readCloud: () => n(i.path)
178
- });
179
- if (!e) {
180
- t.unresolved.push(i.path);
181
- continue;
182
- }
183
- try {
184
- if (e === "cloud") await u(i.path, await n(i.path));
185
- else {
186
- let t = e === "local" ? await c(i.path) : e.merged;
187
- await r(i.path, t, i.contentType ? { contentType: i.contentType } : void 0), e !== "local" && await u(i.path, t);
188
- }
189
- w(i.path), t.resolved.push({
190
- path: i.path,
191
- choice: e === "local" || e === "cloud" ? e : "merged"
192
- });
193
- } catch (e) {
194
- if (e?.code === "FKN_E2E_LOCKED") throw e;
195
- t.failed.push({
196
- path: i.path,
197
- error: e instanceof Error ? e.message : String(e)
198
- });
199
- }
200
- continue;
201
- }
202
- try {
203
- let e = await c(i.path);
204
- await r(i.path, e, i.contentType ? { contentType: i.contentType } : void 0), w(i.path), t.uploaded.push(i.path);
205
- } catch (e) {
206
- if (C(i.path), e?.code === "FKN_E2E_LOCKED") throw e;
207
- t.failed.push({
208
- path: i.path,
209
- error: e instanceof Error ? e.message : String(e)
210
- });
211
- }
212
- }
213
- return t;
214
- }, F = () => P(!0), I = async () => {
215
- if (!await m() || !await p()) return {
216
- paths: [],
217
- bytes: 0
218
- };
219
- let [e, t] = await Promise.all([l(), a()]), n = new Set(t.map((e) => e.path)), r = e.filter((e) => !n.has(e.path));
220
- return {
221
- paths: r.map((e) => e.path),
222
- bytes: r.reduce((e, t) => e + t.size, 0)
223
- };
224
- }, de = () => new Set(Object.keys(b(_))), fe = (e) => {
225
- let t = b(_);
226
- for (let n of e) t[n] = null;
227
- x(_, t);
228
- }, L = null, R = (e) => L || (L = (async () => {
229
- if (!await m()) return;
230
- let t = e ?? (await p() ? {
231
- local: await l(),
232
- remote: await a()
233
- } : null);
234
- if (!t) return;
235
- let n = new Set(t.remote.map((e) => e.path)), r = de(), i = t.local.filter((e) => !n.has(e.path) && !r.has(e.path));
236
- if (!i.length) return;
237
- let o = await j(), s = i.reduce((e, t) => e + t.size, 0);
238
- if (!await o.cloud.fs.promptAdopt({
239
- files: i.length,
240
- bytes: s
241
- }).catch(() => !1)) {
242
- fe(i.map((e) => e.path));
243
- return;
244
- }
245
- await F();
246
- })().catch(() => {}).finally(() => {
247
- L = null;
248
- }), L), pe = async (e, t) => {
249
- let n = new Set(t.map((e) => e.path)), r = e.filter((e) => !n.has(e.path)), i = await j(), a = async () => {
250
- await F().catch(() => {});
251
- let e = await I().catch(() => ({
252
- paths: [],
253
- bytes: 0
254
- }));
255
- await i.cloud.fs.setAdoptSource({
256
- files: e.paths.length,
257
- bytes: e.bytes
258
- }, a).catch(() => {});
259
- };
260
- await i.cloud.fs.setAdoptSource({
261
- files: r.length,
262
- bytes: r.reduce((e, t) => e + t.size, 0)
263
- }, a);
264
- }, z = !1, me = () => {
265
- z || typeof window > "u" || (z = !0, import("./account.js").then((e) => e.onChange(() => {
266
- R().catch(() => {});
267
- })).catch(() => {}));
268
- }, he = /* @__PURE__ */ e({
269
- adopt: () => J,
270
- adoptable: () => Y,
271
- appendFile: () => Ee,
272
- appendFileSync: () => W,
273
- available: () => V,
274
- default: () => Le,
275
- exists: () => Ne,
276
- existsSync: () => G,
277
- flush: () => Fe,
278
- lstatSync: () => _e,
279
- mkdir: () => ke,
280
- mkdirSync: () => ye,
281
- mount: () => K,
282
- onConflict: () => $,
283
- pending: () => X,
284
- pendingDeletes: () => Z,
285
- promises: () => Pe,
286
- pull: () => q,
287
- readFile: () => we,
288
- readFileSync: () => H,
289
- readdir: () => Oe,
290
- readdirSync: () => ve,
291
- remount: () => Ie,
292
- rename: () => Me,
293
- renameSync: () => Ce,
294
- replicating: () => Q,
295
- rm: () => Ae,
296
- rmSync: () => be,
297
- rmdirSync: () => xe,
298
- stat: () => De,
299
- statSync: () => ge,
300
- unlink: () => je,
301
- unlinkSync: () => Se,
302
- writeFile: () => Te,
303
- writeFileSync: () => U
304
- }), B = t(f, { memfs: !0 }), { available: V, readFileSync: H, writeFileSync: U, appendFileSync: W, existsSync: G, statSync: ge, lstatSync: _e, readdirSync: ve, mkdirSync: ye, rmSync: be, rmdirSync: xe, unlinkSync: Se, renameSync: Ce, readFile: we, writeFile: Te, appendFile: Ee, stat: De, readdir: Oe, mkdir: ke, rm: Ae, unlink: je, rename: Me, exists: Ne, promises: Pe, mount: K, flush: Fe, remount: Ie } = B, q = ce, J = F, Y = I, X = D, Z = O, Q = k, $ = N, Le = {
305
- ...B,
306
- pull: q,
307
- adopt: J,
308
- adoptable: Y,
309
- pending: X,
310
- pendingDeletes: Z,
311
- replicating: Q,
312
- onConflict: $
313
- };
314
- //#endregion
315
- export { xe as A, ve as C, Q as D, Ce as E, Te as F, U as I, ge as M, je as N, Ae as O, Se as P, Oe as S, Me as T, Z as _, V as a, we as b, Fe as c, _e as d, ke as f, X as g, $ as h, W as i, De as j, be as k, Le as l, K as m, Y as n, Ne as o, ye as p, Ee as r, G as s, J as t, he as u, Pe as v, Ie as w, H as x, q as y };
package/fs-C5L6CqmF.cjs DELETED
@@ -1 +0,0 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./node-fs-BMR2yCEt.cjs"),n=require("./storage-D2a8SsY5.cjs"),r=require("./opfs-CXMESVLc.cjs");var i=e.t({adopt:()=>E,adoptable:()=>D,available:()=>c,list:()=>ie,onConflict:()=>le,pending:()=>te,pendingDeletes:()=>ne,pull:()=>ce,readFile:()=>ae,remove:()=>se,replicating:()=>x,writeFile:()=>oe}),a,o=async()=>await(a??=r.t().catch(()=>!1))?!0:(a=void 0,!1),s=()=>n.r().catch(()=>!1),c=async()=>await o()||await s(),l=`fkn:fs:pending`,u=`fkn:fs:pending-delete`,d=`fkn:fs:adopt-declined`,f=!0,p=new Map,m=e=>{try{let t=localStorage.getItem(e);if(!t)return{};let n=JSON.parse(t);return Array.isArray(n)?Object.fromEntries(n.filter(e=>typeof e==`string`).map(e=>[e,null])):n&&typeof n==`object`?n:{}}catch{return{}}},h=(e,t)=>{try{Object.keys(t).length?localStorage.setItem(e,JSON.stringify(t)):localStorage.removeItem(e)}catch{}},g=()=>m(l),_=e=>{let t=g();e in t||(t[e]=p.get(e)??null,h(l,t))},v=e=>{let t=g();e in t&&(delete t[e],h(l,t))},y=()=>m(u),ee=e=>{let t=y();e in t||(t[e]=p.get(e)??null,h(u,t))},b=e=>{let t=y();e in t&&(delete t[e],h(u,t))},te=()=>Object.keys(g()),ne=()=>Object.keys(y()),x=()=>f,S=null,re=null,C=()=>re??=Promise.resolve().then(()=>require("./api-DLGGoSnx.cjs")).then(e=>e.n).then(e=>e.apiPromise),ie=async()=>{he();let e=await s(),[t,i]=await Promise.all([o().then(e=>e?r.n():[]).catch(()=>[]),e?n.o().then(e=>({ok:!0,entries:e})).catch(()=>({ok:!1,entries:[]})):Promise.resolve({ok:!0,entries:[]})]);f=i.ok,i.ok&&(p=new Map(i.entries.map(e=>[e.path,e.updatedAt])));let a=new Map,c=e=>{let t=Date.parse(e.updatedAt??``);return Number.isFinite(t)?t:0},l=e=>{let t=a.get(e.path);(!t||c(e)>=c(t))&&a.set(e.path,e)};for(let e of t)l(e);for(let e of i.entries)l(e);if(i.ok&&e){me(t,i.entries).catch(()=>{});let e=Object.keys(g()).length||Object.keys(y()).length;e&&!S?S=T(!1).catch(()=>{}).finally(()=>{S=null}):e||k({local:t,remote:i.entries}).catch(()=>{})}return[...a.values()]},ae=async e=>{if(await o())try{return await r.i(e)}catch(e){if(e?.name!==`NotFoundError`)throw e}let t=await n.c(e);return await o()&&r.o(e,t).catch(()=>{}),t},oe=async(e,t,i)=>{let a=t instanceof Blob?t:new Blob([t],i?.contentType?{type:i.contentType}:void 0);if(await o()){if(await r.o(e,a,i),!await s())return;if(!f){_(e);return}n.f(e,a,i).then(()=>v(e)).catch(t=>{_(e),console.warn(`fs: cloud replicate failed, queued for adopt()`,t)});return}if(await s())return n.f(e,a,i);throw Error(`fs: no storage backend available`)},se=async e=>{let t=[];await o()&&t.push(r.a(e).catch(()=>{}));let i=await s();if(i&&t.push(n.l(e).then(()=>b(e)).catch(t=>{ee(e),console.warn(`fs: cloud delete failed, queued for retry`,t)})),!t.length)throw Error(`fs: no storage backend available`);i&&v(e),await Promise.all(t)},ce=async e=>{let t=await n.c(e);return await o()&&await r.o(e,t),t},w=null,le=e=>(w=e,()=>{w===e&&(w=null)}),ue=async e=>(await C()).cloud.fs.promptConflict({path:e.path,local:e.local,cloud:e.cloud}).catch(()=>null),de=async e=>{if(w)try{return await w(e)}catch{return null}return ue(e)},T=async e=>{let t={uploaded:[],kept:[],resolved:[],unresolved:[],deleted:[],failed:[]};if(!await s())throw Error(`fs: this needs a signed-in account`);if(!await o())return t;let[i,a]=await Promise.all([r.n(),n.o()]),c=new Map(a.map(e=>[e.path,e])),l=g();for(let[e,r]of Object.entries(y())){let a=c.get(e);if(!a){b(e);continue}if(i.some(t=>t.path===e)){b(e);continue}if(a.updatedAt!==r){b(e);continue}try{await n.l(e),b(e),t.deleted.push(e)}catch(n){t.failed.push({path:e,error:n instanceof Error?n.message:String(n)})}}for(let a of i){let i=c.get(a.path),o=a.path in l;if(!o&&(i||!e)){i&&t.kept.push(a.path);continue}if(o&&i&&i.updatedAt!==l[a.path]){let e=await de({path:a.path,local:{size:a.size,updatedAt:a.updatedAt},cloud:{size:i.size,updatedAt:i.updatedAt},readLocal:()=>r.i(a.path),readCloud:()=>n.c(a.path)});if(!e){t.unresolved.push(a.path);continue}try{if(e===`cloud`)await r.o(a.path,await n.c(a.path));else{let t=e===`local`?await r.i(a.path):e.merged;await n.f(a.path,t,a.contentType?{contentType:a.contentType}:void 0),e!==`local`&&await r.o(a.path,t)}v(a.path),t.resolved.push({path:a.path,choice:e===`local`||e===`cloud`?e:`merged`})}catch(e){if(e?.code===`FKN_E2E_LOCKED`)throw e;t.failed.push({path:a.path,error:e instanceof Error?e.message:String(e)})}continue}try{let e=await r.i(a.path);await n.f(a.path,e,a.contentType?{contentType:a.contentType}:void 0),v(a.path),t.uploaded.push(a.path)}catch(e){if(_(a.path),e?.code===`FKN_E2E_LOCKED`)throw e;t.failed.push({path:a.path,error:e instanceof Error?e.message:String(e)})}}return t},E=()=>T(!0),D=async()=>{if(!await s()||!await o())return{paths:[],bytes:0};let[e,t]=await Promise.all([r.n(),n.o()]),i=new Set(t.map(e=>e.path)),a=e.filter(e=>!i.has(e.path));return{paths:a.map(e=>e.path),bytes:a.reduce((e,t)=>e+t.size,0)}},fe=()=>new Set(Object.keys(m(d))),pe=e=>{let t=m(d);for(let n of e)t[n]=null;h(d,t)},O=null,k=e=>O||(O=(async()=>{if(!await s())return;let t=e??(await o()?{local:await r.n(),remote:await n.o()}:null);if(!t)return;let i=new Set(t.remote.map(e=>e.path)),a=fe(),c=t.local.filter(e=>!i.has(e.path)&&!a.has(e.path));if(!c.length)return;let l=await C(),u=c.reduce((e,t)=>e+t.size,0);if(!await l.cloud.fs.promptAdopt({files:c.length,bytes:u}).catch(()=>!1)){pe(c.map(e=>e.path));return}await E()})().catch(()=>{}).finally(()=>{O=null}),O),me=async(e,t)=>{let n=new Set(t.map(e=>e.path)),r=e.filter(e=>!n.has(e.path)),i=await C(),a=async()=>{await E().catch(()=>{});let e=await D().catch(()=>({paths:[],bytes:0}));await i.cloud.fs.setAdoptSource({files:e.paths.length,bytes:e.bytes},a).catch(()=>{})};await i.cloud.fs.setAdoptSource({files:r.length,bytes:r.reduce((e,t)=>e+t.size,0)},a)},A=!1,he=()=>{A||typeof window>`u`||(A=!0,Promise.resolve().then(()=>require("./account.cjs")).then(e=>e.onChange(()=>{k().catch(()=>{})})).catch(()=>{}))},ge=e.t({adopt:()=>q,adoptable:()=>J,appendFile:()=>ye,appendFileSync:()=>F,available:()=>M,default:()=>$,exists:()=>Ee,existsSync:()=>I,flush:()=>G,lstatSync:()=>R,mkdir:()=>Se,mkdirSync:()=>B,mount:()=>Oe,onConflict:()=>Q,pending:()=>Y,pendingDeletes:()=>X,promises:()=>De,pull:()=>K,readFile:()=>W,readFileSync:()=>N,readdir:()=>xe,readdirSync:()=>z,remount:()=>ke,rename:()=>Te,renameSync:()=>U,replicating:()=>Z,rm:()=>Ce,rmSync:()=>V,rmdirSync:()=>_e,stat:()=>be,statSync:()=>L,unlink:()=>we,unlinkSync:()=>H,writeFile:()=>ve,writeFileSync:()=>P}),j=t.t(i,{memfs:!0}),{available:M,readFileSync:N,writeFileSync:P,appendFileSync:F,existsSync:I,statSync:L,lstatSync:R,readdirSync:z,mkdirSync:B,rmSync:V,rmdirSync:_e,unlinkSync:H,renameSync:U,readFile:W,writeFile:ve,appendFile:ye,stat:be,readdir:xe,mkdir:Se,rm:Ce,unlink:we,rename:Te,exists:Ee,promises:De,mount:Oe,flush:G,remount:ke}=j,K=ce,q=E,J=D,Y=te,X=ne,Z=x,Q=le,$={...j,pull:K,adopt:q,adoptable:J,pending:Y,pendingDeletes:X,replicating:Z,onConflict:Q};Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return W}}),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 Se}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return K}});
@@ -1,38 +0,0 @@
1
- //#region src/api/storage.d.ts
2
- type StorageEntry = {
3
- path: string;
4
- size: number;
5
- contentType: string | null;
6
- updatedAt: string;
7
- encryption: string | null;
8
- };
9
- type StorageQuota = {
10
- usedBytes: number;
11
- limitBytes: number;
12
- remaining: number;
13
- objects: number;
14
- maxObjects: number;
15
- };
16
- type WriteData = ArrayBuffer | Uint8Array | string;
17
- type StorageReadResult = {
18
- bytes: Uint8Array;
19
- encryption: string | null;
20
- appOrigin: string;
21
- };
22
- type KeyState = {
23
- keyEpoch: number | null;
24
- keyFingerprint: string | null;
25
- };
26
- /**
27
- * "There is no object at this path", as a thing a caller can TEST rather than parse.
28
- *
29
- * osra strips an Error's custom properties across the realm boundary but keeps `message` and
30
- * `code`, so a code set here survives all the way to an app. The message does not survive being
31
- * reworded, which is the problem this exists to end: absence arrives in two completely different
32
- * sentences depending on which half of the read failed, and every consumer was left regex-matching
33
- * both. Ripple got one of them and missed the other, and a library quietly went un-backed-up for a
34
- * day because a missing backup read as a transient error.
35
- */
36
- declare const STORAGE_NOT_FOUND = "FKN_STORAGE_NOT_FOUND";
37
- //#endregion
38
- export { StorageReadResult as a, StorageQuota as i, STORAGE_NOT_FOUND as n, WriteData as o, StorageEntry as r, KeyState as t };
@@ -1 +0,0 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DLGGoSnx.cjs");var n=`FKN_STORAGE_NOT_FOUND`,r=e.t({StorageLockedError:()=>i,StorageNotFoundError:()=>a,available:()=>c,encryption:()=>m,isNotFound:()=>o,list:()=>l,quota:()=>u,readFile:()=>d,remove:()=>p,unlock:()=>h,writeFile:()=>f}),i=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: this app stores encrypted data, unlock it from the FKN card or unlock()`)}},a=class extends Error{code=n;constructor(e=`storage: no object at that path`){super(e)}},o=e=>e?.code===n,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.t.then(e=>e.cloud.fs.available()).catch(()=>!1),l=()=>t.t.then(e=>e.cloud.fs.list()),u=()=>t.t.then(e=>e.cloud.fs.quota()),d=async e=>{let n=await(await t.t).cloud.fs.readFile(e).catch(s);return new Blob([n])},f=async(e,n,r)=>{let i=await t.t,a=n instanceof Blob?new Uint8Array(await n.arrayBuffer()):n;await i.cloud.fs.writeFile(e,a,r?.contentType??null).catch(s)},p=e=>t.t.then(t=>t.cloud.fs.remove(e)).then(()=>void 0),m=()=>t.t.then(e=>e.cloud.fs.encryption()),h=()=>t.t.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 d}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return r}});
@@ -1,37 +0,0 @@
1
- import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { t } from "./api-X8SBbrBZ.js";
3
- //#endregion
4
- //#region src/api/storage.ts
5
- var n = "FKN_STORAGE_NOT_FOUND", r = /* @__PURE__ */ e({
6
- StorageLockedError: () => i,
7
- StorageNotFoundError: () => a,
8
- available: () => c,
9
- encryption: () => m,
10
- isNotFound: () => o,
11
- list: () => l,
12
- quota: () => u,
13
- readFile: () => d,
14
- remove: () => p,
15
- unlock: () => h,
16
- writeFile: () => f
17
- }), i = class extends Error {
18
- code = "FKN_E2E_LOCKED";
19
- constructor() {
20
- super("storage locked: this app stores encrypted data, unlock it from the FKN card or unlock()");
21
- }
22
- }, a = class extends Error {
23
- code = n;
24
- constructor(e = "storage: no object at that path") {
25
- super(e);
26
- }
27
- }, o = (e) => e?.code === n, s = (e) => {
28
- 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;
29
- }, c = () => t.then((e) => e.cloud.fs.available()).catch(() => !1), l = () => t.then((e) => e.cloud.fs.list()), u = () => t.then((e) => e.cloud.fs.quota()), d = async (e) => {
30
- let n = await (await t).cloud.fs.readFile(e).catch(s);
31
- return new Blob([n]);
32
- }, f = async (e, n, r) => {
33
- let i = await t, a = n instanceof Blob ? new Uint8Array(await n.arrayBuffer()) : n;
34
- await i.cloud.fs.writeFile(e, a, r?.contentType ?? null).catch(s);
35
- }, p = (e) => t.then((t) => t.cloud.fs.remove(e)).then(() => void 0), m = () => t.then((e) => e.cloud.fs.encryption()), h = () => t.then((e) => e.cloud.fs.unlock());
36
- //#endregion
37
- export { o as a, d as c, h as d, f, m as i, p as l, a as n, l as o, n as p, c as r, u as s, i as t, r as u };