@voltro/client 0.51.0 → 0.53.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.
package/dist/index.js CHANGED
@@ -1,28 +1,31 @@
1
- import { createContext as e, createElement as t, useCallback as n, useContext as r, useDebugValue as i, useEffect as a, useMemo as o, useRef as s, useState as c, useSyncExternalStore as l } from "react";
2
- import { Cause as u, Context as d, Duration as f, Effect as p, Exit as m, Fiber as h, JSONSchema as g, Layer as _, ManagedRuntime as v, Schedule as y, Schema as b, Stream as x } from "effect";
3
- import { applyRowPatch as S } from "@voltro/protocol";
4
- import * as C from "@effect/platform/Socket";
5
- import * as w from "@effect/platform/Headers";
6
- import { RpcClient as T, RpcSerialization as ee } from "@effect/rpc";
7
- import { jsx as te } from "react/jsx-runtime";
8
- import { ArrayFormatter as E } from "effect/ParseResult";
1
+ import { a as e, c as t, d as n, f as r, i, l as a, m as o, n as s, o as c, p as l, r as u, s as d, t as f, u as p } from "./formData-BO7zkG_F.js";
2
+ import { createContext as m, createElement as h, useCallback as g, useContext as _, useDebugValue as v, useEffect as y, useMemo as b, useRef as x, useState as S, useSyncExternalStore as C } from "react";
3
+ import { Cause as w, Context as T, Duration as ee, Effect as E, Exit as D, Fiber as O, Layer as k, ManagedRuntime as te, Schedule as A, Schema as j, Stream as M } from "effect";
4
+ import * as ne from "@effect/platform/Headers";
5
+ import { RpcClient as N, RpcSerialization as P } from "@effect/rpc";
6
+ import { applyRowPatch as F, fieldIssuesOf as re } from "@voltro/protocol";
7
+ import * as ie from "@effect/platform/Socket";
8
+ import { jsx as ae } from "react/jsx-runtime";
9
+ import { FormApi as oe } from "@tanstack/form-core";
10
+ import { useStore as se } from "@tanstack/react-store";
11
+ import { ArrayFormatter as ce } from "effect/ParseResult";
9
12
  //#region src/traceBus.ts
10
- var ne = /* @__PURE__ */ new Set(), D = (e) => {
11
- for (let t of ne) try {
13
+ var le = /* @__PURE__ */ new Set(), I = (e) => {
14
+ for (let t of le) try {
12
15
  t(e);
13
16
  } catch {}
14
- }, re = (e) => (ne.add(e), () => {
15
- ne.delete(e);
16
- }), O = (e) => {
17
+ }, ue = (e) => (le.add(e), () => {
18
+ le.delete(e);
19
+ }), L = (e) => {
17
20
  let t = (e) => e == null ? "null" : typeof e == "string" ? JSON.stringify(e) : typeof e == "number" || typeof e == "boolean" ? String(e) : Array.isArray(e) ? `[${e.map(t).join(",")}]` : typeof e == "object" ? `{${Object.keys(e).sort().map((n) => `${JSON.stringify(n)}:${t(e[n])}`).join(",")}}` : String(e);
18
21
  return t(e);
19
- }, ie = Object.freeze({
22
+ }, de = Object.freeze({
20
23
  data: void 0,
21
24
  revision: -1,
22
25
  emittedAt: void 0,
23
26
  error: void 0,
24
27
  pendingPatches: 0
25
- }), ae = 5e3, oe = (e, t, n) => {
28
+ }), fe = 5e3, R = (e, t, n) => {
26
29
  if (e._tag === "error") return !1;
27
30
  if (e._tag === "delta") return !0;
28
31
  try {
@@ -30,21 +33,21 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
30
33
  } catch {
31
34
  return !1;
32
35
  }
33
- }, se = 0, ce = () => `patch_${++se}`, k = (e, t) => {
36
+ }, pe = 0, me = () => `patch_${++pe}`, z = (e, t) => {
34
37
  let n = e;
35
38
  for (let e of t.split(".")) {
36
39
  if (typeof n != "object" || !n) return;
37
40
  n = n[e];
38
41
  }
39
42
  return n;
40
- }, le = (e, t, n) => {
43
+ }, he = (e, t, n) => {
41
44
  let r = t.split("."), i = (e) => typeof e == "object" && e && !Array.isArray(e) ? { ...e } : {}, a = i(e), o = a;
42
45
  for (let e = 0; e < r.length - 1; e += 1) o[r[e]] = i(o[r[e]]), o = o[r[e]];
43
46
  return o[r[r.length - 1]] = n, a;
44
- }, ue = (e, t) => {
47
+ }, ge = (e, t) => {
45
48
  let n = e.by ?? "id", r = e.identify ? e.identify(t) : typeof t[n] == "string" ? t[n] : typeof t.id == "string" ? t.id : void 0, i = r === void 0 ? [] : Array.isArray(r) ? r : [r];
46
49
  return i.length === 0 ? null : new Set(i);
47
- }, de = (e, t, n) => {
50
+ }, _e = (e, t, n) => {
48
51
  let r = e.path, i = e.by ?? "id";
49
52
  if (e.op === "insert") {
50
53
  let a = e.shapeItem ?? e.shape, o = a ? {
@@ -57,11 +60,11 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
57
60
  optimistic: !0
58
61
  }, s = e.order ?? "append";
59
62
  return (e) => {
60
- let t = Array.isArray(k(e, r)) ? k(e, r) : [];
61
- return le(e ?? {}, r, s === "append" ? [...t, o] : [o, ...t]);
63
+ let t = Array.isArray(z(e, r)) ? z(e, r) : [];
64
+ return he(e ?? {}, r, s === "append" ? [...t, o] : [o, ...t]);
62
65
  };
63
66
  }
64
- let a = ue(e, t);
67
+ let a = ge(e, t);
65
68
  if (a === null) return null;
66
69
  if (e.op === "update") {
67
70
  let n = e.shapeItem ?? e.shape, o = n ? (e) => ({
@@ -75,16 +78,21 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
75
78
  optimistic: !0
76
79
  });
77
80
  return (e) => {
78
- let t = Array.isArray(k(e, r)) ? k(e, r) : [];
79
- return le(e, r, t.map((e) => a.has(e[i]) ? o(e) : e));
81
+ let t = z(e, r);
82
+ if (!Array.isArray(t)) {
83
+ if (typeof t != "object" || !t) return e;
84
+ let n = t;
85
+ return a.has(n[i]) ? he(e, r, o(n)) : e;
86
+ }
87
+ return he(e, r, t.map((e) => a.has(e[i]) ? o(e) : e));
80
88
  };
81
89
  }
82
90
  return (e) => {
83
- let t = Array.isArray(k(e, r)) ? k(e, r) : [];
84
- return le(e, r, t.filter((e) => !a.has(e[i])));
91
+ let t = Array.isArray(z(e, r)) ? z(e, r) : [];
92
+ return he(e, r, t.filter((e) => !a.has(e[i])));
85
93
  };
86
- }, fe = (e, t, n) => {
87
- if (e.path !== void 0) return de(e, t, n);
94
+ }, ve = (e, t, n) => {
95
+ if (e.path !== void 0) return _e(e, t, n);
88
96
  switch (e.op) {
89
97
  case "insert": {
90
98
  let r = e.shape ? {
@@ -102,7 +110,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
102
110
  };
103
111
  }
104
112
  case "update": {
105
- let n = ue(e, t);
113
+ let n = ge(e, t);
106
114
  if (n === null) return null;
107
115
  let r = e.shape, i = r ? (e) => ({
108
116
  ...r(t, e),
@@ -113,36 +121,50 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
113
121
  ...t,
114
122
  optimistic: !0
115
123
  });
116
- return (e) => (Array.isArray(e) ? e : []).map((e) => {
117
- let t = e;
118
- return n.has(t.id) ? i(t) : t;
119
- });
124
+ return (e) => {
125
+ if (!Array.isArray(e)) {
126
+ let t = e;
127
+ return typeof t != "object" || !t ? e : n.has(t.id) ? i(t) : e;
128
+ }
129
+ return e.map((e) => {
130
+ let t = e;
131
+ return n.has(t.id) ? i(t) : t;
132
+ });
133
+ };
120
134
  }
121
135
  case "delete": {
122
- let n = ue(e, t);
123
- return n === null ? null : (e) => (Array.isArray(e) ? e : []).filter((e) => !n.has(e.id));
136
+ let n = ge(e, t);
137
+ return n === null ? null : (e) => {
138
+ if (!Array.isArray(e)) {
139
+ let t = e;
140
+ return typeof t != "object" || !t ? e : n.has(t.id) ? null : e;
141
+ }
142
+ return e.filter((e) => !n.has(e.id));
143
+ };
124
144
  }
125
145
  }
126
- }, pe = 5e3, me = class {
146
+ }, ye = 5e3, B = class {
127
147
  entries = /* @__PURE__ */ new Map();
128
148
  inactiveTtlMs;
129
149
  onChangeHook;
130
150
  errorBus;
151
+ mirror;
152
+ mergeCell;
131
153
  constructor(e = {}) {
132
- this.inactiveTtlMs = e.inactiveTtlMs ?? pe, this.onChangeHook = e.onChange, this.errorBus = e.errorBus;
154
+ this.inactiveTtlMs = e.inactiveTtlMs ?? ye, this.onChangeHook = e.onChange, this.errorBus = e.errorBus, this.mirror = e.mirror, this.mergeCell = e.mergeCell;
133
155
  }
134
156
  subscribe(e, t, n, r, i = {}) {
135
- let a = O(e), o = typeof e[0] == "string" ? e[0] : void 0, s = this.entries.get(a);
157
+ let a = L(e), o = typeof e[0] == "string" ? e[0] : void 0, s = this.entries.get(a);
136
158
  return s && s.evictionTimer !== null && (clearTimeout(s.evictionTimer), s.evictionTimer = null), s ? (s.fiber === null && (s.fetch = t, s.runtime = n, this.startFiber(s, t, n)), s.source === void 0 && i.source !== void 0 && (s.source = i.source)) : s = this.create(a, o, t, n, i.source), s.subscribers.add(r), {
137
159
  getSnapshot: () => this.getSnapshot(a),
138
160
  unsubscribe: () => this.unsubscribe(a, r)
139
161
  };
140
162
  }
141
163
  update(e, t, n) {
142
- let r = O(e), i = typeof e[0] == "string" ? e[0] : void 0, a = this.entries.get(r);
164
+ let r = L(e), i = typeof e[0] == "string" ? e[0] : void 0, a = this.entries.get(r);
143
165
  a ||= this.createStub(r, i);
144
166
  let o = {
145
- id: ce(),
167
+ id: me(),
146
168
  mutationId: n,
147
169
  reducer: t
148
170
  };
@@ -156,7 +178,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
156
178
  for (let i of this.entries.values()) {
157
179
  if (i.tag !== e) continue;
158
180
  let a = {
159
- id: `forTag-${++se}`,
181
+ id: `forTag-${++pe}`,
160
182
  mutationId: n,
161
183
  reducer: t
162
184
  };
@@ -173,12 +195,12 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
173
195
  confirmByMutation(e) {
174
196
  let t = !1;
175
197
  for (let n of this.entries.values()) for (let r of n.state.patches) r.mutationId === e && r.confirmed !== !0 && (r.confirmed = !0, t = !0);
176
- t && setTimeout(() => this.resyncUnechoedMutation(e), ae);
198
+ t && setTimeout(() => this.resyncUnechoedMutation(e), fe);
177
199
  }
178
200
  resyncUnechoedMutation(e) {
179
201
  for (let t of this.entries.values()) {
180
202
  if (!t.state.patches.some((t) => t.mutationId === e && t.confirmed === !0)) continue;
181
- let n = t.tag ?? t.key, r = `optimistic patch for ${n} got no superseding server event within ${ae}ms — the write is confirmed, so the preview is KEPT. Check reactivity for this query's source table.`;
203
+ let n = t.tag ?? t.key, r = `optimistic patch for ${n} got no superseding server event within ${fe}ms — the write is confirmed, so the preview is KEPT. Check reactivity for this query's source table.`;
182
204
  this.errorBus?.emit({
183
205
  source: "subscription",
184
206
  tag: n,
@@ -191,7 +213,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
191
213
  }
192
214
  }
193
215
  autoApply(e, t, n) {
194
- let r = `optimistic-${n}-${++se}`;
216
+ let r = `optimistic-${n}-${++pe}`;
195
217
  for (let i of e) for (let e of this.entries.values()) {
196
218
  if (!(Array.isArray(e.source) ? e.source.includes(i.table) : e.source === i.table)) continue;
197
219
  if (i.match !== void 0) {
@@ -204,7 +226,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
204
226
  if (!n) continue;
205
227
  }
206
228
  if (e.computed && i.op === "insert" && i.path === void 0) continue;
207
- let a = fe(i, t, r);
229
+ let a = ve(i, t, r);
208
230
  if (a === null) continue;
209
231
  let o = {
210
232
  id: `${r}-${e.key}`,
@@ -221,10 +243,10 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
221
243
  n.state.patches = n.state.patches.filter((e) => e.id !== t), n.state.patches.length !== r && this.invalidate(n);
222
244
  }
223
245
  peek(e) {
224
- return this.getSnapshot(O(e));
246
+ return this.getSnapshot(L(e));
225
247
  }
226
248
  getEntry(e) {
227
- return this.entries.get(O(e));
249
+ return this.entries.get(L(e));
228
250
  }
229
251
  size() {
230
252
  return this.entries.size;
@@ -243,7 +265,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
243
265
  return e;
244
266
  }
245
267
  destroy(e) {
246
- for (let t of this.entries.values()) t.evictionTimer !== null && clearTimeout(t.evictionTimer), t.fiber && e.runFork(h.interrupt(t.fiber));
268
+ for (let t of this.entries.values()) t.evictionTimer !== null && clearTimeout(t.evictionTimer), t.fiber && e.runFork(O.interrupt(t.fiber));
247
269
  this.entries.clear();
248
270
  }
249
271
  refreshAll(e) {
@@ -251,7 +273,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
251
273
  }
252
274
  reissue(e, t, n = !0) {
253
275
  if (!e.fetch) return;
254
- e.fiber && t.runFork(h.interrupt(e.fiber)), e.fiber = null;
276
+ e.fiber && t.runFork(O.interrupt(e.fiber)), e.fiber = null;
255
277
  let r = e.state.patches, i = e.state.base, a = e.state.baseRevision;
256
278
  e.state = this.freshState(), e.state.patches = r, n || (e.state.base = i, e.state.baseRevision = a), this.startFiber(e, e.fetch, t);
257
279
  }
@@ -295,7 +317,9 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
295
317
  fetch: n,
296
318
  runtime: r
297
319
  };
298
- return this.entries.set(e, a), this.startFiber(a, n, r), a;
320
+ return this.entries.set(e, a), this.startFiber(a, n, r), this.mirror !== void 0 && this.mirror.load(e).then((t) => {
321
+ t !== void 0 && this.entries.get(e) === a && a.state.base === void 0 && a.state.baseRevision === -1 && (a.state.base = t.data, a.state.baseRevision = t.revision, this.invalidate(a));
322
+ }).catch(() => {}), a;
299
323
  }
300
324
  createStub(e, t) {
301
325
  let n = {
@@ -323,24 +347,28 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
323
347
  };
324
348
  }
325
349
  startFiber(e, t, n) {
326
- let r = e.tag ?? e.key, i = t(), a = x.unwrapScoped(p.currentSpan.pipe(p.catchAll(() => p.succeed(void 0)), p.map((t) => (t && (e.traceId = t.traceId, D({
350
+ let r = e.tag ?? e.key, i = t(), a = M.unwrapScoped(E.currentSpan.pipe(E.catchAll(() => E.succeed(void 0)), E.map((t) => (t && (e.traceId = t.traceId, I({
327
351
  traceId: t.traceId,
328
352
  spanId: t.spanId,
329
353
  source: "subscription",
330
354
  tag: r
331
- })), i)))).pipe(x.withSpan(`client.subscription.${r}`, { attributes: { "rpc.tag": r } }));
332
- e.fiber = n.runFork(a.pipe(x.runForEach((t) => p.sync(() => {
355
+ })), i)))).pipe(M.withSpan(`client.subscription.${r}`, { attributes: { "rpc.tag": r } })), o = e.state.baseRevision >= 0 ? e.state.baseRevision : void 0, s = a.pipe(M.runForEach((t) => E.sync(() => {
333
356
  let n = e.state.base;
334
357
  if (t._tag === "snapshot") e.state.base = t.data, e.state.baseRevision = t.revision, e.state.baseEmittedAt = void 0, e.state.baseError = void 0, t.computed === !0 && (e.computed = !0);
335
- else if (t._tag === "error") e.state.baseError = u.fail(t.error), typeof t.revision == "number" && (e.state.baseRevision = t.revision);
358
+ else if (t._tag === "error") e.state.baseError = w.fail(t.error), typeof t.revision == "number" && (e.state.baseRevision = t.revision);
336
359
  else {
337
360
  let n = e.state.base;
338
- Array.isArray(n) && (e.state.base = S(n, t.patch)), e.state.baseRevision = t.revision, e.state.baseEmittedAt = t.emittedAt, e.state.baseError = void 0;
361
+ Array.isArray(n) && (e.state.base = F(n, t.patch, this.mergeCell === void 0 ? {} : { mergeCell: this.mergeCell })), e.state.baseRevision = t.revision, e.state.baseEmittedAt = t.emittedAt, e.state.baseError = void 0;
339
362
  }
340
- e.state.patches.some((e) => e.confirmed === !0) && oe(t, n, e.state.base) && (e.state.patches = e.state.patches.filter((e) => e.confirmed !== !0)), this.invalidate(e);
341
- })))), e.fiber.addObserver((t) => {
342
- if (m.isFailure(t) && !m.isInterrupted(t) && (e.state.baseRevision === -1 && (e.state.baseError = t.cause, this.invalidate(e)), this.errorBus)) {
343
- let n = u.squash(t.cause);
363
+ e.state.patches.some((e) => e.confirmed === !0) && R(t, n, e.state.base) && (e.state.patches = e.state.patches.filter((e) => e.confirmed !== !0)), this.mirror !== void 0 && t._tag !== "error" && this.mirror.save(e.key, {
364
+ tag: e.tag,
365
+ data: e.state.base,
366
+ revision: e.state.baseRevision
367
+ }).catch(() => {}), this.invalidate(e);
368
+ })));
369
+ e.fiber = n.runFork(o === void 0 ? s : s.pipe(E.locallyWith(N.currentHeaders, (e) => ne.set(e, "voltro-resume-from", String(o))))), e.fiber.addObserver((t) => {
370
+ if (D.isFailure(t) && !D.isInterrupted(t) && (e.state.baseRevision === -1 && (e.state.baseError = t.cause, this.invalidate(e)), this.errorBus)) {
371
+ let n = w.squash(t.cause);
344
372
  this.errorBus.emit({
345
373
  source: "subscription",
346
374
  tag: e.tag ?? e.key,
@@ -357,7 +385,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
357
385
  }
358
386
  getSnapshot(e) {
359
387
  let t = this.entries.get(e);
360
- if (!t) return ie;
388
+ if (!t) return de;
361
389
  if (t.state.cachedSnapshot !== null) return t.state.cachedSnapshot;
362
390
  let n = t.state.base;
363
391
  if (n !== void 0 && t.state.patches.length > 0) for (let e of t.state.patches) n = e.reducer(n);
@@ -377,17 +405,17 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
377
405
  scheduleEviction(e) {
378
406
  e.evictionTimer !== null && clearTimeout(e.evictionTimer), e.evictionTimer = setTimeout(() => {
379
407
  let t = this.entries.get(e.key);
380
- t && t.subscribers.size === 0 && (t.fiber && p.runFork(h.interrupt(t.fiber)), this.entries.delete(e.key));
408
+ t && t.subscribers.size === 0 && (t.fiber && E.runFork(O.interrupt(t.fiber)), this.entries.delete(e.key));
381
409
  }, this.inactiveTtlMs);
382
410
  }
383
- }, he = class extends me {
411
+ }, be = class extends B {
384
412
  subscribe(e, t, n, r, i = {}) {
385
413
  return {
386
414
  getSnapshot: () => this.peek(e),
387
415
  unsubscribe: () => {}
388
416
  };
389
417
  }
390
- }, ge = class {
418
+ }, V = class {
391
419
  #e = /* @__PURE__ */ new Set();
392
420
  on(e) {
393
421
  return this.#e.add(e), () => {
@@ -399,45 +427,45 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
399
427
  t(e);
400
428
  } catch {}
401
429
  }
402
- }, _e = e(null), ve = () => {
430
+ }, xe = m(null), Se = () => {
403
431
  throw Error("Voltro: rpc / cache calls are not invokable on a not-yet-resolved api — either during SSR, or in the client boot window before the api client resolves");
404
- }, ye = new Proxy(() => ve(), {
405
- get: (e, t) => ye,
432
+ }, Ce = new Proxy(() => Se(), {
433
+ get: (e, t) => Ce,
406
434
  has: () => !0,
407
- apply: () => ve()
408
- }), be = {
409
- runtime: { runPromiseExit: () => Promise.resolve(m.die(/* @__PURE__ */ Error("Voltro: mutations are not invokable during SSR"))) },
410
- cache: new he(),
411
- client: ye,
435
+ apply: () => Se()
436
+ }), we = {
437
+ runtime: { runPromiseExit: () => Promise.resolve(D.die(/* @__PURE__ */ Error("Voltro: mutations are not invokable during SSR"))) },
438
+ cache: new be(),
439
+ client: Ce,
412
440
  descriptors: {},
413
441
  inspectBaseUrl: "",
414
- errorBus: new ge()
415
- }, xe = {
416
- get: () => be,
442
+ errorBus: new V()
443
+ }, Te = {
444
+ get: () => we,
417
445
  names: []
418
- }, A = !1, j = !1, M = null, Se = () => {
419
- A = !1, j = !1, M !== null && (clearTimeout(M), M = null);
420
- }, Ce = () => {
421
- let e = r(_e);
422
- return e ? (j || (j = !0, M !== null && (clearTimeout(M), M = null)), e) : (typeof window < "u" && !A && !j && M === null && process.env.NODE_ENV !== "production" && (M = setTimeout(() => {
423
- M = null, !(A || j) && (A = !0, console.warn("useFrameworkRuntimes: no <FrameworkRuntimesProvider> in the tree — returning a loading baseline (subscriptions read `undefined`, mutations are no-ops). If this is not an intentional lazy/conditional mount, mount your app via @voltro/web mount() or wrap the subtree in <VoltroRuntimeProvider>."));
424
- }, 0)), xe);
425
- }, N = (e) => Ce().get(e), P = (e) => typeof e.runtime?.runFork != "function", we = async (e) => {
446
+ }, H = !1, Ee = !1, U = null, De = () => {
447
+ H = !1, Ee = !1, U !== null && (clearTimeout(U), U = null);
448
+ }, Oe = () => {
449
+ let e = _(xe);
450
+ return e ? (Ee || (Ee = !0, U !== null && (clearTimeout(U), U = null)), e) : (typeof window < "u" && !H && !Ee && U === null && process.env.NODE_ENV !== "production" && (U = setTimeout(() => {
451
+ U = null, !(H || Ee) && (H = !0, console.warn("useFrameworkRuntimes: no <FrameworkRuntimesProvider> in the tree — returning a loading baseline (subscriptions read `undefined`, mutations are no-ops). If this is not an intentional lazy/conditional mount, mount your app via @voltro/web mount() or wrap the subtree in <VoltroRuntimeProvider>."));
452
+ }, 0)), Te);
453
+ }, W = (e) => Oe().get(e), ke = (e) => typeof e.runtime?.runFork != "function", Ae = async (e) => {
426
454
  let { name: t, wsUrl: n, group: r, headers: i, webSocketConstructor: a } = e;
427
- class o extends d.Tag(`@voltro/client/AppClient/${t}`)() {}
428
- let s = _.succeed(C.WebSocketConstructor, (e, t) => a(e, t)), c = T.layerProtocolSocket().pipe(_.provide(ee.layerJson), _.provide(C.layerWebSocket(n)), _.provide(s)), l = typeof i == "function" ? await i() : i, u = _.scoped(o, T.make(r)).pipe(_.provide(c)), f = l ? _.locallyScoped(T.currentHeaders, w.fromInput(l)) : _.empty, p = v.make(_.merge(u, f));
455
+ class o extends T.Tag(`@voltro/client/AppClient/${t}`)() {}
456
+ let s = k.succeed(ie.WebSocketConstructor, (e, t) => a(e, t)), c = N.layerProtocolSocket().pipe(k.provide(P.layerJson), k.provide(ie.layerWebSocket(n)), k.provide(s)), l = typeof i == "function" ? await i() : i, u = k.scoped(o, N.make(r)).pipe(k.provide(c)), d = l ? k.locallyScoped(N.currentHeaders, ne.fromInput(l)) : k.empty, f = te.make(k.merge(u, d));
429
457
  try {
430
- let e = await p.runPromise(o), t = new ge();
458
+ let e = await f.runPromise(o), t = new V();
431
459
  return {
432
- runtime: p,
460
+ runtime: f,
433
461
  client: e,
434
- cache: new me({ errorBus: t }),
462
+ cache: new B({ errorBus: t }),
435
463
  errorBus: t
436
464
  };
437
465
  } catch (e) {
438
- throw p.dispose(), e;
466
+ throw f.dispose(), e;
439
467
  }
440
- }, Te = (e) => Math.min(500 * 2 ** Math.min(e - 1, 4), 5e3), Ee = () => ({
468
+ }, je = (e) => Math.min(500 * 2 ** Math.min(e - 1, 4), 5e3), Me = () => ({
441
469
  resolved: null,
442
470
  retryToken: 0,
443
471
  failureCount: 0,
@@ -446,15 +474,15 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
446
474
  everOpened: !1,
447
475
  wedgeStop: null,
448
476
  subjectMayHaveChanged: !1
449
- }), De = (e) => {
477
+ }), Ne = (e) => {
450
478
  e.wedgeStop !== null && (e.wedgeStop(), e.wedgeStop = null);
451
- }, Oe = (e) => {
479
+ }, Pe = (e) => {
452
480
  e.cache.destroy(e.runtime), e.runtime.dispose();
453
- }, ke = (e) => {
454
- let t = e.apis, n = e.buildClient, r = e.onChange, i = e.retryDelayMs ?? Te, a = e.stableWindowMs ?? 5e3, o = e.scheduler?.setTimeout ?? ((e, t) => setTimeout(e, t)), s = e.scheduler?.clearTimeout ?? ((e) => {
481
+ }, Fe = (e) => {
482
+ let t = e.apis, n = e.buildClient, r = e.onChange, i = e.retryDelayMs ?? je, a = e.stableWindowMs ?? 5e3, o = e.scheduler?.setTimeout ?? ((e, t) => setTimeout(e, t)), s = e.scheduler?.clearTimeout ?? ((e) => {
455
483
  clearTimeout(e);
456
484
  }), c = e.scheduler?.queueMicrotask ?? queueMicrotask, l = e.onReconnecting, u = e.wedgeBackstop, d = /* @__PURE__ */ new Map();
457
- for (let e of t) d.set(e.name, Ee());
485
+ for (let e of t) d.set(e.name, Me());
458
486
  let f = !1, p = /* @__PURE__ */ new Set(), m = (e, t) => {
459
487
  let n = o(() => {
460
488
  p.delete(n), e();
@@ -480,7 +508,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
480
508
  if (!t) return;
481
509
  let r = t.generation, i = () => {
482
510
  if (f || t.generation !== r) return;
483
- t.everOpened = !0, De(t), t.retryToken++;
511
+ t.everOpened = !0, Ne(t), t.retryToken++;
484
512
  let e = t.failureCount;
485
513
  m(() => {
486
514
  f || t.failureCount === e && (t.failureCount = 0);
@@ -491,11 +519,11 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
491
519
  try {
492
520
  let a = await n(e, r, i, o);
493
521
  if (f || t.generation !== r) {
494
- Oe(a);
522
+ Pe(a);
495
523
  return;
496
524
  }
497
525
  let s = t.resolved;
498
- s && !t.subjectMayHaveChanged && a.cache.seedStaleFrom(s.cache), t.subjectMayHaveChanged = !1, t.resolved = a, t.reconnectStatusDispose &&= (t.reconnectStatusDispose(), null), h(), s && Oe(s);
526
+ s && !t.subjectMayHaveChanged && a.cache.seedStaleFrom(s.cache), t.subjectMayHaveChanged = !1, t.resolved = a, t.reconnectStatusDispose &&= (t.reconnectStatusDispose(), null), h(), s && Pe(s);
499
527
  } catch {
500
528
  if (f || t.generation !== r) return;
501
529
  g(e);
@@ -503,7 +531,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
503
531
  }, v = (e) => {
504
532
  if (!f) for (let n of t) {
505
533
  let t = d.get(n.name);
506
- t && (e && (t.subjectMayHaveChanged = !0), t.retryToken += 1, t.generation += 1, t.failureCount = 0, De(t), _(n));
534
+ t && (e && (t.subjectMayHaveChanged = !0), t.retryToken += 1, t.generation += 1, t.failureCount = 0, Ne(t), _(n));
507
535
  }
508
536
  };
509
537
  return t.length === 0 ? (r(/* @__PURE__ */ new Map(), !0), {
@@ -520,7 +548,7 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
520
548
  f = !0;
521
549
  for (let e of p) s(e);
522
550
  p.clear();
523
- for (let [, e] of d) e.resolved && Oe(e.resolved), e.reconnectStatusDispose && e.reconnectStatusDispose(), De(e);
551
+ for (let [, e] of d) e.resolved && Pe(e.resolved), e.reconnectStatusDispose && e.reconnectStatusDispose(), Ne(e);
524
552
  d.clear();
525
553
  }
526
554
  },
@@ -531,8 +559,8 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
531
559
  v(!1);
532
560
  }
533
561
  });
534
- }, Ae = ({ apis: e, children: t }) => {
535
- let n = o(() => ({
562
+ }, Ie = ({ apis: e, children: t }) => {
563
+ let n = b(() => ({
536
564
  get: (t) => {
537
565
  let n = e.get(t);
538
566
  if (!n) {
@@ -543,45 +571,45 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
543
571
  },
544
572
  names: Array.from(e.keys())
545
573
  }), [e]);
546
- return /* @__PURE__ */ te(_e.Provider, {
574
+ return /* @__PURE__ */ ae(xe.Provider, {
547
575
  value: n,
548
576
  children: t
549
577
  });
550
- }, je = Symbol.for("@voltro/client/storeStorageProvider"), Me = () => {
551
- let e = globalThis, t = e[je];
578
+ }, Le = Symbol.for("@voltro/client/storeStorageProvider"), Re = () => {
579
+ let e = globalThis, t = e[Le];
552
580
  if (t !== void 0) return t;
553
581
  let n = {
554
582
  provider: void 0,
555
583
  used: !1
556
584
  };
557
- return e[je] = n, n;
558
- }, Ne = (e) => {
585
+ return e[Le] = n, n;
586
+ }, ze = (e) => {
559
587
  if (typeof window > "u") return null;
560
588
  try {
561
589
  return (e === "session" ? window.sessionStorage : window.localStorage) ?? null;
562
590
  } catch {
563
591
  return null;
564
592
  }
565
- }, Pe = (e) => {
566
- let t = Me();
593
+ }, Be = (e) => {
594
+ let t = Re();
567
595
  t.used && e !== null && console.warn("[voltro] setStoreStorage() was called after a persisted store had already read. That store booted against the previous backing store and will not be re-read. Install storage before the first render — on React Native, after awaiting hydrate()."), t.provider = e ?? void 0;
568
- }, Fe = (e) => {
569
- let t = Me();
570
- return t.used = !0, (t.provider ?? Ne)(e);
571
- }, Ie = () => {
572
- let e = Me();
596
+ }, Ve = (e) => {
597
+ let t = Re();
598
+ return t.used = !0, (t.provider ?? ze)(e);
599
+ }, He = () => {
600
+ let e = Re();
573
601
  e.provider = void 0, e.used = !1;
574
- }, F = (e, t) => {
602
+ }, Ue = (e, t) => {
575
603
  if (Object.is(e, t)) return !0;
576
604
  if (typeof e != "object" || typeof t != "object" || e === null || t === null || Array.isArray(e) !== Array.isArray(t)) return !1;
577
605
  let n = Object.keys(e), r = Object.keys(t);
578
606
  if (n.length !== r.length) return !1;
579
607
  for (let r of n) if (!Object.prototype.hasOwnProperty.call(t, r) || !Object.is(e[r], t[r])) return !1;
580
608
  return !0;
581
- }, Le = 50, Re = /* @__PURE__ */ new Set(), ze = (e, t) => {
582
- Re.has(e) || (Re.add(e), console.warn(t));
583
- }, Be = "\0global", Ve = null, He = (e, t, n) => {
584
- let r = Ve?.() ?? null;
609
+ }, We = 50, Ge = /* @__PURE__ */ new Set(), Ke = (e, t) => {
610
+ Ge.has(e) || (Ge.add(e), console.warn(t));
611
+ }, qe = "\0global", Je = null, Ye = (e, t, n) => {
612
+ let r = Je?.() ?? null;
585
613
  if (r === null) return n;
586
614
  let i = n;
587
615
  for (let n of r.seeds) n.store === e && n.key === t && (i = {
@@ -589,9 +617,9 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
589
617
  ...n.value
590
618
  });
591
619
  return i;
592
- }, Ue = (e, t) => {
620
+ }, Xe = (e, t) => {
593
621
  let n = e(), r = /* @__PURE__ */ new Set(), i = 0, a = 0, o, s, c = () => {
594
- if (i >= Le) throw i = 0, Error(`defineStore: notification depth exceeded ${Le} — a subscriber writes a NEW value every time it is notified, so the store can never settle. Look for a listener calling set() with something derived from the current state without converging.`);
622
+ if (i >= We) throw i = 0, Error(`defineStore: notification depth exceeded ${We} — a subscriber writes a NEW value every time it is notified, so the store can never settle. Look for a listener calling set() with something derived from the current state without converging.`);
595
623
  i += 1;
596
624
  try {
597
625
  for (let e of [...r]) e();
@@ -612,20 +640,20 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
612
640
  if (typeof i?.then == "function") throw a === 1 && o !== void 0 && (n = o), --a, a === 0 && (o = void 0, s = void 0), Error(`defineStore: batch('${e}') was given an async function. A batch is synchronous — everything after the first await would land outside it. Await the work first, then batch the writes: \`const r = await load(); store.batch('${e}', () => { … })\`.`);
613
641
  if (--a, a > 0) return;
614
642
  let l = o, u = s;
615
- o = void 0, s = void 0, !F(l, n) && (t(l, n, u), c());
643
+ o = void 0, s = void 0, !Ue(l, n) && (t(l, n, u), c());
616
644
  },
617
645
  set: (e, r) => {
618
646
  let i = typeof e == "function" ? e(n) : {
619
647
  ...n,
620
648
  ...e
621
649
  };
622
- if (F(i, n)) return;
650
+ if (Ue(i, n)) return;
623
651
  let o = n;
624
652
  n = i, !(a > 0) && (t(o, i, r), c());
625
653
  },
626
654
  reset: () => {
627
655
  let r = e();
628
- if (F(r, n)) return;
656
+ if (Ue(r, n)) return;
629
657
  let i = n;
630
658
  n = r, !(a > 0) && (t(i, r, "reset"), c());
631
659
  },
@@ -633,56 +661,56 @@ var ne = /* @__PURE__ */ new Set(), D = (e) => {
633
661
  r.delete(e);
634
662
  })
635
663
  };
636
- }, We = 200, I = [], Ge = /* @__PURE__ */ new Set(), Ke = [], qe = () => Ke, Je = (e) => (Ge.add(e), () => {
637
- Ge.delete(e);
638
- }), Ye = () => {
639
- I.length = 0, Ke = [];
640
- }, Xe = (e, t) => {
641
- let n = I[e];
664
+ }, Ze = 200, G = [], Qe = /* @__PURE__ */ new Set(), $e = [], et = () => $e, tt = (e) => (Qe.add(e), () => {
665
+ Qe.delete(e);
666
+ }), nt = () => {
667
+ G.length = 0, $e = [];
668
+ }, rt = (e, t) => {
669
+ let n = G[e];
642
670
  if (n === void 0) return !1;
643
- let r = z.get(n.store);
671
+ let r = q.get(n.store);
644
672
  if (r === void 0) return !1;
645
673
  let i = t === "before" ? n.prev : n.next;
646
- R = !0;
674
+ it = !0;
647
675
  try {
648
676
  r.set(() => i, n.key, `travel:${t}`);
649
677
  } finally {
650
- R = !1;
678
+ it = !1;
651
679
  }
652
680
  return !0;
653
- }, L = !1, R = !1, Ze = (e) => {
654
- I.push(e), I.length > We && I.shift(), Ke = [...I];
655
- for (let e of [...Ge]) e();
656
- }, z = /* @__PURE__ */ new Map(), Qe = /* @__PURE__ */ new Map(), $e = 0, et = !1, tt = /* @__PURE__ */ new Map(), nt = () => (et || (et = !0, queueMicrotask(() => {
657
- $e += 1, et = !1;
658
- })), $e), rt = it(((/* @__PURE__ */ Error()).stack ?? "").split("\n")[1] ?? "") ?? "";
659
- function it(e) {
681
+ }, K = !1, it = !1, at = (e) => {
682
+ G.push(e), G.length > Ze && G.shift(), $e = [...G];
683
+ for (let e of [...Qe]) e();
684
+ }, q = /* @__PURE__ */ new Map(), ot = /* @__PURE__ */ new Map(), st = 0, ct = !1, lt = /* @__PURE__ */ new Map(), ut = () => (ct || (ct = !0, queueMicrotask(() => {
685
+ st += 1, ct = !1;
686
+ })), st), dt = ft(((/* @__PURE__ */ Error()).stack ?? "").split("\n")[1] ?? "") ?? "";
687
+ function ft(e) {
660
688
  let t = e.trim().replace(/^at\s+/, ""), n = /\(([^()]+)\)\s*$/.exec(t)?.[1] ?? t;
661
689
  return n.length > 0 ? n : void 0;
662
690
  }
663
- var at = () => {
691
+ var pt = () => {
664
692
  let e = (/* @__PURE__ */ Error()).stack;
665
693
  if (typeof e != "string") return "<unknown>";
666
694
  for (let t of e.split("\n").slice(1)) {
667
- let e = it(t);
695
+ let e = ft(t);
668
696
  if (e === void 0) continue;
669
697
  let n = e.replace(/:\d+:\d+$/, "");
670
- if (rt === "" || n !== rt.replace(/:\d+:\d+$/, "")) return n;
698
+ if (dt === "" || n !== dt.replace(/:\d+:\d+$/, "")) return n;
671
699
  }
672
700
  return "<unknown>";
673
- }, ot = () => [...z.values()], st = (e, t, r) => {
674
- let a = at(), o = nt(), c = z.get(e);
675
- if (c !== void 0) {
676
- let t = Qe.get(e) ?? "<unknown>", n = tt.get(e) === o;
677
- if (a !== "<unknown>" && a === t && !n) return c;
678
- throw Error(`defineStore: '${e}' is already defined. Store names are the devtools + seed key, so two stores sharing one name would silently share state. Rename one.\n first: ${t}\n second: ${a}`);
679
- }
680
- let u = r?.persist, d = () => Fe(u?.storage === "session" ? "session" : "local"), f = () => {
681
- let e = d();
682
- if (e === null || u === void 0) return;
701
+ }, mt = () => [...q.values()], ht = (e, t, n) => {
702
+ let r = pt(), i = ut(), a = q.get(e);
703
+ if (a !== void 0) {
704
+ let t = ot.get(e) ?? "<unknown>", n = lt.get(e) === i;
705
+ if (r !== "<unknown>" && r === t && !n) return a;
706
+ throw Error(`defineStore: '${e}' is already defined. Store names are the devtools + seed key, so two stores sharing one name would silently share state. Rename one.\n first: ${t}\n second: ${r}`);
707
+ }
708
+ let o = n?.persist, s = () => Ve(o?.storage === "session" ? "session" : "local"), c = () => {
709
+ let e = s();
710
+ if (e === null || o === void 0) return;
683
711
  let t;
684
712
  try {
685
- t = e.getItem(u.key);
713
+ t = e.getItem(o.key);
686
714
  } catch {
687
715
  return;
688
716
  }
@@ -693,160 +721,160 @@ var at = () => {
693
721
  } catch {
694
722
  return;
695
723
  }
696
- return u.migrate ? u.migrate(n) : n;
697
- }, p = (e) => {
698
- let t = d();
699
- if (t === null || u === void 0) return;
700
- let n = u.pick ? u.pick(e) : e;
724
+ return o.migrate ? o.migrate(n) : n;
725
+ }, l = (e) => {
726
+ let t = s();
727
+ if (t === null || o === void 0) return;
728
+ let n = o.pick ? o.pick(e) : e;
701
729
  try {
702
- t.setItem(u.key, JSON.stringify(n));
730
+ t.setItem(o.key, JSON.stringify(n));
703
731
  } catch {}
704
- }, m = /* @__PURE__ */ new Map(), h = (n) => {
705
- let r = n ?? Be, i = m.get(r);
732
+ }, u = /* @__PURE__ */ new Map(), d = (n) => {
733
+ let r = n ?? qe, i = u.get(r);
706
734
  if (i === void 0) {
707
735
  let a = n;
708
- i = Ue(u !== void 0 && n === void 0 ? () => {
736
+ i = Xe(o !== void 0 && n === void 0 ? () => {
709
737
  let e = t();
710
- return g = e, {
738
+ return f = e, {
711
739
  ...e,
712
- ...f() ?? {}
740
+ ...c() ?? {}
713
741
  };
714
742
  } : t, (t, n, r) => {
715
- if (u !== void 0 && a === void 0 && p(n), !L && !R) {
716
- let e = v(a);
743
+ if (o !== void 0 && a === void 0 && l(n), !K && !it) {
744
+ let e = m(a);
717
745
  e.steps.length = e.cursor, e.steps.push({
718
746
  prev: t,
719
747
  next: n
720
- }), e.steps.length > y && e.steps.shift(), e.cursor = e.steps.length;
748
+ }), e.steps.length > h && e.steps.shift(), e.cursor = e.steps.length;
721
749
  }
722
- Ze({
750
+ at({
723
751
  store: e,
724
752
  ...a === void 0 ? {} : { key: a },
725
753
  ...r === void 0 ? {} : { label: r },
726
- ...L || R ? { isUndo: !0 } : {},
754
+ ...K || it ? { isUndo: !0 } : {},
727
755
  prev: t,
728
756
  next: n,
729
757
  at: Date.now()
730
758
  });
731
- }), m.set(r, i);
759
+ }), u.set(r, i);
732
760
  }
733
761
  return i;
734
- }, g, _ = /* @__PURE__ */ new Map(), v = (e) => {
735
- let t = e ?? Be, n = _.get(t);
762
+ }, f, p = /* @__PURE__ */ new Map(), m = (e) => {
763
+ let t = e ?? qe, n = p.get(t);
736
764
  return n === void 0 && (n = {
737
765
  steps: [],
738
766
  cursor: 0
739
- }, _.set(t, n)), n;
740
- }, y = 100, b = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Map(), S = (e) => {
741
- let t = x.get(e);
742
- t !== void 0 && (clearTimeout(t), x.delete(e)), b.set(e, (b.get(e) ?? 0) + 1);
743
- }, C = (e) => {
744
- let t = (b.get(e) ?? 1) - 1;
767
+ }, p.set(t, n)), n;
768
+ }, h = 100, _ = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), b = (e) => {
769
+ let t = y.get(e);
770
+ t !== void 0 && (clearTimeout(t), y.delete(e)), _.set(e, (_.get(e) ?? 0) + 1);
771
+ }, S = (e) => {
772
+ let t = (_.get(e) ?? 1) - 1;
745
773
  if (t > 0) {
746
- b.set(e, t);
774
+ _.set(e, t);
747
775
  return;
748
776
  }
749
- b.delete(e), x.set(e, setTimeout(() => {
750
- x.delete(e), (b.get(e) ?? 0) === 0 && m.delete(e);
777
+ _.delete(e), y.set(e, setTimeout(() => {
778
+ y.delete(e), (_.get(e) ?? 0) === 0 && u.delete(e);
751
779
  }, 0));
752
780
  }, w = {
753
781
  name: e,
754
- use: (t, r) => {
755
- let a = h(r?.key), o = s(t);
756
- o.current = t;
757
- let c = s(r?.equals);
758
- c.current = r?.equals;
759
- let u = s({
782
+ use: (t, n) => {
783
+ let r = d(n?.key), i = x(t);
784
+ i.current = t;
785
+ let a = x(n?.equals);
786
+ a.current = n?.equals;
787
+ let o = x({
760
788
  state: void 0,
761
789
  value: void 0,
762
790
  has: !1
763
- }), d = n((t) => {
764
- let n = u.current;
791
+ }), s = g((t) => {
792
+ let n = o.current;
765
793
  if (n.has && Object.is(n.state, t)) return n.value;
766
- let r = o.current(t), i = c.current, a = n.has && (i ? i(n.value, r) : Object.is(n.value, r));
767
- process.env.NODE_ENV !== "production" && i === void 0 && n.has && !a && typeof r == "object" && r && F(n.value, r) && ze(e, `[@voltro/client] ${e}.use(): the selector returns a NEW object each call, so the default identity check never sees it as unchanged and this component re-renders on EVERY store change.\n Pass \`{ equals: shallow }\` (exported from @voltro/client), or select a primitive.`);
768
- let s = a ? n.value : r;
769
- return u.current = {
794
+ let r = i.current(t), s = a.current, c = n.has && (s ? s(n.value, r) : Object.is(n.value, r));
795
+ process.env.NODE_ENV !== "production" && s === void 0 && n.has && !c && typeof r == "object" && r && Ue(n.value, r) && Ke(e, `[@voltro/client] ${e}.use(): the selector returns a NEW object each call, so the default identity check never sees it as unchanged and this component re-renders on EVERY store change.\n Pass \`{ equals: shallow }\` (exported from @voltro/client), or select a primitive.`);
796
+ let l = c ? n.value : r;
797
+ return o.current = {
770
798
  state: t,
771
- value: s,
799
+ value: l,
772
800
  has: !0
773
- }, s;
774
- }, []), f = r?.key, p = r?.retain === !0, m = n((e) => {
775
- let t = a.subscribe(e);
776
- return f !== void 0 && !p && S(f), () => {
777
- t(), f !== void 0 && !p && C(f);
801
+ }, l;
802
+ }, []), c = n?.key, l = n?.retain === !0, u = g((e) => {
803
+ let t = r.subscribe(e);
804
+ return c !== void 0 && !l && b(c), () => {
805
+ t(), c !== void 0 && !l && S(c);
778
806
  };
779
807
  }, [
780
- a,
781
- f,
782
- p
783
- ]), _ = n(() => d(a.get()), [a, d]), v = n(() => d(He(e, r?.key, r?.key === void 0 && g !== void 0 ? g : a.get())), [
784
- a,
785
- r?.key,
786
- d
787
- ]), y = l(m, _, v);
788
- return i(y), y;
808
+ r,
809
+ c,
810
+ l
811
+ ]), p = g(() => s(r.get()), [r, s]), m = g(() => s(Ye(e, n?.key, n?.key === void 0 && f !== void 0 ? f : r.get())), [
812
+ r,
813
+ n?.key,
814
+ s
815
+ ]), h = C(u, p, m);
816
+ return v(h), h;
789
817
  },
790
- instance: h,
791
- get: (e) => h(e).get(),
818
+ instance: d,
819
+ get: (e) => d(e).get(),
792
820
  set: (e, t, n) => {
793
- h(t).set(e, n);
821
+ d(t).set(e, n);
794
822
  },
795
823
  batch: (e, t, n) => {
796
- h(n).batch(e, t);
824
+ d(n).batch(e, t);
797
825
  },
798
826
  undo: (e) => {
799
- let t = v(e);
827
+ let t = m(e);
800
828
  if (t.cursor === 0) return !1;
801
- --t.cursor, L = !0;
829
+ --t.cursor, K = !0;
802
830
  try {
803
- h(e).set(() => t.steps[t.cursor].prev, "undo");
831
+ d(e).set(() => t.steps[t.cursor].prev, "undo");
804
832
  } finally {
805
- L = !1;
833
+ K = !1;
806
834
  }
807
835
  return !0;
808
836
  },
809
837
  redo: (e) => {
810
- let t = v(e);
838
+ let t = m(e);
811
839
  if (t.cursor >= t.steps.length) return !1;
812
840
  let n = t.steps[t.cursor];
813
- t.cursor += 1, L = !0;
841
+ t.cursor += 1, K = !0;
814
842
  try {
815
- h(e).set(() => n.next, "redo");
843
+ d(e).set(() => n.next, "redo");
816
844
  } finally {
817
- L = !1;
845
+ K = !1;
818
846
  }
819
847
  return !0;
820
848
  },
821
- canUndo: (e) => v(e).cursor > 0,
849
+ canUndo: (e) => m(e).cursor > 0,
822
850
  canRedo: (e) => {
823
- let t = v(e);
851
+ let t = m(e);
824
852
  return t.cursor < t.steps.length;
825
853
  },
826
854
  release: (e) => {
827
- m.delete(e), _.delete(e);
855
+ u.delete(e), p.delete(e);
828
856
  },
829
- keys: () => [...m.keys()].filter((e) => e !== Be)
857
+ keys: () => [...u.keys()].filter((e) => e !== qe)
830
858
  };
831
- return z.set(e, w), Qe.set(e, a), tt.set(e, o), w;
832
- }, ct = () => {
833
- z.clear(), Qe.clear(), tt.clear(), Re.clear();
834
- }, lt = () => ({ seeds: [] }), ut = (e) => {
835
- Ve = e;
836
- }, dt = (e, t, n) => {
837
- let r = Ve?.() ?? null;
859
+ return q.set(e, w), ot.set(e, r), lt.set(e, i), w;
860
+ }, gt = () => {
861
+ q.clear(), ot.clear(), lt.clear(), Ge.clear();
862
+ }, _t = () => ({ seeds: [] }), vt = (e) => {
863
+ Je = e;
864
+ }, yt = (e, t, n) => {
865
+ let r = Je?.() ?? null;
838
866
  if (r === null) throw Error(`seedStore('${e.name}') was called outside a server render. Seeding exists to put a value into the SSR hydration payload; on the client, set the store directly instead. (If this IS server code, the render did not install a seed bag — that is a framework bug.)`);
839
867
  r.seeds.push({
840
868
  store: e.name,
841
869
  ...n?.key === void 0 ? {} : { key: n.key },
842
870
  value: t
843
871
  });
844
- }, ft = (e) => {
872
+ }, bt = (e) => {
845
873
  if (e !== void 0) for (let t of e) {
846
- let e = z.get(t.store);
874
+ let e = q.get(t.store);
847
875
  e !== void 0 && e.set(t.value, t.key);
848
876
  }
849
- }, B = (e, t) => {
877
+ }, J = (e, t) => {
850
878
  let n = t.split("."), r = e;
851
879
  for (let e = 0; e < n.length; e++) {
852
880
  let i = n[e];
@@ -865,63 +893,63 @@ var at = () => {
865
893
  }
866
894
  if (typeof r != "function") throw Error(`@voltro/client: rpc tag ${JSON.stringify(t)} did not resolve to a callable method.`);
867
895
  return r;
868
- }, pt = Object.freeze({
896
+ }, xt = Object.freeze({
869
897
  data: void 0,
870
898
  revision: -1,
871
899
  emittedAt: void 0,
872
900
  error: void 0,
873
901
  pendingPatches: 0
874
- }), mt = () => pt;
875
- function V(e, t, r = {}, i = {}) {
876
- let a = i.skip === !0, { runtime: c, cache: u, client: d, descriptors: f } = N(e), p = f[t]?.source, m = s(r);
877
- m.current = r;
878
- let h = s(d);
879
- h.current = d;
880
- let g = o(() => JSON.stringify(Object.entries(r).sort(([e], [t]) => e.localeCompare(t))), [r]), _ = o(() => {
881
- let e = m.current;
902
+ }), St = () => xt;
903
+ function Y(e, t, n = {}, r = {}) {
904
+ let i = r.skip === !0, { runtime: a, cache: o, client: s, descriptors: c } = W(e), l = c[t]?.source, u = x(n);
905
+ u.current = n;
906
+ let d = x(s);
907
+ d.current = s;
908
+ let f = b(() => JSON.stringify(Object.entries(n).sort(([e], [t]) => e.localeCompare(t))), [n]), p = b(() => {
909
+ let e = u.current;
882
910
  return {
883
911
  queryKey: [t, e],
884
- fetch: () => B(h.current, t)(e)
912
+ fetch: () => J(d.current, t)(e)
885
913
  };
886
- }, [t, g]), v = _.queryKey, y = n((e) => a ? () => {} : u.subscribe(_.queryKey, _.fetch, c, e, p === void 0 ? {} : { source: p }).unsubscribe, [
887
- u,
888
- c,
889
- p,
890
- a,
891
- _
892
- ]), b = n(() => a ? pt : u.peek(v), [
893
- u,
914
+ }, [t, f]), m = p.queryKey, h = g((e) => i ? () => {} : o.subscribe(p.queryKey, p.fetch, a, e, l === void 0 ? {} : { source: l }).unsubscribe, [
915
+ o,
894
916
  a,
895
- v
896
- ]), x = l(y, b, mt), S = x.data !== void 0, C = S && (Array.isArray(x.data) ? x.data.length === 0 : x.data === null), w = {
897
- revision: x.revision,
898
- emittedAt: x.emittedAt,
899
- error: x.error,
900
- pendingPatches: x.pendingPatches
917
+ l,
918
+ i,
919
+ p
920
+ ]), _ = g(() => i ? xt : o.peek(m), [
921
+ o,
922
+ i,
923
+ m
924
+ ]), v = C(h, _, St), y = v.data !== void 0, S = y && (Array.isArray(v.data) ? v.data.length === 0 : v.data === null), w = {
925
+ revision: v.revision,
926
+ emittedAt: v.emittedAt,
927
+ error: v.error,
928
+ pendingPatches: v.pendingPatches
901
929
  };
902
- if (i.initialSnapshot !== void 0) {
903
- let e = Array.isArray(i.initialSnapshot) ? i.initialSnapshot.length === 0 : i.initialSnapshot === null;
930
+ if (r.initialSnapshot !== void 0) {
931
+ let e = Array.isArray(r.initialSnapshot) ? r.initialSnapshot.length === 0 : r.initialSnapshot === null;
904
932
  return {
905
933
  ...w,
906
- data: S ? x.data : i.initialSnapshot,
934
+ data: y ? v.data : r.initialSnapshot,
907
935
  loading: !1,
908
- idle: a,
909
- isEmpty: S ? C : e,
936
+ idle: i,
937
+ isEmpty: y ? S : e,
910
938
  failed: !1
911
939
  };
912
940
  }
913
- return i.fallback === void 0 ? a ? {
941
+ return r.fallback === void 0 ? i ? {
914
942
  ...w,
915
943
  data: void 0,
916
944
  loading: !1,
917
945
  isEmpty: !1,
918
946
  idle: !0,
919
947
  failed: !1
920
- } : S ? {
948
+ } : y ? {
921
949
  ...w,
922
- data: x.data,
950
+ data: v.data,
923
951
  loading: !1,
924
- isEmpty: C,
952
+ isEmpty: S,
925
953
  idle: !1,
926
954
  failed: !1
927
955
  } : w.error === void 0 ? {
@@ -941,38 +969,38 @@ function V(e, t, r = {}, i = {}) {
941
969
  error: w.error
942
970
  } : {
943
971
  ...w,
944
- data: S ? x.data : i.fallback,
945
- loading: !S && !a,
946
- idle: a,
947
- isEmpty: C,
948
- failed: !S && w.error !== void 0
972
+ data: y ? v.data : r.fallback,
973
+ loading: !y && !i,
974
+ idle: i,
975
+ isEmpty: S,
976
+ failed: !y && w.error !== void 0
949
977
  };
950
978
  }
951
979
  //#endregion
952
980
  //#region src/runRpc.ts
953
- var H = async (e, t) => {
981
+ var X = async (e, t) => {
954
982
  let n = await e.runPromiseExit(t);
955
- if (m.isSuccess(n)) return n.value;
956
- throw u.squash(n.cause);
957
- }, ht = 100, U = [], gt = /* @__PURE__ */ new Set(), _t = [], vt = () => {
958
- _t = U.slice();
959
- }, yt = () => {
960
- vt();
961
- for (let e of gt) try {
983
+ if (D.isSuccess(n)) return n.value;
984
+ throw w.squash(n.cause);
985
+ }, Ct = 100, Z = [], wt = /* @__PURE__ */ new Set(), Tt = [], Et = () => {
986
+ Tt = Z.slice();
987
+ }, Dt = () => {
988
+ Et();
989
+ for (let e of wt) try {
962
990
  e();
963
991
  } catch {}
964
- }, bt = (e) => {
992
+ }, Ot = (e) => {
965
993
  let t = {
966
994
  ...e,
967
995
  status: "pending",
968
996
  startedAt: Date.now()
969
997
  };
970
- U.unshift(t), U.length > ht && (U.length = ht), yt();
971
- }, W = (e, t) => {
972
- let n = U.findIndex((t) => t.id === e);
998
+ Z.unshift(t), Z.length > Ct && (Z.length = Ct), Dt();
999
+ }, kt = (e, t) => {
1000
+ let n = Z.findIndex((t) => t.id === e);
973
1001
  if (n === -1) return;
974
- let r = U[n], i = Date.now();
975
- U[n] = t.status === "success" ? {
1002
+ let r = Z[n], i = Date.now();
1003
+ Z[n] = t.status === "success" ? {
976
1004
  ...r,
977
1005
  status: "success",
978
1006
  output: t.output,
@@ -984,12 +1012,12 @@ var H = async (e, t) => {
984
1012
  error: t.error,
985
1013
  settledAt: i,
986
1014
  durationMs: i - r.startedAt
987
- }, yt();
988
- }, xt = () => _t, St = (e) => (gt.add(e), () => {
989
- gt.delete(e);
990
- }), Ct = () => {
991
- U.length !== 0 && (U.length = 0, yt());
992
- }, wt = (e, t) => {
1015
+ }, Dt();
1016
+ }, At = () => Tt, jt = (e) => (wt.add(e), () => {
1017
+ wt.delete(e);
1018
+ }), Mt = () => {
1019
+ Z.length !== 0 && (Z.length = 0, Dt());
1020
+ }, Nt = (e, t) => {
993
1021
  if (t === void 0 || typeof e != "object" || !e) return e;
994
1022
  try {
995
1023
  Object.defineProperty(e, "__voltroTraceId", {
@@ -999,107 +1027,107 @@ var H = async (e, t) => {
999
1027
  });
1000
1028
  } catch {}
1001
1029
  return e;
1002
- }, G, Tt = (e) => {
1003
- G = e;
1004
- }, Et = () => G, Dt = (e, t, n) => typeof e == "function" ? e(t, n) : e, Ot = 0, kt = () => `mut_${++Ot}`, At = 0, jt = () => {
1030
+ }, Pt, Ft = (e) => {
1031
+ Pt = e;
1032
+ }, It = () => Pt, Lt = (e, t, n) => typeof e == "function" ? e(t, n) : e, Rt = 0, zt = () => `mut_${++Rt}`, Bt = 0, Vt = () => {
1005
1033
  let e = typeof crypto < "u" ? crypto : void 0;
1006
- return e && typeof e.randomUUID == "function" ? e.randomUUID() : `idem_${Date.now().toString(36)}_${At += 1}`;
1007
- }, Mt = (e, t) => e.pipe(p.locallyWith(T.currentHeaders, (e) => w.set(e, "idempotency-key", t))), Nt = (e, t) => ({
1034
+ return e && typeof e.randomUUID == "function" ? e.randomUUID() : `idem_${Date.now().toString(36)}_${Bt += 1}`;
1035
+ }, Ht = (e, t) => e.pipe(E.locallyWith(N.currentHeaders, (e) => ne.set(e, "idempotency-key", t))), Ut = (e, t) => ({
1008
1036
  update: (n, r) => {
1009
1037
  e.update(n, r, t);
1010
1038
  },
1011
1039
  forTag: (n, r) => e.forTag(n, r, t)
1012
- }), K = (e, t) => {
1013
- let { runtime: r, cache: i, client: a, descriptors: l, errorBus: u } = N(e), d = l[t], f = d?.targets;
1040
+ }), Q = (e, t) => {
1041
+ let { runtime: n, cache: r, client: i, descriptors: a, errorBus: o } = W(e), s = a[t], c = s?.targets;
1014
1042
  if (process.env.NODE_ENV !== "production") {
1015
- let n = d?.kind;
1043
+ let n = s?.kind;
1016
1044
  n !== void 0 && n !== "mutation" && console.error(`[@voltro/client] useMutation('${e}', '${t}') targets a ${n}, not a mutation. Use ${n === "action" ? "useAction" : n === "workflow" ? "useWorkflow" : `the ${n} hook`} instead.`);
1017
1045
  }
1018
- let [m, h] = c(!1), [g, _] = c(void 0), [v, y] = c(void 0), b = s(null), x = s(!1), S = n(async (n, o) => {
1019
- let s = o?.onError !== void 0 || o?.notify?.error !== void 0, c = (e) => {
1020
- o?.onError?.(e, n);
1021
- let t = Dt(o?.notify?.error, e, n);
1022
- t !== void 0 && G?.error(t);
1046
+ let [l, u] = S(!1), [d, f] = S(void 0), [p, m] = S(void 0), h = x(null), _ = x(!1), v = g(async (a, s) => {
1047
+ let l = s?.onError !== void 0 || s?.notify?.error !== void 0, d = (e) => {
1048
+ s?.onError?.(e, a);
1049
+ let t = Lt(s?.notify?.error, e, a);
1050
+ t !== void 0 && Pt?.error(t);
1023
1051
  };
1024
- h(!0), _(void 0);
1025
- let l = kt(), d = o?.idempotencyKey ?? jt();
1026
- bt({
1027
- id: l,
1052
+ u(!0), f(void 0);
1053
+ let p = zt(), g = s?.idempotencyKey ?? Vt();
1054
+ Ot({
1055
+ id: p,
1028
1056
  apiName: e,
1029
1057
  tag: t,
1030
- input: n
1058
+ input: a
1031
1059
  });
1032
- let m = b.current, g = x.current;
1033
- if (m) try {
1034
- m(Nt(i, l), n);
1060
+ let v = h.current, y = _.current;
1061
+ if (v) try {
1062
+ v(Ut(r, p), a);
1035
1063
  } catch (e) {
1036
- if (_(e), h(!1), i.revertByMutation(l), W(l, {
1064
+ if (f(e), u(!1), r.revertByMutation(p), kt(p, {
1037
1065
  status: "error",
1038
1066
  error: e
1039
- }), s) return c(e);
1067
+ }), l) return d(e);
1040
1068
  throw e;
1041
1069
  }
1042
- else !g && f && f.length > 0 && i.autoApply(f, n, l);
1043
- let v;
1070
+ else !y && c && c.length > 0 && r.autoApply(c, a, p);
1071
+ let b;
1044
1072
  try {
1045
- let s = B(a, t), c = p.currentSpan.pipe(p.tap((e) => p.sync(() => {
1046
- v = e.traceId, D({
1073
+ let o = J(i, t), c = E.currentSpan.pipe(E.tap((e) => E.sync(() => {
1074
+ b = e.traceId, I({
1047
1075
  traceId: e.traceId,
1048
1076
  spanId: e.spanId,
1049
1077
  source: "mutation",
1050
1078
  tag: t
1051
1079
  });
1052
- })), p.catchAll(() => p.void), p.zipRight(Mt(s(n), d))).pipe(p.withSpan(`client.mutation.${t}`, { attributes: {
1080
+ })), E.catchAll(() => E.void), E.zipRight(Ht(o(a), g))).pipe(E.withSpan(`client.mutation.${t}`, { attributes: {
1053
1081
  "voltro.api": e,
1054
- "voltro.mutationId": l,
1082
+ "voltro.mutationId": p,
1055
1083
  "rpc.tag": t
1056
- } })), u = await H(r, c);
1057
- y(u), W(l, {
1084
+ } })), l = await X(n, c);
1085
+ m(l), kt(p, {
1058
1086
  status: "success",
1059
- output: u
1060
- }), i.confirmByMutation(l), o?.onSuccess?.(u, n);
1061
- let f = Dt(o?.notify?.success, u, n);
1062
- return f !== void 0 && G?.success(f), u;
1087
+ output: l
1088
+ }), r.confirmByMutation(p), s?.onSuccess?.(l, a);
1089
+ let u = Lt(s?.notify?.success, l, a);
1090
+ return u !== void 0 && Pt?.success(u), l;
1063
1091
  } catch (e) {
1064
- let n = wt(e, v);
1065
- if (_(n), W(l, {
1092
+ let n = Nt(e, b);
1093
+ if (f(n), kt(p, {
1066
1094
  status: "error",
1067
1095
  error: n
1068
- }), i.revertByMutation(l), u.emit({
1096
+ }), r.revertByMutation(p), o.emit({
1069
1097
  source: "mutation",
1070
1098
  tag: t,
1071
1099
  error: n,
1072
- ...v === void 0 ? {} : { traceId: v }
1073
- }), s) return c(n);
1100
+ ...b === void 0 ? {} : { traceId: b }
1101
+ }), l) return d(n);
1074
1102
  throw n;
1075
1103
  } finally {
1076
- h(!1);
1104
+ u(!1);
1077
1105
  }
1078
1106
  }, [
1107
+ n,
1079
1108
  r,
1080
1109
  i,
1081
- a,
1082
1110
  e,
1083
1111
  t,
1084
- f
1112
+ c
1085
1113
  ]);
1086
- return o(() => {
1114
+ return b(() => {
1087
1115
  let e = {
1088
- mutate: S,
1089
- pending: m,
1090
- error: g,
1091
- data: v,
1092
- withOptimistic: (t) => (b.current = t, e),
1093
- withoutOptimistic: () => (x.current = !0, e)
1116
+ mutate: v,
1117
+ pending: l,
1118
+ error: d,
1119
+ data: p,
1120
+ withOptimistic: (t) => (h.current = t, e),
1121
+ withoutOptimistic: () => (_.current = !0, e)
1094
1122
  };
1095
1123
  return e;
1096
1124
  }, [
1097
- S,
1098
- m,
1099
- g,
1100
- v
1125
+ v,
1126
+ l,
1127
+ d,
1128
+ p
1101
1129
  ]);
1102
- }, Pt = (e, t) => {
1130
+ }, Wt = (e, t) => {
1103
1131
  if (t === void 0 || typeof e != "object" || !e) return e;
1104
1132
  try {
1105
1133
  Object.defineProperty(e, "__voltroTraceId", {
@@ -1109,228 +1137,570 @@ var H = async (e, t) => {
1109
1137
  });
1110
1138
  } catch {}
1111
1139
  return e;
1112
- }, Ft = (e, t, n) => typeof e == "function" ? e(t, n) : e, It = 0, Lt = () => `act_${++It}`, Rt = 15e3, zt = async (e, t, n) => {
1113
- if (!P(e.current)) return e.current;
1114
- let r = Date.now() + Rt;
1115
- for (; Date.now() < r;) if (await new Promise((e) => setTimeout(e, 16)), !P(e.current)) return e.current;
1116
- throw Error(`Voltro: the api "${t}" did not resolve within ${Rt}ms, so ${n} was never sent. This is not the boot window — that is waited out. Check that "${t}" is a configured api name and that its client could connect.`);
1117
- }, q = (e, t) => {
1118
- let r = N(e), { descriptors: i, errorBus: a } = r, l = s(r);
1119
- if (l.current = r, process.env.NODE_ENV !== "production") {
1120
- let n = i[t]?.kind;
1140
+ }, Gt = (e, t, n) => typeof e == "function" ? e(t, n) : e, Kt = 0, qt = () => `act_${++Kt}`, Jt = 15e3, Yt = async (e, t, n) => {
1141
+ if (!ke(e.current)) return e.current;
1142
+ let r = Date.now() + Jt;
1143
+ for (; Date.now() < r;) if (await new Promise((e) => setTimeout(e, 16)), !ke(e.current)) return e.current;
1144
+ throw Error(`Voltro: the api "${t}" did not resolve within ${Jt}ms, so ${n} was never sent. This is not the boot window — that is waited out. Check that "${t}" is a configured api name and that its client could connect.`);
1145
+ }, Xt = (e, t) => {
1146
+ let n = W(e), { descriptors: r, errorBus: i } = n, a = x(n);
1147
+ if (a.current = n, process.env.NODE_ENV !== "production") {
1148
+ let n = r[t]?.kind;
1121
1149
  n !== void 0 && n !== "action" && console.error(`[@voltro/client] useAction('${e}', '${t}') targets a ${n}, not an action. Use ${n === "mutation" ? "useMutation" : n === "workflow" ? "useWorkflow" : `the ${n} hook`} instead.`);
1122
1150
  }
1123
- let [u, d] = c(!1), [f, m] = c(void 0), [h, g] = c(void 0), _ = n(async (n, r) => {
1124
- let i = r?.onError !== void 0 || r?.notify?.error !== void 0;
1125
- d(!0), m(void 0);
1126
- let o = Lt(), s = r?.idempotencyKey ?? jt();
1127
- bt({
1128
- id: o,
1151
+ let [o, s] = S(!1), [c, l] = S(void 0), [u, d] = S(void 0), f = g(async (n, r) => {
1152
+ let o = r?.onError !== void 0 || r?.notify?.error !== void 0;
1153
+ s(!0), l(void 0);
1154
+ let c = qt(), u = r?.idempotencyKey ?? Vt();
1155
+ Ot({
1156
+ id: c,
1129
1157
  apiName: e,
1130
1158
  tag: t,
1131
1159
  input: n
1132
1160
  });
1133
- let c;
1161
+ let f;
1134
1162
  try {
1135
- let { runtime: i, client: a } = await zt(l, e, t), u = B(a, t), d = await H(i, p.currentSpan.pipe(p.tap((e) => p.sync(() => {
1136
- c = e.traceId, D({
1163
+ let { runtime: i, client: o } = await Yt(a, e, t), s = J(o, t), l = await X(i, E.currentSpan.pipe(E.tap((e) => E.sync(() => {
1164
+ f = e.traceId, I({
1137
1165
  traceId: e.traceId,
1138
1166
  spanId: e.spanId,
1139
1167
  source: "action",
1140
1168
  tag: t
1141
1169
  });
1142
- })), p.catchAll(() => p.void), p.zipRight(Mt(u(n), s))).pipe(p.withSpan(`client.action.${t}`, { attributes: {
1170
+ })), E.catchAll(() => E.void), E.zipRight(Ht(s(n), u))).pipe(E.withSpan(`client.action.${t}`, { attributes: {
1143
1171
  "voltro.api": e,
1144
- "voltro.actionId": o,
1172
+ "voltro.actionId": c,
1145
1173
  "rpc.tag": t
1146
1174
  } })));
1147
- g(d), W(o, {
1175
+ d(l), kt(c, {
1148
1176
  status: "success",
1149
- output: d
1150
- }), r?.onSuccess?.(d, n);
1151
- let f = Ft(r?.notify?.success, d, n);
1152
- return f !== void 0 && Et()?.success(f), d;
1177
+ output: l
1178
+ }), r?.onSuccess?.(l, n);
1179
+ let p = Gt(r?.notify?.success, l, n);
1180
+ return p !== void 0 && It()?.success(p), l;
1153
1181
  } catch (e) {
1154
- let s = Pt(e, c);
1155
- if (m(s), W(o, {
1182
+ let a = Wt(e, f);
1183
+ if (l(a), kt(c, {
1156
1184
  status: "error",
1157
- error: s
1158
- }), a.emit({
1185
+ error: a
1186
+ }), i.emit({
1159
1187
  source: "action",
1160
1188
  tag: t,
1161
- error: s,
1162
- ...c === void 0 ? {} : { traceId: c }
1163
- }), i) {
1164
- r?.onError?.(s, n);
1165
- let e = Ft(r?.notify?.error, s, n);
1166
- e !== void 0 && Et()?.error(e);
1189
+ error: a,
1190
+ ...f === void 0 ? {} : { traceId: f }
1191
+ }), o) {
1192
+ r?.onError?.(a, n);
1193
+ let e = Gt(r?.notify?.error, a, n);
1194
+ e !== void 0 && It()?.error(e);
1167
1195
  return;
1168
1196
  }
1169
- throw s;
1197
+ throw a;
1170
1198
  } finally {
1171
- d(!1);
1199
+ s(!1);
1172
1200
  }
1173
1201
  }, [
1174
1202
  e,
1175
1203
  t,
1176
- a
1204
+ i
1177
1205
  ]);
1178
- return o(() => ({
1179
- run: _,
1180
- pending: u,
1181
- error: f,
1182
- lastResult: h
1206
+ return b(() => ({
1207
+ run: f,
1208
+ pending: o,
1209
+ error: c,
1210
+ lastResult: u
1183
1211
  }), [
1184
- _,
1185
- u,
1186
1212
  f,
1187
- h
1213
+ o,
1214
+ c,
1215
+ u
1188
1216
  ]);
1189
- }, Bt = V, Vt = (e) => ({
1190
- useSubscription: (t, n, r) => Bt(e, t, n, r),
1191
- useMutation: (t) => K(e, t),
1192
- useAction: (t) => q(e, t)
1193
- }), Ht = () => ({ seeds: [] }), J = null, Ut = (e) => {
1194
- J = e;
1195
- }, Y = /* @__PURE__ */ new Map(), Wt = (e, t) => `${e}\u0000${t}`, Gt = (e, t, n, r) => {
1196
- let i = J?.() ?? null;
1217
+ }, Zt = m(void 0), Qt = (e) => h(Zt.Provider, { value: e.messages }, e.children), $t = () => _(Zt), en = Symbol.for("voltro.client.formEngine"), tn = (e, t) => {
1218
+ let n = e;
1219
+ for (let e of t.split(".")) {
1220
+ if (typeof n != "object" || !n) return;
1221
+ n = n[e];
1222
+ }
1223
+ return n;
1224
+ }, nn = (e, t, n) => `vf-${e}-${t}-${n}`.replace(/[^a-zA-Z0-9_-]/g, "-"), rn = {
1225
+ isTouched: !1,
1226
+ isBlurred: !1,
1227
+ isDirty: !1,
1228
+ isPristine: !0,
1229
+ isDefaultValue: !0,
1230
+ isValidating: !1,
1231
+ errorMap: {},
1232
+ errorSourceMap: {}
1233
+ }, an = (e, t) => {
1234
+ let n = e.find((e) => e.name === t);
1235
+ if (n !== void 0) return n;
1236
+ let r = /^(.+?)\.\d+\.(.+)$/.exec(t);
1237
+ if (r !== null) return e.find((e) => e.name === r[1] && e.widget === "array")?.item?.find((e) => e.name === r[2]);
1238
+ }, on = (e, t, n) => {
1239
+ let r = W(e), i = Q(e, t), s = n.schema ?? r.descriptors[t]?.input;
1240
+ process.env.NODE_ENV !== "production" && s === void 0 && console.error(`[@voltro/client] useFormBinding('${e}', '${t}'): no input schema. Pass options.schema, or mount the descriptor so its input reaches the client. Rendering no fields; submit skips client-side validation.`);
1241
+ let c = b(() => s ? o(s) : [], [s]), l = $t(), u = n.messages ?? l, d = b(() => ({
1242
+ ...n.locale === void 0 ? {} : { locale: n.locale },
1243
+ ...u === void 0 ? {} : { messages: u }
1244
+ }), [n.locale, u]), f = x(n.asyncFields);
1245
+ f.current = n.asyncFields;
1246
+ let m = x(n);
1247
+ m.current = n;
1248
+ let h = x(i);
1249
+ h.current = i;
1250
+ let _ = x(d);
1251
+ _.current = d;
1252
+ let v = x(s);
1253
+ v.current = s;
1254
+ let [C, w] = S(() => n.flash?.errors ?? {}), [T, ee] = S(n.flash?.formError), E = x(void 0), D = g((e) => {
1255
+ let t = v.current;
1256
+ if (t === void 0) return [];
1257
+ let n = m.current, r = e;
1258
+ if (n.toInput !== void 0) try {
1259
+ r = n.toInput(e);
1260
+ } catch {
1261
+ r = e;
1262
+ }
1263
+ let i = p(t, r, _.current).issues;
1264
+ if (n.toInput === void 0) return i;
1265
+ let a = n.errorPath ?? {};
1266
+ return i.map((t) => {
1267
+ let n = a[t.path];
1268
+ return n === void 0 ? (tn(e, t.path) !== void 0 || t.path.includes("."), t) : {
1269
+ ...t,
1270
+ path: n
1271
+ };
1272
+ });
1273
+ }, []), O = g((e) => {
1274
+ let t = { ...e ?? {} }, n = v.current;
1275
+ if (n !== void 0) for (let e of o(n)) (e.widget === "checkbox" || e.widget === "switch") && !(e.name in t) && (t[e.name] = !1);
1276
+ return t;
1277
+ }, []), k = x(() => Promise.resolve()), te = x(void 0);
1278
+ if (te.current === void 0) {
1279
+ let e = n.flash, t = e === void 0 ? O(n.defaults) : {
1280
+ ...O(n.defaults),
1281
+ ...e.values
1282
+ };
1283
+ te.current = new oe({
1284
+ onSubmit: ({ value: e }) => k.current(e),
1285
+ defaultValues: t,
1286
+ validators: { onChange: ({ value: e }) => {
1287
+ let t = D(e);
1288
+ if (t.length === 0) return;
1289
+ let n = {};
1290
+ for (let e of t) e.path !== "" && !(e.path in n) && (n[e.path] = a(e, _.current));
1291
+ return { fields: n };
1292
+ } }
1293
+ });
1294
+ }
1295
+ let A = te.current, j = A;
1296
+ y(() => j.mount(), [j]);
1297
+ let M = n.subscribe ?? "all";
1298
+ se(A.store, (e) => M === "all" ? e : `${e.submissionAttempts}|${String(e.isSubmitting)}|${String(e.isDirty)}|${String(e.isTouched)}`);
1299
+ let ne = A.store.state.values, N = A.store.state, P = b(() => D(ne), [D, ne]), F = n.isLoading === !0, ie = n.validate, ae = ie?.onChange ?? "afterTouched", ce = ie?.onBlur ?? !0, le = N.submissionAttempts, I = N.fieldMetaBase ?? {}, ue = g((e) => {
1300
+ if (F) return !1;
1301
+ if (le > 0 || ae === "always") return !0;
1302
+ if (ae === "never") return !1;
1303
+ let t = I[e];
1304
+ return t === void 0 ? !1 : ce ? t.isBlurred === !0 : t.isTouched === !0;
1305
+ }, [
1306
+ le,
1307
+ I,
1308
+ F,
1309
+ ae,
1310
+ ce
1311
+ ]), L = g((e) => {
1312
+ let t = C[e];
1313
+ if (t !== void 0) return t;
1314
+ let n = f.current?.[e];
1315
+ if (n !== void 0 && n.status === "invalid") return n.message ?? a({
1316
+ id: "validation.invalid",
1317
+ fallback: "Invalid value"
1318
+ }, _.current);
1319
+ if (!ue(e)) return;
1320
+ let r = P.find((t) => t.path === e);
1321
+ return r === void 0 ? void 0 : a(r, _.current);
1322
+ }, [
1323
+ C,
1324
+ ue,
1325
+ P
1326
+ ]), de = b(() => {
1327
+ let e = {}, t = /* @__PURE__ */ new Set([...P.map((e) => e.path).filter((e) => e !== ""), ...Object.keys(C)]);
1328
+ for (let [e, n] of Object.entries(f.current ?? {})) n.status === "invalid" && t.add(e);
1329
+ for (let n of t) {
1330
+ let t = L(n);
1331
+ t !== void 0 && (e[n] = t);
1332
+ }
1333
+ return e;
1334
+ }, [
1335
+ P,
1336
+ C,
1337
+ L
1338
+ ]), fe = g((e) => {
1339
+ w((t) => {
1340
+ if (!(e in t)) return t;
1341
+ let n = { ...t };
1342
+ return delete n[e], n;
1343
+ });
1344
+ }, []), R = g((n) => {
1345
+ let r = an(c, n), i = j.getFieldMeta(n), a = L(n), o = nn(e, t, n), s = f.current?.[n], l = [a === void 0 ? void 0 : `${o}-error`, r?.description === void 0 ? void 0 : `${o}-help`].filter((e) => e !== void 0);
1346
+ return {
1347
+ value: j.getFieldValue(n),
1348
+ setValue: (e) => {
1349
+ fe(n), j.setFieldValue(n, e);
1350
+ },
1351
+ onBlur: () => {
1352
+ j.setFieldMeta(n, (e) => ({
1353
+ ...rn,
1354
+ ...e ?? {},
1355
+ isTouched: !0,
1356
+ isBlurred: !0
1357
+ }));
1358
+ },
1359
+ error: a,
1360
+ serverError: C[n],
1361
+ touched: i?.isTouched === !0,
1362
+ blurred: i?.isBlurred === !0,
1363
+ dirty: i?.isDirty === !0,
1364
+ required: r?.required === !0,
1365
+ label: r?.label ?? n,
1366
+ widget: r?.widget ?? "text",
1367
+ options: r?.options,
1368
+ description: r?.description,
1369
+ asyncStatus: s?.status ?? "idle",
1370
+ a11y: {
1371
+ id: o,
1372
+ "aria-invalid": a !== void 0 || void 0,
1373
+ "aria-required": r?.required === !0 || void 0,
1374
+ "aria-describedby": l.length > 0 ? l.join(" ") : void 0
1375
+ }
1376
+ };
1377
+ }, [
1378
+ e,
1379
+ fe,
1380
+ j,
1381
+ c,
1382
+ t,
1383
+ C,
1384
+ L
1385
+ ]), pe = g((e) => ({
1386
+ items: j.getFieldValue(e) ?? [],
1387
+ push: (t) => {
1388
+ j.pushFieldValue(e, t);
1389
+ },
1390
+ insert: (t, n) => {
1391
+ j.insertFieldValue(e, t, n);
1392
+ },
1393
+ remove: (t) => {
1394
+ j.removeFieldValue(e, t);
1395
+ },
1396
+ move: (t, n) => {
1397
+ j.moveFieldValues(e, t, n);
1398
+ },
1399
+ swap: (t, n) => {
1400
+ j.swapFieldValues(e, t, n);
1401
+ },
1402
+ field: (t, n) => R(`${e}.${t}.${n}`)
1403
+ }), [j, R]), me = g((e) => c.filter((t) => t.section === e), [c]), z = g((e, t) => {
1404
+ fe(e), j.setFieldValue(e, t);
1405
+ }, [fe, j]), he = g((e) => {
1406
+ for (let [t, n] of Object.entries(e)) j.setFieldValue(t, n);
1407
+ }, [j]), ge = g((e) => {
1408
+ w({}), ee(void 0), E.current = void 0, e === void 0 ? j.reset() : j.reset(O(e));
1409
+ }, [j, O]), _e = n.asyncTimeoutMs ?? 5e3, ve = g(async () => {
1410
+ let e = Date.now();
1411
+ for (;;) {
1412
+ let t = f.current;
1413
+ if (t === void 0) return;
1414
+ let n = Object.entries(t), r = n.filter(([, e]) => e.status === "checking");
1415
+ if (r.length === 0) {
1416
+ let e = n.filter(([, e]) => e.status === "invalid");
1417
+ return e.length === 0 ? void 0 : Object.fromEntries(e.map(([e, t]) => [e, t.message ?? a({
1418
+ id: "validation.invalid",
1419
+ fallback: "Invalid value"
1420
+ }, _.current)]));
1421
+ }
1422
+ if (Date.now() - e > _e) return Object.fromEntries(r.map(([e]) => [e, a({
1423
+ id: "validation.checking",
1424
+ fallback: "Still checking…"
1425
+ }, _.current)]));
1426
+ await new Promise((e) => setTimeout(e, 50));
1427
+ }
1428
+ }, [_e]), ye = g(() => {
1429
+ let n = globalThis.document;
1430
+ if (n?.getElementById === void 0) return;
1431
+ let r = [...c.map((e) => e.name), ...Object.keys(C).filter((e) => !c.some((t) => t.name === e))];
1432
+ for (let i of r) if (L(i) !== void 0) {
1433
+ n.getElementById(nn(e, t, i))?.focus?.();
1434
+ return;
1435
+ }
1436
+ }, [
1437
+ e,
1438
+ c,
1439
+ t,
1440
+ C,
1441
+ L
1442
+ ]), B = x(ye);
1443
+ B.current = ye;
1444
+ let be = g(async () => {
1445
+ ee(void 0), w({}), E.current = void 0;
1446
+ let e, t = !1;
1447
+ if (await j.handleSubmit().catch((n) => {
1448
+ t = !0, e = n;
1449
+ }), t) throw e;
1450
+ return E.current === void 0 && queueMicrotask(() => {
1451
+ B.current();
1452
+ }), E.current;
1453
+ }, [j]);
1454
+ k.current = (async (e) => {
1455
+ let t = m.current, n = e, r = n;
1456
+ if (t.toInput !== void 0) try {
1457
+ r = t.toInput(n);
1458
+ } catch (e) {
1459
+ ee(e instanceof Error ? e.message : String(e));
1460
+ return;
1461
+ }
1462
+ if (D(n).length > 0) {
1463
+ queueMicrotask(() => {
1464
+ B.current();
1465
+ });
1466
+ return;
1467
+ }
1468
+ let i = await ve();
1469
+ if (i !== void 0) {
1470
+ w((e) => ({
1471
+ ...e,
1472
+ ...i
1473
+ })), queueMicrotask(() => {
1474
+ B.current();
1475
+ });
1476
+ return;
1477
+ }
1478
+ let o = (e) => h.current.mutate(e);
1479
+ try {
1480
+ let e = t.onSubmit === void 0 ? await o(r) : await t.onSubmit({
1481
+ input: r,
1482
+ values: n,
1483
+ mutate: o
1484
+ });
1485
+ E.current = e, t.onSuccess?.(e);
1486
+ } catch (e) {
1487
+ let t = re(e);
1488
+ if (t.length === 0) throw e;
1489
+ let n = {};
1490
+ for (let e of t) e.field in n || (n[e.field] = a({
1491
+ id: e.message,
1492
+ ...e.params === void 0 ? {} : { params: e.params },
1493
+ fallback: e.message
1494
+ }, _.current));
1495
+ w((e) => ({
1496
+ ...e,
1497
+ ...n
1498
+ })), queueMicrotask(() => {
1499
+ B.current();
1500
+ });
1501
+ }
1502
+ });
1503
+ let V = P.length === 0, xe = Object.values(f.current ?? {}).some((e) => e.status === "checking"), Se = i.error !== void 0 && re(i.error).length > 0 ? void 0 : i.error, Ce = Object.keys(de).length, we = (() => {
1504
+ for (let e of c) if (de[e.name] !== void 0) return e.name;
1505
+ let e = Object.keys(de);
1506
+ return e.length > 0 ? e[0] : void 0;
1507
+ })(), Te = {
1508
+ isDirty: !F && N.isDirty,
1509
+ isPristine: N.isPristine,
1510
+ isTouched: N.isTouched,
1511
+ isValid: V,
1512
+ isValidating: xe,
1513
+ canSubmit: V && !xe && !N.isSubmitting && !F,
1514
+ isSubmitting: N.isSubmitting,
1515
+ isSubmitted: N.isSubmitted,
1516
+ isSubmitSuccessful: N.isSubmitSuccessful && E.current !== void 0,
1517
+ submissionAttempts: N.submissionAttempts,
1518
+ errorCount: Ce,
1519
+ firstInvalidPath: we,
1520
+ pending: i.pending,
1521
+ isLoading: F,
1522
+ submitError: Se,
1523
+ data: i.data
1524
+ }, H = {
1525
+ fields: c,
1526
+ values: ne,
1527
+ errors: de,
1528
+ issues: P,
1529
+ isValid: V,
1530
+ pending: i.pending,
1531
+ submitError: Se,
1532
+ formError: T,
1533
+ data: i.data,
1534
+ setValue: z,
1535
+ setValues: he,
1536
+ reset: ge,
1537
+ submit: be,
1538
+ field: R,
1539
+ array: pe,
1540
+ section: me,
1541
+ state: Te,
1542
+ focusFirstInvalid: ye
1543
+ };
1544
+ return Object.defineProperty(H, en, {
1545
+ value: {
1546
+ store: A.store,
1547
+ field: R
1548
+ },
1549
+ enumerable: !1
1550
+ }), H;
1551
+ }, sn = (e, t) => {
1552
+ let n = e[en];
1553
+ if (n === void 0) throw Error("useFormField: not a useFormBinding result");
1554
+ return se(n.store, (e) => {
1555
+ let n = e.fieldMetaBase[t];
1556
+ return `${JSON.stringify(tn(e.values, t))}|${n === void 0 ? "" : `${String(n.isTouched)}${String(n.isBlurred)}${JSON.stringify(n.errorMap)}`}|${e.submissionAttempts}`;
1557
+ }), n.field(t);
1558
+ }, cn = Y, ln = (e) => ({
1559
+ useSubscription: (t, n, r) => cn(e, t, n, r),
1560
+ useMutation: (t) => Q(e, t),
1561
+ useAction: (t) => Xt(e, t),
1562
+ useFormBinding: (t, n) => on(e, t, n ?? {})
1563
+ }), un = () => ({ seeds: [] }), dn = null, fn = (e) => {
1564
+ dn = e;
1565
+ }, pn = /* @__PURE__ */ new Map(), mn = (e, t) => `${e}\u0000${t}`, hn = (e, t, n, r) => {
1566
+ let i = dn?.() ?? null;
1197
1567
  if (i === null) throw Error(`seedPreloadedSubscription('${e}', '${t}') was called outside a server render. Preload seeds exist to put a subscription's first value into the SSR hydration payload; on the client the live subscription already provides it. (If this IS server code, the render did not install a seed bag — that is a framework bug.)`);
1198
1568
  i.seeds.push({
1199
1569
  api: e,
1200
- key: O([t, n]),
1570
+ key: L([t, n]),
1201
1571
  value: r
1202
1572
  });
1203
- }, Kt = (e, t, n) => {
1204
- let r = J?.() ?? null;
1573
+ }, gn = (e, t, n) => {
1574
+ let r = dn?.() ?? null;
1205
1575
  r !== null && r.seeds.push({
1206
1576
  api: e,
1207
- key: O([t, n]),
1577
+ key: L([t, n]),
1208
1578
  value: void 0,
1209
1579
  failed: !0
1210
1580
  });
1211
- }, qt = (e) => {
1212
- if (e !== void 0) for (let t of e) Y.set(Wt(t.api, t.key), {
1581
+ }, _n = (e) => {
1582
+ if (e !== void 0) for (let t of e) pn.set(mn(t.api, t.key), {
1213
1583
  value: t.value,
1214
1584
  failed: t.failed === !0
1215
1585
  });
1216
- }, Jt = (e, t, n) => {
1217
- let r = O([t, n]), i = J?.() ?? null;
1586
+ }, vn = (e, t, n) => {
1587
+ let r = L([t, n]), i = dn?.() ?? null;
1218
1588
  if (i !== null) {
1219
1589
  for (let t of i.seeds) if (t.api === e && t.key === r) return t.failed === !0 ? void 0 : t.value;
1220
1590
  return;
1221
1591
  }
1222
- let a = Y.get(Wt(e, r));
1592
+ let a = pn.get(mn(e, r));
1223
1593
  return a === void 0 || a.failed ? void 0 : a.value;
1224
- }, Yt = (e, t, n) => {
1225
- let r = O([t, n]), i = J?.() ?? null;
1594
+ }, yn = (e, t, n) => {
1595
+ let r = L([t, n]), i = dn?.() ?? null;
1226
1596
  if (i !== null) {
1227
1597
  for (let t of i.seeds) if (t.api === e && t.key === r) return t.failed === !0 ? "failed" : "seeded";
1228
1598
  return "absent";
1229
1599
  }
1230
- let a = Y.get(Wt(e, r));
1600
+ let a = pn.get(mn(e, r));
1231
1601
  return a === void 0 ? "absent" : a.failed ? "failed" : "seeded";
1232
- }, Xt = () => {
1233
- Y.clear();
1602
+ }, bn = () => {
1603
+ pn.clear();
1234
1604
  };
1235
1605
  //#endregion
1236
1606
  //#region src/usePreloadedSubscription.ts
1237
- function Zt(e, t, n = {}, r = {}) {
1238
- let i = Jt(e, t, n), a = V(e, t, n, i === void 0 ? r : {
1607
+ function xn(e, t, n = {}, r = {}) {
1608
+ let i = vn(e, t, n), a = Y(e, t, n, i === void 0 ? r : {
1239
1609
  ...r,
1240
1610
  initialSnapshot: i
1241
1611
  });
1242
- return Yt(e, t, n) === "failed" ? {
1612
+ return yn(e, t, n) === "failed" ? {
1243
1613
  ...a,
1244
1614
  preloadFailed: !0
1245
1615
  } : a;
1246
1616
  }
1247
1617
  //#endregion
1248
1618
  //#region src/useEvent.ts
1249
- var Qt = {
1619
+ var Sn = {
1250
1620
  status: "idle",
1251
1621
  missed: 0,
1252
1622
  lastMiss: void 0
1253
- }, $t = class {
1623
+ }, Cn = class {
1254
1624
  _tag = "EventStreamClosed";
1255
1625
  };
1256
- function en(e, t, r, i = {}) {
1257
- let { skip: o = !1, apiName: l = "app", onMissed: u } = i, d = N(l), { runtime: f, client: m } = d, [h, g] = c(Qt), _ = s(r);
1258
- _.current = r;
1259
- let v = s(u);
1260
- v.current = u;
1261
- let b = s(m);
1262
- b.current = m;
1263
- let S = s(f);
1264
- S.current = f;
1265
- let C = s(/* @__PURE__ */ new Map()), w = t === null ? null : JSON.stringify(Object.entries(t).sort(([e], [t]) => e < t ? -1 : 1)), T = s(t);
1266
- T.current = t;
1267
- let ee = s(null);
1268
- ee.current !== w && (ee.current = w, C.current = /* @__PURE__ */ new Map());
1269
- let te = n((e, t) => {
1270
- e <= 0 || (g((n) => ({
1626
+ function wn(e, t, n, r = {}) {
1627
+ let { skip: i = !1, apiName: a = "app", onMissed: o } = r, s = W(a), { runtime: c, client: l } = s, [u, d] = S(Sn), f = x(n);
1628
+ f.current = n;
1629
+ let p = x(o);
1630
+ p.current = o;
1631
+ let m = x(l);
1632
+ m.current = l;
1633
+ let h = x(c);
1634
+ h.current = c;
1635
+ let _ = x(/* @__PURE__ */ new Map()), v = t === null ? null : JSON.stringify(Object.entries(t).sort(([e], [t]) => e < t ? -1 : 1)), b = x(t);
1636
+ b.current = t;
1637
+ let C = x(null);
1638
+ C.current !== v && (C.current = v, _.current = /* @__PURE__ */ new Map());
1639
+ let w = g((e, t) => {
1640
+ e <= 0 || (d((n) => ({
1271
1641
  ...n,
1272
1642
  missed: n.missed + e,
1273
1643
  lastMiss: {
1274
1644
  count: e,
1275
1645
  reason: t
1276
1646
  }
1277
- })), v.current?.({
1647
+ })), p.current?.({
1278
1648
  count: e,
1279
1649
  reason: t
1280
1650
  }));
1281
- }, []), E = !o && w !== null && !P(d);
1282
- return a(() => {
1283
- if (!E) {
1284
- g(Qt);
1651
+ }, []), T = !i && v !== null && !ke(s);
1652
+ return y(() => {
1653
+ if (!T) {
1654
+ d(Sn);
1285
1655
  return;
1286
1656
  }
1287
- g((e) => ({
1657
+ d((e) => ({
1288
1658
  ...e,
1289
1659
  status: "connecting"
1290
1660
  }));
1291
- let t = 0, n = p.sync(() => {
1292
- let t = [...C.current].map(([e, t]) => ({
1661
+ let t = 0, n = E.sync(() => {
1662
+ let t = [..._.current].map(([e, t]) => ({
1293
1663
  origin: e,
1294
1664
  n: t
1295
1665
  }));
1296
- return B(b.current, e.name)({
1297
- key: T.current,
1666
+ return J(m.current, e.name)({
1667
+ key: b.current,
1298
1668
  ...t.length > 0 ? { resume: t } : {}
1299
1669
  });
1300
- }), r = x.unwrap(n).pipe(x.tap(() => p.sync(() => {
1670
+ }), r = M.unwrap(n).pipe(M.tap(() => E.sync(() => {
1301
1671
  t = 0;
1302
- })), x.concat(x.fail(new $t())), x.retry(y.exponential("250 millis", 2).pipe(y.either(y.spaced("30 seconds")), y.jittered, y.tapOutput(() => p.sync(() => {
1303
- t += 1, g((e) => ({
1672
+ })), M.concat(M.fail(new Cn())), M.retry(A.exponential("250 millis", 2).pipe(A.either(A.spaced("30 seconds")), A.jittered, A.tapOutput(() => E.sync(() => {
1673
+ t += 1, d((e) => ({
1304
1674
  ...e,
1305
1675
  status: "connecting"
1306
1676
  }));
1307
- }))))), i = S.current.runFork(x.runForEach(r, (e) => p.sync(() => {
1677
+ }))))), i = h.current.runFork(M.runForEach(r, (e) => E.sync(() => {
1308
1678
  if (e._tag === "attached") {
1309
- g((e) => ({
1679
+ d((e) => ({
1310
1680
  ...e,
1311
1681
  status: "live"
1312
1682
  }));
1313
1683
  return;
1314
1684
  }
1315
1685
  if (e._tag === "gap") {
1316
- te(e.missed, e.reason);
1686
+ w(e.missed, e.reason);
1317
1687
  return;
1318
1688
  }
1319
- C.current.set(e.origin, Math.max(C.current.get(e.origin) ?? 0, e.n)), _.current(e.payload);
1689
+ _.current.set(e.origin, Math.max(_.current.get(e.origin) ?? 0, e.n)), f.current(e.payload);
1320
1690
  })));
1321
1691
  return () => {
1322
- S.current.runFork(i.interruptAsFork(i.id()));
1692
+ h.current.runFork(i.interruptAsFork(i.id()));
1323
1693
  };
1324
1694
  }, [
1325
- E,
1326
- w,
1695
+ T,
1696
+ v,
1327
1697
  e.name,
1328
- te
1329
- ]), E ? h : Qt;
1698
+ w
1699
+ ]), T ? u : Sn;
1330
1700
  }
1331
1701
  //#endregion
1332
1702
  //#region src/sequence.ts
1333
- var tn = () => {
1703
+ var Tn = () => {
1334
1704
  let e = (t) => ({
1335
1705
  steps: t,
1336
1706
  step: ((n, r, i) => e([...t, {
@@ -1342,7 +1712,7 @@ var tn = () => {
1342
1712
  }]))
1343
1713
  });
1344
1714
  return e([]);
1345
- }, nn = async (e, t = {}) => {
1715
+ }, En = async (e, t = {}) => {
1346
1716
  let n = {}, r = [];
1347
1717
  for (let i of e.steps) {
1348
1718
  if (i.when !== void 0 && !i.when(n)) {
@@ -1402,26 +1772,26 @@ var tn = () => {
1402
1772
  ok: !0,
1403
1773
  data: n
1404
1774
  };
1405
- }, rn = (e = {}) => {
1406
- let [t, r] = c(!1), [i, a] = c(void 0), [o, l] = c(void 0), u = s(e);
1407
- return u.current = e, {
1408
- run: n(async (e, t = {}) => {
1409
- r(!0), a(void 0), l(void 0);
1775
+ }, Dn = (e = {}) => {
1776
+ let [t, n] = S(!1), [r, i] = S(void 0), [a, o] = S(void 0), s = x(e);
1777
+ return s.current = e, {
1778
+ run: g(async (e, t = {}) => {
1779
+ n(!0), i(void 0), o(void 0);
1410
1780
  try {
1411
- let n = await nn(e, {
1412
- ...u.current,
1781
+ let n = await En(e, {
1782
+ ...s.current,
1413
1783
  ...t
1414
1784
  });
1415
- return n.ok || (a(n.error), l(n.failedStep)), n;
1785
+ return n.ok || (i(n.error), o(n.failedStep)), n;
1416
1786
  } finally {
1417
- r(!1);
1787
+ n(!1);
1418
1788
  }
1419
1789
  }, []),
1420
1790
  pending: t,
1421
- error: i,
1422
- failedStep: o
1791
+ error: r,
1792
+ failedStep: a
1423
1793
  };
1424
- }, an = "storage.mintUploadTicket", on = "storage.mintPresignedUpload", sn = "storage.finalizeUpload", cn = "storage.beginResumableUpload", ln = "storage.beginMultipartUpload", un = "storage.signMultipartPart", dn = "storage.completeMultipartUpload", fn = "storage.abortMultipartUpload", pn = (e, t, n, r) => new Promise((i, a) => {
1794
+ }, On = "storage.mintUploadTicket", kn = "storage.mintPresignedUpload", An = "storage.finalizeUpload", jn = "storage.beginResumableUpload", Mn = "storage.beginMultipartUpload", Nn = "storage.signMultipartPart", Pn = "storage.completeMultipartUpload", Fn = "storage.abortMultipartUpload", In = (e, t, n, r) => new Promise((i, a) => {
1425
1795
  let o = new XMLHttpRequest();
1426
1796
  if (o.open("PUT", e), o.upload.onprogress = (e) => {
1427
1797
  e.lengthComputable && n(e.loaded / e.total);
@@ -1435,7 +1805,7 @@ var tn = () => {
1435
1805
  return;
1436
1806
  }
1437
1807
  r.addEventListener("abort", () => o.abort(), { once: !0 }), o.send(t);
1438
- }), mn = (e, t, n, r, i, a) => new Promise((o, s) => {
1808
+ }), Ln = (e, t, n, r, i, a) => new Promise((o, s) => {
1439
1809
  let c = new XMLHttpRequest();
1440
1810
  if (c.open("POST", e), c.setRequestHeader("content-type", t), c.upload.onprogress = (e) => {
1441
1811
  e.lengthComputable && r(e.loaded / e.total);
@@ -1453,7 +1823,7 @@ var tn = () => {
1453
1823
  return;
1454
1824
  }
1455
1825
  i.addEventListener("abort", () => c.abort(), { once: !0 }), c.send(n);
1456
- }), hn = (e, t, n, r, i) => new Promise((a, o) => {
1826
+ }), Rn = (e, t, n, r, i) => new Promise((a, o) => {
1457
1827
  let s = new XMLHttpRequest();
1458
1828
  if (s.open("PUT", e), s.setRequestHeader("content-type", t), s.upload.onprogress = (e) => {
1459
1829
  e.lengthComputable && r(e.loaded / e.total);
@@ -1464,7 +1834,7 @@ var tn = () => {
1464
1834
  return;
1465
1835
  }
1466
1836
  i.addEventListener("abort", () => s.abort(), { once: !0 }), s.send(n);
1467
- }), gn = (e, t, n, r, i) => new Promise((a, o) => {
1837
+ }), zn = (e, t, n, r, i) => new Promise((a, o) => {
1468
1838
  let s = new XMLHttpRequest();
1469
1839
  if (s.open("POST", e), s.setRequestHeader("content-type", t), s.upload.onprogress = (e) => {
1470
1840
  e.lengthComputable && r(e.loaded / e.total);
@@ -1480,94 +1850,94 @@ var tn = () => {
1480
1850
  return;
1481
1851
  }
1482
1852
  i.addEventListener("abort", () => s.abort(), { once: !0 }), s.send(n);
1483
- }), _n = (e, t = {}) => {
1484
- let { runtime: r, client: i, inspectBaseUrl: a, errorBus: l } = N(e), [u, d] = c(0), [f, p] = c("idle"), [m, h] = c(void 0), g = s(null), _ = n(() => {
1485
- d(0), p("idle"), h(void 0);
1486
- }, []), v = n(() => {
1487
- g.current?.abort();
1488
- }, []), y = n((e) => /^https?:\/\//.test(e) ? e : `${a}${e}`, [a]), b = n(async (e, n, a, o) => {
1489
- let s = Math.max(0, n.retries ?? t.retries ?? 1), c = (e instanceof File, e.type || "application/octet-stream"), l = e instanceof File ? e.name : "blob", u = n.visibility ?? t.visibility, d = n.key ?? t.key, f = n.folder ?? t.folder, p = n.tags ?? t.tags, m = {
1853
+ }), Bn = (e, t = {}) => {
1854
+ let { runtime: n, client: r, inspectBaseUrl: i, errorBus: a } = W(e), [o, s] = S(0), [c, l] = S("idle"), [u, d] = S(void 0), f = x(null), p = g(() => {
1855
+ s(0), l("idle"), d(void 0);
1856
+ }, []), m = g(() => {
1857
+ f.current?.abort();
1858
+ }, []), h = g((e) => /^https?:\/\//.test(e) ? e : `${i}${e}`, [i]), _ = g(async (e, i, a, o) => {
1859
+ let s = Math.max(0, i.retries ?? t.retries ?? 1), c = (e instanceof File, e.type || "application/octet-stream"), l = e instanceof File ? e.name : "blob", u = i.visibility ?? t.visibility, d = i.key ?? t.key, f = i.folder ?? t.folder, p = i.tags ?? t.tags, m = {
1490
1860
  ...u ? { visibility: u } : {},
1491
1861
  ...f ? { folder: f } : {},
1492
1862
  ...p ? { tags: p } : {},
1493
- ...n.alt ? { alt: n.alt } : {},
1494
- ...n.caption ? { caption: n.caption } : {}
1495
- }, h = (e) => ({
1863
+ ...i.alt ? { alt: i.alt } : {},
1864
+ ...i.caption ? { caption: i.caption } : {}
1865
+ }, g = (e) => ({
1496
1866
  id: e.id,
1497
- url: y(e.url),
1867
+ url: h(e.url),
1498
1868
  name: l,
1499
1869
  mime: e.contentType,
1500
1870
  size: e.size,
1501
1871
  ...e.width === void 0 ? {} : { width: e.width },
1502
1872
  ...e.height === void 0 ? {} : { height: e.height }
1503
- }), g = async () => {
1504
- let s = n.mintTag ?? t.mintTag ?? an, l = B(i, s), u = await H(r, l({
1873
+ }), _ = async () => {
1874
+ let s = i.mintTag ?? t.mintTag ?? On, l = J(r, s), u = await X(n, l({
1505
1875
  contentType: c,
1506
1876
  ...m,
1507
1877
  ...d ? { key: d } : {}
1508
- })), f = await gn(y(u.uploadUrl), c, e, o, a);
1509
- return h(f);
1510
- }, _ = async () => {
1511
- let s = n.presignMintTag ?? t.presignMintTag ?? on, l = n.finalizeTag ?? t.finalizeTag ?? sn, u;
1878
+ })), f = await zn(h(u.uploadUrl), c, e, o, a);
1879
+ return g(f);
1880
+ }, v = async () => {
1881
+ let s = i.presignMintTag ?? t.presignMintTag ?? kn, l = i.finalizeTag ?? t.finalizeTag ?? An, u;
1512
1882
  try {
1513
- let e = B(i, s);
1514
- u = await H(r, e({
1883
+ let e = J(r, s);
1884
+ u = await X(n, e({
1515
1885
  contentType: c,
1516
1886
  ...m
1517
1887
  }));
1518
1888
  } catch {
1519
1889
  return null;
1520
1890
  }
1521
- await hn(u.uploadUrl, c, e, o, a);
1522
- let d = B(i, l), f = await H(r, d({ finalizeToken: u.finalizeToken }));
1523
- return h(f);
1524
- }, v = async () => {
1525
- let s = n.beginResumableTag ?? t.beginResumableTag ?? cn, l = B(i, s), u = e.size, d = n.chunkSize ?? t.chunkSize, f = await H(r, l({
1891
+ await Rn(u.uploadUrl, c, e, o, a);
1892
+ let d = J(r, l), f = await X(n, d({ finalizeToken: u.finalizeToken }));
1893
+ return g(f);
1894
+ }, y = async () => {
1895
+ let s = i.beginResumableTag ?? t.beginResumableTag ?? jn, l = J(r, s), u = e.size, d = i.chunkSize ?? t.chunkSize, f = await X(n, l({
1526
1896
  contentType: c,
1527
1897
  size: u,
1528
1898
  ...m,
1529
1899
  ...d ? { chunkSize: d } : {}
1530
- })), p = y(f.uploadUrl), g = Math.max(1, f.chunkSize), _ = Math.max(1, Math.ceil(u / g)), v = Math.max(0, n.retries ?? t.retries ?? 1), b = 0, x = null;
1531
- for (let t = 0; t < _; t++) {
1532
- let n = t * g, r = Math.min(u, n + g), i = e.slice(n, r), s = t === _ - 1, l = r - n, d = 0;
1900
+ })), p = h(f.uploadUrl), _ = Math.max(1, f.chunkSize), v = Math.max(1, Math.ceil(u / _)), y = Math.max(0, i.retries ?? t.retries ?? 1), b = 0, x = null;
1901
+ for (let t = 0; t < v; t++) {
1902
+ let n = t * _, r = Math.min(u, n + _), i = e.slice(n, r), s = t === v - 1, l = r - n, d = 0;
1533
1903
  for (;;) {
1534
1904
  if (a.aborted) throw new DOMException("upload aborted", "AbortError");
1535
1905
  try {
1536
- let e = await mn(`${p}?${`token=${encodeURIComponent(f.resumableToken)}&index=${t}${s ? "&final=1" : ""}`}`, c, i, (e) => o((b + e * l) / u), a, s);
1906
+ let e = await Ln(`${p}?${`token=${encodeURIComponent(f.resumableToken)}&index=${t}${s ? "&final=1" : ""}`}`, c, i, (e) => o((b + e * l) / u), a, s);
1537
1907
  s && (x = e);
1538
1908
  break;
1539
1909
  } catch (e) {
1540
- if (e instanceof DOMException && e.name === "AbortError" || d++ >= v) throw e;
1910
+ if (e instanceof DOMException && e.name === "AbortError" || d++ >= y) throw e;
1541
1911
  }
1542
1912
  }
1543
1913
  b += l, o(b / u);
1544
1914
  }
1545
1915
  if (!x) throw Error("resumable upload produced no final reply");
1546
- return h(x);
1916
+ return g(x);
1547
1917
  }, b = async () => {
1548
- let s = n.multipartBeginTag ?? t.multipartBeginTag ?? ln, u = n.multipartSignTag ?? t.multipartSignTag ?? un, d = n.multipartCompleteTag ?? t.multipartCompleteTag ?? dn, f = n.multipartAbortTag ?? t.multipartAbortTag ?? fn, p = e.size, h = n.chunkSize ?? t.chunkSize, g;
1918
+ let s = i.multipartBeginTag ?? t.multipartBeginTag ?? Mn, u = i.multipartSignTag ?? t.multipartSignTag ?? Nn, d = i.multipartCompleteTag ?? t.multipartCompleteTag ?? Pn, f = i.multipartAbortTag ?? t.multipartAbortTag ?? Fn, p = e.size, g = i.chunkSize ?? t.chunkSize, _;
1549
1919
  try {
1550
- let e = B(i, s);
1551
- g = await H(r, e({
1920
+ let e = J(r, s);
1921
+ _ = await X(n, e({
1552
1922
  contentType: c,
1553
1923
  size: p,
1554
1924
  ...m,
1555
- ...h ? { partSize: h } : {}
1925
+ ...g ? { partSize: g } : {}
1556
1926
  }));
1557
1927
  } catch {
1558
1928
  return null;
1559
1929
  }
1560
- let _ = B(i, u), v = B(i, d), b = B(i, f), x = Math.max(1, g.partSize), S = Math.max(1, Math.ceil(p / x)), C = Math.max(0, n.retries ?? t.retries ?? 1), w = [], T = 0;
1930
+ let v = J(r, u), y = J(r, d), b = J(r, f), x = Math.max(1, _.partSize), S = Math.max(1, Math.ceil(p / x)), C = Math.max(0, i.retries ?? t.retries ?? 1), w = [], T = 0;
1561
1931
  try {
1562
1932
  for (let t = 0; t < S; t++) {
1563
- let n = t * x, i = Math.min(p, n + x), s = e.slice(n, i), c = t + 1, l = i - n, u = 0;
1933
+ let r = t * x, i = Math.min(p, r + x), s = e.slice(r, i), c = t + 1, l = i - r, u = 0;
1564
1934
  for (;;) {
1565
1935
  if (a.aborted) throw new DOMException("upload aborted", "AbortError");
1566
1936
  try {
1567
- let { url: e } = await H(r, _({
1568
- multipartToken: g.multipartToken,
1937
+ let { url: e } = await X(n, v({
1938
+ multipartToken: _.multipartToken,
1569
1939
  partNumber: c
1570
- })), t = await pn(e, s, (e) => o((T + e * l) / p), a);
1940
+ })), t = await In(e, s, (e) => o((T + e * l) / p), a);
1571
1941
  w.push({
1572
1942
  partNumber: c,
1573
1943
  etag: t
@@ -1579,44 +1949,44 @@ var tn = () => {
1579
1949
  }
1580
1950
  T += l, o(T / p);
1581
1951
  }
1582
- let t = await H(r, v({
1583
- multipartToken: g.multipartToken,
1952
+ let t = await X(n, y({
1953
+ multipartToken: _.multipartToken,
1584
1954
  parts: w
1585
1955
  }));
1586
1956
  return {
1587
1957
  id: t.id,
1588
- url: y(t.url),
1958
+ url: h(t.url),
1589
1959
  name: l,
1590
1960
  mime: c,
1591
1961
  size: t.size
1592
1962
  };
1593
1963
  } catch (e) {
1594
1964
  try {
1595
- await H(r, b({ multipartToken: g.multipartToken }));
1965
+ await X(n, b({ multipartToken: _.multipartToken }));
1596
1966
  } catch {}
1597
1967
  throw e;
1598
1968
  }
1599
1969
  };
1600
- if ((n.prefer ?? t.prefer) === "multipart") return await b() || await v();
1601
- if ((n.prefer ?? t.prefer) === "resumable") return await v();
1602
- let x = (n.prefer ?? t.prefer) === "presign", S;
1970
+ if ((i.prefer ?? t.prefer) === "multipart") return await b() || await y();
1971
+ if ((i.prefer ?? t.prefer) === "resumable") return await y();
1972
+ let x = (i.prefer ?? t.prefer) === "presign", S;
1603
1973
  for (let e = 0; e <= s; e++) {
1604
1974
  if (a.aborted) throw new DOMException("upload aborted", "AbortError");
1605
1975
  try {
1606
1976
  if (x) {
1607
- let e = await _();
1977
+ let e = await v();
1608
1978
  if (e) return e;
1609
1979
  }
1610
- return await g();
1980
+ return await _();
1611
1981
  } catch (t) {
1612
1982
  if (t instanceof DOMException && t.name === "AbortError" || (S = t, e === s)) throw t;
1613
1983
  }
1614
1984
  }
1615
1985
  throw S;
1616
1986
  }, [
1987
+ n,
1617
1988
  r,
1618
- i,
1619
- y,
1989
+ h,
1620
1990
  t.mintTag,
1621
1991
  t.presignMintTag,
1622
1992
  t.finalizeTag,
@@ -1632,283 +2002,283 @@ var tn = () => {
1632
2002
  t.folder,
1633
2003
  t.tags,
1634
2004
  t.retries
1635
- ]), x = n(async (e, n = {}) => {
2005
+ ]), v = g(async (e, n = {}) => {
1636
2006
  let r = new AbortController();
1637
- g.current = r, p("uploading"), h(void 0), d(0);
2007
+ f.current = r, l("uploading"), d(void 0), s(0);
1638
2008
  try {
1639
- let t = await b(e, n, r.signal, d);
1640
- return d(1), p("success"), t;
2009
+ let t = await _(e, n, r.signal, s);
2010
+ return s(1), l("success"), t;
1641
2011
  } catch (e) {
1642
- throw p("error"), h(e), e instanceof DOMException && e.name === "AbortError" || l.emit({
2012
+ throw l("error"), d(e), e instanceof DOMException && e.name === "AbortError" || a.emit({
1643
2013
  source: "action",
1644
- tag: n.mintTag ?? t.mintTag ?? an,
2014
+ tag: n.mintTag ?? t.mintTag ?? On,
1645
2015
  error: e
1646
2016
  }), e;
1647
2017
  }
1648
2018
  }, [
1649
- b,
1650
- l,
2019
+ _,
2020
+ a,
1651
2021
  t.mintTag
1652
- ]), S = n(async (e, n = {}) => {
2022
+ ]), y = g(async (e, n = {}) => {
1653
2023
  if (e.length === 0) return [];
1654
2024
  let r = new AbortController();
1655
- g.current = r, p("uploading"), h(void 0), d(0);
1656
- let i = Math.max(1, n.concurrency ?? t.concurrency ?? 3), a = Array(e.length), o = Array(e.length).fill(0), s = () => d(o.reduce((e, t) => e + t, 0) / e.length), c = 0, u = async () => {
2025
+ f.current = r, l("uploading"), d(void 0), s(0);
2026
+ let i = Math.max(1, n.concurrency ?? t.concurrency ?? 3), o = Array(e.length), c = Array(e.length).fill(0), u = () => s(c.reduce((e, t) => e + t, 0) / e.length), p = 0, m = async () => {
1657
2027
  for (;;) {
1658
- let t = c++;
2028
+ let t = p++;
1659
2029
  if (t >= e.length) return;
1660
- a[t] = await b(e[t], n, r.signal, (e) => {
1661
- o[t] = e, s();
1662
- }), o[t] = 1, s();
2030
+ o[t] = await _(e[t], n, r.signal, (e) => {
2031
+ c[t] = e, u();
2032
+ }), c[t] = 1, u();
1663
2033
  }
1664
2034
  };
1665
2035
  try {
1666
- return await Promise.all(Array.from({ length: Math.min(i, e.length) }, () => u())), d(1), p("success"), a;
2036
+ return await Promise.all(Array.from({ length: Math.min(i, e.length) }, () => m())), s(1), l("success"), o;
1667
2037
  } catch (e) {
1668
- throw r.abort(), p("error"), h(e), e instanceof DOMException && e.name === "AbortError" || l.emit({
2038
+ throw r.abort(), l("error"), d(e), e instanceof DOMException && e.name === "AbortError" || a.emit({
1669
2039
  source: "action",
1670
- tag: n.mintTag ?? t.mintTag ?? an,
2040
+ tag: n.mintTag ?? t.mintTag ?? On,
1671
2041
  error: e
1672
2042
  }), e;
1673
2043
  }
1674
2044
  }, [
1675
- b,
1676
- l,
2045
+ _,
2046
+ a,
1677
2047
  t.concurrency,
1678
2048
  t.mintTag
1679
- ]), C = n((e, t = {}) => {
2049
+ ]), C = g((e, t = {}) => {
1680
2050
  e.preventDefault();
1681
2051
  let n = e.dataTransfer ? Array.from(e.dataTransfer.files) : [];
1682
- return n.length ? S(n, t) : Promise.resolve([]);
1683
- }, [S]), w = n((e, t = {}) => {
2052
+ return n.length ? y(n, t) : Promise.resolve([]);
2053
+ }, [y]), w = g((e, t = {}) => {
1684
2054
  let n = e.clipboardData ? Array.from(e.clipboardData.files) : [];
1685
- return n.length ? S(n, t) : Promise.resolve([]);
1686
- }, [S]), T = o(() => ({
2055
+ return n.length ? y(n, t) : Promise.resolve([]);
2056
+ }, [y]), T = b(() => ({
1687
2057
  onDragOver: (e) => e.preventDefault(),
1688
2058
  onDrop: (e) => {
1689
2059
  C(e);
1690
2060
  }
1691
2061
  }), [C]);
1692
- return o(() => ({
1693
- upload: x,
1694
- uploadMany: S,
1695
- progress: u,
1696
- status: f,
1697
- error: m,
1698
- cancel: v,
1699
- reset: _,
2062
+ return b(() => ({
2063
+ upload: v,
2064
+ uploadMany: y,
2065
+ progress: o,
2066
+ status: c,
2067
+ error: u,
2068
+ cancel: m,
2069
+ reset: p,
1700
2070
  onDrop: C,
1701
2071
  onPaste: w,
1702
2072
  dropzoneProps: T
1703
2073
  }), [
1704
- x,
1705
- S,
2074
+ v,
2075
+ y,
2076
+ o,
2077
+ c,
1706
2078
  u,
1707
- f,
1708
2079
  m,
1709
- v,
1710
- _,
2080
+ p,
1711
2081
  C,
1712
2082
  w,
1713
2083
  T
1714
2084
  ]);
1715
- }, X = async (e) => {
1716
- let t = B(e.client, e.tag), n = p.currentSpan.pipe(p.tap((t) => p.sync(() => {
1717
- D({
2085
+ }, $ = async (e) => {
2086
+ let t = J(e.client, e.tag), n = E.currentSpan.pipe(E.tap((t) => E.sync(() => {
2087
+ I({
1718
2088
  traceId: t.traceId,
1719
2089
  spanId: t.spanId,
1720
2090
  source: "mutation",
1721
2091
  tag: e.tag
1722
2092
  });
1723
- })), p.catchAll(() => p.void), p.zipRight(t(e.input)), p.withSpan(`${e.spanPrefix}.${e.tag}`, { attributes: {
2093
+ })), E.catchAll(() => E.void), E.zipRight(t(e.input)), E.withSpan(`${e.spanPrefix}.${e.tag}`, { attributes: {
1724
2094
  "voltro.api": e.apiName,
1725
2095
  "rpc.tag": e.tag
1726
2096
  } }));
1727
- return H(e.runtime, n);
1728
- }, vn = (e, t) => {
1729
- let { runtime: r, client: i, descriptors: a } = N(e);
2097
+ return X(e.runtime, n);
2098
+ }, Vn = (e, t) => {
2099
+ let { runtime: n, client: r, descriptors: i } = W(e);
1730
2100
  if (process.env.NODE_ENV !== "production") {
1731
- let n = a[t]?.kind;
2101
+ let n = i[t]?.kind;
1732
2102
  n !== void 0 && n !== "workflow" && console.error(`[@voltro/client] useWorkflow('${e}', '${t}') targets a ${n}, not a workflow. Use ${n === "mutation" ? "useMutation" : n === "action" ? "useAction" : `the ${n} hook`} instead.`);
1733
2103
  }
1734
- let [s, l] = c(!1), [u, d] = c(void 0), [f, p] = c(void 0), m = n(async (n) => {
1735
- l(!0), d(void 0);
2104
+ let [a, o] = S(!1), [s, c] = S(void 0), [l, u] = S(void 0), d = g(async (i) => {
2105
+ o(!0), c(void 0);
1736
2106
  try {
1737
- let a = await X({
2107
+ let a = await $({
1738
2108
  apiName: e,
1739
- runtime: r,
1740
- client: i,
2109
+ runtime: n,
2110
+ client: r,
1741
2111
  tag: t,
1742
- input: n,
2112
+ input: i,
1743
2113
  spanPrefix: "client.workflow.start"
1744
2114
  });
1745
- return p(a), a;
2115
+ return u(a), a;
1746
2116
  } catch (e) {
1747
- throw d(e), e;
2117
+ throw c(e), e;
1748
2118
  } finally {
1749
- l(!1);
2119
+ o(!1);
1750
2120
  }
1751
2121
  }, [
1752
2122
  e,
2123
+ n,
1753
2124
  r,
1754
- i,
1755
2125
  t
1756
- ]), h = n(async (t) => {
1757
- await X({
2126
+ ]), f = g(async (t) => {
2127
+ await $({
1758
2128
  apiName: e,
1759
- runtime: r,
1760
- client: i,
2129
+ runtime: n,
2130
+ client: r,
1761
2131
  tag: "__voltro.workflow.cancel",
1762
2132
  input: t,
1763
2133
  spanPrefix: "client.workflow.cancel"
1764
2134
  });
1765
2135
  }, [
1766
2136
  e,
1767
- r,
1768
- i
1769
- ]), g = n(async (t) => {
1770
- await X({
2137
+ n,
2138
+ r
2139
+ ]), p = g(async (t) => {
2140
+ await $({
1771
2141
  apiName: e,
1772
- runtime: r,
1773
- client: i,
2142
+ runtime: n,
2143
+ client: r,
1774
2144
  tag: "__voltro.workflow.resume",
1775
2145
  input: t,
1776
2146
  spanPrefix: "client.workflow.resume"
1777
2147
  });
1778
2148
  }, [
1779
2149
  e,
1780
- r,
1781
- i
1782
- ]), _ = n(async (t, n, a) => X({
2150
+ n,
2151
+ r
2152
+ ]), m = g(async (t, i, a) => $({
1783
2153
  apiName: e,
1784
- runtime: r,
1785
- client: i,
2154
+ runtime: n,
2155
+ client: r,
1786
2156
  tag: "__voltro.workflow.signal",
1787
2157
  input: {
1788
2158
  id: t.id,
1789
- signalName: n,
2159
+ signalName: i,
1790
2160
  ...a === void 0 ? {} : { payload: a }
1791
2161
  },
1792
2162
  spanPrefix: "client.workflow.signal"
1793
2163
  }), [
1794
2164
  e,
1795
- r,
1796
- i
1797
- ]), v = n(async (t, n, a, o) => X({
2165
+ n,
2166
+ r
2167
+ ]), h = g(async (t, i, a, o) => $({
1798
2168
  apiName: e,
1799
- runtime: r,
1800
- client: i,
2169
+ runtime: n,
2170
+ client: r,
1801
2171
  tag: "__voltro.workflow.update",
1802
2172
  input: {
1803
2173
  id: t.id,
1804
- updateName: n,
2174
+ updateName: i,
1805
2175
  ...a === void 0 ? {} : { payload: a },
1806
2176
  ...o?.timeoutMs === void 0 ? {} : { timeoutMs: o.timeoutMs }
1807
2177
  },
1808
2178
  spanPrefix: "client.workflow.update"
1809
2179
  }), [
1810
2180
  e,
1811
- r,
1812
- i
2181
+ n,
2182
+ r
1813
2183
  ]);
1814
- return o(() => ({
1815
- start: m,
1816
- cancel: h,
1817
- resume: g,
1818
- signal: _,
1819
- update: v,
1820
- pending: s,
1821
- error: u,
1822
- data: f
2184
+ return b(() => ({
2185
+ start: d,
2186
+ cancel: f,
2187
+ resume: p,
2188
+ signal: m,
2189
+ update: h,
2190
+ pending: a,
2191
+ error: s,
2192
+ data: l
1823
2193
  }), [
2194
+ d,
2195
+ f,
2196
+ p,
1824
2197
  m,
1825
2198
  h,
1826
- g,
1827
- _,
1828
- v,
2199
+ a,
1829
2200
  s,
1830
- u,
1831
- f
2201
+ l
1832
2202
  ]);
1833
- }, yn = (e) => {
1834
- let { runtime: t, client: r } = N(e), [i, a] = c(!1), [s, l] = c(void 0), [u, d] = c(void 0), f = n(async (n, i, o) => {
1835
- a(!0), l(void 0);
2203
+ }, Hn = (e) => {
2204
+ let { runtime: t, client: n } = W(e), [r, i] = S(!1), [a, o] = S(void 0), [s, c] = S(void 0), l = g(async (r, a, s) => {
2205
+ i(!0), o(void 0);
1836
2206
  try {
1837
- let a = await X({
2207
+ let i = await $({
1838
2208
  apiName: e,
1839
2209
  runtime: t,
1840
- client: r,
2210
+ client: n,
1841
2211
  tag: "__voltro.workflow.signal",
1842
2212
  input: {
1843
- id: n.id,
1844
- signalName: i,
1845
- ...o === void 0 ? {} : { payload: o }
2213
+ id: r.id,
2214
+ signalName: a,
2215
+ ...s === void 0 ? {} : { payload: s }
1846
2216
  },
1847
2217
  spanPrefix: "client.workflow.signal"
1848
2218
  });
1849
- return d(a), a;
2219
+ return c(i), i;
1850
2220
  } catch (e) {
1851
- throw l(e), e;
2221
+ throw o(e), e;
1852
2222
  } finally {
1853
- a(!1);
2223
+ i(!1);
1854
2224
  }
1855
2225
  }, [
1856
2226
  e,
1857
2227
  t,
1858
- r
2228
+ n
1859
2229
  ]);
1860
- return o(() => ({
1861
- signal: f,
1862
- pending: i,
1863
- error: s,
1864
- data: u
2230
+ return b(() => ({
2231
+ signal: l,
2232
+ pending: r,
2233
+ error: a,
2234
+ data: s
1865
2235
  }), [
1866
- f,
1867
- i,
1868
- s,
1869
- u
2236
+ l,
2237
+ r,
2238
+ a,
2239
+ s
1870
2240
  ]);
1871
- }, bn = (e) => {
1872
- let { runtime: t, client: r } = N(e), [i, a] = c(!1), [s, l] = c(void 0), [u, d] = c(void 0), f = n(async (n, i, o, s) => {
1873
- a(!0), l(void 0);
2241
+ }, Un = (e) => {
2242
+ let { runtime: t, client: n } = W(e), [r, i] = S(!1), [a, o] = S(void 0), [s, c] = S(void 0), l = g(async (r, a, s, l) => {
2243
+ i(!0), o(void 0);
1874
2244
  try {
1875
- let a = await X({
2245
+ let i = await $({
1876
2246
  apiName: e,
1877
2247
  runtime: t,
1878
- client: r,
2248
+ client: n,
1879
2249
  tag: "__voltro.workflow.update",
1880
2250
  input: {
1881
- id: n.id,
1882
- updateName: i,
1883
- ...o === void 0 ? {} : { payload: o },
1884
- ...s?.timeoutMs === void 0 ? {} : { timeoutMs: s.timeoutMs }
2251
+ id: r.id,
2252
+ updateName: a,
2253
+ ...s === void 0 ? {} : { payload: s },
2254
+ ...l?.timeoutMs === void 0 ? {} : { timeoutMs: l.timeoutMs }
1885
2255
  },
1886
2256
  spanPrefix: "client.workflow.update"
1887
2257
  });
1888
- return d(a), a;
2258
+ return c(i), i;
1889
2259
  } catch (e) {
1890
- throw l(e), e;
2260
+ throw o(e), e;
1891
2261
  } finally {
1892
- a(!1);
2262
+ i(!1);
1893
2263
  }
1894
2264
  }, [
1895
2265
  e,
1896
2266
  t,
1897
- r
2267
+ n
1898
2268
  ]);
1899
- return o(() => ({
1900
- update: f,
1901
- pending: i,
1902
- error: s,
1903
- data: u
2269
+ return b(() => ({
2270
+ update: l,
2271
+ pending: r,
2272
+ error: a,
2273
+ data: s
1904
2274
  }), [
1905
- f,
1906
- i,
1907
- s,
1908
- u
2275
+ l,
2276
+ r,
2277
+ a,
2278
+ s
1909
2279
  ]);
1910
- }, xn = (e, t) => {
1911
- let n = V(e, "__voltro.workflow.run", t ? { id: t } : {}, { skip: t === void 0 });
2280
+ }, Wn = (e, t) => {
2281
+ let n = Y(e, "__voltro.workflow.run", t ? { id: t } : {}, { skip: t === void 0 });
1912
2282
  return n.loading || n.idle || n.failed ? {
1913
2283
  ...n,
1914
2284
  run: void 0
@@ -1916,8 +2286,8 @@ var tn = () => {
1916
2286
  ...n,
1917
2287
  run: n.data[0]
1918
2288
  };
1919
- }, Sn = (e, t = {}, n = {}) => {
1920
- let r = V(e, "__voltro.workflow.runs", t, n);
2289
+ }, Gn = (e, t = {}, n = {}) => {
2290
+ let r = Y(e, "__voltro.workflow.runs", t, n);
1921
2291
  return r.loading || r.idle || r.failed ? {
1922
2292
  ...r,
1923
2293
  runs: []
@@ -1925,8 +2295,8 @@ var tn = () => {
1925
2295
  ...r,
1926
2296
  runs: r.data
1927
2297
  };
1928
- }, Cn = (e, t) => {
1929
- let n = V(e, "__voltro.workflow.run.steps", t ? { runId: t } : {}, { skip: t === void 0 });
2298
+ }, Kn = (e, t) => {
2299
+ let n = Y(e, "__voltro.workflow.run.steps", t ? { runId: t } : {}, { skip: t === void 0 });
1930
2300
  return n.loading || n.idle || n.failed ? {
1931
2301
  ...n,
1932
2302
  steps: []
@@ -1934,8 +2304,8 @@ var tn = () => {
1934
2304
  ...n,
1935
2305
  steps: n.data
1936
2306
  };
1937
- }, wn = (e, t) => {
1938
- let n = V(e, "__voltro.workflow.run.events", t ? { runId: t } : {}, { skip: t === void 0 });
2307
+ }, qn = (e, t) => {
2308
+ let n = Y(e, "__voltro.workflow.run.events", t ? { runId: t } : {}, { skip: t === void 0 });
1939
2309
  return n.loading || n.idle || n.failed ? {
1940
2310
  ...n,
1941
2311
  events: []
@@ -1943,8 +2313,8 @@ var tn = () => {
1943
2313
  ...n,
1944
2314
  events: n.data
1945
2315
  };
1946
- }, Tn = wn, En = (e, t = {}, n = {}) => {
1947
- let r = V(e, "__voltro.workflow.domainEvents", t, n);
2316
+ }, Jn = qn, Yn = (e, t = {}, n = {}) => {
2317
+ let r = Y(e, "__voltro.workflow.domainEvents", t, n);
1948
2318
  return r.loading || r.idle || r.failed ? {
1949
2319
  ...r,
1950
2320
  events: []
@@ -1952,8 +2322,8 @@ var tn = () => {
1952
2322
  ...r,
1953
2323
  events: r.data
1954
2324
  };
1955
- }, Dn = (e, t) => {
1956
- let n = V(e, "__voltro.workflow.event.deliveries", t ? { eventId: t } : {}, { skip: t === void 0 });
2325
+ }, Xn = (e, t) => {
2326
+ let n = Y(e, "__voltro.workflow.event.deliveries", t ? { eventId: t } : {}, { skip: t === void 0 });
1957
2327
  return n.loading || n.idle || n.failed ? {
1958
2328
  ...n,
1959
2329
  deliveries: []
@@ -1961,42 +2331,42 @@ var tn = () => {
1961
2331
  ...n,
1962
2332
  deliveries: n.data
1963
2333
  };
1964
- }, On = (e, t) => {
2334
+ }, Zn = (e, t) => {
1965
2335
  let n = e.payload;
1966
2336
  if (!n || typeof n != "object") return;
1967
2337
  let r = n[t];
1968
2338
  return typeof r == "string" ? r : void 0;
1969
- }, kn = (e) => {
2339
+ }, Qn = (e) => {
1970
2340
  let t = e.payload;
1971
2341
  if (!t || typeof t != "object") return;
1972
2342
  let n = t.updateId;
1973
2343
  return typeof n == "string" ? n : void 0;
1974
- }, An = (e) => {
2344
+ }, $n = (e) => {
1975
2345
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
1976
2346
  for (let r of e) if (r.eventType === "signal-received") {
1977
- let e = On(r, "signalName");
2347
+ let e = Zn(r, "signalName");
1978
2348
  e && t.add(e);
1979
2349
  } else if (r.eventType === "update-completed" || r.eventType === "update-failed") {
1980
- let e = kn(r);
2350
+ let e = Qn(r);
1981
2351
  e && n.add(e);
1982
2352
  }
1983
2353
  for (let r = e.length - 1; r >= 0; --r) {
1984
2354
  let i = e[r];
1985
2355
  if (i.eventType === "signal-awaited") {
1986
- let e = On(i, "signalName");
2356
+ let e = Zn(i, "signalName");
1987
2357
  if (e && !t.has(e)) return {
1988
2358
  name: e,
1989
2359
  kind: "signal"
1990
2360
  };
1991
2361
  } else if (i.eventType === "update-requested") {
1992
- let e = kn(i), t = On(i, "updateName");
2362
+ let e = Qn(i), t = Zn(i, "updateName");
1993
2363
  if (t && (!e || !n.has(e))) return {
1994
2364
  name: t,
1995
2365
  kind: "update"
1996
2366
  };
1997
2367
  }
1998
2368
  }
1999
- }, jn = (e) => e.find((e) => e.status === "running") || (e.length > 0 ? e[e.length - 1] : void 0), Mn = (e, t) => {
2369
+ }, er = (e) => e.find((e) => e.status === "running") || (e.length > 0 ? e[e.length - 1] : void 0), tr = (e, t) => {
2000
2370
  if (!e || e.status !== "failed") return;
2001
2371
  let n = t.find((e) => e.status === "failed");
2002
2372
  return {
@@ -2004,182 +2374,182 @@ var tn = () => {
2004
2374
  message: e.errorMessage,
2005
2375
  step: n?.stepName
2006
2376
  };
2007
- }, Nn = (e, t) => {
2008
- let r = xn(e, t), i = Cn(e, t), a = wn(e, t), s = vn(e, r.run?.tag ?? ""), c = r.run, l = i.steps, u = a.events, d = n(async () => {
2009
- if (!c) throw Error("useWorkflowRunState: no run loaded — cannot cancel");
2010
- await s.cancel({
2011
- workflowName: c.tag,
2012
- executionId: c.executionId
2377
+ }, nr = (e, t) => {
2378
+ let n = Wn(e, t), r = Kn(e, t), i = qn(e, t), a = Vn(e, n.run?.tag ?? ""), o = n.run, s = r.steps, c = i.events, l = g(async () => {
2379
+ if (!o) throw Error("useWorkflowRunState: no run loaded — cannot cancel");
2380
+ await a.cancel({
2381
+ workflowName: o.tag,
2382
+ executionId: o.executionId
2013
2383
  });
2014
- }, [s, c]), f = n(async () => {
2015
- if (!c) throw Error("useWorkflowRunState: no run loaded — cannot resume");
2016
- await s.resume({
2017
- workflowName: c.tag,
2018
- executionId: c.executionId
2384
+ }, [a, o]), u = g(async () => {
2385
+ if (!o) throw Error("useWorkflowRunState: no run loaded — cannot resume");
2386
+ await a.resume({
2387
+ workflowName: o.tag,
2388
+ executionId: o.executionId
2019
2389
  });
2020
- }, [s, c]), p = n((e, n) => {
2390
+ }, [a, o]), d = g((e, n) => {
2021
2391
  if (t === void 0) throw Error("useWorkflowRunState: no run id — cannot signal");
2022
- return s.signal({ id: t }, e, n);
2023
- }, [s, t]), m = n((e, n, r) => {
2392
+ return a.signal({ id: t }, e, n);
2393
+ }, [a, t]), f = g((e, n, r) => {
2024
2394
  if (t === void 0) throw Error("useWorkflowRunState: no run id — cannot update");
2025
- return s.update({ id: t }, e, n, r);
2026
- }, [s, t]);
2027
- return o(() => ({
2028
- run: c,
2029
- status: c?.status,
2030
- steps: l,
2031
- events: u,
2032
- currentStep: jn(l),
2033
- waitingFor: c?.status === "suspended" ? An(u) : void 0,
2034
- error: Mn(c, l),
2035
- traceId: c?.traceId,
2036
- loading: r.data === void 0,
2037
- cancel: d,
2038
- resume: f,
2039
- signal: p,
2040
- update: m
2395
+ return a.update({ id: t }, e, n, r);
2396
+ }, [a, t]);
2397
+ return b(() => ({
2398
+ run: o,
2399
+ status: o?.status,
2400
+ steps: s,
2401
+ events: c,
2402
+ currentStep: er(s),
2403
+ waitingFor: o?.status === "suspended" ? $n(c) : void 0,
2404
+ error: tr(o, s),
2405
+ traceId: o?.traceId,
2406
+ loading: n.data === void 0,
2407
+ cancel: l,
2408
+ resume: u,
2409
+ signal: d,
2410
+ update: f
2041
2411
  }), [
2412
+ o,
2413
+ s,
2042
2414
  c,
2415
+ n.data,
2043
2416
  l,
2044
2417
  u,
2045
- r.data,
2046
2418
  d,
2047
- f,
2048
- p,
2049
- m
2419
+ f
2050
2420
  ]);
2051
- }, Pn = (e, t) => {
2052
- let { runtime: r, client: i } = N(e), [a, o] = c([]), [l, d] = c("idle"), [f, m] = c(void 0), g = s(null), _ = n(() => {
2053
- let e = g.current;
2054
- e && (g.current = null, r.runFork(h.interrupt(e)), d((e) => e === "streaming" ? "idle" : e));
2055
- }, [r]);
2421
+ }, rr = (e, t) => {
2422
+ let { runtime: n, client: r } = W(e), [i, a] = S([]), [o, s] = S("idle"), [c, l] = S(void 0), u = x(null), d = g(() => {
2423
+ let e = u.current;
2424
+ e && (u.current = null, n.runFork(O.interrupt(e)), s((e) => e === "streaming" ? "idle" : e));
2425
+ }, [n]);
2056
2426
  return {
2057
- events: a,
2058
- status: l,
2059
- error: f,
2060
- start: n((e = {}) => {
2061
- let n = g.current;
2062
- n && r.runFork(h.interrupt(n)), o([]), m(void 0), d("streaming");
2063
- let a = B(i, t)(e), s = x.runForEach(a, (e) => p.sync(() => o((t) => [...t, e]))).pipe(p.matchCause({
2427
+ events: i,
2428
+ status: o,
2429
+ error: c,
2430
+ start: g((e = {}) => {
2431
+ let i = u.current;
2432
+ i && n.runFork(O.interrupt(i)), a([]), l(void 0), s("streaming");
2433
+ let o = J(r, t)(e), c = M.runForEach(o, (e) => E.sync(() => a((t) => [...t, e]))).pipe(E.matchCause({
2064
2434
  onSuccess: () => {
2065
- d("done");
2435
+ s("done");
2066
2436
  },
2067
2437
  onFailure: (e) => {
2068
- u.isInterruptedOnly(e) || (m(u.squash(e)), d("error"));
2438
+ w.isInterruptedOnly(e) || (l(w.squash(e)), s("error"));
2069
2439
  }
2070
2440
  }));
2071
- g.current = r.runFork(s);
2441
+ u.current = n.runFork(c);
2072
2442
  }, [
2443
+ n,
2073
2444
  r,
2074
- i,
2075
2445
  t
2076
2446
  ]),
2077
- cancel: _
2447
+ cancel: d
2078
2448
  };
2079
- }, Fn = (e, t, n, r) => {
2080
- let i = 0, a = !1, o = (e) => p.sync(() => {
2449
+ }, ir = (e, t, n, r) => {
2450
+ let i = 0, a = !1, o = (e) => E.sync(() => {
2081
2451
  e.seq <= i || (i = e.seq, n.onEvent(e.event), r.isTerminal(e.event) && (a = !0));
2082
2452
  }), s = (e, t, a) => {
2083
2453
  let o = i > t ? 0 : e + 1;
2084
- if (o > r.maxReconnects) return p.sync(() => {
2454
+ if (o > r.maxReconnects) return E.sync(() => {
2085
2455
  n.onError(a ?? /* @__PURE__ */ Error("stream connection lost")), n.onStatus("error");
2086
2456
  });
2087
2457
  let s = Math.min(r.maxBackoffMs, r.backoffMs * 2 ** Math.max(0, o - 1));
2088
- return p.sync(() => {
2458
+ return E.sync(() => {
2089
2459
  n.onStatus("reconnecting"), n.onReconnect();
2090
- }).pipe(p.zipRight(p.sleep(f.millis(s))), p.zipRight(p.sync(() => n.onStatus("streaming"))), p.zipRight(c(o)));
2091
- }, c = (r) => p.suspend(() => {
2460
+ }).pipe(E.zipRight(E.sleep(ee.millis(s))), E.zipRight(E.sync(() => n.onStatus("streaming"))), E.zipRight(c(o)));
2461
+ }, c = (r) => E.suspend(() => {
2092
2462
  let c = i, l = e({
2093
2463
  ...t,
2094
2464
  fromSeq: c
2095
2465
  });
2096
- return x.runForEach(l, o).pipe(p.matchCauseEffect({
2097
- onSuccess: () => a ? p.sync(() => n.onStatus("done")) : s(r, c, void 0),
2098
- onFailure: (e) => u.isInterruptedOnly(e) ? p.void : a ? p.sync(() => n.onStatus("done")) : s(r, c, u.squash(e))
2466
+ return M.runForEach(l, o).pipe(E.matchCauseEffect({
2467
+ onSuccess: () => a ? E.sync(() => n.onStatus("done")) : s(r, c, void 0),
2468
+ onFailure: (e) => w.isInterruptedOnly(e) ? E.void : a ? E.sync(() => n.onStatus("done")) : s(r, c, w.squash(e))
2099
2469
  }));
2100
2470
  });
2101
2471
  return c(0);
2102
- }, In = (e) => {
2472
+ }, ar = (e) => {
2103
2473
  let t = e?._tag;
2104
2474
  return t === "done" || t === "error";
2105
- }, Ln = (e, t, r = {}) => {
2106
- let { runtime: i, client: a } = N(e), [o, l] = c([]), [u, d] = c("idle"), [f, p] = c(0), [m, g] = c(void 0), _ = s(null), v = {
2107
- maxReconnects: r.maxReconnects ?? 6,
2108
- backoffMs: r.backoffMs ?? 400,
2109
- maxBackoffMs: r.maxBackoffMs ?? 8e3,
2110
- isTerminal: r.isTerminal ?? In
2111
- }, y = n(() => {
2112
- let e = _.current;
2113
- e && (_.current = null, i.runFork(h.interrupt(e)), d((e) => e === "streaming" || e === "reconnecting" ? "idle" : e));
2114
- }, [i]);
2475
+ }, or = (e, t, n = {}) => {
2476
+ let { runtime: r, client: i } = W(e), [a, o] = S([]), [s, c] = S("idle"), [l, u] = S(0), [d, f] = S(void 0), p = x(null), m = {
2477
+ maxReconnects: n.maxReconnects ?? 6,
2478
+ backoffMs: n.backoffMs ?? 400,
2479
+ maxBackoffMs: n.maxBackoffMs ?? 8e3,
2480
+ isTerminal: n.isTerminal ?? ar
2481
+ }, h = g(() => {
2482
+ let e = p.current;
2483
+ e && (p.current = null, r.runFork(O.interrupt(e)), c((e) => e === "streaming" || e === "reconnecting" ? "idle" : e));
2484
+ }, [r]);
2115
2485
  return {
2116
- events: o,
2117
- status: u,
2118
- reconnects: f,
2119
- error: m,
2120
- start: n((e = {}) => {
2121
- let n = _.current;
2122
- n && i.runFork(h.interrupt(n)), l([]), g(void 0), p(0), d("streaming");
2123
- let r = B(a, t), o = {
2124
- onEvent: (e) => l((t) => [...t, e]),
2125
- onStatus: d,
2126
- onReconnect: () => p((e) => e + 1),
2127
- onError: g
2486
+ events: a,
2487
+ status: s,
2488
+ reconnects: l,
2489
+ error: d,
2490
+ start: g((e = {}) => {
2491
+ let n = p.current;
2492
+ n && r.runFork(O.interrupt(n)), o([]), f(void 0), u(0), c("streaming");
2493
+ let a = J(i, t), s = {
2494
+ onEvent: (e) => o((t) => [...t, e]),
2495
+ onStatus: c,
2496
+ onReconnect: () => u((e) => e + 1),
2497
+ onError: f
2128
2498
  };
2129
- _.current = i.runFork(Fn(r, e, o, v));
2499
+ p.current = r.runFork(ir(a, e, s, m));
2130
2500
  }, [
2501
+ r,
2131
2502
  i,
2132
- a,
2133
2503
  t,
2134
- v.maxReconnects,
2135
- v.backoffMs,
2136
- v.maxBackoffMs,
2137
- v.isTerminal
2504
+ m.maxReconnects,
2505
+ m.backoffMs,
2506
+ m.maxBackoffMs,
2507
+ m.isTerminal
2138
2508
  ]),
2139
- cancel: y
2509
+ cancel: h
2140
2510
  };
2141
- }, Rn = (e, t) => e.order - t.order || (e.stepOrder ?? 0) - (t.stepOrder ?? 0), zn = (e) => {
2511
+ }, sr = (e, t) => e.order - t.order || (e.stepOrder ?? 0) - (t.stepOrder ?? 0), cr = (e) => {
2142
2512
  for (let t = e.length - 1; t >= 0; --t) {
2143
2513
  let n = e[t];
2144
2514
  if (n.role === "user" && n.content) return n.content;
2145
2515
  }
2146
- }, Bn = (e, t, r) => {
2147
- let { threadId: i } = r, a = V(e, `${t}.messages`, { threadId: i }), s = q(e, `${t}.send`), c = o(() => [...a.data ?? []].sort(Rn), [a.data]), l = n((e, t = {}) => s.run({
2148
- threadId: i,
2149
- order: a.data?.length ?? 0,
2516
+ }, lr = (e, t, n) => {
2517
+ let { threadId: r } = n, i = Y(e, `${t}.messages`, { threadId: r }), a = Xt(e, `${t}.send`), o = b(() => [...i.data ?? []].sort(sr), [i.data]), s = g((e, t = {}) => a.run({
2518
+ threadId: r,
2519
+ order: i.data?.length ?? 0,
2150
2520
  prompt: e,
2151
2521
  ...t
2152
2522
  }), [
2153
- s,
2154
- i,
2155
- a.data
2156
- ]), u = n(() => {
2157
- let e = zn(c);
2158
- return e === void 0 ? void 0 : l(e);
2159
- }, [c, l]);
2160
- return o(() => ({
2161
- messages: c,
2162
- streaming: c.some((e) => e.streaming),
2163
- loading: a.data === void 0,
2164
- error: a.error ?? s.error,
2165
- send: l,
2166
- regenerate: u,
2167
- sending: s.pending
2523
+ a,
2524
+ r,
2525
+ i.data
2526
+ ]), c = g(() => {
2527
+ let e = cr(o);
2528
+ return e === void 0 ? void 0 : s(e);
2529
+ }, [o, s]);
2530
+ return b(() => ({
2531
+ messages: o,
2532
+ streaming: o.some((e) => e.streaming),
2533
+ loading: i.data === void 0,
2534
+ error: i.error ?? a.error,
2535
+ send: s,
2536
+ regenerate: c,
2537
+ sending: a.pending
2168
2538
  }), [
2169
- c,
2170
- a.data,
2539
+ o,
2540
+ i.data,
2541
+ i.error,
2171
2542
  a.error,
2172
- s.error,
2173
- s.pending,
2174
- l,
2175
- u
2543
+ a.pending,
2544
+ s,
2545
+ c
2176
2546
  ]);
2177
- }, Vn = (e, t) => {
2178
- let { events: r, status: i, error: l, start: u, cancel: d } = Pn(e, t), [f, p] = c([]), m = s(null), h = o(() => r.filter((e) => e._tag === "token").map((e) => e.text ?? "").join(""), [r]);
2179
- return a(() => {
2180
- if (i !== "done" || m.current === null) return;
2181
- let e = m.current;
2182
- m.current = null, p((t) => [
2547
+ }, ur = (e, t) => {
2548
+ let { events: n, status: r, error: i, start: a, cancel: o } = rr(e, t), [s, c] = S([]), l = x(null), u = b(() => n.filter((e) => e._tag === "token").map((e) => e.text ?? "").join(""), [n]);
2549
+ return y(() => {
2550
+ if (r !== "done" || l.current === null) return;
2551
+ let e = l.current;
2552
+ l.current = null, c((t) => [
2183
2553
  ...t,
2184
2554
  {
2185
2555
  role: "user",
@@ -2187,48 +2557,48 @@ var tn = () => {
2187
2557
  },
2188
2558
  {
2189
2559
  role: "assistant",
2190
- content: h
2560
+ content: u
2191
2561
  }
2192
2562
  ]);
2193
- }, [i, h]), {
2194
- tokens: h,
2195
- history: f,
2196
- status: i,
2197
- error: l,
2198
- send: n((e = {}) => {
2563
+ }, [r, u]), {
2564
+ tokens: u,
2565
+ history: s,
2566
+ status: r,
2567
+ error: i,
2568
+ send: g((e = {}) => {
2199
2569
  let t = e.message;
2200
- m.current = typeof t == "string" ? t : "", u(e);
2201
- }, [u]),
2202
- cancel: d
2570
+ l.current = typeof t == "string" ? t : "", a(e);
2571
+ }, [a]),
2572
+ cancel: o
2203
2573
  };
2204
- }, Hn = (e, t) => {
2205
- let r = q(e, t), [i, a] = c(void 0), s = n(async (e) => {
2206
- let t = await r.run({ question: e });
2207
- return a(t), t;
2208
- }, [r]), l = n(() => a(void 0), []);
2209
- return o(() => ({
2210
- ask: s,
2211
- answer: i,
2212
- pending: r.pending,
2213
- error: r.error,
2214
- reset: l
2574
+ }, dr = (e, t) => {
2575
+ let n = Xt(e, t), [r, i] = S(void 0), a = g(async (e) => {
2576
+ let t = await n.run({ question: e });
2577
+ return i(t), t;
2578
+ }, [n]), o = g(() => i(void 0), []);
2579
+ return b(() => ({
2580
+ ask: a,
2581
+ answer: r,
2582
+ pending: n.pending,
2583
+ error: n.error,
2584
+ reset: o
2215
2585
  }), [
2216
- s,
2217
- i,
2218
- r.pending,
2219
- r.error,
2220
- l
2586
+ a,
2587
+ r,
2588
+ n.pending,
2589
+ n.error,
2590
+ o
2221
2591
  ]);
2222
- }, Un = (e) => {
2223
- let { cache: t, runtime: r } = N(e);
2224
- return n(() => {
2225
- t.refreshAll(r);
2226
- }, [t, r]);
2227
- }, Wn = (e) => e?._tag === "Unauthenticated", Gn = (e, t, n = {}) => {
2592
+ }, fr = (e) => {
2593
+ let { cache: t, runtime: n } = W(e);
2594
+ return g(() => {
2595
+ t.refreshAll(n);
2596
+ }, [t, n]);
2597
+ }, pr = (e) => e?._tag === "Unauthenticated", mr = (e, t, n = {}) => {
2228
2598
  let r = n.cooldownMs ?? 15e3, i = n.maxConsecutive ?? 3, a = n.now ?? (() => Date.now()), o = -Infinity, s = 0;
2229
2599
  return {
2230
2600
  dispose: e.on((e) => {
2231
- if (!Wn(e.error) || s >= i) return;
2601
+ if (!pr(e.error) || s >= i) return;
2232
2602
  let n = a();
2233
2603
  n - o < r || (o = n, s += 1, t());
2234
2604
  }),
@@ -2236,207 +2606,78 @@ var tn = () => {
2236
2606
  s = 0;
2237
2607
  }
2238
2608
  };
2239
- }, Kn = /* @__PURE__ */ new Set(), qn = (e) => {
2240
- for (let t of Kn) try {
2609
+ }, hr = /* @__PURE__ */ new Set(), gr = (e) => {
2610
+ for (let t of hr) try {
2241
2611
  t(e);
2242
2612
  } catch {}
2243
- }, Jn = (e) => (Kn.add(e), () => {
2244
- Kn.delete(e);
2245
- }), Yn = (e, t) => {
2246
- qn({
2613
+ }, _r = (e) => (hr.add(e), () => {
2614
+ hr.delete(e);
2615
+ }), vr = (e, t) => {
2616
+ gr({
2247
2617
  error: e,
2248
2618
  source: "manual",
2249
2619
  ...t ? { context: t } : {}
2250
2620
  });
2251
- }, Xn = (e, t) => {
2252
- let { errorBus: n } = N(e);
2253
- a(() => n.on(t), [n, t]);
2254
- }, Zn = "#/$defs/", Qn = (e) => e.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim().replace(/^./, (e) => e.toUpperCase()), Z = (e, t) => {
2255
- let n = e;
2256
- for (let e = 0; e < 8; e += 1) {
2257
- let e = n.$ref;
2258
- if (typeof e != "string" || !e.startsWith(Zn)) return n;
2259
- let r = t[e.slice(8)];
2260
- if (!r || typeof r != "object") return n;
2261
- n = r;
2262
- }
2263
- return n;
2264
- }, $n = (e) => {
2265
- if (!e || typeof e != "object") return !1;
2266
- let t = e;
2267
- if (t.type === "null" || t.const === null) return !0;
2268
- let n = t.enum;
2269
- return Array.isArray(n) && n.length === 1 && n[0] === null;
2270
- }, er = (e, t) => {
2271
- let n = e.type;
2272
- if (Array.isArray(n) && n.includes("null")) {
2273
- let t = n.filter((e) => e !== "null");
2274
- return {
2275
- node: {
2276
- ...e,
2277
- type: t.length === 1 ? t[0] : t
2278
- },
2279
- nullable: !0
2280
- };
2281
- }
2282
- for (let n of ["anyOf", "oneOf"]) {
2283
- let r = e[n];
2284
- if (!Array.isArray(r)) continue;
2285
- let i = r.filter((e) => !$n(e));
2286
- if (i.length !== r.length) return i.length === 1 ? {
2287
- node: Z(i[0], t),
2288
- nullable: !0
2289
- } : {
2290
- node: {
2291
- ...e,
2292
- [n]: i
2293
- },
2294
- nullable: !0
2295
- };
2296
- }
2297
- return {
2298
- node: e,
2299
- nullable: !1
2300
- };
2301
- }, tr = (e) => e.map((e) => ({
2302
- value: String(e),
2303
- label: Qn(String(e))
2304
- })), nr = (e) => {
2305
- let t = e.enum;
2306
- if (Array.isArray(t) && t.length > 0) return {
2307
- widget: "select",
2308
- options: tr(t)
2309
- };
2310
- let n = e.type, r = Array.isArray(n) ? n.find((e) => e !== "null") : n, i = e.format;
2311
- switch (r) {
2312
- case "string": return i === "date" ? { widget: "date" } : i === "date-time" ? { widget: "datetime" } : { widget: "text" };
2313
- case "integer":
2314
- case "number": return { widget: "number" };
2315
- case "boolean": return { widget: "checkbox" };
2316
- case "array": return { widget: "multi-select" };
2317
- default: return { widget: "custom" };
2318
- }
2319
- }, rr = (e, t, n) => Object.entries(e).map(([e, r]) => {
2320
- let { node: i, nullable: a } = er(Z(r, n), n), o = Z(i, n), { widget: s, options: c } = nr(o);
2321
- return {
2322
- name: e,
2323
- label: Qn(e),
2324
- widget: s,
2325
- required: t.has(e),
2326
- nullable: a,
2327
- ...c ? { options: c } : {},
2328
- jsonSchema: o
2329
- };
2330
- }), ir = (e) => {
2331
- try {
2332
- return g.make(e);
2333
- } catch {
2334
- return;
2335
- }
2336
- }, Q = (e) => {
2337
- let t = ir(e);
2338
- if (t === void 0) return [];
2339
- let n = t.$defs ?? {}, r = Z(t, n), i = r.properties;
2340
- return i ? rr(i, new Set(Array.isArray(r.required) ? r.required : []), n) : [];
2341
- }, ar = (e) => {
2342
- let t = ir(e);
2343
- if (t === void 0) return [];
2344
- let n = t.$defs ?? {}, r = Z(t, n);
2345
- if (r.type !== "array") return [];
2346
- let i = r.items;
2347
- if (!i || typeof i != "object") return [];
2348
- let a = Z(i, n), o = a.properties;
2349
- return o ? rr(o, new Set(Array.isArray(a.required) ? a.required : []), n) : [];
2350
- }, or = (e, t) => {
2351
- let n = b.decodeUnknownEither(e, { errors: "all" })(t);
2352
- if (n._tag === "Right") return {
2353
- valid: !0,
2354
- errors: {}
2355
- };
2356
- let r = {};
2357
- for (let e of E.formatErrorSync(n.left)) {
2358
- let t = e.path.length === 0 ? "" : String(e.path[0]);
2359
- t !== "" && !(t in r) && (r[t] = e.message);
2360
- }
2361
- return {
2362
- valid: !1,
2363
- errors: r
2364
- };
2365
- }, sr = (e, t, r) => {
2366
- let i = N(e), a = K(e, t), l = r.schema ?? i.descriptors[t]?.input;
2367
- process.env.NODE_ENV !== "production" && l === void 0 && console.error(`[@voltro/client] useFormBinding('${e}', '${t}'): no input schema. Pass options.schema, or mount the descriptor so its input reaches the client. Rendering no fields; submit skips client-side validation.`);
2368
- let u = o(() => l ? Q(l) : [], [l]), d = s(r.defaults ?? {}), [f, p] = c(d.current), [m, h] = c({}), g = n((e, t) => {
2369
- p((n) => ({
2370
- ...n,
2371
- [e]: t
2372
- }));
2373
- }, []), _ = n((e) => {
2374
- p((t) => ({
2375
- ...t,
2376
- ...e
2377
- }));
2378
- }, []), v = n(() => {
2379
- p(d.current), h({});
2380
- }, []), y = n(async () => {
2381
- if (l !== void 0) {
2382
- let e = or(l, f);
2383
- if (h(e.errors), !e.valid) return;
2621
+ }, yr = (e, t) => {
2622
+ let { errorBus: n } = W(e);
2623
+ y(() => n.on(t), [n, t]);
2624
+ }, br = (e, t) => {
2625
+ let n = globalThis, r = Symbol.for(`@voltro/web/context:${e}`), i = n[r];
2626
+ if (i) return i;
2627
+ let a = m(t);
2628
+ return n[r] = a, a;
2629
+ }, xr = br("serverRequest", null), Sr = () => _(xr), Cr = ({ value: e, children: t }) => /* @__PURE__ */ ae(xr.Provider, {
2630
+ value: e,
2631
+ children: t
2632
+ }), wr = (e) => {
2633
+ let t = Sr();
2634
+ return b(() => {
2635
+ if (t !== null) return t.formFlash?.formKey === e ? t.formFlash : void 0;
2636
+ if (typeof document > "u") return;
2637
+ let n = document.getElementById(f);
2638
+ if (n !== null && n.textContent !== null && n.textContent !== "") try {
2639
+ let t = JSON.parse(n.textContent);
2640
+ return t.formKey === e ? t : void 0;
2641
+ } catch {
2642
+ return;
2384
2643
  }
2385
- return a.mutate(f);
2386
- }, [
2387
- l,
2388
- f,
2389
- a
2390
- ]);
2391
- return {
2392
- fields: u,
2393
- values: f,
2394
- errors: m,
2395
- isValid: o(() => l === void 0 || or(l, f).valid, [l, f]),
2396
- pending: a.pending,
2397
- submitError: a.error,
2398
- data: a.data,
2399
- setValue: g,
2400
- setValues: _,
2401
- reset: v,
2402
- submit: y
2403
- };
2404
- }, cr = (e, t, n) => e.map((e) => {
2644
+ }, [t, e]);
2645
+ }, Tr = (e, t, n) => e.map((e) => {
2405
2646
  let r = String(e[n] ?? ""), i = e[t];
2406
2647
  return {
2407
2648
  value: r,
2408
2649
  label: i == null ? r : String(i)
2409
2650
  };
2410
- }), lr = (e, t, r = {}) => {
2411
- let i = r.debounceMs ?? 200, s = r.labelField ?? "name", l = r.valueField ?? "id", u = r.input ?? ((e) => ({ q: e })), [d, f] = c(r.initialTerm ?? ""), [p, m] = c(d);
2412
- a(() => {
2413
- if (d === p) return;
2414
- let e = setTimeout(() => m(d), i);
2651
+ }), Er = (e, t, n = {}) => {
2652
+ let r = n.debounceMs ?? 200, i = n.labelField ?? "name", a = n.valueField ?? "id", o = n.input ?? ((e) => ({ q: e })), [s, c] = S(n.initialTerm ?? ""), [l, u] = S(s);
2653
+ y(() => {
2654
+ if (s === l) return;
2655
+ let e = setTimeout(() => u(s), r);
2415
2656
  return () => clearTimeout(e);
2416
2657
  }, [
2417
- d,
2418
- p,
2419
- i
2420
- ]);
2421
- let h = r.skipUntilTerm === !0 && p.trim() === "", g = V(e, t, o(() => u(p), [u, p]), { skip: h }), _ = o(() => cr(g.data ?? [], s, l), [
2422
- g.data,
2423
2658
  s,
2424
- l
2425
- ]), v = n((e) => f(e), []);
2659
+ l,
2660
+ r
2661
+ ]);
2662
+ let d = n.skipUntilTerm === !0 && l.trim() === "", f = Y(e, t, b(() => o(l), [o, l]), { skip: d }), p = b(() => Tr(f.data ?? [], i, a), [
2663
+ f.data,
2664
+ i,
2665
+ a
2666
+ ]), m = g((e) => c(e), []);
2426
2667
  return {
2427
- options: _,
2428
- loading: !h && g.data === void 0,
2429
- term: d,
2430
- search: v
2668
+ options: p,
2669
+ loading: !d && f.data === void 0,
2670
+ term: s,
2671
+ search: m
2431
2672
  };
2432
- }, ur = (e, t) => e === t ? 0 : e == null ? 1 : t == null || e < t ? -1 : 1, dr = (e, t, r = {}) => {
2433
- let i = N(e), [a, s] = c(r.pageSize), l = V(e, t, o(() => a === void 0 ? r.input ?? {} : {
2434
- ...r.input,
2435
- limit: a
2436
- }, [r.input, a])), u = i.descriptors[t]?.output, d = n(() => {
2437
- r.pageSize !== void 0 && s((e) => (e ?? r.pageSize) + r.pageSize);
2438
- }, [r.pageSize]), f = o(() => r.columns ?? (u === void 0 ? [] : ar(u)), [r.columns, u]), [p, m] = c(r.initialSort), h = n((e) => {
2439
- m((t) => t?.column === e ? {
2673
+ }, Dr = (e, t) => e === t ? 0 : e == null ? 1 : t == null || e < t ? -1 : 1, Or = (e, t, n = {}) => {
2674
+ let r = W(e), [i, a] = S(n.pageSize), o = Y(e, t, b(() => i === void 0 ? n.input ?? {} : {
2675
+ ...n.input,
2676
+ limit: i
2677
+ }, [n.input, i])), s = r.descriptors[t]?.output, c = g(() => {
2678
+ n.pageSize !== void 0 && a((e) => (e ?? n.pageSize) + n.pageSize);
2679
+ }, [n.pageSize]), u = b(() => n.columns ?? (s === void 0 ? [] : l(s)), [n.columns, s]), [d, f] = S(n.initialSort), p = g((e) => {
2680
+ f((t) => t?.column === e ? {
2440
2681
  column: e,
2441
2682
  direction: t.direction === "asc" ? "desc" : "asc"
2442
2683
  } : {
@@ -2445,51 +2686,51 @@ var tn = () => {
2445
2686
  });
2446
2687
  }, []);
2447
2688
  return {
2448
- columns: f,
2449
- rows: o(() => {
2450
- let e = l.data ?? [];
2451
- if (p === void 0) return e;
2452
- let t = p.direction === "asc" ? 1 : -1;
2453
- return [...e].sort((e, n) => ur(e[p.column], n[p.column]) * t);
2454
- }, [l.data, p]),
2455
- loading: l.data === void 0,
2456
- error: l.error,
2457
- sort: p,
2458
- toggleSort: h,
2459
- loadMore: d,
2460
- hasMore: a !== void 0 && (l.data?.length ?? 0) >= a
2689
+ columns: u,
2690
+ rows: b(() => {
2691
+ let e = o.data ?? [];
2692
+ if (d === void 0) return e;
2693
+ let t = d.direction === "asc" ? 1 : -1;
2694
+ return [...e].sort((e, n) => Dr(e[d.column], n[d.column]) * t);
2695
+ }, [o.data, d]),
2696
+ loading: o.data === void 0,
2697
+ error: o.error,
2698
+ sort: d,
2699
+ toggleSort: p,
2700
+ loadMore: c,
2701
+ hasMore: i !== void 0 && (o.data?.length ?? 0) >= i
2461
2702
  };
2462
- }, fr = (e, t, n, r) => {
2703
+ }, kr = (e, t, n, r) => {
2463
2704
  let i = e.replace(/\/$/, ""), a = new URLSearchParams({
2464
2705
  table: t,
2465
2706
  id: n
2466
2707
  });
2467
2708
  return r !== void 0 && a.set("column", r), `${i}/_voltro/inspect/provenance?${a.toString()}`;
2468
- }, pr = fr, mr = (e, t, n, r) => {
2469
- let { inspectBaseUrl: i } = N(e), [o, s] = c({
2709
+ }, Ar = kr, jr = (e, t, n, r) => {
2710
+ let { inspectBaseUrl: i } = W(e), [a, o] = S({
2470
2711
  data: void 0,
2471
2712
  loading: !0,
2472
2713
  error: void 0
2473
2714
  });
2474
- return a(() => {
2715
+ return y(() => {
2475
2716
  let e = !1;
2476
- s({
2717
+ o({
2477
2718
  data: void 0,
2478
2719
  loading: !0,
2479
2720
  error: void 0
2480
2721
  });
2481
- let a = fr(i ?? "", t, n, r);
2722
+ let a = kr(i ?? "", t, n, r);
2482
2723
  return fetch(a).then(async (e) => {
2483
2724
  if (!e.ok) throw Error(`provenance fetch failed: HTTP ${e.status}`);
2484
2725
  return await e.json();
2485
2726
  }).then((t) => {
2486
- e || s({
2727
+ e || o({
2487
2728
  data: t,
2488
2729
  loading: !1,
2489
2730
  error: void 0
2490
2731
  });
2491
2732
  }).catch((t) => {
2492
- e || s({
2733
+ e || o({
2493
2734
  data: void 0,
2494
2735
  loading: !1,
2495
2736
  error: t
@@ -2503,24 +2744,24 @@ var tn = () => {
2503
2744
  t,
2504
2745
  n,
2505
2746
  r
2506
- ]), o;
2507
- }, hr = "admin:full", gr = (e, t) => e.includes("admin:full") ? !0 : (typeof t == "string" ? [t] : t).every((t) => e.includes(t)), _r = (e, t) => t.length === 0 || e.includes("admin:full") ? !0 : t.some((t) => e.includes(t)), vr = e({ scopes: [] });
2508
- function yr(e) {
2509
- return t(vr.Provider, { value: { scopes: e.scopes } }, e.children);
2747
+ ]), a;
2748
+ }, Mr = "admin:full", Nr = (e, t) => e.includes("admin:full") ? !0 : (typeof t == "string" ? [t] : t).every((t) => e.includes(t)), Pr = (e, t) => t.length === 0 || e.includes("admin:full") ? !0 : t.some((t) => e.includes(t)), Fr = m({ scopes: [] });
2749
+ function Ir(e) {
2750
+ return h(Fr.Provider, { value: { scopes: e.scopes } }, e.children);
2510
2751
  }
2511
- var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e), Sr = (e) => `${e.replace(/\/$/, "")}/_voltro/inspect/manifest`, Cr = (e) => {
2512
- let { inspectBaseUrl: t } = N(e), [n, r] = c({
2752
+ var Lr = () => _(Fr), Rr = (e) => Nr(Lr().scopes, e), zr = (e) => Pr(Lr().scopes, e), Br = (e) => `${e.replace(/\/$/, "")}/_voltro/inspect/manifest`, Vr = (e) => {
2753
+ let { inspectBaseUrl: t } = W(e), [n, r] = S({
2513
2754
  manifest: void 0,
2514
2755
  loading: !0,
2515
2756
  error: void 0
2516
2757
  });
2517
- return a(() => {
2758
+ return y(() => {
2518
2759
  let e = !1;
2519
2760
  return r({
2520
2761
  manifest: void 0,
2521
2762
  loading: !0,
2522
2763
  error: void 0
2523
- }), fetch(Sr(t ?? "")).then(async (e) => {
2764
+ }), fetch(Br(t ?? "")).then(async (e) => {
2524
2765
  if (!e.ok) throw Error(`manifest fetch failed: HTTP ${e.status}`);
2525
2766
  return await e.json();
2526
2767
  }).then((t) => {
@@ -2539,7 +2780,7 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2539
2780
  e = !0;
2540
2781
  };
2541
2782
  }, [e, t]), n;
2542
- }, wr = (e, t) => t.scope.length === 0 || (t.mode === "any" ? t.scope.some((t) => e.includes(t)) : t.scope.every((t) => e.includes(t))), Tr = (e, t) => {
2783
+ }, Hr = (e, t) => t.scope.length === 0 || (t.mode === "any" ? t.scope.some((t) => e.includes(t)) : t.scope.every((t) => e.includes(t))), Ur = (e, t) => {
2543
2784
  if (e === void 0) return "unknown";
2544
2785
  if (t.includes("admin:full") || e.length === 0) return "allowed";
2545
2786
  let n = !1;
@@ -2548,7 +2789,7 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2548
2789
  n = !0;
2549
2790
  continue;
2550
2791
  }
2551
- if (!wr(t, r)) {
2792
+ if (!Hr(t, r)) {
2552
2793
  if (r.resourceScoped) {
2553
2794
  n = !0;
2554
2795
  continue;
@@ -2557,13 +2798,13 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2557
2798
  }
2558
2799
  }
2559
2800
  return n ? "unknown" : "allowed";
2560
- }, Er = (e) => (e ?? []).flatMap((e) => e.kind === "scope" ? [...e.scope] : []), Dr = (e) => {
2801
+ }, Wr = (e) => (e ?? []).flatMap((e) => e.kind === "scope" ? [...e.scope] : []), Gr = (e) => {
2561
2802
  for (let t of e ?? []) if (t.kind === "open") return t.reason;
2562
- }, Or = (e) => Tr(e, $().scopes), kr = (e, t) => Array.isArray(e) ? e.includes(t) : e === t, Ar = (e, t, n) => e.targets?.some((e) => e.table === t && e.op === n) ?? !1, jr = (e) => e === void 0 ? {} : {
2803
+ }, Kr = (e) => Ur(e, Lr().scopes), qr = (e, t) => Array.isArray(e) ? e.includes(t) : e === t, Jr = (e, t, n) => e.targets?.some((e) => e.table === t && e.op === n) ?? !1, Yr = (e) => e === void 0 ? {} : {
2563
2804
  tag: e.tag,
2564
2805
  ...e.guards === void 0 ? {} : { guards: e.guards }
2565
- }, Mr = (e) => e.tables.filter((e) => !e.framework).map((t) => {
2566
- let n = e.procedures.find((e) => e.kind === "query" && kr(e.source, t.name)), r = e.procedures.find((e) => e.kind === "mutation" && Ar(e, t.name, "insert")), i = e.procedures.find((e) => e.kind === "mutation" && Ar(e, t.name, "update")), a = e.procedures.find((e) => e.kind === "mutation" && Ar(e, t.name, "delete")), o = t.pkColumn ?? (t.columns.some((e) => e.name === "id") ? "id" : void 0);
2806
+ }, Xr = (e) => e.tables.filter((e) => !e.framework).map((t) => {
2807
+ let n = e.procedures.find((e) => e.kind === "query" && qr(e.source, t.name)), r = e.procedures.find((e) => e.kind === "mutation" && Jr(e, t.name, "insert")), i = e.procedures.find((e) => e.kind === "mutation" && Jr(e, t.name, "update")), a = e.procedures.find((e) => e.kind === "mutation" && Jr(e, t.name, "delete")), o = t.pkColumn ?? (t.columns.some((e) => e.name === "id") ? "id" : void 0);
2567
2808
  return {
2568
2809
  table: t.name,
2569
2810
  columns: t.columns.filter((e) => e.serverOnly !== !0),
@@ -2572,75 +2813,75 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2572
2813
  reactive: t.reactive,
2573
2814
  ...o === void 0 ? {} : { pkColumn: o },
2574
2815
  editable: (t.editable ?? !0) && o !== void 0,
2575
- list: jr(n),
2576
- create: jr(r),
2577
- update: jr(i),
2578
- delete: jr(a)
2816
+ list: Yr(n),
2817
+ create: Yr(r),
2818
+ update: Yr(i),
2819
+ delete: Yr(a)
2579
2820
  };
2580
- }), Nr = (e) => {
2581
- let [t, r] = c([]), [i, a] = c([]), s = n((e) => {
2582
- r((t) => [...t, e]), a([]);
2583
- }, []), l = n(async () => {
2584
- let n = t[t.length - 1];
2585
- n !== void 0 && n.blockedBy === void 0 && (await e.onUndo(n.invocationId), r((e) => e.slice(0, -1)), a((e) => [...e, n]));
2586
- }, [t, e]), u = n(async () => {
2587
- let t = i[i.length - 1];
2588
- t !== void 0 && (await e.onRedo(t.invocationId), a((e) => e.slice(0, -1)), r((e) => [...e, t]));
2589
- }, [i, e]);
2590
- return o(() => {
2821
+ }), Zr = (e) => {
2822
+ let [t, n] = S([]), [r, i] = S([]), a = g((e) => {
2823
+ n((t) => [...t, e]), i([]);
2824
+ }, []), o = g(async () => {
2825
+ let r = t[t.length - 1];
2826
+ r !== void 0 && r.blockedBy === void 0 && (await e.onUndo(r.invocationId), n((e) => e.slice(0, -1)), i((e) => [...e, r]));
2827
+ }, [t, e]), s = g(async () => {
2828
+ let t = r[r.length - 1];
2829
+ t !== void 0 && (await e.onRedo(t.invocationId), i((e) => e.slice(0, -1)), n((e) => [...e, t]));
2830
+ }, [r, e]);
2831
+ return b(() => {
2591
2832
  let e = t[t.length - 1];
2592
2833
  return {
2593
- record: s,
2594
- undo: l,
2595
- redo: u,
2834
+ record: a,
2835
+ undo: o,
2836
+ redo: s,
2596
2837
  canUndo: t.length > 0 && e?.blockedBy === void 0,
2597
- canRedo: i.length > 0,
2838
+ canRedo: r.length > 0,
2598
2839
  stack: t,
2599
2840
  nextBlockedBy: e?.blockedBy
2600
2841
  };
2601
2842
  }, [
2602
2843
  t,
2603
- i,
2604
- s,
2605
- l,
2606
- u
2844
+ r,
2845
+ a,
2846
+ o,
2847
+ s
2607
2848
  ]);
2608
- }, Pr = "__voltro.undo.log", Fr = "__voltro.undo.apply", Ir = "__voltro.undo.redo", Lr = (e, t) => {
2609
- let r = t?.limit, { data: i } = V(e, Pr, r === void 0 ? {} : { limit: r }), a = K(e, Fr), o = K(e, Ir), s = i ?? [], c = s.find((e) => !e.undone && !e.crossesAction), l = s.find((e) => e.undone), u = n(async (e) => {
2849
+ }, Qr = "__voltro.undo.log", $r = "__voltro.undo.apply", ei = "__voltro.undo.redo", ti = (e, t) => {
2850
+ let n = t?.limit, { data: r } = Y(e, Qr, n === void 0 ? {} : { limit: n }), i = Q(e, $r), a = Q(e, ei), o = r ?? [], s = o.find((e) => !e.undone && !e.crossesAction), c = o.find((e) => e.undone), l = g(async (e) => {
2851
+ await i.mutate({ invocationId: e });
2852
+ }, [i]), u = g(async (e) => {
2610
2853
  await a.mutate({ invocationId: e });
2611
- }, [a]), d = n(async (e) => {
2612
- await o.mutate({ invocationId: e });
2613
- }, [o]), f = n(async () => {
2854
+ }, [a]), d = g(async () => {
2855
+ s && await l(s.id);
2856
+ }, [s, l]), f = g(async () => {
2614
2857
  c && await u(c.id);
2615
- }, [c, u]), p = n(async () => {
2616
- l && await d(l.id);
2617
- }, [l, d]);
2858
+ }, [c, u]);
2618
2859
  return {
2619
- entries: s,
2620
- loading: i === void 0,
2621
- canUndo: c !== void 0,
2622
- canRedo: l !== void 0,
2623
- undo: u,
2624
- redo: d,
2625
- undoLast: f,
2626
- redoLast: p
2860
+ entries: o,
2861
+ loading: r === void 0,
2862
+ canUndo: s !== void 0,
2863
+ canRedo: c !== void 0,
2864
+ undo: l,
2865
+ redo: u,
2866
+ undoLast: d,
2867
+ redoLast: f
2627
2868
  };
2628
- }, Rr = (e, t) => ({
2869
+ }, ni = (e, t) => ({
2629
2870
  name: e,
2630
2871
  map: t
2631
- }), zr = (e, t) => e === void 0 ? null : typeof e == "string" ? { event: e } : e(t), Br = /* @__PURE__ */ new Set(["onMount", "onUnmount"]), Vr = (e, t, n) => {
2872
+ }), ri = (e, t) => e === void 0 ? null : typeof e == "string" ? { event: e } : e(t), ii = /* @__PURE__ */ new Set(["onMount", "onUnmount"]), ai = (e, t, n) => {
2632
2873
  let r = { ...t };
2633
2874
  for (let [i, a] of Object.entries(e.map)) {
2634
- if (Br.has(i) || a === void 0) continue;
2875
+ if (ii.has(i) || a === void 0) continue;
2635
2876
  let e = t[i];
2636
2877
  r[i] = (...r) => {
2637
- let i = zr(a, t);
2878
+ let i = ri(a, t);
2638
2879
  if (i !== null && n(i), typeof e == "function") return e(...r);
2639
2880
  };
2640
2881
  }
2641
2882
  return r;
2642
- }, Hr = (e, t, n) => {
2643
- let r = s({
2883
+ }, oi = (e, t, n) => {
2884
+ let r = x({
2644
2885
  spec: e,
2645
2886
  props: t,
2646
2887
  sink: n
@@ -2649,47 +2890,47 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2649
2890
  spec: e,
2650
2891
  props: t,
2651
2892
  sink: n
2652
- }, a(() => {
2653
- let e = r.current, t = zr(e.spec.map.onMount, e.props);
2893
+ }, y(() => {
2894
+ let e = r.current, t = ri(e.spec.map.onMount, e.props);
2654
2895
  return t !== null && e.sink(t), () => {
2655
- let e = r.current, t = zr(e.spec.map.onUnmount, e.props);
2896
+ let e = r.current, t = ri(e.spec.map.onUnmount, e.props);
2656
2897
  t !== null && e.sink(t);
2657
2898
  };
2658
- }, []), o(() => Vr(e, t, n), [
2899
+ }, []), b(() => ai(e, t, n), [
2659
2900
  e,
2660
2901
  t,
2661
2902
  n
2662
2903
  ]);
2663
- }, Ur = (e, t) => {
2664
- let n = N(e).descriptors[t]?.input;
2665
- return o(() => n === void 0 ? [] : Q(n), [n]);
2666
- }, Wr = (e, t) => {
2667
- let n = N(e).descriptors[t]?.output;
2668
- return o(() => n === void 0 ? [] : ar(n), [n]);
2669
- }, Gr = (e, t) => {
2904
+ }, si = (e, t) => {
2905
+ let n = W(e).descriptors[t]?.input;
2906
+ return b(() => n === void 0 ? [] : o(n), [n]);
2907
+ }, ci = (e, t) => {
2908
+ let n = W(e).descriptors[t]?.output;
2909
+ return b(() => n === void 0 ? [] : l(n), [n]);
2910
+ }, li = (e, t) => {
2670
2911
  if (e === t) return !0;
2671
2912
  if (e.length !== t.length) return !1;
2672
2913
  for (let n = 0; n < e.length; n += 1) if (!Object.is(e[n], t[n])) return !1;
2673
2914
  return !0;
2674
- }, Kr = (e) => Object.keys(e).sort().map((t) => e[t]), qr = (e, t) => {
2675
- let n = s(null), r = Kr(e);
2676
- return (n.current === null || !Gr(n.current.key, r)) && (n.current = {
2915
+ }, ui = (e) => Object.keys(e).sort().map((t) => e[t]), di = (e, t) => {
2916
+ let n = x(null), r = ui(e);
2917
+ return (n.current === null || !li(n.current.key, r)) && (n.current = {
2677
2918
  key: r,
2678
2919
  value: t(e)
2679
2920
  }), n.current.value;
2680
- }, Jr = (e, t, n, r = {}) => {
2681
- let i = V(e, t, { ...n }, r);
2682
- return o(() => ({
2921
+ }, fi = (e, t, n, r = {}) => {
2922
+ let i = Y(e, t, { ...n }, r);
2923
+ return b(() => ({
2683
2924
  allowed: i.data?.allowed === !0,
2684
2925
  pending: i.data === void 0
2685
2926
  }), [i.data]);
2686
- }, Yr = (e, t, n, r = {}) => {
2687
- let i = V(e, t, { ...n }, r);
2688
- return o(() => ({
2927
+ }, pi = (e, t, n, r = {}) => {
2928
+ let i = Y(e, t, { ...n }, r);
2929
+ return b(() => ({
2689
2930
  allowedIds: new Set(i.data?.allowedIds ?? []),
2690
2931
  pending: i.data === void 0
2691
2932
  }), [i.data]);
2692
- }, Xr = (e) => {
2933
+ }, mi = (e) => {
2693
2934
  switch (e) {
2694
2935
  case "select":
2695
2936
  case "radio":
@@ -2705,49 +2946,50 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2705
2946
  case "switch": return "boolean";
2706
2947
  default: return null;
2707
2948
  }
2708
- }, Zr = (e) => Q(e).map((e) => {
2709
- let t = Xr(e.widget);
2949
+ }, hi = (e) => o(e).map((e) => {
2950
+ if (e.name.includes(".")) return null;
2951
+ let t = mi(e.widget);
2710
2952
  return t === null ? null : {
2711
2953
  name: e.name,
2712
2954
  label: e.label,
2713
2955
  kind: t,
2714
2956
  ...e.options ? { options: e.options } : {}
2715
2957
  };
2716
- }).filter((e) => e !== null), Qr = (e) => {
2958
+ }).filter((e) => e !== null), gi = (e) => {
2717
2959
  let t = {};
2718
2960
  for (let [n, r] of Object.entries(e)) r === void 0 || r === "" || Array.isArray(r) && r.length === 0 || (t[n] = r);
2719
2961
  return t;
2720
- }, $r = (e, t, r = {}) => {
2721
- let i = N(e).descriptors[t]?.input, a = o(() => i === void 0 ? [] : Zr(i), [i]), [s, l] = c(r.initial ?? {}), u = n((e, t) => {
2722
- l((n) => Qr({
2962
+ }, _i = (e, t, n = {}) => {
2963
+ let r = W(e).descriptors[t]?.input, i = b(() => r === void 0 ? [] : hi(r), [r]), [a, o] = S(n.initial ?? {}), s = g((e, t) => {
2964
+ o((n) => gi({
2723
2965
  ...n,
2724
2966
  [e]: t
2725
2967
  }));
2726
- }, []), d = n(() => l({}), []), f = V(e, t, o(() => Qr(s), [s]));
2968
+ }, []), c = g(() => o({}), []), l = Y(e, t, b(() => gi(a), [a]));
2727
2969
  return {
2728
- filters: a,
2729
- values: s,
2730
- setFilter: u,
2731
- clear: d,
2732
- rows: f.data ?? [],
2733
- count: f.data?.length,
2734
- loading: f.data === void 0,
2735
- error: f.error
2970
+ filters: i,
2971
+ values: a,
2972
+ setFilter: s,
2973
+ clear: c,
2974
+ rows: l.data ?? [],
2975
+ count: l.data?.length,
2976
+ loading: l.data === void 0,
2977
+ error: l.error
2736
2978
  };
2737
- }, ei = (e, t, n = {}) => {
2738
- let r = V(e, t, n), i = r.data;
2979
+ }, vi = (e, t, n = {}) => {
2980
+ let r = Y(e, t, n), i = r.data;
2739
2981
  return {
2740
2982
  record: Array.isArray(i) ? i[0] : i,
2741
2983
  loading: i === void 0,
2742
2984
  error: r.error
2743
2985
  };
2744
- }, ti = (e, t = 300) => {
2745
- let [n, r] = c(e);
2746
- return a(() => {
2986
+ }, yi = (e, t = 300) => {
2987
+ let [n, r] = S(e);
2988
+ return y(() => {
2747
2989
  let n = setTimeout(() => r(e), t);
2748
2990
  return () => clearTimeout(n);
2749
2991
  }, [e, t]), n;
2750
- }, ni = (e) => {
2992
+ }, bi = (e) => {
2751
2993
  let { value: t, debouncedValue: n, data: r, interpret: i, skipEmpty: a = !0 } = e;
2752
2994
  if (a && t.trim() === "") return {
2753
2995
  status: "idle",
@@ -2765,39 +3007,39 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2765
3007
  valid: o.valid,
2766
3008
  message: o.message
2767
3009
  };
2768
- }, ri = (e, t, n, r) => {
2769
- let { input: i, interpret: a, debounceMs: s = 300, skipEmpty: c = !0 } = r, l = ti(n, s), u = c && l.trim() === "", d = V(e, t, o(() => i ? i(l) : { value: l }, [i, l]), { skip: u });
2770
- return ni({
3010
+ }, xi = (e, t, n, r) => {
3011
+ let { input: i, interpret: a, debounceMs: o = 300, skipEmpty: s = !0 } = r, c = yi(n, o), l = s && c.trim() === "", u = Y(e, t, b(() => i ? i(c) : { value: c }, [i, c]), { skip: l });
3012
+ return bi({
2771
3013
  value: n,
2772
- debouncedValue: l,
2773
- data: u ? null : d.data,
3014
+ debouncedValue: c,
3015
+ data: l ? null : u.data,
2774
3016
  interpret: a,
2775
- skipEmpty: c
3017
+ skipEmpty: s
2776
3018
  });
2777
- }, ii = (e, t) => ({
3019
+ }, Si = (e, t) => ({
2778
3020
  name: e,
2779
3021
  payload: t
2780
- }), ai = (e, t) => {
2781
- let n = b.decodeUnknownEither(e.payload, { errors: "all" })(t);
3022
+ }), Ci = (e, t) => {
3023
+ let n = j.decodeUnknownEither(e.payload, { errors: "all" })(t);
2782
3024
  if (n._tag === "Right") return {
2783
3025
  valid: !0,
2784
3026
  errors: {}
2785
3027
  };
2786
3028
  let r = {};
2787
- for (let e of E.formatErrorSync(n.left)) r[e.path.join(".") || "(root)"] = e.message;
3029
+ for (let e of ce.formatErrorSync(n.left)) r[e.path.join(".") || "(root)"] = e.message;
2788
3030
  return {
2789
3031
  valid: !1,
2790
3032
  errors: r
2791
3033
  };
2792
- }, oi = (e) => {
3034
+ }, wi = (e) => {
2793
3035
  let t = new Map(e.map((e) => [e.name, e]));
2794
3036
  return {
2795
3037
  names: [...t.keys()].sort(),
2796
3038
  get: (e) => t.get(e),
2797
3039
  events: e
2798
3040
  };
2799
- }, si = (e, t) => {
2800
- let n = oi(e);
3041
+ }, Ti = (e, t) => {
3042
+ let n = wi(e);
2801
3043
  return {
2802
3044
  track: (e, r) => {
2803
3045
  let i = n.get(e);
@@ -2806,7 +3048,7 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2806
3048
  return;
2807
3049
  }
2808
3050
  if (process.env.NODE_ENV !== "production") {
2809
- let t = ai(i, r);
3051
+ let t = Ci(i, r);
2810
3052
  t.valid || console.error(`[@voltro/client] analytics.track('${e}'): payload failed its schema`, t.errors);
2811
3053
  }
2812
3054
  t({
@@ -2817,44 +3059,49 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2817
3059
  names: n.names,
2818
3060
  catalog: n
2819
3061
  };
2820
- }, ci = (e, t) => {
2821
- let r = q(e, t);
3062
+ }, Ei = (e, t) => {
3063
+ let n = Xt(e, t);
2822
3064
  return {
2823
- preview: n((e) => r.run(e), [r]),
2824
- diff: r.lastResult,
2825
- pending: r.pending,
2826
- error: r.error
3065
+ preview: g((e) => n.run(e), [n]),
3066
+ diff: n.lastResult,
3067
+ pending: n.pending,
3068
+ error: n.error
2827
3069
  };
2828
- }, li = (e, t, n, r) => [...e, {
3070
+ }, Di = (e, t, n, r) => [...e, {
2829
3071
  id: t,
2830
3072
  tag: n,
2831
3073
  input: r,
2832
3074
  status: "pending",
2833
3075
  attempts: 0
2834
- }], ui = (e, t, n) => e.map((e) => e.id === t ? {
3076
+ }], Oi = (e, t, n) => e.map((e) => e.id === t ? {
2835
3077
  ...e,
2836
3078
  ...n
2837
- } : e), di = (e, t) => ui(e, t, { status: "sent" }), fi = (e, t, n) => e.map((e) => e.id === t ? {
3079
+ } : e), ki = (e, t) => Oi(e, t, { status: "sent" }), Ai = (e, t, n) => e.map((e) => e.id === t ? {
2838
3080
  ...e,
2839
3081
  status: "failed",
2840
3082
  error: n,
2841
3083
  attempts: e.attempts + 1
2842
- } : e), pi = (e, t, n) => ui(e, t, {
3084
+ } : e), ji = (e, t, n) => Oi(e, t, {
2843
3085
  status: "conflict",
2844
3086
  error: n
2845
- }), mi = (e) => e.filter((e) => e.status !== "sent"), hi = (e) => {
3087
+ }), Mi = (e, t, n) => e.map((e) => e.id === t && e.status === "conflict" ? {
3088
+ ...e,
3089
+ input: n,
3090
+ status: "pending",
3091
+ error: void 0
3092
+ } : e), Ni = (e) => e.filter((e) => e.status !== "sent"), Pi = (e) => {
2846
3093
  let t = [];
2847
3094
  for (let n of e) {
2848
3095
  if (n.status === "conflict") break;
2849
3096
  (n.status === "pending" || n.status === "failed") && t.push(n);
2850
3097
  }
2851
3098
  return t;
2852
- }, gi = (e) => {
3099
+ }, Fi = (e) => {
2853
3100
  let t = e;
2854
3101
  return t?.conflict === !0 || t?._tag === "UndoBoundaryError" && t?.boundary === "conflict";
2855
- }, _i = (e) => {
2856
- let [t, n] = c(e ?? (typeof navigator < "u" ? navigator.onLine : !0));
2857
- return a(() => {
3102
+ }, Ii = (e) => {
3103
+ let [t, n] = S(e ?? (typeof navigator < "u" ? navigator.onLine : !0));
3104
+ return y(() => {
2858
3105
  if (e !== void 0) {
2859
3106
  n(e);
2860
3107
  return;
@@ -2865,34 +3112,53 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2865
3112
  window.removeEventListener("online", t), window.removeEventListener("offline", r);
2866
3113
  };
2867
3114
  }, [e]), t;
2868
- }, vi = (e) => {
2869
- let { send: t, isConflict: r = gi, idFor: i } = e, [o, l] = c([]), u = _i(e.online), d = s(o);
2870
- d.current = o;
2871
- let f = s(0), p = n((e, t) => {
2872
- let n = i?.() ?? `obx_${f.current++}_${e}`;
2873
- l((r) => li(r, n, e, t));
2874
- }, [i]), m = n(async () => {
2875
- for (let e of hi(d.current)) try {
2876
- await t(e), l((t) => di(t, e.id));
3115
+ }, Li = (e) => {
3116
+ let { send: t, persistence: n, isConflict: r = Fi, idFor: i } = e, [a, o] = S([]), s = Ii(e.online), c = x(a);
3117
+ c.current = a;
3118
+ let l = x(0), u = x(Math.random().toString(36).slice(2, 8)), d = x(n === void 0);
3119
+ y(() => {
3120
+ if (n === void 0 || d.current) return;
3121
+ let e = !1;
3122
+ return n.load().then((t) => {
3123
+ e || (d.current = !0, t.length > 0 && o((e) => [...t, ...e]));
3124
+ }).catch(() => {
3125
+ d.current = !0;
3126
+ }), () => {
3127
+ e = !0;
3128
+ };
3129
+ }, [n]), y(() => {
3130
+ n === void 0 || !d.current || n.save(Ni(a)).catch(() => {});
3131
+ }, [n, a]);
3132
+ let f = g((e, t) => {
3133
+ let n = i?.() ?? `obx_${u.current}_${l.current++}_${e}`;
3134
+ o((r) => Di(r, n, e, t));
3135
+ }, [i]), p = g(async () => {
3136
+ for (let e of Pi(c.current)) try {
3137
+ await t(e), o((t) => ki(t, e.id));
2877
3138
  } catch (t) {
2878
3139
  if (r(t)) {
2879
- l((n) => pi(n, e.id, t));
3140
+ o((n) => ji(n, e.id, t));
2880
3141
  break;
2881
3142
  }
2882
- l((n) => fi(n, e.id, t));
3143
+ o((n) => Ai(n, e.id, t));
2883
3144
  }
2884
3145
  }, [t, r]);
2885
- return a(() => {
2886
- u && m();
2887
- }, [u, m]), {
2888
- queue: o,
2889
- enqueue: p,
2890
- replay: m,
2891
- online: u,
2892
- pending: o.filter((e) => e.status === "pending" || e.status === "failed").length,
2893
- conflicts: o.filter((e) => e.status === "conflict")
3146
+ y(() => {
3147
+ s && p();
3148
+ }, [s, p]);
3149
+ let m = g((e, t) => {
3150
+ o((n) => Mi(n, e, t)), s && p();
3151
+ }, [s, p]);
3152
+ return {
3153
+ queue: a,
3154
+ enqueue: f,
3155
+ replay: p,
3156
+ online: s,
3157
+ pending: a.filter((e) => e.status === "pending" || e.status === "failed").length,
3158
+ conflicts: a.filter((e) => e.status === "conflict"),
3159
+ resolveConflict: m
2894
3160
  };
2895
- }, yi = (e) => {
3161
+ }, Ri = (e) => {
2896
3162
  let { scrollTop: t, viewportHeight: n, rowHeight: r, overscan: i = 5, total: a } = e, o = r > 0 ? r : 1, s = Math.max(0, Math.floor(t / o)), c = Math.ceil(n / o), l = Math.max(0, s - i), u = s + c + i, d = a === void 0 ? u : Math.min(u, a);
2897
3163
  return {
2898
3164
  startIndex: l,
@@ -2902,67 +3168,67 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2902
3168
  topSpacer: l * r,
2903
3169
  bottomSpacer: a === void 0 ? 0 : Math.max(0, (a - d) * r)
2904
3170
  };
2905
- }, bi = (e, t, r) => {
2906
- let { rowHeight: i, viewportHeight: a, overscan: s, total: l, input: u } = r, [d, f] = c(0), p = o(() => yi({
2907
- scrollTop: d,
2908
- viewportHeight: a,
2909
- rowHeight: i,
2910
- ...s === void 0 ? {} : { overscan: s },
2911
- ...l === void 0 ? {} : { total: l }
3171
+ }, zi = (e, t, n) => {
3172
+ let { rowHeight: r, viewportHeight: i, overscan: a, total: o, input: s } = n, [c, l] = S(0), u = b(() => Ri({
3173
+ scrollTop: c,
3174
+ viewportHeight: i,
3175
+ rowHeight: r,
3176
+ ...a === void 0 ? {} : { overscan: a },
3177
+ ...o === void 0 ? {} : { total: o }
2912
3178
  }), [
2913
- d,
2914
- a,
3179
+ c,
2915
3180
  i,
2916
- s,
2917
- l
2918
- ]), m = V(e, t, o(() => ({
2919
- ...u,
2920
- offset: p.offset,
2921
- limit: p.limit
3181
+ r,
3182
+ a,
3183
+ o
3184
+ ]), d = Y(e, t, b(() => ({
3185
+ ...s,
3186
+ offset: u.offset,
3187
+ limit: u.limit
2922
3188
  }), [
2923
- u,
2924
- p.offset,
2925
- p.limit
2926
- ])), h = n((e) => {
2927
- f(e.currentTarget.scrollTop);
3189
+ s,
3190
+ u.offset,
3191
+ u.limit
3192
+ ])), f = g((e) => {
3193
+ l(e.currentTarget.scrollTop);
2928
3194
  }, []);
2929
3195
  return {
2930
- rows: m.data ?? [],
2931
- window: p,
2932
- onScroll: h,
2933
- topSpacer: p.topSpacer,
2934
- bottomSpacer: p.bottomSpacer,
2935
- loading: m.data === void 0,
2936
- error: m.error
3196
+ rows: d.data ?? [],
3197
+ window: u,
3198
+ onScroll: f,
3199
+ topSpacer: u.topSpacer,
3200
+ bottomSpacer: u.bottomSpacer,
3201
+ loading: d.data === void 0,
3202
+ error: d.error
2937
3203
  };
2938
- }, xi = () => typeof navigator > "u" || navigator.onLine, Si = (e) => {
2939
- let { errorBus: t } = N(e), [r, i] = c(xi), [o, l] = c(0), [u, d] = c(void 0), f = s(!0);
2940
- a(() => (f.current = !0, () => {
2941
- f.current = !1;
2942
- }), []), a(() => {
3204
+ }, Bi = () => typeof navigator > "u" || navigator.onLine, Vi = (e) => {
3205
+ let { errorBus: t } = W(e), [n, r] = S(Bi), [i, a] = S(0), [o, s] = S(void 0), c = x(!0);
3206
+ y(() => (c.current = !0, () => {
3207
+ c.current = !1;
3208
+ }), []), y(() => {
2943
3209
  if (typeof window > "u") return;
2944
3210
  let e = () => {
2945
- i(!0), l(0);
2946
- }, t = () => i(!1);
3211
+ r(!0), a(0);
3212
+ }, t = () => r(!1);
2947
3213
  return window.addEventListener("online", e), window.addEventListener("offline", t), () => {
2948
3214
  window.removeEventListener("online", e), window.removeEventListener("offline", t);
2949
3215
  };
2950
- }, []), a(() => {
3216
+ }, []), y(() => {
2951
3217
  if (t?.on) return t.on(() => {
2952
- f.current && (l((e) => e + 1), d(Date.now()));
3218
+ c.current && (a((e) => e + 1), s(Date.now()));
2953
3219
  });
2954
3220
  }, [t]);
2955
- let p = n(() => {
2956
- l(0);
3221
+ let l = g(() => {
3222
+ a(0);
2957
3223
  }, []);
2958
3224
  return {
2959
- status: r ? o > 0 ? "degraded" : "connected" : "offline",
2960
- online: r,
2961
- failureCount: o,
2962
- lastFailureAt: u,
2963
- reportSuccess: p
3225
+ status: n ? i > 0 ? "degraded" : "connected" : "offline",
3226
+ online: n,
3227
+ failureCount: i,
3228
+ lastFailureAt: o,
3229
+ reportSuccess: l
2964
3230
  };
2965
- }, Ci = "__voltro.connections.list", wi = "__voltro.connections.start", Ti = "__voltro.connections.submitToken", Ei = "__voltro.connections.disconnect", Di = {
3231
+ }, Hi = "__voltro.connections.list", Ui = "__voltro.connections.start", Wi = "__voltro.connections.submitToken", Gi = "__voltro.connections.disconnect", Ki = {
2966
3232
  connectionId: "",
2967
3233
  kind: "oauth2",
2968
3234
  label: "",
@@ -2973,55 +3239,55 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
2973
3239
  expiresAt: null,
2974
3240
  lastError: null,
2975
3241
  connectedAt: null
2976
- }, Oi = (e, t) => {
3242
+ }, qi = (e, t) => {
2977
3243
  if (t === "redirect") {
2978
3244
  globalThis.location.assign(e);
2979
3245
  return;
2980
3246
  }
2981
3247
  globalThis.open(e, "voltro-connect", "width=620,height=760,menubar=no,toolbar=no") === null && globalThis.location.assign(e);
2982
- }, ki = (e) => {
2983
- let { data: t } = V(e, Ci, {}), r = q(e, wi), i = K(e, Ti), a = K(e, Ei), o = t ?? [], s = r.pending || i.pending || a.pending, c = n((e) => ({
3248
+ }, Ji = (e) => {
3249
+ let { data: t } = Y(e, Hi, {}), n = Xt(e, Ui), r = Q(e, Wi), i = Q(e, Gi), a = t ?? [], o = n.pending || r.pending || i.pending, s = g((e) => ({
2984
3250
  ...e,
2985
3251
  connected: e.status === "connected",
2986
3252
  needsAttention: e.status === "expired" || e.status === "revoked" || e.status === "error",
2987
- pending: s,
3253
+ pending: o,
2988
3254
  connect: async (t) => {
2989
3255
  if (e.kind !== "oauth2") throw Error(`connection "${e.connectionId}" is a personal-access-token connection — call submitToken(token), not connect().`);
2990
- let n = t?.redirectTo ?? `${globalThis.location.pathname}${globalThis.location.search}`;
2991
- Oi((await r.run({
3256
+ let r = t?.redirectTo ?? `${globalThis.location.pathname}${globalThis.location.search}`;
3257
+ qi((await n.run({
2992
3258
  connectionId: e.connectionId,
2993
- redirectTo: n
3259
+ redirectTo: r
2994
3260
  })).authorizeUrl, t?.mode);
2995
3261
  },
2996
3262
  submitToken: async (t) => {
2997
3263
  if (e.kind !== "pat") throw Error(`connection "${e.connectionId}" uses OAuth — call connect(), not submitToken().`);
2998
- await i.mutate({
3264
+ await r.mutate({
2999
3265
  connectionId: e.connectionId,
3000
3266
  token: t
3001
3267
  });
3002
3268
  },
3003
3269
  disconnect: async () => {
3004
- await a.mutate({ connectionId: e.connectionId });
3270
+ await i.mutate({ connectionId: e.connectionId });
3005
3271
  }
3006
3272
  }), [
3007
- s,
3273
+ o,
3274
+ n,
3008
3275
  r,
3009
- i,
3010
- a
3011
- ]), l = n((e) => {
3012
- let t = o.find((t) => t.connectionId === e);
3013
- return t === void 0 ? void 0 : c(t);
3014
- }, [o, c]);
3276
+ i
3277
+ ]), c = g((e) => {
3278
+ let t = a.find((t) => t.connectionId === e);
3279
+ return t === void 0 ? void 0 : s(t);
3280
+ }, [a, s]);
3015
3281
  return {
3016
- connections: o,
3282
+ connections: a,
3017
3283
  loading: t === void 0,
3018
- get: l,
3019
- pending: s
3284
+ get: c,
3285
+ pending: o
3020
3286
  };
3021
- }, Ai = (e, t) => {
3022
- let n = ki(e), r = n.get(t);
3023
- return o(() => r === void 0 ? {
3024
- ...Di,
3287
+ }, Yi = (e, t) => {
3288
+ let n = Ji(e), r = n.get(t);
3289
+ return b(() => r === void 0 ? {
3290
+ ...Ki,
3025
3291
  connectionId: t,
3026
3292
  label: t,
3027
3293
  connected: !1,
@@ -3046,6 +3312,6 @@ var $ = () => r(vr), br = (e) => gr($().scopes, e), xr = (e) => _r($().scopes, e
3046
3312
  n.loading,
3047
3313
  n.pending
3048
3314
  ]);
3049
- }, ji = "framework-client";
3315
+ }, Xi = "framework-client";
3050
3316
  //#endregion
3051
- export { hr as ADMIN_SCOPE, ji as CLIENT_NAME, Ci as CONNECTIONS_LIST_TAG, Ei as CONNECTION_DISCONNECT_TAG, wi as CONNECTION_START_TAG, Ti as CONNECTION_SUBMIT_TOKEN_TAG, _e as FrameworkRuntimesContext, Ae as FrameworkRuntimesProvider, he as LoadingSubscriptionCache, yr as PermissionProvider, ge as RpcErrorBus, me as SubscriptionCache, Fr as UNDO_APPLY_TAG, Pr as UNDO_LOG_TAG, Ir as UNDO_REDO_TAG, Se as _resetFrameworkRuntimesWarning, qt as applyPreloadSeeds, ft as applyStoreSeeds, we as buildApiRuntime, gr as canCall, _r as canCallAny, Ct as clearMutations, mi as clearSent, Ye as clearStoreHistory, yi as computeWindow, si as createAnalytics, Vt as createHooks, Tr as decideAccess, ii as defineEvent, st as defineStore, Rr as defineTracking, ot as definedStores, Mr as deriveEntityAdmins, li as enqueueEntry, oi as eventCatalog, Zr as filtersFromSchema, jt as freshIdempotencyKey, Et as getMutationNotifier, xt as getMutations, Wn as isUnauthenticated, P as isUnresolvedApi, Ht as makePreloadSeedBag, lt as makeStoreSeedBag, Sr as manifestUrl, pi as markConflict, fi as markFailed, di as markSent, Dr as openAccessReason, pr as provenanceUrl, qn as publishClientError, D as publishClientTrace, Yt as readPreloadedSeedOutcome, Jt as readPreloadedSnapshot, hi as replayable, Yn as reportClientError, Er as requiredScopes, Xt as resetPreloadSeeds, ct as resetStoreRegistryForTests, Ie as resetStoreStorageForTest, B as resolveByTag, Fe as resolveStoreStorage, zr as resolveTrackingEvent, Fn as resumableConsumeProgram, cr as rowsToOptions, nn as runSequence, ar as schemaToColumns, Q as schemaToFields, Gt as seedPreloadedSubscription, Kt as seedPreloadedSubscriptionFailure, dt as seedStore, tn as sequence, Tt as setMutationNotifier, Ut as setPreloadSeedResolver, ut as setStoreSeedResolver, Pe as setStoreStorage, W as settleMutation, F as shallow, Gr as shallowArrayEqual, Kr as sourceValues, ye as ssrClientProxy, be as ssrStubHandle, O as stableKey, ke as startApiSupervisor, bt as startMutation, qe as storeHistory, Jn as subscribeClientErrors, re as subscribeClientTraces, St as subscribeMutations, Je as subscribeStoreHistory, oe as supersedesConfirmedPatches, Xe as travelToStoreState, Or as useAccessDecision, q as useAction, Vn as useAgent, Bn as useAgentChat, Pn as useAgentStream, ri as useAsyncValidation, br as useCan, xr as useCanAny, Cr as useCapabilityManifest, Ai as useConnection, Si as useConnectionStatus, ki as useConnections, Hn as useDataCopilot, dr as useDataTable, ti as useDebounced, qr as useDerived, en as useEvent, sr as useFormBinding, Ur as useFormSkeleton, N as useFrameworkApi, Ce as useFrameworkRuntimes, K as useMutation, Xn as useOnRpcError, vi as useOutbox, $ as usePermissions, Zt as usePreloadedSubscription, ci as usePreview, mr as useProvenance, lr as useQueryField, $r as useQueryFilters, ei as useRecord, Un as useRefreshSubscriptions, Jr as useResourceCan, Yr as useResourceCans, Ln as useResumableAgentStream, rn as useSequence, V as useSubscription, Wr as useTableSkeleton, Hr as useTracking, Nr as useUndo, Lr as useUndoLog, _n as useUpload, bi as useWindowedSubscription, vn as useWorkflow, En as useWorkflowDomainEvents, Dn as useWorkflowEventDeliveries, Tn as useWorkflowEvents, xn as useWorkflowRun, wn as useWorkflowRunEvents, Nn as useWorkflowRunState, Cn as useWorkflowRunSteps, Sn as useWorkflowRuns, yn as useWorkflowSignal, bn as useWorkflowUpdate, ai as validateEventPayload, or as validateFields, ni as validationStatus, Gn as wireAuthRefresh, Mt as withIdempotencyKey, Vr as wrapTrackedCallbacks };
3317
+ export { Mr as ADMIN_SCOPE, Xi as CLIENT_NAME, Hi as CONNECTIONS_LIST_TAG, Gi as CONNECTION_DISCONNECT_TAG, Ui as CONNECTION_START_TAG, Wi as CONNECTION_SUBMIT_TOKEN_TAG, f as FORM_FLASH_SCRIPT_ID, s as FORM_KEY_FIELD, u as FORM_PATH_PREFIX, i as FORM_REDIRECT_FIELD, xe as FrameworkRuntimesContext, Ie as FrameworkRuntimesProvider, be as LoadingSubscriptionCache, Ir as PermissionProvider, V as RpcErrorBus, xr as ServerRequestContext, Cr as ServerRequestProvider, B as SubscriptionCache, $r as UNDO_APPLY_TAG, Qr as UNDO_LOG_TAG, ei as UNDO_REDO_TAG, Qt as ValidationMessagesProvider, De as _resetFrameworkRuntimesWarning, _n as applyPreloadSeeds, bt as applyStoreSeeds, Ae as buildApiRuntime, Nr as canCall, Pr as canCallAny, Mt as clearMutations, Ni as clearSent, nt as clearStoreHistory, Ri as computeWindow, Ti as createAnalytics, ln as createHooks, Ur as decideAccess, d as decodeFieldIssues, Si as defineEvent, ht as defineStore, ni as defineTracking, mt as definedStores, Xr as deriveEntityAdmins, t as documentLocale, Di as enqueueEntry, wi as eventCatalog, hi as filtersFromSchema, e as formActionPath, c as formDataToInput, n as formField, r as formSections, Vt as freshIdempotencyKey, It as getMutationNotifier, At as getMutations, br as globalContext, pr as isUnauthenticated, ke as isUnresolvedApi, un as makePreloadSeedBag, _t as makeStoreSeedBag, Br as manifestUrl, ji as markConflict, Ai as markFailed, ki as markSent, Gr as openAccessReason, Ar as provenanceUrl, gr as publishClientError, I as publishClientTrace, yn as readPreloadedSeedOutcome, vn as readPreloadedSnapshot, Pi as replayable, vr as reportClientError, Wr as requiredScopes, bn as resetPreloadSeeds, gt as resetStoreRegistryForTests, He as resetStoreStorageForTest, J as resolveByTag, Mi as resolveConflictEntry, Ve as resolveStoreStorage, ri as resolveTrackingEvent, a as resolveValidationMessage, ir as resumableConsumeProgram, Tr as rowsToOptions, En as runSequence, l as schemaToColumns, o as schemaToFields, hn as seedPreloadedSubscription, gn as seedPreloadedSubscriptionFailure, yt as seedStore, Tn as sequence, Ft as setMutationNotifier, fn as setPreloadSeedResolver, vt as setStoreSeedResolver, Be as setStoreStorage, kt as settleMutation, Ue as shallow, li as shallowArrayEqual, ui as sourceValues, Ce as ssrClientProxy, we as ssrStubHandle, L as stableKey, Fe as startApiSupervisor, Ot as startMutation, et as storeHistory, _r as subscribeClientErrors, ue as subscribeClientTraces, jt as subscribeMutations, tt as subscribeStoreHistory, R as supersedesConfirmedPatches, rt as travelToStoreState, Kr as useAccessDecision, Xt as useAction, ur as useAgent, lr as useAgentChat, rr as useAgentStream, xi as useAsyncValidation, Rr as useCan, zr as useCanAny, Vr as useCapabilityManifest, Yi as useConnection, Vi as useConnectionStatus, Ji as useConnections, dr as useDataCopilot, Or as useDataTable, yi as useDebounced, di as useDerived, wn as useEvent, on as useFormBinding, sn as useFormField, wr as useFormFlash, si as useFormSkeleton, W as useFrameworkApi, Oe as useFrameworkRuntimes, Q as useMutation, yr as useOnRpcError, Li as useOutbox, Lr as usePermissions, xn as usePreloadedSubscription, Ei as usePreview, jr as useProvenance, Er as useQueryField, _i as useQueryFilters, vi as useRecord, fr as useRefreshSubscriptions, fi as useResourceCan, pi as useResourceCans, or as useResumableAgentStream, Dn as useSequence, Sr as useServerRequest, Y as useSubscription, ci as useTableSkeleton, oi as useTracking, Zr as useUndo, ti as useUndoLog, Bn as useUpload, $t as useValidationMessages, zi as useWindowedSubscription, Vn as useWorkflow, Yn as useWorkflowDomainEvents, Xn as useWorkflowEventDeliveries, Jn as useWorkflowEvents, Wn as useWorkflowRun, qn as useWorkflowRunEvents, nr as useWorkflowRunState, Kn as useWorkflowRunSteps, Gn as useWorkflowRuns, Hn as useWorkflowSignal, Un as useWorkflowUpdate, Ci as validateEventPayload, p as validateFields, bi as validationStatus, mr as wireAuthRefresh, Ht as withIdempotencyKey, ai as wrapTrackedCallbacks };