@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
@@ -77,9 +77,9 @@ var n = {
77
77
  let n = /* @__PURE__ */ new Map([["", {
78
78
  kind: "dir",
79
79
  mtimeMs: 0
80
- }]]), l = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
80
+ }]]), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = () => t.captureAccount ? { pin: t.captureAccount() } : {};
81
81
  e("unsaved files", () => l.size > 0 || u.size > 0);
82
- let d = /* @__PURE__ */ new Set(), f = () => Date.now(), p = (e) => {
82
+ let f = /* @__PURE__ */ new Set(), p = () => Date.now(), m = (e) => {
83
83
  if (!e) return;
84
84
  let t = e.split("/"), r = "";
85
85
  for (let e of t) {
@@ -87,93 +87,96 @@ var n = {
87
87
  let t = n.get(r);
88
88
  if (!t) n.set(r, {
89
89
  kind: "dir",
90
- mtimeMs: f()
90
+ mtimeMs: p()
91
91
  });
92
92
  else if (t.kind === "file") throw o("ENOTDIR", r, "mkdir");
93
93
  }
94
- }, m, h = 0, g = async () => {
95
- let e = await t.list().catch(() => []), r = /* @__PURE__ */ new Set(), i = !1;
96
- for (let a of e) {
97
- let e = s(a.path);
98
- if (r.add(e), !u.has(e) && (!l.has(e) || d.has(e))) try {
99
- let r = await (await t.readFile(a.path)).arrayBuffer();
100
- if (u.has(e) || l.has(e) && !d.has(e)) continue;
101
- p(c(e));
102
- let i = Date.parse(a.updatedAt ?? "");
103
- n.set(e, {
94
+ }, h, g = 0, _ = async () => {
95
+ let e = d(), r = await t.list(e).catch(() => []), i = /* @__PURE__ */ new Set(), a = !1;
96
+ for (let o of r) {
97
+ let r = s(o.path);
98
+ if (i.add(r), !u.has(r) && (!l.has(r) || f.has(r))) try {
99
+ let i = await (await t.readFile(o.path, e)).arrayBuffer();
100
+ if (u.has(r) || l.has(r) && !f.has(r)) continue;
101
+ m(c(r));
102
+ let a = Date.parse(o.updatedAt ?? "");
103
+ n.set(r, {
104
104
  kind: "file",
105
- data: new Uint8Array(r),
106
- mtimeMs: Number.isFinite(i) ? i : f(),
107
- contentType: a.contentType ?? void 0
108
- }), d.delete(e), l.delete(e);
105
+ data: new Uint8Array(i),
106
+ mtimeMs: Number.isFinite(a) ? a : p(),
107
+ contentType: o.contentType ?? void 0
108
+ }), f.delete(r), l.delete(r);
109
109
  } catch {
110
- i = !0, d.add(e);
110
+ a = !0, f.add(r);
111
111
  }
112
112
  }
113
- for (let e of d) r.has(e) || d.delete(e);
114
- h = i ? Date.now() : 0;
115
- }, _ = () => (m && (h === 0 || Date.now() - h < 5e3) || (m = g()), m), v = async () => {
116
- m = void 0, h = 0, await _();
117
- }, y = async () => {
118
- let e = [...l].map(async (e) => {
119
- if (d.has(e)) return;
120
- let i = n.get(e);
121
- if (i?.kind !== "file") {
113
+ for (let e of f) i.has(e) || f.delete(e);
114
+ g = a ? Date.now() : 0;
115
+ }, v = () => (h && (g === 0 || Date.now() - g < 5e3) || (h = _()), h), y = async () => {
116
+ h = void 0, g = 0, await v();
117
+ }, b = async () => {
118
+ let e = [...l].map(async ([e, i]) => {
119
+ if (f.has(e)) return;
120
+ let a = n.get(e);
121
+ if (a?.kind !== "file") {
122
122
  l.delete(e);
123
123
  return;
124
124
  }
125
- let a = i.data, o = r(e, i.contentType);
125
+ let o = a.data, s = r(e, a.contentType);
126
126
  try {
127
- await t.writeFile(e, a, o ? { contentType: o } : void 0);
127
+ await t.writeFile(e, o, s ? {
128
+ contentType: s,
129
+ ...i
130
+ } : i);
128
131
  let r = n.get(e);
129
- r?.kind === "file" && r.data === a && l.delete(e);
132
+ r?.kind === "file" && r.data === o && l.delete(e);
130
133
  } catch {}
131
- }), i = [...u].map(async (e) => {
134
+ }), i = [...u].map(async ([e, n]) => {
132
135
  try {
133
- await t.remove(e), u.delete(e);
136
+ await t.remove(e, n), u.get(e) === n && u.delete(e);
134
137
  } catch {}
135
138
  });
136
139
  await Promise.all([...e, ...i]);
137
- }, b, x = () => {
138
- b ||= setTimeout(() => {
139
- b = void 0, y().catch(() => {});
140
+ }, x, S = () => {
141
+ x ||= setTimeout(() => {
142
+ x = void 0, b().catch(() => {});
140
143
  }, 250);
141
144
  };
142
145
  typeof addEventListener < "u" && (addEventListener("pagehide", () => {
143
- y().catch(() => {});
146
+ b().catch(() => {});
144
147
  }), addEventListener("visibilitychange", () => {
145
- typeof document < "u" && document.visibilityState === "hidden" && y().catch(() => {});
148
+ typeof document < "u" && document.visibilityState === "hidden" && b().catch(() => {});
146
149
  }));
147
- let S = (e) => e.kind === "file" ? i(e.data.byteLength, e.mtimeMs) : a(e.mtimeMs), C = (e) => Object.assign(/* @__PURE__ */ Error(`storage: ${e} exists but could not be read, retry once its scope is available`), { code: "FKN_E2E_LOCKED" }), w = (e) => {
150
+ let C = (e) => e.kind === "file" ? i(e.data.byteLength, e.mtimeMs) : a(e.mtimeMs), w = (e) => Object.assign(/* @__PURE__ */ Error(`storage: ${e} exists but could not be read, retry once its scope is available`), { code: "FKN_E2E_LOCKED" }), T = (e) => {
148
151
  let t = s(e);
149
- return n.has(t) || d.has(t);
150
- }, T = (e) => {
151
- let t = s(e), r = n.get(t);
152
- if (!r) throw d.has(t) ? C(e) : o("ENOENT", e, "stat");
153
- return S(r);
152
+ return n.has(t) || f.has(t);
154
153
  }, E = (e) => {
155
154
  let t = s(e), r = n.get(t);
156
- if (!r) throw d.has(t) ? C(e) : o("ENOENT", e, "open");
155
+ if (!r) throw f.has(t) ? w(e) : o("ENOENT", e, "stat");
156
+ return C(r);
157
+ }, D = (e) => {
158
+ let t = s(e), r = n.get(t);
159
+ if (!r) throw f.has(t) ? w(e) : o("ENOENT", e, "open");
157
160
  if (r.kind === "dir") throw o("EISDIR", e, "read");
158
161
  return r.data;
159
- }, D = (e, t) => {
162
+ }, O = (e, t) => {
160
163
  let n = new Uint8Array(e.byteLength + t.byteLength);
161
164
  return n.set(e, 0), n.set(t, e.byteLength), n;
162
- }, O = (e, t, r, i) => {
165
+ }, k = (e, t, r, i) => {
163
166
  let a = s(e);
164
167
  if (!a) throw o("EISDIR", e, "open");
165
- if (d.has(a)) throw C(e);
166
- let m = n.get(a);
167
- if (m?.kind === "dir") throw o("EISDIR", e, "open");
168
- p(c(a));
169
- let h = r && m?.kind === "file" ? D(m.data, t) : t;
168
+ if (f.has(a)) throw w(e);
169
+ let h = n.get(a);
170
+ if (h?.kind === "dir") throw o("EISDIR", e, "open");
171
+ m(c(a));
172
+ let g = r && h?.kind === "file" ? O(h.data, t) : t;
170
173
  n.set(a, {
171
174
  kind: "file",
172
- data: h,
173
- mtimeMs: f(),
174
- contentType: i ?? (m?.kind === "file" ? m.contentType : void 0)
175
- }), l.add(a), u.delete(a), x();
176
- }, k = (e, t) => {
175
+ data: g,
176
+ mtimeMs: p(),
177
+ contentType: i ?? (h?.kind === "file" ? h.contentType : void 0)
178
+ }), l.set(a, d()), u.delete(a), S();
179
+ }, A = (e, t) => {
177
180
  let r = s(e);
178
181
  if (r) {
179
182
  if (n.has(r)) {
@@ -181,76 +184,76 @@ var n = {
181
184
  throw o("EEXIST", e, "mkdir");
182
185
  }
183
186
  if (!t && !n.has(c(r))) throw o("ENOENT", e, "mkdir");
184
- p(r);
187
+ m(r);
185
188
  }
186
- }, A = (e) => {
189
+ }, j = (e) => {
187
190
  let t = s(e), r = n.get(t);
188
191
  if (!r) throw o("ENOENT", e, "scandir");
189
192
  if (r.kind === "file") throw o("ENOTDIR", e, "scandir");
190
193
  let i = t ? `${t}/` : "", a = /* @__PURE__ */ new Set();
191
- for (let e of [...n.keys(), ...d]) {
194
+ for (let e of [...n.keys(), ...f]) {
192
195
  if (!e || !e.startsWith(i)) continue;
193
196
  let t = e.slice(i.length);
194
197
  t && a.add(t.split("/")[0]);
195
198
  }
196
199
  return [...a];
197
- }, j = (e, { op: t, recursive: r, force: i }) => {
198
- let a = s(e), c = n.get(a);
199
- if (!c && d.has(a)) {
200
+ }, M = (e, { op: t, recursive: r, force: i }) => {
201
+ let a = d(), c = s(e), p = n.get(c);
202
+ if (!p && f.has(c)) {
200
203
  if (t === "rmdir") throw o("ENOTDIR", e, "rmdir");
201
- d.delete(a), l.delete(a), u.add(a), x();
204
+ f.delete(c), l.delete(c), u.set(c, a), S();
202
205
  return;
203
206
  }
204
- if (!c) {
207
+ if (!p) {
205
208
  if (i || t === "rmdir" && r) return;
206
209
  throw o("ENOENT", e, t === "rmdir" ? "rmdir" : "unlink");
207
210
  }
208
- if (t === "unlink" && c.kind === "dir") throw o("EISDIR", e, "unlink");
209
- if (t === "rmdir" && c.kind === "file") throw o("ENOTDIR", e, "rmdir");
210
- if (t === "rm" && c.kind === "dir" && !r) throw o("ERR_FS_EISDIR", e, "rm");
211
- let f = `${a}/`, p = [...n.keys()].filter((e) => e.startsWith(f));
212
- if (p.length && !r) throw o("ENOTEMPTY", e, "rmdir");
213
- for (let e of [a, ...p]) {
211
+ if (t === "unlink" && p.kind === "dir") throw o("EISDIR", e, "unlink");
212
+ if (t === "rmdir" && p.kind === "file") throw o("ENOTDIR", e, "rmdir");
213
+ if (t === "rm" && p.kind === "dir" && !r) throw o("ERR_FS_EISDIR", e, "rm");
214
+ let m = `${c}/`, h = [...n.keys()].filter((e) => e.startsWith(m));
215
+ if (h.length && !r) throw o("ENOTEMPTY", e, "rmdir");
216
+ for (let e of [c, ...h]) {
214
217
  let t = n.get(e);
215
- n.delete(e), t?.kind === "file" && (l.delete(e), u.add(e));
218
+ n.delete(e), t?.kind === "file" && (l.delete(e), u.set(e, a));
216
219
  }
217
- x();
220
+ S();
218
221
  };
219
222
  return {
220
- mount: _,
221
- remount: v,
222
- flush: y,
223
- exists: w,
224
- stat: T,
225
- readFile: E,
226
- writeFile: O,
227
- mkdir: k,
228
- readdir: A,
229
- remove: j,
223
+ mount: v,
224
+ remount: y,
225
+ flush: b,
226
+ exists: T,
227
+ stat: E,
228
+ readFile: D,
229
+ writeFile: k,
230
+ mkdir: A,
231
+ readdir: j,
232
+ remove: M,
230
233
  rename: (e, t) => {
231
- let r = s(e), i = s(t);
232
- if (!r) throw o("EBUSY", e, "rename");
233
- if (i === r || i.startsWith(`${r}/`)) throw o("EINVAL", e, "rename");
234
- if (d.has(r)) throw C(e);
235
- if (d.has(i)) throw C(t);
236
- let a = n.get(r);
237
- if (!a) throw o("ENOENT", e, "rename");
238
- let f = n.get(i);
239
- if (f) {
240
- if (f.kind !== a.kind) throw o(a.kind === "dir" ? "ENOTDIR" : "EISDIR", t, "rename");
241
- j(i, {
234
+ let r = d(), i = s(e), a = s(t);
235
+ if (!i) throw o("EBUSY", e, "rename");
236
+ if (a === i || a.startsWith(`${i}/`)) throw o("EINVAL", e, "rename");
237
+ if (f.has(i)) throw w(e);
238
+ if (f.has(a)) throw w(t);
239
+ let p = n.get(i);
240
+ if (!p) throw o("ENOENT", e, "rename");
241
+ let h = n.get(a);
242
+ if (h) {
243
+ if (h.kind !== p.kind) throw o(p.kind === "dir" ? "ENOTDIR" : "EISDIR", t, "rename");
244
+ M(a, {
242
245
  op: "rm",
243
246
  recursive: !0,
244
247
  force: !0
245
248
  });
246
249
  }
247
- p(c(i));
248
- let m = `${r}/`, h = [r, ...[...n.keys()].filter((e) => e.startsWith(m))];
249
- for (let e of h) {
250
- let t = i + e.slice(r.length), a = n.get(e);
251
- n.set(t, a), n.delete(e), a.kind === "file" && (l.add(t), u.delete(t), l.delete(e), u.add(e));
250
+ m(c(a));
251
+ let g = `${i}/`, _ = [i, ...[...n.keys()].filter((e) => e.startsWith(g))];
252
+ for (let e of _) {
253
+ let t = a + e.slice(i.length), o = n.get(e);
254
+ n.set(t, o), n.delete(e), o.kind === "file" && (l.set(t, r), u.delete(t), l.delete(e), u.set(e, r));
252
255
  }
253
- x();
256
+ S();
254
257
  }
255
258
  };
256
259
  }, g = (e, t) => typeof e == "function" ? e : t, _ = (e) => typeof e == "function" ? void 0 : e, v = (e, t) => {
@@ -330,18 +333,18 @@ var n = {
330
333
  remount: t.remount
331
334
  };
332
335
  }, b = (e) => {
333
- let t = async (t, n) => {
336
+ let t = () => e.captureAccount ? { pin: e.captureAccount() } : {}, n = async (t, n) => {
334
337
  let r = await e.readFile(l(t));
335
338
  return p(new Uint8Array(await r.arrayBuffer()), n);
336
- }, n = async (t, n, i) => {
339
+ }, c = async (t, n, i) => {
337
340
  let a = l(t), o = r(a, d(i));
338
341
  await e.writeFile(a, m(n, i), o ? { contentType: o } : void 0);
339
- }, c = (t) => e.remove(l(t)), u = async (t, n) => {
340
- let r = s(l(t)), i = s(l(n));
341
- if (r === i) return;
342
- let a = await e.readFile(r);
343
- await e.writeFile(i, a), await e.remove(r);
344
- }, f = async (t) => {
342
+ }, u = (t) => e.remove(l(t)), f = async (n, r) => {
343
+ let i = t(), a = s(l(n)), o = s(l(r));
344
+ if (a === o) return;
345
+ let c = await e.readFile(a, i);
346
+ await e.writeFile(o, c, i), await e.remove(a, i);
347
+ }, h = async (t) => {
345
348
  let n = s(l(t)), r = n ? `${n}/` : "", i = /* @__PURE__ */ new Set();
346
349
  for (let t of await e.list()) {
347
350
  let e = s(t.path);
@@ -350,18 +353,18 @@ var n = {
350
353
  n && i.add(n.split("/")[0]);
351
354
  }
352
355
  return [...i];
353
- }, h = async (e, t) => {}, y = async (t, n) => {
354
- let r = s(l(t));
355
- if (!n?.recursive) {
356
- await e.remove(l(t));
356
+ }, y = async (e, t) => {}, b = async (n, r) => {
357
+ let i = t(), a = s(l(n));
358
+ if (!r?.recursive) {
359
+ await e.remove(l(n), i);
357
360
  return;
358
361
  }
359
- let i = `${r}/`, a = await e.list();
360
- await Promise.all(a.filter((e) => {
362
+ let o = `${a}/`, c = await e.list(i);
363
+ await Promise.all(c.filter((e) => {
361
364
  let t = s(e.path);
362
- return t === r || t.startsWith(i);
363
- }).map((t) => e.remove(t.path).catch(() => {})));
364
- }, b = async (t) => {
365
+ return t === a || t.startsWith(o);
366
+ }).map((t) => e.remove(t.path, i).catch(() => {})));
367
+ }, x = async (t) => {
365
368
  let n = s(l(t)), r = await e.list(), c = r.find((e) => s(e.path) === n);
366
369
  if (c) {
367
370
  let e = Date.parse(c.updatedAt ?? "");
@@ -369,32 +372,32 @@ var n = {
369
372
  }
370
373
  if (r.some((e) => s(e.path).startsWith(`${n}/`))) return a();
371
374
  throw o("ENOENT", l(t), "stat");
372
- }, x = {
373
- readFile: t,
374
- writeFile: n,
375
- unlink: c,
376
- rename: u,
377
- readdir: f,
378
- mkdir: h,
379
- rm: y,
380
- rmdir: y,
381
- stat: b,
382
- lstat: b,
375
+ }, S = {
376
+ readFile: n,
377
+ writeFile: c,
378
+ unlink: u,
379
+ rename: f,
380
+ readdir: h,
381
+ mkdir: y,
382
+ rm: b,
383
+ rmdir: b,
384
+ stat: x,
385
+ lstat: x,
383
386
  access: async (e) => {
384
- await b(e);
387
+ await x(e);
385
388
  }
386
389
  };
387
390
  return {
388
391
  available: e.available,
389
- promises: x,
390
- readFile: (e, n, r) => v(t(e, _(n)), g(n, r)),
391
- writeFile: (e, t, r, i) => v(n(e, t, _(r)), g(r, i)),
392
- unlink: (e, t) => v(c(e), t),
393
- rename: (e, t, n) => v(u(e, t), n),
394
- readdir: (e, t, n) => v(f(e), g(t, n)),
395
- mkdir: (e, t, n) => v(h(), g(t, n)),
396
- rm: (e, t, n) => v(y(e, _(t)), g(t, n)),
397
- stat: (e, t) => v(b(e), t)
392
+ promises: S,
393
+ readFile: (e, t, r) => v(n(e, _(t)), g(t, r)),
394
+ writeFile: (e, t, n, r) => v(c(e, t, _(n)), g(n, r)),
395
+ unlink: (e, t) => v(u(e), t),
396
+ rename: (e, t, n) => v(f(e, t), n),
397
+ readdir: (e, t, n) => v(h(e), g(t, n)),
398
+ mkdir: (e, t, n) => v(y(), g(t, n)),
399
+ rm: (e, t, n) => v(b(e, _(t)), g(t, n)),
400
+ stat: (e, t) => v(x(e), t)
398
401
  };
399
402
  };
400
403
  function x(e, t) {
@@ -0,0 +1 @@
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 Map,u=new Map,d=()=>t.captureAccount?{pin:t.captureAccount()}:{};e.r(`unsaved files`,()=>l.size>0||u.size>0);let f=new Set,p=()=>Date.now(),m=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:p()});else if(t.kind===`file`)throw o(`ENOTDIR`,r,`mkdir`)}},h,g=0,_=async()=>{let e=d(),r=await t.list(e).catch(()=>[]),i=new Set,a=!1;for(let o of r){let r=s(o.path);if(i.add(r),!u.has(r)&&(!l.has(r)||f.has(r)))try{let i=await(await t.readFile(o.path,e)).arrayBuffer();if(u.has(r)||l.has(r)&&!f.has(r))continue;m(c(r));let a=Date.parse(o.updatedAt??``);n.set(r,{kind:`file`,data:new Uint8Array(i),mtimeMs:Number.isFinite(a)?a:p(),contentType:o.contentType??void 0}),f.delete(r),l.delete(r)}catch{a=!0,f.add(r)}}for(let e of f)i.has(e)||f.delete(e);g=a?Date.now():0},v=()=>(h&&(g===0||Date.now()-g<5e3)||(h=_()),h),y=async()=>{h=void 0,g=0,await v()},b=async()=>{let e=[...l].map(async([e,i])=>{if(f.has(e))return;let a=n.get(e);if(a?.kind!==`file`){l.delete(e);return}let o=a.data,s=r(e,a.contentType);try{await t.writeFile(e,o,s?{contentType:s,...i}:i);let r=n.get(e);r?.kind===`file`&&r.data===o&&l.delete(e)}catch{}}),i=[...u].map(async([e,n])=>{try{await t.remove(e,n),u.get(e)===n&&u.delete(e)}catch{}});await Promise.all([...e,...i])},x,S=()=>{x||=setTimeout(()=>{x=void 0,b().catch(()=>{})},250)};typeof addEventListener<`u`&&(addEventListener(`pagehide`,()=>{b().catch(()=>{})}),addEventListener(`visibilitychange`,()=>{typeof document<`u`&&document.visibilityState===`hidden`&&b().catch(()=>{})}));let C=e=>e.kind===`file`?i(e.data.byteLength,e.mtimeMs):a(e.mtimeMs),w=e=>Object.assign(Error(`storage: ${e} exists but could not be read, retry once its scope is available`),{code:`FKN_E2E_LOCKED`}),T=e=>{let t=s(e);return n.has(t)||f.has(t)},E=e=>{let t=s(e),r=n.get(t);if(!r)throw f.has(t)?w(e):o(`ENOENT`,e,`stat`);return C(r)},D=e=>{let t=s(e),r=n.get(t);if(!r)throw f.has(t)?w(e):o(`ENOENT`,e,`open`);if(r.kind===`dir`)throw o(`EISDIR`,e,`read`);return r.data},O=(e,t)=>{let n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n},k=(e,t,r,i)=>{let a=s(e);if(!a)throw o(`EISDIR`,e,`open`);if(f.has(a))throw w(e);let h=n.get(a);if(h?.kind===`dir`)throw o(`EISDIR`,e,`open`);m(c(a));let g=r&&h?.kind===`file`?O(h.data,t):t;n.set(a,{kind:`file`,data:g,mtimeMs:p(),contentType:i??(h?.kind===`file`?h.contentType:void 0)}),l.set(a,d()),u.delete(a),S()},A=(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`);m(r)}},j=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(),...f]){if(!e||!e.startsWith(i))continue;let t=e.slice(i.length);t&&a.add(t.split(`/`)[0])}return[...a]},M=(e,{op:t,recursive:r,force:i})=>{let a=d(),c=s(e),p=n.get(c);if(!p&&f.has(c)){if(t===`rmdir`)throw o(`ENOTDIR`,e,`rmdir`);f.delete(c),l.delete(c),u.set(c,a),S();return}if(!p){if(i||t===`rmdir`&&r)return;throw o(`ENOENT`,e,t===`rmdir`?`rmdir`:`unlink`)}if(t===`unlink`&&p.kind===`dir`)throw o(`EISDIR`,e,`unlink`);if(t===`rmdir`&&p.kind===`file`)throw o(`ENOTDIR`,e,`rmdir`);if(t===`rm`&&p.kind===`dir`&&!r)throw o(`ERR_FS_EISDIR`,e,`rm`);let m=`${c}/`,h=[...n.keys()].filter(e=>e.startsWith(m));if(h.length&&!r)throw o(`ENOTEMPTY`,e,`rmdir`);for(let e of[c,...h]){let t=n.get(e);n.delete(e),t?.kind===`file`&&(l.delete(e),u.set(e,a))}S()};return{mount:v,remount:y,flush:b,exists:T,stat:E,readFile:D,writeFile:k,mkdir:A,readdir:j,remove:M,rename:(e,t)=>{let r=d(),i=s(e),a=s(t);if(!i)throw o(`EBUSY`,e,`rename`);if(a===i||a.startsWith(`${i}/`))throw o(`EINVAL`,e,`rename`);if(f.has(i))throw w(e);if(f.has(a))throw w(t);let p=n.get(i);if(!p)throw o(`ENOENT`,e,`rename`);let h=n.get(a);if(h){if(h.kind!==p.kind)throw o(p.kind===`dir`?`ENOTDIR`:`EISDIR`,t,`rename`);M(a,{op:`rm`,recursive:!0,force:!0})}m(c(a));let g=`${i}/`,_=[i,...[...n.keys()].filter(e=>e.startsWith(g))];for(let e of _){let t=a+e.slice(i.length),o=n.get(e);n.set(t,o),n.delete(e),o.kind===`file`&&(l.set(t,r),u.delete(t),l.delete(e),u.set(e,r))}S()}}},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=()=>e.captureAccount?{pin:e.captureAccount()}:{},n=async(t,n)=>{let r=await e.readFile(l(t));return p(new Uint8Array(await r.arrayBuffer()),n)},c=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)},u=t=>e.remove(l(t)),f=async(n,r)=>{let i=t(),a=s(l(n)),o=s(l(r));if(a===o)return;let c=await e.readFile(a,i);await e.writeFile(o,c,i),await e.remove(a,i)},h=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]},y=async(e,t)=>{},b=async(n,r)=>{let i=t(),a=s(l(n));if(!r?.recursive){await e.remove(l(n),i);return}let o=`${a}/`,c=await e.list(i);await Promise.all(c.filter(e=>{let t=s(e.path);return t===a||t.startsWith(o)}).map(t=>e.remove(t.path,i).catch(()=>{})))},x=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`)},S={readFile:n,writeFile:c,unlink:u,rename:f,readdir:h,mkdir:y,rm:b,rmdir:b,stat:x,lstat:x,access:async e=>{await x(e)}};return{available:e.available,promises:S,readFile:(e,t,r)=>v(n(e,_(t)),g(t,r)),writeFile:(e,t,n,r)=>v(c(e,t,_(n)),g(n,r)),unlink:(e,t)=>v(u(e),t),rename:(e,t,n)=>v(f(e,t),n),readdir:(e,t,n)=>v(h(e),g(t,n)),mkdir:(e,t,n)=>v(y(),g(t,n)),rm:(e,t,n)=>v(b(e,_(t)),g(t,n)),stat:(e,t)=>v(x(e),t)}};function x(e,t){return t.memfs?y(e):b(e)}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return x}});
package/opfs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./node-fs-BNTPsX5c.cjs"),n=require("./opfs-CXMESVLc.cjs");var r=e.t({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-BIInC43l.cjs"),t=require("./node-fs-nfX7wisL.cjs"),n=require("./opfs-CXMESVLc.cjs");var r=e.t({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,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { t } from "./node-fs-BZy9bzKd.js";
2
+ import { t } from "./node-fs-CK2wWIYS.js";
3
3
  import { r as n } from "./opfs-D0goLAQW.js";
4
4
  //#region src/opfs/index.ts
5
5
  var r = /* @__PURE__ */ e({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fkn/lib",
3
- "version": "0.9.40",
3
+ "version": "0.9.41",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
package/packages.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as InstallOptions, F as PickOptions, H as Radii, I as Placement, M as PackageResult, N as PackagesErrorCode, f as ConnectOptions, j as PackageQuery, vt as SurfaceRect, w as InstalledPackage } from "./contract-Cvr_8gCL.js";
1
+ import { E as InstalledPackage, F as PackagesErrorCode, L as PickOptions, N as PackageQuery, P as PackageResult, R as Placement, T as InstallOptions, W as Radii, bt as SurfaceRect, m as ConnectOptions } from "./contract-BRc2ptdC.js";
2
2
  import { Remote } from "osra";
3
3
  declare namespace packages_d_exports {
4
4
  export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, MountOptions, MountedPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, Placement, Radii, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, uninstall };
@@ -1,5 +1,5 @@
1
- import { U as Resolvers } from "./contract-Cvr_8gCL.js";
2
- import "./api-BE5zPvFZ.js";
1
+ import { G as Resolvers } from "./contract-BRc2ptdC.js";
2
+ import "./api-Cbty0JUM.js";
3
3
  //#region src/proxy.d.ts
4
4
  type ProxyFetch = Resolvers['cloud']['fetch'];
5
5
  type FetchParameters = Parameters<ProxyFetch>;
package/rooms.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as RoomMember, G as RoomClaimOptions, J as RoomEnd, K as RoomCreateOptions, Q as RoomMailbox, W as RoomBacklog, Y as RoomEvent, Z as RoomJoinOptions, et as RoomMessage, it as RoomsErrorCode, nt as RoomPermission, q as RoomDefaults, rt as RoomPermissions, tt as RoomOpenOptions } from "./contract-Cvr_8gCL.js";
1
+ import { $ as RoomJoinOptions, J as RoomCreateOptions, K as RoomBacklog, X as RoomEnd, Y as RoomDefaults, Z as RoomEvent, at as RoomPermissions, et as RoomMailbox, it as RoomPermission, nt as RoomMessage, ot as RoomsErrorCode, q as RoomClaimOptions, rt as RoomOpenOptions, tt as RoomMember } from "./contract-BRc2ptdC.js";
2
2
  declare namespace rooms_d_exports {
3
3
  export { RoomClaimOptions as ClaimOptions, RoomCreateOptions as CreateOptions, RoomJoinOptions as JoinOptions, RoomOpenOptions as OpenOptions, Room, RoomBacklog, RoomDefaults, RoomEnd, RoomEvent, RoomMailbox, RoomMember, RoomMessage, RoomPermission, RoomPermissions, RoomsError, RoomsErrorCode, available, create, join, open };
4
4
  }
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-jOTOA-5n.cjs"),n=require("./messages.cjs"),r=require("./account-generation-CSnZiN18.cjs");var i=e.t({StorageAccountChangedError:()=>c,StorageAccountPinUnsupportedError:()=>l,StorageLockedError:()=>a,StorageNotFoundError:()=>o,availability:()=>k,available:()=>w,captureAccount:()=>p,encryption:()=>L,isAccountChanged:()=>u,isInvalidPin:()=>d,isNotFound:()=>s,knownPin:()=>y,list:()=>A,pinFor:()=>b,quota:()=>j,readFile:()=>M,readFileSealed:()=>P,remove:()=>I,unlock:()=>R,writeFile:()=>F}),a=class extends Error{code=`FKN_E2E_LOCKED`;constructor(){super(`storage locked: connect the app again to open encrypted data`)}},o=class extends Error{code=n.STORAGE_NOT_FOUND;constructor(e=`storage: no object at that path`){super(e)}},s=e=>e?.code===n.STORAGE_NOT_FOUND,c=class extends Error{code=n.STORAGE_ACCOUNT_CHANGED;constructor(e=`storage: the signed-in account changed, so this call was not made`){super(e)}},l=class extends Error{code=n.STORAGE_ACCOUNT_PIN_UNSUPPORTED;constructor(e=`storage: the FKN broker cannot pin calls to an account yet, so nothing was sent`){super(e)}},u=e=>e?.code===`FKN_ACCOUNT_CHANGED`||e instanceof Error&&e.message.startsWith(`fkn:account-changed`),d=e=>e instanceof Error&&e.message.startsWith(`fkn:account-pin-invalid`),f=e=>{throw e instanceof Error&&e.message.startsWith(`fkn:e2e-locked`)?new a:s(e)?new o(e.message):u(e)?new c:e instanceof Error&&e.message.startsWith(`fkn:account-pin-unsupported`)?new l:e instanceof Error&&(/^not found$/i.test(e.message)||/\(404\)$/.test(e.message))?new o(e.message):e},p=()=>(r.n(),{generation:r.t()}),m=new Map,h=null,g=e=>typeof e?.accountPin==`function`,_=(e,t)=>{let n=Promise.resolve(t.accountPin()).then(t=>{if(typeof t!=`string`||!t)throw Error(`storage: the broker answered no account pin`);return r.t()===e&&m.set(e,t),t});return h={generation:e,pin:n},n.catch(()=>{h?.pin===n&&(h=null)}),n},v=async(e,t)=>{let n=m.get(e.generation);if(n!==void 0)return n;if(e.generation!==r.t())throw new c;let i=await(h?.generation===e.generation?h.pin:_(e.generation,t)).catch(f);if(e.generation!==r.t())throw new c;return i},y=e=>m.get(e.generation),b=async e=>{let n=(await t.a).cloud.fs;if(!g(n))throw new l;return v(e,n)},x=e=>{for(let[t,n]of m)if(n===e)return t},S=e=>e?.pin??p(),C=async(e,n)=>{let i=(await t.a).cloud.fs;if(!g(i))throw new l;let a=`pin`in e?e.pin:await v(e,i);if(!g(i))throw new l;return n(i,{accountPin:a}).catch(t=>{if(u(t)){let t=`generation`in e?e.generation:x(a);t!==void 0&&r.r(t)}return f(t)})},w=()=>t.a.then(e=>e.cloud.fs.available()).catch(()=>!1),T=8e3,E=1e3,D=!1,O=async()=>{let e=(await t.a).cloud.fs;return typeof e.availability==`function`?e.availability():await e.available()?`connected`:`disconnected`},k=async()=>{let e=D?E:T,t=await new Promise(t=>{let n=setTimeout(()=>t(`timeout`),e);O().then(e=>{clearTimeout(n),t(e)},()=>{clearTimeout(n),t(`unknown`)})});return t===`timeout`?(D=!0,`unknown`):(D=!1,t)},A=e=>C(S(e),(e,t)=>e.list(t)),j=()=>t.a.then(e=>e.cloud.fs.quota()),M=async(e,t)=>{let n=await C(S(t),(t,n)=>t.readFile(e,n));return new Blob([n])},N=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()},P=async(e,t)=>C(S(t),async(t,n)=>{let r=t;if(typeof r.readFileSealed!=`function`)return{data:await t.readFile(e,n),sealedAt:null};let i=await r.readFileSealed(e,n);return{data:i.bytes,sealedAt:N(i.sealedAt)}}),F=async(e,t,n)=>{let r=S(n),i=t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t;await C(r,(t,r)=>t.writeFile(e,i,n?.contentType??null,r))},I=async(e,t)=>{await C(S(t),(t,n)=>t.remove(e,n))},L=()=>t.a.then(e=>e.cloud.fs.encryption()),R=()=>t.a.then(e=>e.cloud.fs.unlock());Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return R}});