@voltro/client 0.2.2 → 0.4.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
@@ -19,7 +19,61 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
19
19
  emittedAt: void 0,
20
20
  error: void 0,
21
21
  pendingPatches: 0
22
- }), T = 5e3, E = 0, ee = () => `patch_${++E}`, te = (e, t, n) => {
22
+ }), T = 5e3, E = 0, ee = () => `patch_${++E}`, D = (e, t) => {
23
+ let n = e;
24
+ for (let e of t.split(".")) {
25
+ if (typeof n != "object" || !n) return;
26
+ n = n[e];
27
+ }
28
+ return n;
29
+ }, O = (e, t, n) => {
30
+ let r = t.split("."), i = (e) => typeof e == "object" && e && !Array.isArray(e) ? { ...e } : {}, a = i(e), o = a;
31
+ for (let e = 0; e < r.length - 1; e += 1) o[r[e]] = i(o[r[e]]), o = o[r[e]];
32
+ return o[r[r.length - 1]] = n, a;
33
+ }, te = (e, t) => {
34
+ 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];
35
+ return i.length === 0 ? null : new Set(i);
36
+ }, ne = (e, t, n) => {
37
+ let r = e.path, i = e.by ?? "id";
38
+ if (e.op === "insert") {
39
+ let a = e.shapeItem ?? e.shape, o = a ? {
40
+ [i]: n,
41
+ ...a(t, n),
42
+ optimistic: !0
43
+ } : {
44
+ [i]: n,
45
+ ...t,
46
+ optimistic: !0
47
+ }, s = e.order ?? "append";
48
+ return (e) => {
49
+ let t = Array.isArray(D(e, r)) ? D(e, r) : [];
50
+ return O(e ?? {}, r, s === "append" ? [...t, o] : [o, ...t]);
51
+ };
52
+ }
53
+ let a = te(e, t);
54
+ if (a === null) return null;
55
+ if (e.op === "update") {
56
+ let n = e.shapeItem ?? e.shape, o = n ? (e) => ({
57
+ ...n(t, e),
58
+ [i]: e[i],
59
+ optimistic: !0
60
+ }) : (e) => ({
61
+ ...e,
62
+ ...t,
63
+ [i]: e[i],
64
+ optimistic: !0
65
+ });
66
+ return (e) => {
67
+ let t = Array.isArray(D(e, r)) ? D(e, r) : [];
68
+ return O(e, r, t.map((e) => a.has(e[i]) ? o(e) : e));
69
+ };
70
+ }
71
+ return (e) => {
72
+ let t = Array.isArray(D(e, r)) ? D(e, r) : [];
73
+ return O(e, r, t.filter((e) => !a.has(e[i])));
74
+ };
75
+ }, re = (e, t, n) => {
76
+ if (e.path !== void 0) return ne(e, t, n);
23
77
  switch (e.op) {
24
78
  case "insert": {
25
79
  let r = e.shape ? {
@@ -37,11 +91,11 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
37
91
  };
38
92
  }
39
93
  case "update": {
40
- let n = e.identify ? e.identify(t) : typeof t.id == "string" ? t.id : void 0;
41
- if (n === void 0) return null;
94
+ let n = te(e, t);
95
+ if (n === null) return null;
42
96
  let r = e.shape, i = r ? (e) => ({
43
97
  ...r(t, e),
44
- id: n,
98
+ id: e.id,
45
99
  optimistic: !0
46
100
  }) : (e) => ({
47
101
  ...e,
@@ -50,21 +104,21 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
50
104
  });
51
105
  return (e) => (Array.isArray(e) ? e : []).map((e) => {
52
106
  let t = e;
53
- return t.id === n ? i(t) : t;
107
+ return n.has(t.id) ? i(t) : t;
54
108
  });
55
109
  }
56
110
  case "delete": {
57
- let n = e.identify ? e.identify(t) : typeof t.id == "string" ? t.id : void 0;
58
- return n === void 0 ? null : (e) => (Array.isArray(e) ? e : []).filter((e) => e.id !== n);
111
+ let n = te(e, t);
112
+ return n === null ? null : (e) => (Array.isArray(e) ? e : []).filter((e) => !n.has(e.id));
59
113
  }
60
114
  }
61
- }, ne = 5e3, re = class {
115
+ }, ie = 5e3, ae = class {
62
116
  entries = /* @__PURE__ */ new Map();
63
117
  inactiveTtlMs;
64
118
  onChangeHook;
65
119
  errorBus;
66
120
  constructor(e = {}) {
67
- this.inactiveTtlMs = e.inactiveTtlMs ?? ne, this.onChangeHook = e.onChange, this.errorBus = e.errorBus;
121
+ this.inactiveTtlMs = e.inactiveTtlMs ?? ie, this.onChangeHook = e.onChange, this.errorBus = e.errorBus;
68
122
  }
69
123
  subscribe(e, t, n, r, i = {}) {
70
124
  let a = C(e), o = typeof e[0] == "string" ? e[0] : void 0, s = this.entries.get(a);
@@ -113,8 +167,18 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
113
167
  autoApply(e, t, n) {
114
168
  let r = `optimistic-${n}-${++E}`;
115
169
  for (let i of e) for (let e of this.entries.values()) {
116
- if (!(Array.isArray(e.source) ? e.source.includes(i.table) : e.source === i.table) || e.computed && i.op === "insert") continue;
117
- let a = te(i, t, r);
170
+ if (!(Array.isArray(e.source) ? e.source.includes(i.table) : e.source === i.table)) continue;
171
+ if (i.match !== void 0) {
172
+ let n = !1;
173
+ try {
174
+ n = i.match(e.state.base, t);
175
+ } catch {
176
+ n = !1;
177
+ }
178
+ if (!n) continue;
179
+ }
180
+ if (e.computed && i.op === "insert" && i.path === void 0) continue;
181
+ let a = re(i, t, r);
118
182
  if (a === null) continue;
119
183
  let o = {
120
184
  id: `${r}-${e.key}`,
@@ -256,14 +320,14 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
256
320
  t && t.subscribers.size === 0 && (t.fiber && d.runFork(p.interrupt(t.fiber)), this.entries.delete(e));
257
321
  }, this.inactiveTtlMs)));
258
322
  }
259
- }, ie = class extends re {
323
+ }, oe = class extends ae {
260
324
  subscribe(e, t, n, r, i = {}) {
261
325
  return {
262
326
  getSnapshot: () => this.peek(e),
263
327
  unsubscribe: () => {}
264
328
  };
265
329
  }
266
- }, ae = class {
330
+ }, se = class {
267
331
  #e = /* @__PURE__ */ new Set();
268
332
  on(e) {
269
333
  return this.#e.add(e), () => {
@@ -275,34 +339,34 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
275
339
  t(e);
276
340
  } catch {}
277
341
  }
278
- }, oe = (e) => {
342
+ }, ce = (e) => {
279
343
  if (typeof e != "object" || !e) return;
280
344
  let t = e._tag;
281
345
  return typeof t == "string" ? t : void 0;
282
- }, D = e(null), se = () => {
346
+ }, le = e(null), ue = () => {
283
347
  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");
284
- }, O = new Proxy(() => se(), {
285
- get: (e, t) => O,
348
+ }, k = new Proxy(() => ue(), {
349
+ get: (e, t) => k,
286
350
  has: () => !0,
287
- apply: () => se()
288
- }), ce = {
351
+ apply: () => ue()
352
+ }), de = {
289
353
  runtime: { runPromise: () => Promise.reject(/* @__PURE__ */ Error("Voltro: mutations are not invokable during SSR")) },
290
- cache: new ie(),
291
- client: O,
354
+ cache: new oe(),
355
+ client: k,
292
356
  descriptors: {},
293
357
  inspectBaseUrl: "",
294
- errorBus: new ae()
295
- }, le = {
296
- get: () => ce,
358
+ errorBus: new se()
359
+ }, fe = {
360
+ get: () => de,
297
361
  names: []
298
- }, k = !1, A = !1, j = null, ue = () => {
299
- k = !1, A = !1, j !== null && (clearTimeout(j), j = null);
300
- }, de = () => {
301
- let e = r(D);
302
- return e ? (A || (A = !0, j !== null && (clearTimeout(j), j = null)), e) : (typeof window < "u" && !k && !A && j === null && process.env.NODE_ENV !== "production" && (j = setTimeout(() => {
303
- j = null, !(k || A) && (k = !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>."));
304
- }, 0)), le);
305
- }, M = (e) => de().get(e), fe = ({ apis: e, children: t }) => {
362
+ }, A = !1, j = !1, M = null, pe = () => {
363
+ A = !1, j = !1, M !== null && (clearTimeout(M), M = null);
364
+ }, me = () => {
365
+ let e = r(le);
366
+ 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(() => {
367
+ 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>."));
368
+ }, 0)), fe);
369
+ }, N = (e) => me().get(e), he = ({ apis: e, children: t }) => {
306
370
  let n = a(() => ({
307
371
  get: (t) => {
308
372
  let n = e.get(t);
@@ -314,11 +378,11 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
314
378
  },
315
379
  names: Array.from(e.keys())
316
380
  }), [e]);
317
- return /* @__PURE__ */ v(D.Provider, {
381
+ return /* @__PURE__ */ v(le.Provider, {
318
382
  value: n,
319
383
  children: t
320
384
  });
321
- }, N = (e, t) => {
385
+ }, P = (e, t) => {
322
386
  let n = t.split("."), r = e;
323
387
  for (let e = 0; e < n.length; e++) {
324
388
  let i = n[e];
@@ -337,54 +401,56 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
337
401
  }
338
402
  if (typeof r != "function") throw Error(`@voltro/client: rpc tag ${JSON.stringify(t)} did not resolve to a callable method.`);
339
403
  return r;
340
- }, pe = Object.freeze({
404
+ }, ge = Object.freeze({
341
405
  data: void 0,
342
406
  revision: -1,
343
407
  emittedAt: void 0,
344
408
  error: void 0,
345
409
  pendingPatches: 0
346
- }), me = () => pe, P = (e, t, r = {}, i = {}) => {
347
- let s = i.skip === !0, { runtime: l, cache: u, client: d, descriptors: f } = M(e), p = f[t]?.source, m = o(r);
410
+ }), _e = () => ge, F = (e, t, r = {}, i = {}) => {
411
+ let s = i.skip === !0, { runtime: l, cache: u, client: d, descriptors: f } = N(e), p = f[t]?.source, m = o(r);
348
412
  m.current = r;
349
413
  let h = o(d);
350
414
  h.current = d;
351
- let g = o(() => N(h.current, t)(m.current)), _ = a(() => [t, m.current], [t, a(() => JSON.stringify(Object.entries(r).sort(([e], [t]) => e.localeCompare(t))), [r])]), v = c(n((e) => s ? () => {} : u.subscribe(_, g.current, l, e, p === void 0 ? {} : { source: p }).unsubscribe, [
415
+ let g = o(() => P(h.current, t)(m.current)), _ = a(() => [t, m.current], [t, a(() => JSON.stringify(Object.entries(r).sort(([e], [t]) => e.localeCompare(t))), [r])]), v = c(n((e) => s ? () => {} : u.subscribe(_, g.current, l, e, p === void 0 ? {} : { source: p }).unsubscribe, [
352
416
  u,
353
417
  l,
354
418
  p,
355
419
  s,
356
420
  _
357
- ]), n(() => s ? pe : u.peek(_), [
421
+ ]), n(() => s ? ge : u.peek(_), [
358
422
  u,
359
423
  s,
360
424
  _
361
- ]), me);
425
+ ]), _e), y = v.revision < 0, b = v.data === void 0 && i?.fallback !== void 0 ? i.fallback : v.data, x = !y && (Array.isArray(v.data) ? v.data.length === 0 : v.data === null || v.data === void 0);
362
426
  return {
363
- data: v.data,
427
+ data: b,
364
428
  revision: v.revision,
365
429
  emittedAt: v.emittedAt,
366
430
  error: v.error,
367
- pendingPatches: v.pendingPatches
431
+ pendingPatches: v.pendingPatches,
432
+ loading: y,
433
+ isEmpty: x
368
434
  };
369
- }, he = 100, F = [], I = /* @__PURE__ */ new Set(), ge = [], _e = () => {
370
- ge = F.slice();
371
- }, L = () => {
372
- _e();
373
- for (let e of I) try {
435
+ }, ve = 100, I = [], L = /* @__PURE__ */ new Set(), ye = [], be = () => {
436
+ ye = I.slice();
437
+ }, R = () => {
438
+ be();
439
+ for (let e of L) try {
374
440
  e();
375
441
  } catch {}
376
- }, R = (e) => {
442
+ }, z = (e) => {
377
443
  let t = {
378
444
  ...e,
379
445
  status: "pending",
380
446
  startedAt: Date.now()
381
447
  };
382
- F.unshift(t), F.length > he && (F.length = he), L();
383
- }, z = (e, t) => {
384
- let n = F.findIndex((t) => t.id === e);
448
+ I.unshift(t), I.length > ve && (I.length = ve), R();
449
+ }, B = (e, t) => {
450
+ let n = I.findIndex((t) => t.id === e);
385
451
  if (n === -1) return;
386
- let r = F[n], i = Date.now();
387
- F[n] = t.status === "success" ? {
452
+ let r = I[n], i = Date.now();
453
+ I[n] = t.status === "success" ? {
388
454
  ...r,
389
455
  status: "success",
390
456
  output: t.output,
@@ -396,12 +462,12 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
396
462
  error: t.error,
397
463
  settledAt: i,
398
464
  durationMs: i - r.startedAt
399
- }, L();
400
- }, ve = () => ge, ye = (e) => (I.add(e), () => {
401
- I.delete(e);
402
- }), be = () => {
403
- F.length !== 0 && (F.length = 0, L());
404
- }, xe = (e, t) => {
465
+ }, R();
466
+ }, xe = () => ye, Se = (e) => (L.add(e), () => {
467
+ L.delete(e);
468
+ }), Ce = () => {
469
+ I.length !== 0 && (I.length = 0, R());
470
+ }, we = (e, t) => {
405
471
  if (t === void 0 || typeof e != "object" || !e) return e;
406
472
  try {
407
473
  Object.defineProperty(e, "__voltroTraceId", {
@@ -411,40 +477,48 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
411
477
  });
412
478
  } catch {}
413
479
  return e;
414
- }, Se = 0, Ce = () => `mut_${++Se}`, we = (e, t) => ({
480
+ }, V, Te = (e) => {
481
+ V = e;
482
+ }, Ee = () => V, De = (e, t, n) => typeof e == "function" ? e(t, n) : e, Oe = 0, ke = () => `mut_${++Oe}`, Ae = (e, t) => ({
415
483
  update: (n, r) => {
416
484
  e.update(n, r, t);
417
485
  },
418
486
  forTag: (n, r) => e.forTag(n, r, t)
419
- }), B = (e, t) => {
420
- let { runtime: r, cache: i, client: c, descriptors: l, errorBus: u } = M(e), f = l[t], p = f?.targets;
487
+ }), H = (e, t) => {
488
+ let { runtime: r, cache: i, client: c, descriptors: l, errorBus: u } = N(e), f = l[t], p = f?.targets;
421
489
  if (process.env.NODE_ENV !== "production") {
422
490
  let n = f?.kind;
423
491
  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.`);
424
492
  }
425
- let [m, h] = s(!1), [g, _] = s(void 0), [v, y] = s(void 0), b = o(null), S = o(!1), C = n(async (n) => {
493
+ let [m, h] = s(!1), [g, _] = s(void 0), [v, y] = s(void 0), b = o(null), S = o(!1), C = n(async (n, a) => {
494
+ let o = a?.onError !== void 0 || a?.notify?.error !== void 0, s = (e) => {
495
+ a?.onError?.(e, n);
496
+ let t = De(a?.notify?.error, e, n);
497
+ t !== void 0 && V?.error(t);
498
+ };
426
499
  h(!0), _(void 0);
427
- let a = Ce();
428
- R({
429
- id: a,
500
+ let l = ke();
501
+ z({
502
+ id: l,
430
503
  apiName: e,
431
504
  tag: t,
432
505
  input: n
433
506
  });
434
- let o = b.current, s = S.current;
435
- if (o) try {
436
- o(we(i, a), n);
507
+ let f = b.current, m = S.current;
508
+ if (f) try {
509
+ f(Ae(i, l), n);
437
510
  } catch (e) {
438
- throw _(e), h(!1), i.revertByMutation(a), z(a, {
511
+ if (_(e), h(!1), i.revertByMutation(l), B(l, {
439
512
  status: "error",
440
513
  error: e
441
- }), e;
514
+ }), o) return s(e);
515
+ throw e;
442
516
  }
443
- else !s && p && p.length > 0 && i.autoApply(p, n, a);
444
- let l;
517
+ else !m && p && p.length > 0 && i.autoApply(p, n, l);
518
+ let g;
445
519
  try {
446
- let o = N(c, t), s = d.currentSpan.pipe(d.tap((e) => d.sync(() => {
447
- l = e.traceId, x({
520
+ let o = P(c, t), s = d.currentSpan.pipe(d.tap((e) => d.sync(() => {
521
+ g = e.traceId, x({
448
522
  traceId: e.traceId,
449
523
  spanId: e.spanId,
450
524
  source: "mutation",
@@ -452,24 +526,27 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
452
526
  });
453
527
  })), d.catchAll(() => d.void), d.zipRight(o(n))).pipe(d.withSpan(`client.mutation.${t}`, { attributes: {
454
528
  "voltro.api": e,
455
- "voltro.mutationId": a,
529
+ "voltro.mutationId": l,
456
530
  "rpc.tag": t
457
531
  } })), u = await r.runPromise(s);
458
- return y(u), z(a, {
532
+ y(u), B(l, {
459
533
  status: "success",
460
534
  output: u
461
- }), i.confirmByMutation(a), u;
535
+ }), i.confirmByMutation(l), a?.onSuccess?.(u, n);
536
+ let f = De(a?.notify?.success, u, n);
537
+ return f !== void 0 && V?.success(f), u;
462
538
  } catch (e) {
463
- let n = xe(e, l);
464
- throw _(n), z(a, {
539
+ let n = we(e, g);
540
+ if (_(n), B(l, {
465
541
  status: "error",
466
542
  error: n
467
- }), i.revertByMutation(a), u.emit({
543
+ }), i.revertByMutation(l), u.emit({
468
544
  source: "mutation",
469
545
  tag: t,
470
546
  error: n,
471
- ...l === void 0 ? {} : { traceId: l }
472
- }), n;
547
+ ...g === void 0 ? {} : { traceId: g }
548
+ }), o) return s(n);
549
+ throw n;
473
550
  } finally {
474
551
  h(!1);
475
552
  }
@@ -497,7 +574,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
497
574
  g,
498
575
  v
499
576
  ]);
500
- }, Te = (e, t) => {
577
+ }, je = (e, t) => {
501
578
  if (t === void 0 || typeof e != "object" || !e) return e;
502
579
  try {
503
580
  Object.defineProperty(e, "__voltroTraceId", {
@@ -507,16 +584,16 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
507
584
  });
508
585
  } catch {}
509
586
  return e;
510
- }, Ee = 0, De = () => `act_${++Ee}`, V = (e, t) => {
511
- let { runtime: r, client: i, descriptors: o, errorBus: c } = M(e);
587
+ }, Me = 0, Ne = () => `act_${++Me}`, U = (e, t) => {
588
+ let { runtime: r, client: i, descriptors: o, errorBus: c } = N(e);
512
589
  if (process.env.NODE_ENV !== "production") {
513
590
  let n = o[t]?.kind;
514
591
  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.`);
515
592
  }
516
593
  let [l, u] = s(!1), [f, p] = s(void 0), [m, h] = s(void 0), g = n(async (n) => {
517
594
  u(!0), p(void 0);
518
- let a = De();
519
- R({
595
+ let a = Ne();
596
+ z({
520
597
  id: a,
521
598
  apiName: e,
522
599
  tag: t,
@@ -524,7 +601,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
524
601
  });
525
602
  let o;
526
603
  try {
527
- let s = N(i, t), c = d.currentSpan.pipe(d.tap((e) => d.sync(() => {
604
+ let s = P(i, t), c = d.currentSpan.pipe(d.tap((e) => d.sync(() => {
528
605
  o = e.traceId, x({
529
606
  traceId: e.traceId,
530
607
  spanId: e.spanId,
@@ -536,13 +613,13 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
536
613
  "voltro.actionId": a,
537
614
  "rpc.tag": t
538
615
  } })), l = await r.runPromise(c);
539
- return h(l), z(a, {
616
+ return h(l), B(a, {
540
617
  status: "success",
541
618
  output: l
542
619
  }), l;
543
620
  } catch (e) {
544
- let n = Te(e, o);
545
- throw p(n), z(a, {
621
+ let n = je(e, o);
622
+ throw p(n), B(a, {
546
623
  status: "error",
547
624
  error: n
548
625
  }), c.emit({
@@ -572,7 +649,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
572
649
  f,
573
650
  m
574
651
  ]);
575
- }, H = "storage.mintUploadTicket", Oe = "storage.mintPresignedUpload", ke = "storage.finalizeUpload", Ae = "storage.beginResumableUpload", je = "storage.beginMultipartUpload", Me = "storage.signMultipartPart", Ne = "storage.completeMultipartUpload", Pe = "storage.abortMultipartUpload", Fe = (e, t, n, r) => new Promise((i, a) => {
652
+ }, W = "storage.mintUploadTicket", Pe = "storage.mintPresignedUpload", Fe = "storage.finalizeUpload", Ie = "storage.beginResumableUpload", Le = "storage.beginMultipartUpload", Re = "storage.signMultipartPart", ze = "storage.completeMultipartUpload", Be = "storage.abortMultipartUpload", Ve = (e, t, n, r) => new Promise((i, a) => {
576
653
  let o = new XMLHttpRequest();
577
654
  if (o.open("PUT", e), o.upload.onprogress = (e) => {
578
655
  e.lengthComputable && n(e.loaded / e.total);
@@ -586,7 +663,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
586
663
  return;
587
664
  }
588
665
  r.addEventListener("abort", () => o.abort(), { once: !0 }), o.send(t);
589
- }), Ie = (e, t, n, r, i, a) => new Promise((o, s) => {
666
+ }), He = (e, t, n, r, i, a) => new Promise((o, s) => {
590
667
  let c = new XMLHttpRequest();
591
668
  if (c.open("POST", e), c.setRequestHeader("content-type", t), c.upload.onprogress = (e) => {
592
669
  e.lengthComputable && r(e.loaded / e.total);
@@ -604,7 +681,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
604
681
  return;
605
682
  }
606
683
  i.addEventListener("abort", () => c.abort(), { once: !0 }), c.send(n);
607
- }), Le = (e, t, n, r, i) => new Promise((a, o) => {
684
+ }), Ue = (e, t, n, r, i) => new Promise((a, o) => {
608
685
  let s = new XMLHttpRequest();
609
686
  if (s.open("PUT", e), s.setRequestHeader("content-type", t), s.upload.onprogress = (e) => {
610
687
  e.lengthComputable && r(e.loaded / e.total);
@@ -615,7 +692,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
615
692
  return;
616
693
  }
617
694
  i.addEventListener("abort", () => s.abort(), { once: !0 }), s.send(n);
618
- }), Re = (e, t, n, r, i) => new Promise((a, o) => {
695
+ }), We = (e, t, n, r, i) => new Promise((a, o) => {
619
696
  let s = new XMLHttpRequest();
620
697
  if (s.open("POST", e), s.setRequestHeader("content-type", t), s.upload.onprogress = (e) => {
621
698
  e.lengthComputable && r(e.loaded / e.total);
@@ -631,8 +708,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
631
708
  return;
632
709
  }
633
710
  i.addEventListener("abort", () => s.abort(), { once: !0 }), s.send(n);
634
- }), ze = (e, t = {}) => {
635
- let { runtime: r, client: i, inspectBaseUrl: c, errorBus: l } = M(e), [u, d] = s(0), [f, p] = s("idle"), [m, h] = s(void 0), g = o(null), _ = n(() => {
711
+ }), Ge = (e, t = {}) => {
712
+ let { runtime: r, client: i, inspectBaseUrl: c, errorBus: l } = N(e), [u, d] = s(0), [f, p] = s("idle"), [m, h] = s(void 0), g = o(null), _ = n(() => {
636
713
  d(0), p("idle"), h(void 0);
637
714
  }, []), v = n(() => {
638
715
  g.current?.abort();
@@ -652,16 +729,16 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
652
729
  ...e.width === void 0 ? {} : { width: e.width },
653
730
  ...e.height === void 0 ? {} : { height: e.height }
654
731
  }), g = async () => {
655
- let s = n.mintTag ?? t.mintTag ?? H, l = N(i, s), u = await r.runPromise(l({
732
+ let s = n.mintTag ?? t.mintTag ?? W, l = P(i, s), u = await r.runPromise(l({
656
733
  contentType: c,
657
734
  ...m,
658
735
  ...d ? { key: d } : {}
659
- })), f = await Re(y(u.uploadUrl), c, e, o, a);
736
+ })), f = await We(y(u.uploadUrl), c, e, o, a);
660
737
  return h(f);
661
738
  }, _ = async () => {
662
- let s = n.presignMintTag ?? t.presignMintTag ?? Oe, l = n.finalizeTag ?? t.finalizeTag ?? ke, u;
739
+ let s = n.presignMintTag ?? t.presignMintTag ?? Pe, l = n.finalizeTag ?? t.finalizeTag ?? Fe, u;
663
740
  try {
664
- let e = N(i, s);
741
+ let e = P(i, s);
665
742
  u = await r.runPromise(e({
666
743
  contentType: c,
667
744
  ...m
@@ -669,11 +746,11 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
669
746
  } catch {
670
747
  return null;
671
748
  }
672
- await Le(u.uploadUrl, c, e, o, a);
673
- let d = N(i, l), f = await r.runPromise(d({ finalizeToken: u.finalizeToken }));
749
+ await Ue(u.uploadUrl, c, e, o, a);
750
+ let d = P(i, l), f = await r.runPromise(d({ finalizeToken: u.finalizeToken }));
674
751
  return h(f);
675
752
  }, v = async () => {
676
- let s = n.beginResumableTag ?? t.beginResumableTag ?? Ae, l = N(i, s), u = e.size, d = n.chunkSize ?? t.chunkSize, f = await r.runPromise(l({
753
+ let s = n.beginResumableTag ?? t.beginResumableTag ?? Ie, l = P(i, s), u = e.size, d = n.chunkSize ?? t.chunkSize, f = await r.runPromise(l({
677
754
  contentType: c,
678
755
  size: u,
679
756
  ...m,
@@ -684,7 +761,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
684
761
  for (;;) {
685
762
  if (a.aborted) throw new DOMException("upload aborted", "AbortError");
686
763
  try {
687
- let e = await Ie(`${p}?${`token=${encodeURIComponent(f.resumableToken)}&index=${t}${s ? "&final=1" : ""}`}`, c, i, (e) => o((b + e * l) / u), a, s);
764
+ let e = await He(`${p}?${`token=${encodeURIComponent(f.resumableToken)}&index=${t}${s ? "&final=1" : ""}`}`, c, i, (e) => o((b + e * l) / u), a, s);
688
765
  s && (x = e);
689
766
  break;
690
767
  } catch (e) {
@@ -696,9 +773,9 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
696
773
  if (!x) throw Error("resumable upload produced no final reply");
697
774
  return h(x);
698
775
  }, b = async () => {
699
- let s = n.multipartBeginTag ?? t.multipartBeginTag ?? je, u = n.multipartSignTag ?? t.multipartSignTag ?? Me, d = n.multipartCompleteTag ?? t.multipartCompleteTag ?? Ne, f = n.multipartAbortTag ?? t.multipartAbortTag ?? Pe, p = e.size, h = n.chunkSize ?? t.chunkSize, g;
776
+ let s = n.multipartBeginTag ?? t.multipartBeginTag ?? Le, u = n.multipartSignTag ?? t.multipartSignTag ?? Re, d = n.multipartCompleteTag ?? t.multipartCompleteTag ?? ze, f = n.multipartAbortTag ?? t.multipartAbortTag ?? Be, p = e.size, h = n.chunkSize ?? t.chunkSize, g;
700
777
  try {
701
- let e = N(i, s);
778
+ let e = P(i, s);
702
779
  g = await r.runPromise(e({
703
780
  contentType: c,
704
781
  size: p,
@@ -708,7 +785,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
708
785
  } catch {
709
786
  return null;
710
787
  }
711
- let _ = N(i, u), v = N(i, d), b = N(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;
788
+ let _ = P(i, u), v = P(i, d), b = P(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;
712
789
  try {
713
790
  for (let t = 0; t < S; t++) {
714
791
  let n = t * x, i = Math.min(p, n + x), s = e.slice(n, i), c = t + 1, l = i - n, u = 0;
@@ -718,7 +795,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
718
795
  let { url: e } = await r.runPromise(_({
719
796
  multipartToken: g.multipartToken,
720
797
  partNumber: c
721
- })), t = await Fe(e, s, (e) => o((T + e * l) / p), a);
798
+ })), t = await Ve(e, s, (e) => o((T + e * l) / p), a);
722
799
  w.push({
723
800
  partNumber: c,
724
801
  etag: t
@@ -792,7 +869,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
792
869
  } catch (e) {
793
870
  throw p("error"), h(e), e instanceof DOMException && e.name === "AbortError" || l.emit({
794
871
  source: "action",
795
- tag: n.mintTag ?? t.mintTag ?? H,
872
+ tag: n.mintTag ?? t.mintTag ?? W,
796
873
  error: e
797
874
  }), e;
798
875
  }
@@ -818,7 +895,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
818
895
  } catch (e) {
819
896
  throw r.abort(), p("error"), h(e), e instanceof DOMException && e.name === "AbortError" || l.emit({
820
897
  source: "action",
821
- tag: n.mintTag ?? t.mintTag ?? H,
898
+ tag: n.mintTag ?? t.mintTag ?? W,
822
899
  error: e
823
900
  }), e;
824
901
  }
@@ -863,8 +940,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
863
940
  w,
864
941
  T
865
942
  ]);
866
- }, U = async (e) => {
867
- let t = N(e.client, e.tag), n = d.currentSpan.pipe(d.tap((t) => d.sync(() => {
943
+ }, G = async (e) => {
944
+ let t = P(e.client, e.tag), n = d.currentSpan.pipe(d.tap((t) => d.sync(() => {
868
945
  x({
869
946
  traceId: t.traceId,
870
947
  spanId: t.spanId,
@@ -876,8 +953,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
876
953
  "rpc.tag": e.tag
877
954
  } }));
878
955
  return e.runtime.runPromise(n);
879
- }, Be = (e, t) => {
880
- let { runtime: r, client: i, descriptors: o } = M(e);
956
+ }, Ke = (e, t) => {
957
+ let { runtime: r, client: i, descriptors: o } = N(e);
881
958
  if (process.env.NODE_ENV !== "production") {
882
959
  let n = o[t]?.kind;
883
960
  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.`);
@@ -885,7 +962,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
885
962
  let [c, l] = s(!1), [u, d] = s(void 0), [f, p] = s(void 0), m = n(async (n) => {
886
963
  l(!0), d(void 0);
887
964
  try {
888
- let a = await U({
965
+ let a = await G({
889
966
  apiName: e,
890
967
  runtime: r,
891
968
  client: i,
@@ -905,7 +982,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
905
982
  i,
906
983
  t
907
984
  ]), h = n(async (t) => {
908
- await U({
985
+ await G({
909
986
  apiName: e,
910
987
  runtime: r,
911
988
  client: i,
@@ -918,7 +995,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
918
995
  r,
919
996
  i
920
997
  ]), g = n(async (t) => {
921
- await U({
998
+ await G({
922
999
  apiName: e,
923
1000
  runtime: r,
924
1001
  client: i,
@@ -930,7 +1007,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
930
1007
  e,
931
1008
  r,
932
1009
  i
933
- ]), _ = n(async (t, n, a) => U({
1010
+ ]), _ = n(async (t, n, a) => G({
934
1011
  apiName: e,
935
1012
  runtime: r,
936
1013
  client: i,
@@ -945,7 +1022,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
945
1022
  e,
946
1023
  r,
947
1024
  i
948
- ]), v = n(async (t, n, a, o) => U({
1025
+ ]), v = n(async (t, n, a, o) => G({
949
1026
  apiName: e,
950
1027
  runtime: r,
951
1028
  client: i,
@@ -981,11 +1058,11 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
981
1058
  u,
982
1059
  f
983
1060
  ]);
984
- }, Ve = (e) => {
985
- let { runtime: t, client: r } = M(e), [i, o] = s(!1), [c, l] = s(void 0), [u, d] = s(void 0), f = n(async (n, i, a) => {
1061
+ }, qe = (e) => {
1062
+ let { runtime: t, client: r } = N(e), [i, o] = s(!1), [c, l] = s(void 0), [u, d] = s(void 0), f = n(async (n, i, a) => {
986
1063
  o(!0), l(void 0);
987
1064
  try {
988
- let o = await U({
1065
+ let o = await G({
989
1066
  apiName: e,
990
1067
  runtime: t,
991
1068
  client: r,
@@ -1019,11 +1096,11 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1019
1096
  c,
1020
1097
  u
1021
1098
  ]);
1022
- }, He = (e) => {
1023
- let { runtime: t, client: r } = M(e), [i, o] = s(!1), [c, l] = s(void 0), [u, d] = s(void 0), f = n(async (n, i, a, s) => {
1099
+ }, Je = (e) => {
1100
+ let { runtime: t, client: r } = N(e), [i, o] = s(!1), [c, l] = s(void 0), [u, d] = s(void 0), f = n(async (n, i, a, s) => {
1024
1101
  o(!0), l(void 0);
1025
1102
  try {
1026
- let o = await U({
1103
+ let o = await G({
1027
1104
  apiName: e,
1028
1105
  runtime: t,
1029
1106
  client: r,
@@ -1058,78 +1135,78 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1058
1135
  c,
1059
1136
  u
1060
1137
  ]);
1061
- }, Ue = (e, t) => {
1062
- let n = P(e, "__voltro.workflow.run", t ? { id: t } : {}, { skip: t === void 0 });
1138
+ }, Ye = (e, t) => {
1139
+ let n = F(e, "__voltro.workflow.run", t ? { id: t } : {}, { skip: t === void 0 });
1063
1140
  return {
1064
1141
  ...n,
1065
1142
  run: n.data?.[0]
1066
1143
  };
1067
- }, We = (e, t = {}, n = {}) => {
1068
- let r = P(e, "__voltro.workflow.runs", t, n);
1144
+ }, Xe = (e, t = {}, n = {}) => {
1145
+ let r = F(e, "__voltro.workflow.runs", t, n);
1069
1146
  return {
1070
1147
  ...r,
1071
1148
  runs: r.data ?? []
1072
1149
  };
1073
- }, Ge = (e, t) => {
1074
- let n = P(e, "__voltro.workflow.run.steps", t ? { runId: t } : {}, { skip: t === void 0 });
1150
+ }, Ze = (e, t) => {
1151
+ let n = F(e, "__voltro.workflow.run.steps", t ? { runId: t } : {}, { skip: t === void 0 });
1075
1152
  return {
1076
1153
  ...n,
1077
1154
  steps: n.data ?? []
1078
1155
  };
1079
- }, W = (e, t) => {
1080
- let n = P(e, "__voltro.workflow.run.events", t ? { runId: t } : {}, { skip: t === void 0 });
1156
+ }, K = (e, t) => {
1157
+ let n = F(e, "__voltro.workflow.run.events", t ? { runId: t } : {}, { skip: t === void 0 });
1081
1158
  return {
1082
1159
  ...n,
1083
1160
  events: n.data ?? []
1084
1161
  };
1085
- }, Ke = W, qe = (e, t = {}, n = {}) => {
1086
- let r = P(e, "__voltro.workflow.domainEvents", t, n);
1162
+ }, Qe = K, $e = (e, t = {}, n = {}) => {
1163
+ let r = F(e, "__voltro.workflow.domainEvents", t, n);
1087
1164
  return {
1088
1165
  ...r,
1089
1166
  events: r.data ?? []
1090
1167
  };
1091
- }, Je = (e, t) => {
1092
- let n = P(e, "__voltro.workflow.event.deliveries", t ? { eventId: t } : {}, { skip: t === void 0 });
1168
+ }, et = (e, t) => {
1169
+ let n = F(e, "__voltro.workflow.event.deliveries", t ? { eventId: t } : {}, { skip: t === void 0 });
1093
1170
  return {
1094
1171
  ...n,
1095
1172
  deliveries: n.data ?? []
1096
1173
  };
1097
- }, G = (e, t) => {
1174
+ }, q = (e, t) => {
1098
1175
  let n = e.payload;
1099
1176
  if (!n || typeof n != "object") return;
1100
1177
  let r = n[t];
1101
1178
  return typeof r == "string" ? r : void 0;
1102
- }, Ye = (e) => {
1179
+ }, tt = (e) => {
1103
1180
  let t = e.payload;
1104
1181
  if (!t || typeof t != "object") return;
1105
1182
  let n = t.updateId;
1106
1183
  return typeof n == "string" ? n : void 0;
1107
- }, Xe = (e) => {
1184
+ }, nt = (e) => {
1108
1185
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
1109
1186
  for (let r of e) if (r.eventType === "signal-received") {
1110
- let e = G(r, "signalName");
1187
+ let e = q(r, "signalName");
1111
1188
  e && t.add(e);
1112
1189
  } else if (r.eventType === "update-completed" || r.eventType === "update-failed") {
1113
- let e = Ye(r);
1190
+ let e = tt(r);
1114
1191
  e && n.add(e);
1115
1192
  }
1116
1193
  for (let r = e.length - 1; r >= 0; --r) {
1117
1194
  let i = e[r];
1118
1195
  if (i.eventType === "signal-awaited") {
1119
- let e = G(i, "signalName");
1196
+ let e = q(i, "signalName");
1120
1197
  if (e && !t.has(e)) return {
1121
1198
  name: e,
1122
1199
  kind: "signal"
1123
1200
  };
1124
1201
  } else if (i.eventType === "update-requested") {
1125
- let e = Ye(i), t = G(i, "updateName");
1202
+ let e = tt(i), t = q(i, "updateName");
1126
1203
  if (t && (!e || !n.has(e))) return {
1127
1204
  name: t,
1128
1205
  kind: "update"
1129
1206
  };
1130
1207
  }
1131
1208
  }
1132
- }, Ze = (e) => e.find((e) => e.status === "running") || (e.length > 0 ? e[e.length - 1] : void 0), Qe = (e, t) => {
1209
+ }, rt = (e) => e.find((e) => e.status === "running") || (e.length > 0 ? e[e.length - 1] : void 0), it = (e, t) => {
1133
1210
  if (!e || e.status !== "failed") return;
1134
1211
  let n = t.find((e) => e.status === "failed");
1135
1212
  return {
@@ -1137,8 +1214,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1137
1214
  message: e.errorMessage,
1138
1215
  step: n?.stepName
1139
1216
  };
1140
- }, $e = (e, t) => {
1141
- let r = Ue(e, t), i = Ge(e, t), o = W(e, t), s = Be(e, r.run?.tag ?? ""), c = r.run, l = i.steps, u = o.events, d = n(async () => {
1217
+ }, at = (e, t) => {
1218
+ let r = Ye(e, t), i = Ze(e, t), o = K(e, t), s = Ke(e, r.run?.tag ?? ""), c = r.run, l = i.steps, u = o.events, d = n(async () => {
1142
1219
  if (!c) throw Error("useWorkflowRunState: no run loaded — cannot cancel");
1143
1220
  await s.cancel({
1144
1221
  workflowName: c.tag,
@@ -1162,9 +1239,9 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1162
1239
  status: c?.status,
1163
1240
  steps: l,
1164
1241
  events: u,
1165
- currentStep: Ze(l),
1166
- waitingFor: c?.status === "suspended" ? Xe(u) : void 0,
1167
- error: Qe(c, l),
1242
+ currentStep: rt(l),
1243
+ waitingFor: c?.status === "suspended" ? nt(u) : void 0,
1244
+ error: it(c, l),
1168
1245
  traceId: c?.traceId,
1169
1246
  loading: r.data === void 0,
1170
1247
  cancel: d,
@@ -1181,8 +1258,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1181
1258
  p,
1182
1259
  m
1183
1260
  ]);
1184
- }, et = (e, t) => {
1185
- let { runtime: r, client: i } = M(e), [a, c] = s([]), [u, f] = s("idle"), [m, h] = s(void 0), _ = o(null), v = n(() => {
1261
+ }, ot = (e, t) => {
1262
+ let { runtime: r, client: i } = N(e), [a, c] = s([]), [u, f] = s("idle"), [m, h] = s(void 0), _ = o(null), v = n(() => {
1186
1263
  let e = _.current;
1187
1264
  e && (_.current = null, r.runFork(p.interrupt(e)), f((e) => e === "streaming" ? "idle" : e));
1188
1265
  }, [r]);
@@ -1193,7 +1270,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1193
1270
  start: n((e = {}) => {
1194
1271
  let n = _.current;
1195
1272
  n && r.runFork(p.interrupt(n)), c([]), h(void 0), f("streaming");
1196
- let a = N(i, t)(e), o = g.runForEach(a, (e) => d.sync(() => c((t) => [...t, e]))).pipe(d.matchCause({
1273
+ let a = P(i, t)(e), o = g.runForEach(a, (e) => d.sync(() => c((t) => [...t, e]))).pipe(d.matchCause({
1197
1274
  onSuccess: () => {
1198
1275
  f("done");
1199
1276
  },
@@ -1209,7 +1286,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1209
1286
  ]),
1210
1287
  cancel: v
1211
1288
  };
1212
- }, tt = (e, t, n, r) => {
1289
+ }, st = (e, t, n, r) => {
1213
1290
  let i = 0, a = !1, o = (e) => d.sync(() => {
1214
1291
  e.seq <= i || (i = e.seq, n.onEvent(e.event), r.isTerminal(e.event) && (a = !0));
1215
1292
  }), s = (e, t, a) => {
@@ -1232,15 +1309,15 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1232
1309
  }));
1233
1310
  });
1234
1311
  return c(0);
1235
- }, nt = (e) => {
1312
+ }, ct = (e) => {
1236
1313
  let t = e?._tag;
1237
1314
  return t === "done" || t === "error";
1238
- }, rt = (e, t, r = {}) => {
1239
- let { runtime: i, client: a } = M(e), [c, l] = s([]), [u, d] = s("idle"), [f, m] = s(0), [h, g] = s(void 0), _ = o(null), v = {
1315
+ }, lt = (e, t, r = {}) => {
1316
+ let { runtime: i, client: a } = N(e), [c, l] = s([]), [u, d] = s("idle"), [f, m] = s(0), [h, g] = s(void 0), _ = o(null), v = {
1240
1317
  maxReconnects: r.maxReconnects ?? 6,
1241
1318
  backoffMs: r.backoffMs ?? 400,
1242
1319
  maxBackoffMs: r.maxBackoffMs ?? 8e3,
1243
- isTerminal: r.isTerminal ?? nt
1320
+ isTerminal: r.isTerminal ?? ct
1244
1321
  }, y = n(() => {
1245
1322
  let e = _.current;
1246
1323
  e && (_.current = null, i.runFork(p.interrupt(e)), d((e) => e === "streaming" || e === "reconnecting" ? "idle" : e));
@@ -1253,13 +1330,13 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1253
1330
  start: n((e = {}) => {
1254
1331
  let n = _.current;
1255
1332
  n && i.runFork(p.interrupt(n)), l([]), g(void 0), m(0), d("streaming");
1256
- let r = N(a, t), o = {
1333
+ let r = P(a, t), o = {
1257
1334
  onEvent: (e) => l((t) => [...t, e]),
1258
1335
  onStatus: d,
1259
1336
  onReconnect: () => m((e) => e + 1),
1260
1337
  onError: g
1261
1338
  };
1262
- _.current = i.runFork(tt(r, e, o, v));
1339
+ _.current = i.runFork(st(r, e, o, v));
1263
1340
  }, [
1264
1341
  i,
1265
1342
  a,
@@ -1271,13 +1348,13 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1271
1348
  ]),
1272
1349
  cancel: y
1273
1350
  };
1274
- }, it = (e, t) => e.order - t.order || (e.stepOrder ?? 0) - (t.stepOrder ?? 0), at = (e) => {
1351
+ }, ut = (e, t) => e.order - t.order || (e.stepOrder ?? 0) - (t.stepOrder ?? 0), dt = (e) => {
1275
1352
  for (let t = e.length - 1; t >= 0; --t) {
1276
1353
  let n = e[t];
1277
1354
  if (n.role === "user" && n.content) return n.content;
1278
1355
  }
1279
- }, ot = (e, t, r) => {
1280
- let { threadId: i } = r, o = P(e, `${t}.messages`, { threadId: i }), s = V(e, `${t}.send`), c = a(() => [...o.data ?? []].sort(it), [o.data]), l = n((e, t = {}) => s.run({
1356
+ }, ft = (e, t, r) => {
1357
+ let { threadId: i } = r, o = F(e, `${t}.messages`, { threadId: i }), s = U(e, `${t}.send`), c = a(() => [...o.data ?? []].sort(ut), [o.data]), l = n((e, t = {}) => s.run({
1281
1358
  threadId: i,
1282
1359
  order: o.data?.length ?? 0,
1283
1360
  prompt: e,
@@ -1287,7 +1364,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1287
1364
  i,
1288
1365
  o.data
1289
1366
  ]), u = n(() => {
1290
- let e = at(c);
1367
+ let e = dt(c);
1291
1368
  return e === void 0 ? void 0 : l(e);
1292
1369
  }, [c, l]);
1293
1370
  return a(() => ({
@@ -1307,8 +1384,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1307
1384
  l,
1308
1385
  u
1309
1386
  ]);
1310
- }, st = (e, t) => {
1311
- let { events: r, status: c, error: l, start: u, cancel: d } = et(e, t), [f, p] = s([]), m = o(null), h = a(() => r.filter((e) => e._tag === "token").map((e) => e.text ?? "").join(""), [r]);
1387
+ }, pt = (e, t) => {
1388
+ let { events: r, status: c, error: l, start: u, cancel: d } = ot(e, t), [f, p] = s([]), m = o(null), h = a(() => r.filter((e) => e._tag === "token").map((e) => e.text ?? "").join(""), [r]);
1312
1389
  return i(() => {
1313
1390
  if (c !== "done" || m.current === null) return;
1314
1391
  let e = m.current;
@@ -1334,8 +1411,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1334
1411
  }, [u]),
1335
1412
  cancel: d
1336
1413
  };
1337
- }, ct = (e, t) => {
1338
- let r = V(e, t), [i, o] = s(void 0), c = n(async (e) => {
1414
+ }, mt = (e, t) => {
1415
+ let r = U(e, t), [i, o] = s(void 0), c = n(async (e) => {
1339
1416
  let t = await r.run({ question: e });
1340
1417
  return o(t), t;
1341
1418
  }, [r]), l = n(() => o(void 0), []);
@@ -1352,43 +1429,43 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1352
1429
  r.error,
1353
1430
  l
1354
1431
  ]);
1355
- }, lt = (e) => {
1356
- let { cache: t, runtime: r } = M(e);
1432
+ }, ht = (e) => {
1433
+ let { cache: t, runtime: r } = N(e);
1357
1434
  return n(() => {
1358
1435
  t.refreshAll(r);
1359
1436
  }, [t, r]);
1360
- }, K = /* @__PURE__ */ new Set(), ut = (e) => {
1361
- for (let t of K) try {
1437
+ }, J = /* @__PURE__ */ new Set(), gt = (e) => {
1438
+ for (let t of J) try {
1362
1439
  t(e);
1363
1440
  } catch {}
1364
- }, dt = (e) => (K.add(e), () => {
1365
- K.delete(e);
1366
- }), ft = (e, t) => {
1367
- ut({
1441
+ }, _t = (e) => (J.add(e), () => {
1442
+ J.delete(e);
1443
+ }), vt = (e, t) => {
1444
+ gt({
1368
1445
  error: e,
1369
1446
  source: "manual",
1370
1447
  ...t ? { context: t } : {}
1371
1448
  });
1372
- }, pt = (e, t) => {
1373
- let { errorBus: n } = M(e);
1449
+ }, yt = (e, t) => {
1450
+ let { errorBus: n } = N(e);
1374
1451
  i(() => n.on(t), [n, t]);
1375
- }, mt = "#/$defs/", ht = (e) => e.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim().replace(/^./, (e) => e.toUpperCase()), q = (e, t) => {
1452
+ }, bt = "#/$defs/", xt = (e) => e.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim().replace(/^./, (e) => e.toUpperCase()), Y = (e, t) => {
1376
1453
  let n = e;
1377
1454
  for (let e = 0; e < 8; e += 1) {
1378
1455
  let e = n.$ref;
1379
- if (typeof e != "string" || !e.startsWith(mt)) return n;
1456
+ if (typeof e != "string" || !e.startsWith(bt)) return n;
1380
1457
  let r = t[e.slice(8)];
1381
1458
  if (!r || typeof r != "object") return n;
1382
1459
  n = r;
1383
1460
  }
1384
1461
  return n;
1385
- }, gt = (e) => {
1462
+ }, St = (e) => {
1386
1463
  if (!e || typeof e != "object") return !1;
1387
1464
  let t = e;
1388
1465
  if (t.type === "null" || t.const === null) return !0;
1389
1466
  let n = t.enum;
1390
1467
  return Array.isArray(n) && n.length === 1 && n[0] === null;
1391
- }, _t = (e, t) => {
1468
+ }, Ct = (e, t) => {
1392
1469
  let n = e.type;
1393
1470
  if (Array.isArray(n) && n.includes("null")) {
1394
1471
  let t = n.filter((e) => e !== "null");
@@ -1403,9 +1480,9 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1403
1480
  for (let n of ["anyOf", "oneOf"]) {
1404
1481
  let r = e[n];
1405
1482
  if (!Array.isArray(r)) continue;
1406
- let i = r.filter((e) => !gt(e));
1483
+ let i = r.filter((e) => !St(e));
1407
1484
  if (i.length !== r.length) return i.length === 1 ? {
1408
- node: q(i[0], t),
1485
+ node: Y(i[0], t),
1409
1486
  nullable: !0
1410
1487
  } : {
1411
1488
  node: {
@@ -1419,14 +1496,14 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1419
1496
  node: e,
1420
1497
  nullable: !1
1421
1498
  };
1422
- }, vt = (e) => e.map((e) => ({
1499
+ }, wt = (e) => e.map((e) => ({
1423
1500
  value: String(e),
1424
- label: ht(String(e))
1425
- })), yt = (e) => {
1501
+ label: xt(String(e))
1502
+ })), Tt = (e) => {
1426
1503
  let t = e.enum;
1427
1504
  if (Array.isArray(t) && t.length > 0) return {
1428
1505
  widget: "select",
1429
- options: vt(t)
1506
+ options: wt(t)
1430
1507
  };
1431
1508
  let n = e.type, r = Array.isArray(n) ? n.find((e) => e !== "null") : n, i = e.format;
1432
1509
  switch (r) {
@@ -1437,38 +1514,38 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1437
1514
  case "array": return { widget: "multi-select" };
1438
1515
  default: return { widget: "custom" };
1439
1516
  }
1440
- }, bt = (e, t, n) => Object.entries(e).map(([e, r]) => {
1441
- let { node: i, nullable: a } = _t(q(r, n), n), o = q(i, n), { widget: s, options: c } = yt(o);
1517
+ }, Et = (e, t, n) => Object.entries(e).map(([e, r]) => {
1518
+ let { node: i, nullable: a } = Ct(Y(r, n), n), o = Y(i, n), { widget: s, options: c } = Tt(o);
1442
1519
  return {
1443
1520
  name: e,
1444
- label: ht(e),
1521
+ label: xt(e),
1445
1522
  widget: s,
1446
1523
  required: t.has(e),
1447
1524
  nullable: a,
1448
1525
  ...c ? { options: c } : {},
1449
1526
  jsonSchema: o
1450
1527
  };
1451
- }), xt = (e) => {
1528
+ }), Dt = (e) => {
1452
1529
  try {
1453
1530
  return m.make(e);
1454
1531
  } catch {
1455
1532
  return;
1456
1533
  }
1457
- }, J = (e) => {
1458
- let t = xt(e);
1534
+ }, X = (e) => {
1535
+ let t = Dt(e);
1459
1536
  if (t === void 0) return [];
1460
- let n = t.$defs ?? {}, r = q(t, n), i = r.properties;
1461
- return i ? bt(i, new Set(Array.isArray(r.required) ? r.required : []), n) : [];
1462
- }, Y = (e) => {
1463
- let t = xt(e);
1537
+ let n = t.$defs ?? {}, r = Y(t, n), i = r.properties;
1538
+ return i ? Et(i, new Set(Array.isArray(r.required) ? r.required : []), n) : [];
1539
+ }, Z = (e) => {
1540
+ let t = Dt(e);
1464
1541
  if (t === void 0) return [];
1465
- let n = t.$defs ?? {}, r = q(t, n);
1542
+ let n = t.$defs ?? {}, r = Y(t, n);
1466
1543
  if (r.type !== "array") return [];
1467
1544
  let i = r.items;
1468
1545
  if (!i || typeof i != "object") return [];
1469
- let a = q(i, n), o = a.properties;
1470
- return o ? bt(o, new Set(Array.isArray(a.required) ? a.required : []), n) : [];
1471
- }, X = (e, t) => {
1546
+ let a = Y(i, n), o = a.properties;
1547
+ return o ? Et(o, new Set(Array.isArray(a.required) ? a.required : []), n) : [];
1548
+ }, Q = (e, t) => {
1472
1549
  let n = h.decodeUnknownEither(e, { errors: "all" })(t);
1473
1550
  if (n._tag === "Right") return {
1474
1551
  valid: !0,
@@ -1483,10 +1560,10 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1483
1560
  valid: !1,
1484
1561
  errors: r
1485
1562
  };
1486
- }, St = (e, t, r) => {
1487
- let i = M(e), c = B(e, t), l = r.schema ?? i.descriptors[t]?.input;
1563
+ }, Ot = (e, t, r) => {
1564
+ let i = N(e), c = H(e, t), l = r.schema ?? i.descriptors[t]?.input;
1488
1565
  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.`);
1489
- let u = a(() => l ? J(l) : [], [l]), d = o(r.defaults ?? {}), [f, p] = s(d.current), [m, h] = s({}), g = n((e, t) => {
1566
+ let u = a(() => l ? X(l) : [], [l]), d = o(r.defaults ?? {}), [f, p] = s(d.current), [m, h] = s({}), g = n((e, t) => {
1490
1567
  p((n) => ({
1491
1568
  ...n,
1492
1569
  [e]: t
@@ -1500,7 +1577,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1500
1577
  p(d.current), h({});
1501
1578
  }, []), y = n(async () => {
1502
1579
  if (l !== void 0) {
1503
- let e = X(l, f);
1580
+ let e = Q(l, f);
1504
1581
  if (h(e.errors), !e.valid) return;
1505
1582
  }
1506
1583
  return c.mutate(f);
@@ -1513,7 +1590,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1513
1590
  fields: u,
1514
1591
  values: f,
1515
1592
  errors: m,
1516
- isValid: a(() => l === void 0 || X(l, f).valid, [l, f]),
1593
+ isValid: a(() => l === void 0 || Q(l, f).valid, [l, f]),
1517
1594
  pending: c.pending,
1518
1595
  submitError: c.error,
1519
1596
  data: c.data,
@@ -1522,13 +1599,13 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1522
1599
  reset: v,
1523
1600
  submit: y
1524
1601
  };
1525
- }, Z = (e, t, n) => e.map((e) => {
1602
+ }, kt = (e, t, n) => e.map((e) => {
1526
1603
  let r = String(e[n] ?? ""), i = e[t];
1527
1604
  return {
1528
1605
  value: r,
1529
1606
  label: i == null ? r : String(i)
1530
1607
  };
1531
- }), Ct = (e, t, r = {}) => {
1608
+ }), At = (e, t, r = {}) => {
1532
1609
  let o = r.debounceMs ?? 200, c = r.labelField ?? "name", l = r.valueField ?? "id", u = r.input ?? ((e) => ({ q: e })), [d, f] = s(r.initialTerm ?? ""), [p, m] = s(d);
1533
1610
  i(() => {
1534
1611
  if (d === p) return;
@@ -1539,7 +1616,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1539
1616
  p,
1540
1617
  o
1541
1618
  ]);
1542
- let h = r.skipUntilTerm === !0 && p.trim() === "", g = P(e, t, a(() => u(p), [u, p]), { skip: h }), _ = a(() => Z(g.data ?? [], c, l), [
1619
+ let h = r.skipUntilTerm === !0 && p.trim() === "", g = F(e, t, a(() => u(p), [u, p]), { skip: h }), _ = a(() => kt(g.data ?? [], c, l), [
1543
1620
  g.data,
1544
1621
  c,
1545
1622
  l
@@ -1550,13 +1627,13 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1550
1627
  term: d,
1551
1628
  search: v
1552
1629
  };
1553
- }, wt = (e, t) => e === t ? 0 : e == null ? 1 : t == null || e < t ? -1 : 1, Tt = (e, t, r = {}) => {
1554
- let i = M(e), [o, c] = s(r.pageSize), l = P(e, t, a(() => o === void 0 ? r.input ?? {} : {
1630
+ }, jt = (e, t) => e === t ? 0 : e == null ? 1 : t == null || e < t ? -1 : 1, Mt = (e, t, r = {}) => {
1631
+ let i = N(e), [o, c] = s(r.pageSize), l = F(e, t, a(() => o === void 0 ? r.input ?? {} : {
1555
1632
  ...r.input,
1556
1633
  limit: o
1557
1634
  }, [r.input, o])), u = i.descriptors[t]?.output, d = n(() => {
1558
1635
  r.pageSize !== void 0 && c((e) => (e ?? r.pageSize) + r.pageSize);
1559
- }, [r.pageSize]), f = a(() => r.columns ?? (u === void 0 ? [] : Y(u)), [r.columns, u]), [p, m] = s(r.initialSort), h = n((e) => {
1636
+ }, [r.pageSize]), f = a(() => r.columns ?? (u === void 0 ? [] : Z(u)), [r.columns, u]), [p, m] = s(r.initialSort), h = n((e) => {
1560
1637
  m((t) => t?.column === e ? {
1561
1638
  column: e,
1562
1639
  direction: t.direction === "asc" ? "desc" : "asc"
@@ -1571,7 +1648,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1571
1648
  let e = l.data ?? [];
1572
1649
  if (p === void 0) return e;
1573
1650
  let t = p.direction === "asc" ? 1 : -1;
1574
- return [...e].sort((e, n) => wt(e[p.column], n[p.column]) * t);
1651
+ return [...e].sort((e, n) => jt(e[p.column], n[p.column]) * t);
1575
1652
  }, [l.data, p]),
1576
1653
  loading: l.data === void 0,
1577
1654
  error: l.error,
@@ -1580,14 +1657,14 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1580
1657
  loadMore: d,
1581
1658
  hasMore: o !== void 0 && (l.data?.length ?? 0) >= o
1582
1659
  };
1583
- }, Et = (e, t, n, r) => {
1660
+ }, Nt = (e, t, n, r) => {
1584
1661
  let i = e.replace(/\/$/, ""), a = new URLSearchParams({
1585
1662
  table: t,
1586
1663
  id: n
1587
1664
  });
1588
1665
  return r !== void 0 && a.set("column", r), `${i}/_voltro/inspect/provenance?${a.toString()}`;
1589
- }, Dt = Et, Ot = (e, t, n, r) => {
1590
- let { inspectBaseUrl: a } = M(e), [o, c] = s({
1666
+ }, Pt = Nt, Ft = (e, t, n, r) => {
1667
+ let { inspectBaseUrl: a } = N(e), [o, c] = s({
1591
1668
  data: void 0,
1592
1669
  loading: !0,
1593
1670
  error: void 0
@@ -1599,7 +1676,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1599
1676
  loading: !0,
1600
1677
  error: void 0
1601
1678
  });
1602
- let i = Et(a ?? "", t, n, r);
1679
+ let i = Nt(a ?? "", t, n, r);
1603
1680
  return fetch(i).then(async (e) => {
1604
1681
  if (!e.ok) throw Error(`provenance fetch failed: HTTP ${e.status}`);
1605
1682
  return await e.json();
@@ -1625,8 +1702,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1625
1702
  n,
1626
1703
  r
1627
1704
  ]), o;
1628
- }, kt = (e) => `${e.replace(/\/$/, "")}/_voltro/inspect/manifest`, At = (e) => {
1629
- let { inspectBaseUrl: t } = M(e), [n, r] = s({
1705
+ }, It = (e) => `${e.replace(/\/$/, "")}/_voltro/inspect/manifest`, Lt = (e) => {
1706
+ let { inspectBaseUrl: t } = N(e), [n, r] = s({
1630
1707
  manifest: void 0,
1631
1708
  loading: !0,
1632
1709
  error: void 0
@@ -1637,7 +1714,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1637
1714
  manifest: void 0,
1638
1715
  loading: !0,
1639
1716
  error: void 0
1640
- }), fetch(kt(t ?? "")).then(async (e) => {
1717
+ }), fetch(It(t ?? "")).then(async (e) => {
1641
1718
  if (!e.ok) throw Error(`manifest fetch failed: HTTP ${e.status}`);
1642
1719
  return await e.json();
1643
1720
  }).then((t) => {
@@ -1656,8 +1733,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1656
1733
  e = !0;
1657
1734
  };
1658
1735
  }, [e, t]), n;
1659
- }, jt = (e, t) => Array.isArray(e) ? e.includes(t) : e === t, Q = (e, t, n) => e.targets?.some((e) => e.table === t && e.op === n) ?? !1, Mt = (e) => e.tables.filter((e) => !e.framework).map((t) => {
1660
- let n = e.procedures.find((e) => e.kind === "query" && jt(e.source, t.name)), r = e.procedures.find((e) => e.kind === "mutation" && Q(e, t.name, "insert")), i = e.procedures.find((e) => e.kind === "mutation" && Q(e, t.name, "update")), a = e.procedures.find((e) => e.kind === "mutation" && Q(e, t.name, "delete"));
1736
+ }, Rt = (e, t) => Array.isArray(e) ? e.includes(t) : e === t, zt = (e, t, n) => e.targets?.some((e) => e.table === t && e.op === n) ?? !1, Bt = (e) => e.tables.filter((e) => !e.framework).map((t) => {
1737
+ let n = e.procedures.find((e) => e.kind === "query" && Rt(e.source, t.name)), r = e.procedures.find((e) => e.kind === "mutation" && zt(e, t.name, "insert")), i = e.procedures.find((e) => e.kind === "mutation" && zt(e, t.name, "update")), a = e.procedures.find((e) => e.kind === "mutation" && zt(e, t.name, "delete"));
1661
1738
  return {
1662
1739
  table: t.name,
1663
1740
  columns: t.columns,
@@ -1670,7 +1747,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1670
1747
  writeScope: `${t.name}:write`,
1671
1748
  deleteScope: `${t.name}:delete`
1672
1749
  };
1673
- }), Nt = (e) => {
1750
+ }), Vt = (e) => {
1674
1751
  let [t, r] = s([]), [i, o] = s([]), c = n((e) => {
1675
1752
  r((t) => [...t, e]), o([]);
1676
1753
  }, []), l = n(async () => {
@@ -1698,8 +1775,8 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1698
1775
  l,
1699
1776
  u
1700
1777
  ]);
1701
- }, Pt = "__voltro.undo.log", Ft = "__voltro.undo.apply", It = "__voltro.undo.redo", Lt = (e, t) => {
1702
- let r = t?.limit, { data: i } = P(e, Pt, r === void 0 ? {} : { limit: r }), a = B(e, Ft), o = B(e, It), s = i ?? [], c = s.find((e) => !e.undone && !e.crossesAction), l = s.find((e) => e.undone), u = n(async (e) => {
1778
+ }, Ht = "__voltro.undo.log", Ut = "__voltro.undo.apply", Wt = "__voltro.undo.redo", Gt = (e, t) => {
1779
+ let r = t?.limit, { data: i } = F(e, Ht, r === void 0 ? {} : { limit: r }), a = H(e, Ut), o = H(e, Wt), s = i ?? [], c = s.find((e) => !e.undone && !e.crossesAction), l = s.find((e) => e.undone), u = n(async (e) => {
1703
1780
  await a.mutate({ invocationId: e });
1704
1781
  }, [a]), d = n(async (e) => {
1705
1782
  await o.mutate({ invocationId: e });
@@ -1718,13 +1795,13 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1718
1795
  undoLast: f,
1719
1796
  redoLast: p
1720
1797
  };
1721
- }, Rt = (e, t) => ({
1798
+ }, Kt = (e, t) => ({
1722
1799
  name: e,
1723
1800
  map: t
1724
- }), $ = (e, t) => e === void 0 ? null : typeof e == "string" ? { event: e } : e(t), zt = /* @__PURE__ */ new Set(["onMount", "onUnmount"]), Bt = (e, t, n) => {
1801
+ }), $ = (e, t) => e === void 0 ? null : typeof e == "string" ? { event: e } : e(t), qt = /* @__PURE__ */ new Set(["onMount", "onUnmount"]), Jt = (e, t, n) => {
1725
1802
  let r = { ...t };
1726
1803
  for (let [i, a] of Object.entries(e.map)) {
1727
- if (zt.has(i) || a === void 0) continue;
1804
+ if (qt.has(i) || a === void 0) continue;
1728
1805
  let e = t[i];
1729
1806
  r[i] = (...r) => {
1730
1807
  let i = $(a, t);
@@ -1732,7 +1809,7 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1732
1809
  };
1733
1810
  }
1734
1811
  return r;
1735
- }, Vt = (e, t, n) => {
1812
+ }, Yt = (e, t, n) => {
1736
1813
  let r = o({
1737
1814
  spec: e,
1738
1815
  props: t,
@@ -1748,45 +1825,45 @@ var b = /* @__PURE__ */ new Set(), x = (e) => {
1748
1825
  let e = r.current, t = $(e.spec.map.onUnmount, e.props);
1749
1826
  t !== null && e.sink(t);
1750
1827
  };
1751
- }, []), a(() => Bt(e, t, n), [
1828
+ }, []), a(() => Jt(e, t, n), [
1752
1829
  e,
1753
1830
  t,
1754
1831
  n
1755
1832
  ]);
1756
- }, Ht = (e, t) => {
1757
- let n = M(e).descriptors[t]?.input;
1758
- return a(() => n === void 0 ? [] : J(n), [n]);
1759
- }, Ut = (e, t) => {
1760
- let n = M(e).descriptors[t]?.output;
1761
- return a(() => n === void 0 ? [] : Y(n), [n]);
1762
- }, Wt = (e, t) => {
1833
+ }, Xt = (e, t) => {
1834
+ let n = N(e).descriptors[t]?.input;
1835
+ return a(() => n === void 0 ? [] : X(n), [n]);
1836
+ }, Zt = (e, t) => {
1837
+ let n = N(e).descriptors[t]?.output;
1838
+ return a(() => n === void 0 ? [] : Z(n), [n]);
1839
+ }, Qt = (e, t) => {
1763
1840
  if (e === t) return !0;
1764
1841
  if (e.length !== t.length) return !1;
1765
1842
  for (let n = 0; n < e.length; n += 1) if (!Object.is(e[n], t[n])) return !1;
1766
1843
  return !0;
1767
- }, Gt = (e) => Object.keys(e).sort().map((t) => e[t]), Kt = (e, t) => {
1768
- let n = o(null), r = Gt(e);
1769
- return (n.current === null || !Wt(n.current.key, r)) && (n.current = {
1844
+ }, $t = (e) => Object.keys(e).sort().map((t) => e[t]), en = (e, t) => {
1845
+ let n = o(null), r = $t(e);
1846
+ return (n.current === null || !Qt(n.current.key, r)) && (n.current = {
1770
1847
  key: r,
1771
1848
  value: t(e)
1772
1849
  }), n.current.value;
1773
- }, qt = "admin:full", Jt = (e, t) => e.includes("admin:full") ? !0 : (typeof t == "string" ? [t] : t).every((t) => e.includes(t)), Yt = e({ scopes: [] });
1774
- function Xt(e) {
1775
- return t(Yt.Provider, { value: { scopes: e.scopes } }, e.children);
1850
+ }, tn = "admin:full", nn = (e, t) => e.includes("admin:full") ? !0 : (typeof t == "string" ? [t] : t).every((t) => e.includes(t)), rn = (e, t) => t.length === 0 || e.includes("admin:full") ? !0 : t.some((t) => e.includes(t)), an = e({ scopes: [] });
1851
+ function on(e) {
1852
+ return t(an.Provider, { value: { scopes: e.scopes } }, e.children);
1776
1853
  }
1777
- var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) => {
1778
- let i = P(e, t, { ...n }, r);
1854
+ var sn = () => r(an), cn = (e) => nn(sn().scopes, e), ln = (e) => rn(sn().scopes, e), un = (e, t, n, r = {}) => {
1855
+ let i = F(e, t, { ...n }, r);
1779
1856
  return a(() => ({
1780
1857
  allowed: i.data?.allowed === !0,
1781
1858
  pending: i.data === void 0
1782
1859
  }), [i.data]);
1783
- }, en = (e, t, n, r = {}) => {
1784
- let i = P(e, t, { ...n }, r);
1860
+ }, dn = (e, t, n, r = {}) => {
1861
+ let i = F(e, t, { ...n }, r);
1785
1862
  return a(() => ({
1786
1863
  allowedIds: new Set(i.data?.allowedIds ?? []),
1787
1864
  pending: i.data === void 0
1788
1865
  }), [i.data]);
1789
- }, tn = (e) => {
1866
+ }, fn = (e) => {
1790
1867
  switch (e) {
1791
1868
  case "select":
1792
1869
  case "radio":
@@ -1802,25 +1879,25 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1802
1879
  case "switch": return "boolean";
1803
1880
  default: return null;
1804
1881
  }
1805
- }, nn = (e) => J(e).map((e) => {
1806
- let t = tn(e.widget);
1882
+ }, pn = (e) => X(e).map((e) => {
1883
+ let t = fn(e.widget);
1807
1884
  return t === null ? null : {
1808
1885
  name: e.name,
1809
1886
  label: e.label,
1810
1887
  kind: t,
1811
1888
  ...e.options ? { options: e.options } : {}
1812
1889
  };
1813
- }).filter((e) => e !== null), rn = (e) => {
1890
+ }).filter((e) => e !== null), mn = (e) => {
1814
1891
  let t = {};
1815
1892
  for (let [n, r] of Object.entries(e)) r === void 0 || r === "" || Array.isArray(r) && r.length === 0 || (t[n] = r);
1816
1893
  return t;
1817
- }, an = (e, t, r = {}) => {
1818
- let i = M(e).descriptors[t]?.input, o = a(() => i === void 0 ? [] : nn(i), [i]), [c, l] = s(r.initial ?? {}), u = n((e, t) => {
1819
- l((n) => rn({
1894
+ }, hn = (e, t, r = {}) => {
1895
+ let i = N(e).descriptors[t]?.input, o = a(() => i === void 0 ? [] : pn(i), [i]), [c, l] = s(r.initial ?? {}), u = n((e, t) => {
1896
+ l((n) => mn({
1820
1897
  ...n,
1821
1898
  [e]: t
1822
1899
  }));
1823
- }, []), d = n(() => l({}), []), f = P(e, t, a(() => rn(c), [c]));
1900
+ }, []), d = n(() => l({}), []), f = F(e, t, a(() => mn(c), [c]));
1824
1901
  return {
1825
1902
  filters: o,
1826
1903
  values: c,
@@ -1831,20 +1908,20 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1831
1908
  loading: f.data === void 0,
1832
1909
  error: f.error
1833
1910
  };
1834
- }, on = (e, t, n = {}) => {
1835
- let r = P(e, t, n), i = r.data;
1911
+ }, gn = (e, t, n = {}) => {
1912
+ let r = F(e, t, n), i = r.data;
1836
1913
  return {
1837
1914
  record: Array.isArray(i) ? i[0] : i,
1838
1915
  loading: i === void 0,
1839
1916
  error: r.error
1840
1917
  };
1841
- }, sn = (e, t = 300) => {
1918
+ }, _n = (e, t = 300) => {
1842
1919
  let [n, r] = s(e);
1843
1920
  return i(() => {
1844
1921
  let n = setTimeout(() => r(e), t);
1845
1922
  return () => clearTimeout(n);
1846
1923
  }, [e, t]), n;
1847
- }, cn = (e) => {
1924
+ }, vn = (e) => {
1848
1925
  let { value: t, debouncedValue: n, data: r, interpret: i, skipEmpty: a = !0 } = e;
1849
1926
  if (a && t.trim() === "") return {
1850
1927
  status: "idle",
@@ -1862,19 +1939,19 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1862
1939
  valid: o.valid,
1863
1940
  message: o.message
1864
1941
  };
1865
- }, ln = (e, t, n, r) => {
1866
- let { input: i, interpret: o, debounceMs: s = 300, skipEmpty: c = !0 } = r, l = sn(n, s), u = c && l.trim() === "", d = P(e, t, a(() => i ? i(l) : { value: l }, [i, l]), { skip: u });
1867
- return cn({
1942
+ }, yn = (e, t, n, r) => {
1943
+ let { input: i, interpret: o, debounceMs: s = 300, skipEmpty: c = !0 } = r, l = _n(n, s), u = c && l.trim() === "", d = F(e, t, a(() => i ? i(l) : { value: l }, [i, l]), { skip: u });
1944
+ return vn({
1868
1945
  value: n,
1869
1946
  debouncedValue: l,
1870
1947
  data: u ? null : d.data,
1871
1948
  interpret: o,
1872
1949
  skipEmpty: c
1873
1950
  });
1874
- }, un = (e, t) => ({
1951
+ }, bn = (e, t) => ({
1875
1952
  name: e,
1876
1953
  payload: t
1877
- }), dn = (e, t) => {
1954
+ }), xn = (e, t) => {
1878
1955
  let n = h.decodeUnknownEither(e.payload, { errors: "all" })(t);
1879
1956
  if (n._tag === "Right") return {
1880
1957
  valid: !0,
@@ -1886,15 +1963,15 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1886
1963
  valid: !1,
1887
1964
  errors: r
1888
1965
  };
1889
- }, fn = (e) => {
1966
+ }, Sn = (e) => {
1890
1967
  let t = new Map(e.map((e) => [e.name, e]));
1891
1968
  return {
1892
1969
  names: [...t.keys()].sort(),
1893
1970
  get: (e) => t.get(e),
1894
1971
  events: e
1895
1972
  };
1896
- }, pn = (e, t) => {
1897
- let n = fn(e);
1973
+ }, Cn = (e, t) => {
1974
+ let n = Sn(e);
1898
1975
  return {
1899
1976
  track: (e, r) => {
1900
1977
  let i = n.get(e);
@@ -1903,7 +1980,7 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1903
1980
  return;
1904
1981
  }
1905
1982
  if (process.env.NODE_ENV !== "production") {
1906
- let t = dn(i, r);
1983
+ let t = xn(i, r);
1907
1984
  t.valid || console.error(`[@voltro/client] analytics.track('${e}'): payload failed its schema`, t.errors);
1908
1985
  }
1909
1986
  t({
@@ -1914,42 +1991,42 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1914
1991
  names: n.names,
1915
1992
  catalog: n
1916
1993
  };
1917
- }, mn = (e, t) => {
1918
- let r = V(e, t);
1994
+ }, wn = (e, t) => {
1995
+ let r = U(e, t);
1919
1996
  return {
1920
1997
  preview: n((e) => r.run(e), [r]),
1921
1998
  diff: r.lastResult,
1922
1999
  pending: r.pending,
1923
2000
  error: r.error
1924
2001
  };
1925
- }, hn = (e, t, n, r) => [...e, {
2002
+ }, Tn = (e, t, n, r) => [...e, {
1926
2003
  id: t,
1927
2004
  tag: n,
1928
2005
  input: r,
1929
2006
  status: "pending",
1930
2007
  attempts: 0
1931
- }], gn = (e, t, n) => e.map((e) => e.id === t ? {
2008
+ }], En = (e, t, n) => e.map((e) => e.id === t ? {
1932
2009
  ...e,
1933
2010
  ...n
1934
- } : e), _n = (e, t) => gn(e, t, { status: "sent" }), vn = (e, t, n) => e.map((e) => e.id === t ? {
2011
+ } : e), Dn = (e, t) => En(e, t, { status: "sent" }), On = (e, t, n) => e.map((e) => e.id === t ? {
1935
2012
  ...e,
1936
2013
  status: "failed",
1937
2014
  error: n,
1938
2015
  attempts: e.attempts + 1
1939
- } : e), yn = (e, t, n) => gn(e, t, {
2016
+ } : e), kn = (e, t, n) => En(e, t, {
1940
2017
  status: "conflict",
1941
2018
  error: n
1942
- }), bn = (e) => e.filter((e) => e.status !== "sent"), xn = (e) => {
2019
+ }), An = (e) => e.filter((e) => e.status !== "sent"), jn = (e) => {
1943
2020
  let t = [];
1944
2021
  for (let n of e) {
1945
2022
  if (n.status === "conflict") break;
1946
2023
  (n.status === "pending" || n.status === "failed") && t.push(n);
1947
2024
  }
1948
2025
  return t;
1949
- }, Sn = (e) => {
2026
+ }, Mn = (e) => {
1950
2027
  let t = e;
1951
2028
  return t?.conflict === !0 || t?._tag === "UndoBoundaryError" && t?.boundary === "conflict";
1952
- }, Cn = (e) => {
2029
+ }, Nn = (e) => {
1953
2030
  let [t, n] = s(e ?? (typeof navigator < "u" ? navigator.onLine : !0));
1954
2031
  return i(() => {
1955
2032
  if (e !== void 0) {
@@ -1962,21 +2039,21 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1962
2039
  window.removeEventListener("online", t), window.removeEventListener("offline", r);
1963
2040
  };
1964
2041
  }, [e]), t;
1965
- }, wn = (e) => {
1966
- let { send: t, isConflict: r = Sn, idFor: a } = e, [c, l] = s([]), u = Cn(e.online), d = o(c);
2042
+ }, Pn = (e) => {
2043
+ let { send: t, isConflict: r = Mn, idFor: a } = e, [c, l] = s([]), u = Nn(e.online), d = o(c);
1967
2044
  d.current = c;
1968
2045
  let f = o(0), p = n((e, t) => {
1969
2046
  let n = a?.() ?? `obx_${f.current++}_${e}`;
1970
- l((r) => hn(r, n, e, t));
2047
+ l((r) => Tn(r, n, e, t));
1971
2048
  }, [a]), m = n(async () => {
1972
- for (let e of xn(d.current)) try {
1973
- await t(e), l((t) => _n(t, e.id));
2049
+ for (let e of jn(d.current)) try {
2050
+ await t(e), l((t) => Dn(t, e.id));
1974
2051
  } catch (t) {
1975
2052
  if (r(t)) {
1976
- l((n) => yn(n, e.id, t));
2053
+ l((n) => kn(n, e.id, t));
1977
2054
  break;
1978
2055
  }
1979
- l((n) => vn(n, e.id, t));
2056
+ l((n) => On(n, e.id, t));
1980
2057
  }
1981
2058
  }, [t, r]);
1982
2059
  return i(() => {
@@ -1989,7 +2066,7 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1989
2066
  pending: c.filter((e) => e.status === "pending" || e.status === "failed").length,
1990
2067
  conflicts: c.filter((e) => e.status === "conflict")
1991
2068
  };
1992
- }, Tn = (e) => {
2069
+ }, Fn = (e) => {
1993
2070
  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);
1994
2071
  return {
1995
2072
  startIndex: l,
@@ -1999,8 +2076,8 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
1999
2076
  topSpacer: l * r,
2000
2077
  bottomSpacer: a === void 0 ? 0 : Math.max(0, (a - d) * r)
2001
2078
  };
2002
- }, En = (e, t, r) => {
2003
- let { rowHeight: i, viewportHeight: o, overscan: c, total: l, input: u } = r, [d, f] = s(0), p = a(() => Tn({
2079
+ }, In = (e, t, r) => {
2080
+ let { rowHeight: i, viewportHeight: o, overscan: c, total: l, input: u } = r, [d, f] = s(0), p = a(() => Fn({
2004
2081
  scrollTop: d,
2005
2082
  viewportHeight: o,
2006
2083
  rowHeight: i,
@@ -2012,7 +2089,7 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
2012
2089
  i,
2013
2090
  c,
2014
2091
  l
2015
- ]), m = P(e, t, a(() => ({
2092
+ ]), m = F(e, t, a(() => ({
2016
2093
  ...u,
2017
2094
  offset: p.offset,
2018
2095
  limit: p.limit
@@ -2032,6 +2109,33 @@ var Zt = () => r(Yt), Qt = (e) => Jt(Zt().scopes, e), $t = (e, t, n, r = {}) =>
2032
2109
  loading: m.data === void 0,
2033
2110
  error: m.error
2034
2111
  };
2035
- }, Dn = "framework-client";
2112
+ }, Ln = () => typeof navigator > "u" || navigator.onLine, Rn = (e) => {
2113
+ let { errorBus: t } = N(e), [r, a] = s(Ln), [c, l] = s(0), [u, d] = s(void 0), f = o(!0);
2114
+ i(() => (f.current = !0, () => {
2115
+ f.current = !1;
2116
+ }), []), i(() => {
2117
+ if (typeof window > "u") return;
2118
+ let e = () => {
2119
+ a(!0), l(0);
2120
+ }, t = () => a(!1);
2121
+ return window.addEventListener("online", e), window.addEventListener("offline", t), () => {
2122
+ window.removeEventListener("online", e), window.removeEventListener("offline", t);
2123
+ };
2124
+ }, []), i(() => {
2125
+ if (t?.on) return t.on(() => {
2126
+ f.current && (l((e) => e + 1), d(Date.now()));
2127
+ });
2128
+ }, [t]);
2129
+ let p = n(() => {
2130
+ l(0);
2131
+ }, []);
2132
+ return {
2133
+ status: r ? c > 0 ? "degraded" : "connected" : "offline",
2134
+ online: r,
2135
+ failureCount: c,
2136
+ lastFailureAt: u,
2137
+ reportSuccess: p
2138
+ };
2139
+ }, zn = "framework-client";
2036
2140
  //#endregion
2037
- export { qt as ADMIN_SCOPE, Dn as CLIENT_NAME, D as FrameworkRuntimesContext, fe as FrameworkRuntimesProvider, ie as LoadingSubscriptionCache, Xt as PermissionProvider, ae as RpcErrorBus, re as SubscriptionCache, Ft as UNDO_APPLY_TAG, Pt as UNDO_LOG_TAG, It as UNDO_REDO_TAG, ue as _resetFrameworkRuntimesWarning, Jt as canCall, be as clearMutations, bn as clearSent, Tn as computeWindow, pn as createAnalytics, un as defineEvent, Rt as defineTracking, Mt as deriveEntityAdmins, hn as enqueueEntry, oe as errorTag, fn as eventCatalog, nn as filtersFromSchema, ve as getMutations, kt as manifestUrl, yn as markConflict, vn as markFailed, _n as markSent, Dt as provenanceUrl, ut as publishClientError, x as publishClientTrace, xn as replayable, ft as reportClientError, N as resolveByTag, $ as resolveTrackingEvent, tt as resumableConsumeProgram, Z as rowsToOptions, Y as schemaToColumns, J as schemaToFields, z as settleMutation, Wt as shallowArrayEqual, Gt as sourceValues, O as ssrClientProxy, ce as ssrStubHandle, C as stableKey, R as startMutation, dt as subscribeClientErrors, S as subscribeClientTraces, ye as subscribeMutations, V as useAction, st as useAgent, ot as useAgentChat, et as useAgentStream, ln as useAsyncValidation, Qt as useCan, At as useCapabilityManifest, ct as useDataCopilot, Tt as useDataTable, sn as useDebounced, Kt as useDerived, St as useFormBinding, Ht as useFormSkeleton, M as useFrameworkApi, de as useFrameworkRuntimes, B as useMutation, pt as useOnRpcError, wn as useOutbox, Zt as usePermissions, mn as usePreview, Ot as useProvenance, Ct as useQueryField, an as useQueryFilters, on as useRecord, lt as useRefreshSubscriptions, $t as useResourceCan, en as useResourceCans, rt as useResumableAgentStream, P as useSubscription, Ut as useTableSkeleton, Vt as useTracking, Nt as useUndo, Lt as useUndoLog, ze as useUpload, En as useWindowedSubscription, Be as useWorkflow, qe as useWorkflowDomainEvents, Je as useWorkflowEventDeliveries, Ke as useWorkflowEvents, Ue as useWorkflowRun, W as useWorkflowRunEvents, $e as useWorkflowRunState, Ge as useWorkflowRunSteps, We as useWorkflowRuns, Ve as useWorkflowSignal, He as useWorkflowUpdate, dn as validateEventPayload, X as validateFields, cn as validationStatus, Bt as wrapTrackedCallbacks };
2141
+ export { tn as ADMIN_SCOPE, zn as CLIENT_NAME, le as FrameworkRuntimesContext, he as FrameworkRuntimesProvider, oe as LoadingSubscriptionCache, on as PermissionProvider, se as RpcErrorBus, ae as SubscriptionCache, Ut as UNDO_APPLY_TAG, Ht as UNDO_LOG_TAG, Wt as UNDO_REDO_TAG, pe as _resetFrameworkRuntimesWarning, nn as canCall, rn as canCallAny, Ce as clearMutations, An as clearSent, Fn as computeWindow, Cn as createAnalytics, bn as defineEvent, Kt as defineTracking, Bt as deriveEntityAdmins, Tn as enqueueEntry, ce as errorTag, Sn as eventCatalog, pn as filtersFromSchema, Ee as getMutationNotifier, xe as getMutations, It as manifestUrl, kn as markConflict, On as markFailed, Dn as markSent, Pt as provenanceUrl, gt as publishClientError, x as publishClientTrace, jn as replayable, vt as reportClientError, P as resolveByTag, $ as resolveTrackingEvent, st as resumableConsumeProgram, kt as rowsToOptions, Z as schemaToColumns, X as schemaToFields, Te as setMutationNotifier, B as settleMutation, Qt as shallowArrayEqual, $t as sourceValues, k as ssrClientProxy, de as ssrStubHandle, C as stableKey, z as startMutation, _t as subscribeClientErrors, S as subscribeClientTraces, Se as subscribeMutations, U as useAction, pt as useAgent, ft as useAgentChat, ot as useAgentStream, yn as useAsyncValidation, cn as useCan, ln as useCanAny, Lt as useCapabilityManifest, Rn as useConnectionStatus, mt as useDataCopilot, Mt as useDataTable, _n as useDebounced, en as useDerived, Ot as useFormBinding, Xt as useFormSkeleton, N as useFrameworkApi, me as useFrameworkRuntimes, H as useMutation, yt as useOnRpcError, Pn as useOutbox, sn as usePermissions, wn as usePreview, Ft as useProvenance, At as useQueryField, hn as useQueryFilters, gn as useRecord, ht as useRefreshSubscriptions, un as useResourceCan, dn as useResourceCans, lt as useResumableAgentStream, F as useSubscription, Zt as useTableSkeleton, Yt as useTracking, Vt as useUndo, Gt as useUndoLog, Ge as useUpload, In as useWindowedSubscription, Ke as useWorkflow, $e as useWorkflowDomainEvents, et as useWorkflowEventDeliveries, Qe as useWorkflowEvents, Ye as useWorkflowRun, K as useWorkflowRunEvents, at as useWorkflowRunState, Ze as useWorkflowRunSteps, Xe as useWorkflowRuns, qe as useWorkflowSignal, Je as useWorkflowUpdate, xn as validateEventPayload, Q as validateFields, vn as validationStatus, Jt as wrapTrackedCallbacks };