@vertz/ui 0.2.29 → 0.2.30

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.
@@ -5,6 +5,7 @@ import {
5
5
  styleObjectToString
6
6
  } from "./chunk-h1fsr8kv.js";
7
7
  import {
8
+ advanceCursor,
8
9
  claimComment,
9
10
  claimElement,
10
11
  claimText,
@@ -19,7 +20,7 @@ import {
19
20
  pushScope,
20
21
  resumeHydration,
21
22
  runCleanups
22
- } from "./chunk-ppr06jgn.js";
23
+ } from "./chunk-1yd6jfw5.js";
23
24
 
24
25
  // src/dom/dom-adapter.ts
25
26
  function createDOMAdapter() {
@@ -131,18 +132,26 @@ function __child(fn) {
131
132
  if (getIsHydrating()) {
132
133
  const claimed = claimComment();
133
134
  if (claimed) {
135
+ if (typeof process !== "undefined" && true && claimed.data.trim() !== "child") {
136
+ console.warn(`[hydrate] __child expected <!--child--> but claimed <!--${claimed.data}-->. ` + "Cursor may be misaligned.");
137
+ }
134
138
  const anchor2 = claimed;
135
139
  const managed2 = [];
136
140
  const childCleanups2 = { value: [] };
137
141
  let sibling = anchor2.nextSibling;
138
142
  while (sibling) {
143
+ const next = sibling.nextSibling;
144
+ if (sibling.nodeType === 8 && sibling.data.trim() === "/child") {
145
+ sibling.parentNode?.removeChild(sibling);
146
+ break;
147
+ }
139
148
  if (sibling.nodeType === 8 && sibling.data.trim() === "child") {
140
149
  break;
141
150
  }
142
- const next = sibling.nextSibling;
143
151
  sibling.parentNode?.removeChild(sibling);
144
152
  sibling = next;
145
153
  }
154
+ advanceCursor(anchor2.nextSibling);
146
155
  pauseHydration();
147
156
  try {
148
157
  const dispose2 = childEffect(anchor2, ((originalFn) => () => {
@@ -169,8 +178,10 @@ function __child(fn) {
169
178
  }
170
179
  }
171
180
  const anchor = getAdapter().createComment("child");
181
+ const endMarker = getAdapter().createComment("/child");
172
182
  const fragment = getAdapter().createDocumentFragment();
173
183
  fragment.appendChild(anchor);
184
+ fragment.appendChild(endMarker);
174
185
  const managed = [];
175
186
  const childCleanups = { value: [] };
176
187
  const dispose = childEffect(anchor, fn, managed, childCleanups);
@@ -368,6 +368,9 @@ function pauseHydration() {
368
368
  function resumeHydration() {
369
369
  isHydrating = true;
370
370
  }
371
+ function advanceCursor(node) {
372
+ currentNode = node;
373
+ }
371
374
  function claimElement(tag) {
372
375
  const upperTag = tag.toUpperCase();
373
376
  const savedNode = currentNode;
@@ -469,8 +472,15 @@ function findUnclaimedNodes(root, claimed) {
469
472
  if (child.nodeType === Node.COMMENT_NODE && claimed.has(child) && child.data.trim() === "child") {
470
473
  child = child.nextSibling;
471
474
  while (child) {
472
- if (child.nodeType === Node.COMMENT_NODE && child.data.trim() === "child") {
473
- break;
475
+ if (child.nodeType === Node.COMMENT_NODE) {
476
+ const data = child.data.trim();
477
+ if (data === "/child") {
478
+ child = child.nextSibling;
479
+ break;
480
+ }
481
+ if (data === "child") {
482
+ break;
483
+ }
474
484
  }
475
485
  child = child.nextSibling;
476
486
  }
@@ -502,10 +512,7 @@ function describeNode(node) {
502
512
  const preview = data.length > 20 ? data.slice(0, 20) + "..." : data;
503
513
  return `text("${preview}")`;
504
514
  }
505
- if (node.nodeType === Node.COMMENT_NODE) {
506
- return `<!-- ${node.data} -->`;
507
- }
508
- return `[node type=${node.nodeType}]`;
515
+ return `<!-- ${node.data} -->`;
509
516
  }
510
517
 
511
518
  // src/runtime/signal.ts
@@ -722,4 +729,4 @@ function lifecycleEffect(fn) {
722
729
  return dispose;
723
730
  }
724
731
 
725
- export { registerSSRResolver, getSSRContext, hasSSRResolver, createContext, useContext, getContextScope, setContextScope, startHydration, endHydration, discardDeferredEffects, getIsHydrating, pauseHydration, resumeHydration, claimElement, claimText, claimComment, enterChildren, exitChildren, DisposalScopeError, onCleanup, _tryOnCleanup, pushScope, popScope, runCleanups, batch, setReadValueCallback, untrack, startSignalCollection, stopSignalCollection, signal, computed, domEffect, deferredDomEffect, lifecycleEffect };
732
+ export { registerSSRResolver, getSSRContext, hasSSRResolver, createContext, useContext, getContextScope, setContextScope, startHydration, endHydration, discardDeferredEffects, getIsHydrating, pauseHydration, resumeHydration, advanceCursor, claimElement, claimText, claimComment, enterChildren, exitChildren, DisposalScopeError, onCleanup, _tryOnCleanup, pushScope, popScope, runCleanups, batch, setReadValueCallback, untrack, startSignalCollection, stopSignalCollection, signal, computed, domEffect, deferredDomEffect, lifecycleEffect };
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-jrtrk5z4.js";
4
4
  import {
5
5
  registerActiveQuery
6
- } from "./chunk-09ntccdx.js";
6
+ } from "./chunk-pv0apt9z.js";
7
7
  import {
8
8
  isBrowser
9
- } from "./chunk-xs5s8gqe.js";
9
+ } from "./chunk-sjypbv24.js";
10
10
  import {
11
11
  _tryOnCleanup,
12
12
  batch,
@@ -16,7 +16,7 @@ import {
16
16
  setReadValueCallback,
17
17
  signal,
18
18
  untrack
19
- } from "./chunk-ppr06jgn.js";
19
+ } from "./chunk-1yd6jfw5.js";
20
20
 
21
21
  // src/query/cache.ts
22
22
  class MemoryCache {
@@ -1144,6 +1144,8 @@ function query(source, options = {}) {
1144
1144
  getInflight().delete(key);
1145
1145
  refetchTrigger.value = refetchTrigger.peek() + 1;
1146
1146
  }
1147
+ let unsubscribeBus;
1148
+ let unregisterFromRegistry;
1147
1149
  let disposeFn;
1148
1150
  let isFirst = true;
1149
1151
  disposeFn = lifecycleEffect(() => {
@@ -1332,9 +1334,7 @@ function query(source, options = {}) {
1332
1334
  getQueryEnvelopeStore().delete(queryKey);
1333
1335
  };
1334
1336
  }
1335
- let unsubscribeBus;
1336
- let unregisterFromRegistry;
1337
- if (entityMeta && !isSSR()) {
1337
+ if (entityMeta && !isSSR() && !unsubscribeBus) {
1338
1338
  unsubscribeBus = getMutationEventBus().subscribe(entityMeta.entityType, refetch);
1339
1339
  unregisterFromRegistry = registerActiveQuery(entityMeta, refetch, createClearData(entityMeta));
1340
1340
  }
@@ -3,7 +3,7 @@ import {
3
3
  beginDeferringMounts,
4
4
  discardDeferredMounts,
5
5
  flushDeferredMounts
6
- } from "./chunk-svvqjmyy.js";
6
+ } from "./chunk-mntc8w0g.js";
7
7
  import {
8
8
  __append,
9
9
  __classList,
@@ -11,13 +11,13 @@ import {
11
11
  __enterChildren,
12
12
  __exitChildren,
13
13
  __staticText
14
- } from "./chunk-djvarb8r.js";
14
+ } from "./chunk-1j59xzqm.js";
15
15
  import {
16
16
  RouterContext
17
- } from "./chunk-7nr2ebrf.js";
17
+ } from "./chunk-9p84cvet.js";
18
18
  import {
19
19
  isBrowser
20
- } from "./chunk-xs5s8gqe.js";
20
+ } from "./chunk-sjypbv24.js";
21
21
  import {
22
22
  _tryOnCleanup,
23
23
  createContext,
@@ -32,7 +32,7 @@ import {
32
32
  startHydration,
33
33
  untrack,
34
34
  useContext
35
- } from "./chunk-ppr06jgn.js";
35
+ } from "./chunk-1yd6jfw5.js";
36
36
 
37
37
  // src/component/error-boundary-context.ts
38
38
  var handlerStack = [];
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createContext,
3
3
  useContext
4
- } from "./chunk-ppr06jgn.js";
4
+ } from "./chunk-1yd6jfw5.js";
5
5
 
6
6
  // src/router/router-context.ts
7
7
  var RouterContext = createContext(undefined, "@vertz/ui::RouterContext");
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  computed,
3
3
  signal
4
- } from "./chunk-ppr06jgn.js";
4
+ } from "./chunk-1yd6jfw5.js";
5
5
 
6
6
  // src/form/field-state.ts
7
7
  function createFieldState(_name, initialValue) {
@@ -7,11 +7,11 @@ import {
7
7
  } from "./chunk-jrtrk5z4.js";
8
8
  import {
9
9
  isBrowser
10
- } from "./chunk-xs5s8gqe.js";
10
+ } from "./chunk-sjypbv24.js";
11
11
  import {
12
12
  getSSRContext,
13
13
  signal
14
- } from "./chunk-ppr06jgn.js";
14
+ } from "./chunk-1yd6jfw5.js";
15
15
 
16
16
  // src/router/reactive-search-params.ts
17
17
  function shallowEqual(a, b) {
@@ -5,7 +5,7 @@ import {
5
5
  pushScope,
6
6
  runCleanups,
7
7
  untrack
8
- } from "./chunk-ppr06jgn.js";
8
+ } from "./chunk-1yd6jfw5.js";
9
9
 
10
10
  // src/component/lifecycle.ts
11
11
  var mountFrames = [];
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  injectCSS
3
- } from "./chunk-j1a7t906.js";
3
+ } from "./chunk-pwmjtxpn.js";
4
4
  import {
5
5
  createContext
6
- } from "./chunk-ppr06jgn.js";
6
+ } from "./chunk-1yd6jfw5.js";
7
7
 
8
8
  // src/dom/animation.ts
9
9
  function onAnimationsComplete(el, callback) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getSSRContext
3
- } from "./chunk-ppr06jgn.js";
3
+ } from "./chunk-1yd6jfw5.js";
4
4
 
5
5
  // src/query/invalidate.ts
6
6
  var registry = new Set;
@@ -4,10 +4,10 @@ import {
4
4
  __element,
5
5
  __enterChildren,
6
6
  __exitChildren
7
- } from "./chunk-djvarb8r.js";
7
+ } from "./chunk-1j59xzqm.js";
8
8
  import {
9
9
  getSSRContext
10
- } from "./chunk-ppr06jgn.js";
10
+ } from "./chunk-1yd6jfw5.js";
11
11
 
12
12
  // src/component/children.ts
13
13
  var MAX_RESOLVE_DEPTH = 100;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hasSSRResolver
3
- } from "./chunk-ppr06jgn.js";
3
+ } from "./chunk-1yd6jfw5.js";
4
4
 
5
5
  // src/env/is-browser.ts
6
6
  function isBrowser() {
@@ -76,6 +76,7 @@ interface DenialMeta {
76
76
  requiredRoles?: string[];
77
77
  disabledFlags?: string[];
78
78
  limit?: {
79
+ key?: string;
79
80
  max: number;
80
81
  consumed: number;
81
82
  remaining: number;
@@ -91,7 +92,10 @@ interface AccessCheckData {
91
92
  interface AccessSet {
92
93
  entitlements: Record<string, AccessCheckData>;
93
94
  flags: Record<string, boolean>;
95
+ /** @deprecated Use `plans` for multi-level. Kept for backward compat. */
94
96
  plan: string | null;
97
+ /** Plan per billing level. Keys are entity names. */
98
+ plans: Record<string, string | null>;
95
99
  computedAt: string;
96
100
  }
97
101
  /** Public return type of can(). All properties are ReadonlySignal (compiler auto-unwraps). */
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  RouterContext
3
- } from "../../shared/chunk-7nr2ebrf.js";
3
+ } from "../../shared/chunk-9p84cvet.js";
4
4
  import {
5
5
  invalidateTenantQueries
6
- } from "../../shared/chunk-09ntccdx.js";
6
+ } from "../../shared/chunk-pv0apt9z.js";
7
7
  import {
8
8
  isBrowser
9
- } from "../../shared/chunk-xs5s8gqe.js";
9
+ } from "../../shared/chunk-sjypbv24.js";
10
10
  import {
11
11
  _tryOnCleanup,
12
12
  computed,
@@ -14,7 +14,7 @@ import {
14
14
  getSSRContext,
15
15
  signal,
16
16
  useContext
17
- } from "../../shared/chunk-ppr06jgn.js";
17
+ } from "../../shared/chunk-1yd6jfw5.js";
18
18
 
19
19
  // src/auth/access-context.ts
20
20
  var AccessContext = createContext(undefined, "@vertz/ui::AccessContext");
@@ -8,10 +8,10 @@ import {
8
8
  globalCss,
9
9
  s,
10
10
  variants
11
- } from "../../shared/chunk-j1a7t906.js";
12
- import"../../shared/chunk-djvarb8r.js";
11
+ } from "../../shared/chunk-pwmjtxpn.js";
12
+ import"../../shared/chunk-1j59xzqm.js";
13
13
  import"../../shared/chunk-h1fsr8kv.js";
14
- import"../../shared/chunk-ppr06jgn.js";
14
+ import"../../shared/chunk-1yd6jfw5.js";
15
15
  export {
16
16
  variants,
17
17
  s,
@@ -3,8 +3,8 @@ import {
3
3
  form,
4
4
  formDataToObject,
5
5
  validate
6
- } from "../../shared/chunk-h2sjma78.js";
7
- import"../../shared/chunk-ppr06jgn.js";
6
+ } from "../../shared/chunk-hcgnfw27.js";
7
+ import"../../shared/chunk-1yd6jfw5.js";
8
8
  export {
9
9
  validate,
10
10
  formDataToObject,
package/dist/src/index.js CHANGED
@@ -25,7 +25,7 @@ import {
25
25
  slideOutToTop,
26
26
  zoomIn,
27
27
  zoomOut
28
- } from "../shared/chunk-ymc3wwam.js";
28
+ } from "../shared/chunk-n824qrvk.js";
29
29
  import {
30
30
  ErrorBoundary,
31
31
  Link,
@@ -36,16 +36,16 @@ import {
36
36
  getCurrentErrorHandler,
37
37
  parseSearchParams,
38
38
  useSearchParams
39
- } from "../shared/chunk-kabxty17.js";
39
+ } from "../shared/chunk-5xm1w16j.js";
40
40
  import {
41
41
  beginDeferringMounts,
42
42
  discardDeferredMounts,
43
43
  flushDeferredMounts,
44
44
  onMount
45
- } from "../shared/chunk-svvqjmyy.js";
45
+ } from "../shared/chunk-mntc8w0g.js";
46
46
  import {
47
47
  createRouter
48
- } from "../shared/chunk-4jfn3qhq.js";
48
+ } from "../shared/chunk-mm9ms792.js";
49
49
  import {
50
50
  defineRoutes
51
51
  } from "../shared/chunk-ah86rm07.js";
@@ -54,7 +54,7 @@ import {
54
54
  form,
55
55
  formDataToObject,
56
56
  validate
57
- } from "../shared/chunk-h2sjma78.js";
57
+ } from "../shared/chunk-hcgnfw27.js";
58
58
  import {
59
59
  EntityStore,
60
60
  FieldSelectionTracker,
@@ -66,7 +66,7 @@ import {
66
66
  query,
67
67
  registerRelationSchema,
68
68
  resetRelationSchemas_TEST_ONLY
69
- } from "../shared/chunk-1jgws7rs.js";
69
+ } from "../shared/chunk-5vcnmqck.js";
70
70
  import"../shared/chunk-jrtrk5z4.js";
71
71
  import {
72
72
  ThemeProvider,
@@ -83,7 +83,7 @@ import {
83
83
  resolveChildren,
84
84
  s,
85
85
  variants
86
- } from "../shared/chunk-j1a7t906.js";
86
+ } from "../shared/chunk-pwmjtxpn.js";
87
87
  import {
88
88
  RENDER_NODE_BRAND,
89
89
  __append,
@@ -96,20 +96,20 @@ import {
96
96
  getAdapter,
97
97
  isRenderNode,
98
98
  setAdapter
99
- } from "../shared/chunk-djvarb8r.js";
99
+ } from "../shared/chunk-1j59xzqm.js";
100
100
  import"../shared/chunk-h1fsr8kv.js";
101
101
  import {
102
102
  RouterContext,
103
103
  useParams,
104
104
  useRouter
105
- } from "../shared/chunk-7nr2ebrf.js";
105
+ } from "../shared/chunk-9p84cvet.js";
106
106
  import {
107
107
  invalidate,
108
108
  invalidateTenantQueries
109
- } from "../shared/chunk-09ntccdx.js";
109
+ } from "../shared/chunk-pv0apt9z.js";
110
110
  import {
111
111
  isBrowser
112
- } from "../shared/chunk-xs5s8gqe.js";
112
+ } from "../shared/chunk-sjypbv24.js";
113
113
  import {
114
114
  DisposalScopeError,
115
115
  _tryOnCleanup,
@@ -134,7 +134,7 @@ import {
134
134
  startHydration,
135
135
  untrack,
136
136
  useContext
137
- } from "../shared/chunk-ppr06jgn.js";
137
+ } from "../shared/chunk-1yd6jfw5.js";
138
138
  // src/component/default-error-fallback.ts
139
139
  function DefaultErrorFallback({ error, retry }) {
140
140
  const container = document.createElement("div");
@@ -3,13 +3,13 @@ import {
3
3
  deserializeProps,
4
4
  onAnimationsComplete,
5
5
  resolveComponent
6
- } from "../shared/chunk-ymc3wwam.js";
6
+ } from "../shared/chunk-n824qrvk.js";
7
7
  import {
8
8
  __discardMountFrame,
9
9
  __flushMountFrame,
10
10
  __on,
11
11
  __pushMountFrame
12
- } from "../shared/chunk-svvqjmyy.js";
12
+ } from "../shared/chunk-mntc8w0g.js";
13
13
  import {
14
14
  executeLoaders,
15
15
  matchPath,
@@ -20,7 +20,7 @@ import {
20
20
  MemoryCache,
21
21
  QueryEnvelopeStore,
22
22
  deriveKey
23
- } from "../shared/chunk-1jgws7rs.js";
23
+ } from "../shared/chunk-5vcnmqck.js";
24
24
  import"../shared/chunk-jrtrk5z4.js";
25
25
  import {
26
26
  ALIGNMENT_MAP,
@@ -41,7 +41,7 @@ import {
41
41
  SIZE_KEYWORDS,
42
42
  SPACING_SCALE,
43
43
  compileTheme
44
- } from "../shared/chunk-j1a7t906.js";
44
+ } from "../shared/chunk-pwmjtxpn.js";
45
45
  import {
46
46
  RENDER_NODE_BRAND,
47
47
  __append,
@@ -60,16 +60,16 @@ import {
60
60
  getAdapter,
61
61
  isRenderNode,
62
62
  setAdapter
63
- } from "../shared/chunk-djvarb8r.js";
63
+ } from "../shared/chunk-1j59xzqm.js";
64
64
  import {
65
65
  SVG_NS,
66
66
  normalizeSVGAttr,
67
67
  styleObjectToString
68
68
  } from "../shared/chunk-h1fsr8kv.js";
69
- import"../shared/chunk-09ntccdx.js";
69
+ import"../shared/chunk-pv0apt9z.js";
70
70
  import {
71
71
  isBrowser
72
- } from "../shared/chunk-xs5s8gqe.js";
72
+ } from "../shared/chunk-sjypbv24.js";
73
73
  import {
74
74
  _tryOnCleanup,
75
75
  claimComment,
@@ -90,7 +90,7 @@ import {
90
90
  startSignalCollection,
91
91
  stopSignalCollection,
92
92
  useContext
93
- } from "../shared/chunk-ppr06jgn.js";
93
+ } from "../shared/chunk-1yd6jfw5.js";
94
94
  // src/dom/conditional.ts
95
95
  function clearBetween(start, end) {
96
96
  let current = start.nextSibling;
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  query
3
- } from "../../shared/chunk-1jgws7rs.js";
3
+ } from "../../shared/chunk-5vcnmqck.js";
4
4
  import"../../shared/chunk-jrtrk5z4.js";
5
- import"../../shared/chunk-09ntccdx.js";
6
- import"../../shared/chunk-xs5s8gqe.js";
7
- import"../../shared/chunk-ppr06jgn.js";
5
+ import"../../shared/chunk-pv0apt9z.js";
6
+ import"../../shared/chunk-sjypbv24.js";
7
+ import"../../shared/chunk-1yd6jfw5.js";
8
8
 
9
9
  // src/query/public.ts
10
10
  import { isQueryDescriptor } from "@vertz/fetch";
@@ -6,24 +6,24 @@ import {
6
6
  createLink,
7
7
  parseSearchParams,
8
8
  useSearchParams
9
- } from "../../shared/chunk-kabxty17.js";
10
- import"../../shared/chunk-svvqjmyy.js";
9
+ } from "../../shared/chunk-5xm1w16j.js";
10
+ import"../../shared/chunk-mntc8w0g.js";
11
11
  import {
12
12
  createRouter
13
- } from "../../shared/chunk-4jfn3qhq.js";
13
+ } from "../../shared/chunk-mm9ms792.js";
14
14
  import {
15
15
  defineRoutes
16
16
  } from "../../shared/chunk-ah86rm07.js";
17
17
  import"../../shared/chunk-jrtrk5z4.js";
18
- import"../../shared/chunk-djvarb8r.js";
18
+ import"../../shared/chunk-1j59xzqm.js";
19
19
  import"../../shared/chunk-h1fsr8kv.js";
20
20
  import {
21
21
  RouterContext,
22
22
  useParams,
23
23
  useRouter
24
- } from "../../shared/chunk-7nr2ebrf.js";
25
- import"../../shared/chunk-xs5s8gqe.js";
26
- import"../../shared/chunk-ppr06jgn.js";
24
+ } from "../../shared/chunk-9p84cvet.js";
25
+ import"../../shared/chunk-sjypbv24.js";
26
+ import"../../shared/chunk-1yd6jfw5.js";
27
27
  export {
28
28
  useSearchParams,
29
29
  useRouter,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  createRouter
3
- } from "../../shared/chunk-4jfn3qhq.js";
3
+ } from "../../shared/chunk-mm9ms792.js";
4
4
  import {
5
5
  defineRoutes
6
6
  } from "../../shared/chunk-ah86rm07.js";
7
7
  import"../../shared/chunk-jrtrk5z4.js";
8
- import"../../shared/chunk-xs5s8gqe.js";
9
- import"../../shared/chunk-ppr06jgn.js";
8
+ import"../../shared/chunk-sjypbv24.js";
9
+ import"../../shared/chunk-1yd6jfw5.js";
10
10
 
11
11
  // src/test/interactions.ts
12
12
  async function click(el) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertz/ui",
3
- "version": "0.2.29",
3
+ "version": "0.2.30",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Vertz UI framework — signals, components, JSX runtime",
@@ -74,11 +74,11 @@
74
74
  "typecheck": "tsc --noEmit"
75
75
  },
76
76
  "dependencies": {
77
- "@vertz/fetch": "^0.2.28"
77
+ "@vertz/fetch": "^0.2.29"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@happy-dom/global-registrator": "^20.7.0",
81
- "@vertz/schema": "^0.2.28",
81
+ "@vertz/schema": "^0.2.29",
82
82
  "bunup": "^0.16.31",
83
83
  "happy-dom": "^20.7.0",
84
84
  "typescript": "^5.7.0"