@getforma/core 0.6.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +125 -15
  2. package/dist/chunk-3U57L2TY.cjs +38 -0
  3. package/dist/chunk-3U57L2TY.cjs.map +1 -0
  4. package/dist/{chunk-TKGUHASG.js → chunk-N522P3G6.js} +20 -12
  5. package/dist/chunk-N522P3G6.js.map +1 -0
  6. package/dist/chunk-OZCHIVAZ.js +35 -0
  7. package/dist/chunk-OZCHIVAZ.js.map +1 -0
  8. package/dist/{chunk-YSKF3VRA.cjs → chunk-YMIMKO4W.cjs} +51 -20
  9. package/dist/chunk-YMIMKO4W.cjs.map +1 -0
  10. package/dist/forma-runtime-csp.js +1 -1
  11. package/dist/forma-runtime.js +1 -1
  12. package/dist/formajs-runtime-hardened.global.js +1 -1
  13. package/dist/formajs-runtime-hardened.global.js.map +1 -1
  14. package/dist/formajs-runtime.global.js +1 -1
  15. package/dist/formajs-runtime.global.js.map +1 -1
  16. package/dist/formajs.global.js +1 -1
  17. package/dist/formajs.global.js.map +1 -1
  18. package/dist/index.cjs +112 -115
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.cts +30 -21
  21. package/dist/index.d.ts +30 -21
  22. package/dist/index.js +25 -50
  23. package/dist/index.js.map +1 -1
  24. package/dist/runtime-hardened.cjs +106 -27
  25. package/dist/runtime-hardened.cjs.map +1 -1
  26. package/dist/runtime-hardened.js +107 -28
  27. package/dist/runtime-hardened.js.map +1 -1
  28. package/dist/runtime.cjs +128 -50
  29. package/dist/runtime.cjs.map +1 -1
  30. package/dist/runtime.js +102 -24
  31. package/dist/runtime.js.map +1 -1
  32. package/dist/signal-B4_wQJHs.d.cts +53 -0
  33. package/dist/signal-B4_wQJHs.d.ts +53 -0
  34. package/dist/ssr/index.cjs +19 -2
  35. package/dist/ssr/index.cjs.map +1 -1
  36. package/dist/ssr/index.js +19 -2
  37. package/dist/ssr/index.js.map +1 -1
  38. package/dist/tc39-compat.cjs +4 -12
  39. package/dist/tc39-compat.cjs.map +1 -1
  40. package/dist/tc39-compat.d.cts +1 -1
  41. package/dist/tc39-compat.d.ts +1 -1
  42. package/dist/tc39-compat.js +3 -11
  43. package/dist/tc39-compat.js.map +1 -1
  44. package/package.json +2 -2
  45. package/dist/chunk-DPSAVBCP.js +0 -26
  46. package/dist/chunk-DPSAVBCP.js.map +0 -1
  47. package/dist/chunk-KH3F5NRU.cjs +0 -29
  48. package/dist/chunk-KH3F5NRU.cjs.map +0 -1
  49. package/dist/chunk-TKGUHASG.js.map +0 -1
  50. package/dist/chunk-YSKF3VRA.cjs.map +0 -1
  51. package/dist/signal-CfLDwMyg.d.cts +0 -29
  52. package/dist/signal-CfLDwMyg.d.ts +0 -29
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference path="./jsx.d.ts" />
2
- import { S as SignalGetter } from './signal-CfLDwMyg.cjs';
3
- export { c as createSignal } from './signal-CfLDwMyg.cjs';
2
+ import { S as SignalGetter } from './signal-B4_wQJHs.cjs';
3
+ export { c as createSignal } from './signal-B4_wQJHs.cjs';
4
+ export { getBatchDepth, isComputed, isEffect, isEffectScope, isSignal, trigger } from 'alien-signals';
4
5
 
5
6
  declare function createEffect(fn: () => void | (() => void)): () => void;
6
7
 
@@ -21,6 +22,9 @@ declare function createEffect(fn: () => void | (() => void)): () => void;
21
22
  * SolidJS's createMemo. Both createComputed and createMemo in FormaJS
22
23
  * are identical.
23
24
  *
25
+ * The getter receives the previous value as an argument, enabling
26
+ * efficient diffing patterns without a separate signal:
27
+ *
24
28
  * ```ts
25
29
  * const [count, setCount] = createSignal(0);
26
30
  * const doubled = createComputed(() => count() * 2);
@@ -28,8 +32,18 @@ declare function createEffect(fn: () => void | (() => void)): () => void;
28
32
  * setCount(5);
29
33
  * console.log(doubled()); // 10
30
34
  * ```
35
+ *
36
+ * With previous value (for diffing):
37
+ *
38
+ * ```ts
39
+ * const changes = createComputed((prev) => {
40
+ * const next = items();
41
+ * if (prev) console.log(`changed from ${prev.length} to ${next.length} items`);
42
+ * return next;
43
+ * });
44
+ * ```
31
45
  */
32
- declare function createComputed<T>(fn: () => T): () => T;
46
+ declare function createComputed<T>(fn: (previousValue?: T) => T): () => T;
33
47
 
34
48
  /**
35
49
  * Forma Reactive - Memo
@@ -116,13 +130,17 @@ declare function untrack<T>(fn: () => T): T;
116
130
  * Explicit reactive ownership scope. All effects created inside a root
117
131
  * are automatically disposed when the root is torn down.
118
132
  *
119
- * Replaces the module-level disposalBag pattern in mount.ts.
133
+ * Uses alien-signals' `effectScope` under the hood for native graph-level
134
+ * effect tracking, with a userland disposer list for non-effect cleanup
135
+ * (e.g., event listeners, DOM references, timers).
120
136
  */
121
137
  /**
122
138
  * Create a reactive root scope.
123
139
  *
124
- * All effects created (via `createEffect`) inside the callback are tracked.
125
- * The returned `dispose` function tears them all down.
140
+ * All effects created (via `createEffect`) inside the callback are tracked
141
+ * at both the reactive graph level (via alien-signals effectScope) and the
142
+ * userland level (via registerDisposer). The returned `dispose` function
143
+ * tears down everything.
126
144
  *
127
145
  * ```ts
128
146
  * const dispose = createRoot(() => {
@@ -898,6 +916,11 @@ type StoreSetter<T extends object> = (partial: Partial<T> | ((prev: T) => Partia
898
916
  * // Array mutations
899
917
  * state.items.push({ text: 'Walk dog', done: false });
900
918
  * ```
919
+ *
920
+ * **Limitation:** `Object.keys(state)`, `for...in`, and spread (`{...state}`)
921
+ * are NOT reactive. Adding or removing a property will not trigger effects
922
+ * that iterated over keys. Use signals or explicit arrays for collections
923
+ * that need to react to membership changes.
901
924
  */
902
925
  declare function createStore<T extends object>(initial: T): [get: T, set: StoreSetter<T>];
903
926
 
@@ -1425,18 +1448,4 @@ declare function createRPCMiddleware(): (req: {
1425
1448
  };
1426
1449
  }) => Promise<void>;
1427
1450
 
1428
- declare global {
1429
- interface Window {
1430
- __FORMA_WASM__?: {
1431
- loader: string;
1432
- binary: string;
1433
- ir: string;
1434
- };
1435
- }
1436
- }
1437
- /** Full page render via WASM. */
1438
- declare function renderLocal(slotsJson: string): Promise<string>;
1439
- /** Fragment render (single island) via WASM. */
1440
- declare function renderIsland(slotsJson: string, islandId: number): Promise<string>;
1441
-
1442
- export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, untrack, withRevalidation };
1451
+ export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, registerResource, registerServerFunction, removeClass, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, untrack, withRevalidation };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference path="./jsx.d.ts" />
2
- import { S as SignalGetter } from './signal-CfLDwMyg.js';
3
- export { c as createSignal } from './signal-CfLDwMyg.js';
2
+ import { S as SignalGetter } from './signal-B4_wQJHs.js';
3
+ export { c as createSignal } from './signal-B4_wQJHs.js';
4
+ export { getBatchDepth, isComputed, isEffect, isEffectScope, isSignal, trigger } from 'alien-signals';
4
5
 
5
6
  declare function createEffect(fn: () => void | (() => void)): () => void;
6
7
 
@@ -21,6 +22,9 @@ declare function createEffect(fn: () => void | (() => void)): () => void;
21
22
  * SolidJS's createMemo. Both createComputed and createMemo in FormaJS
22
23
  * are identical.
23
24
  *
25
+ * The getter receives the previous value as an argument, enabling
26
+ * efficient diffing patterns without a separate signal:
27
+ *
24
28
  * ```ts
25
29
  * const [count, setCount] = createSignal(0);
26
30
  * const doubled = createComputed(() => count() * 2);
@@ -28,8 +32,18 @@ declare function createEffect(fn: () => void | (() => void)): () => void;
28
32
  * setCount(5);
29
33
  * console.log(doubled()); // 10
30
34
  * ```
35
+ *
36
+ * With previous value (for diffing):
37
+ *
38
+ * ```ts
39
+ * const changes = createComputed((prev) => {
40
+ * const next = items();
41
+ * if (prev) console.log(`changed from ${prev.length} to ${next.length} items`);
42
+ * return next;
43
+ * });
44
+ * ```
31
45
  */
32
- declare function createComputed<T>(fn: () => T): () => T;
46
+ declare function createComputed<T>(fn: (previousValue?: T) => T): () => T;
33
47
 
34
48
  /**
35
49
  * Forma Reactive - Memo
@@ -116,13 +130,17 @@ declare function untrack<T>(fn: () => T): T;
116
130
  * Explicit reactive ownership scope. All effects created inside a root
117
131
  * are automatically disposed when the root is torn down.
118
132
  *
119
- * Replaces the module-level disposalBag pattern in mount.ts.
133
+ * Uses alien-signals' `effectScope` under the hood for native graph-level
134
+ * effect tracking, with a userland disposer list for non-effect cleanup
135
+ * (e.g., event listeners, DOM references, timers).
120
136
  */
121
137
  /**
122
138
  * Create a reactive root scope.
123
139
  *
124
- * All effects created (via `createEffect`) inside the callback are tracked.
125
- * The returned `dispose` function tears them all down.
140
+ * All effects created (via `createEffect`) inside the callback are tracked
141
+ * at both the reactive graph level (via alien-signals effectScope) and the
142
+ * userland level (via registerDisposer). The returned `dispose` function
143
+ * tears down everything.
126
144
  *
127
145
  * ```ts
128
146
  * const dispose = createRoot(() => {
@@ -898,6 +916,11 @@ type StoreSetter<T extends object> = (partial: Partial<T> | ((prev: T) => Partia
898
916
  * // Array mutations
899
917
  * state.items.push({ text: 'Walk dog', done: false });
900
918
  * ```
919
+ *
920
+ * **Limitation:** `Object.keys(state)`, `for...in`, and spread (`{...state}`)
921
+ * are NOT reactive. Adding or removing a property will not trigger effects
922
+ * that iterated over keys. Use signals or explicit arrays for collections
923
+ * that need to react to membership changes.
901
924
  */
902
925
  declare function createStore<T extends object>(initial: T): [get: T, set: StoreSetter<T>];
903
926
 
@@ -1425,18 +1448,4 @@ declare function createRPCMiddleware(): (req: {
1425
1448
  };
1426
1449
  }) => Promise<void>;
1427
1450
 
1428
- declare global {
1429
- interface Window {
1430
- __FORMA_WASM__?: {
1431
- loader: string;
1432
- binary: string;
1433
- ir: string;
1434
- };
1435
- }
1436
- }
1437
- /** Full page render via WASM. */
1438
- declare function renderLocal(slotsJson: string): Promise<string>;
1439
- /** Fragment render (single island) via WASM. */
1440
- declare function renderIsland(slotsJson: string, islandId: number): Promise<string>;
1441
-
1442
- export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, untrack, withRevalidation };
1451
+ export { $, $$, $$serverFunction, type Action, type ActionOptions, Fragment, type IslandHydrateFn, type MutationResponse, type RPCRequest, type RPCResponse, activateIslands, addClass, applyRevalidation, batch, children, cleanup, closest, createAction, createBus, createComputed, createContext, createEffect, createErrorBoundary, createFetch, createHistory, createIndexedDB, createList, createLocalStorage, createMemo, createPortal, createRPCMiddleware, createReducer, createRef, createResource, createRoot, createSSE, createSessionStorage, createShow, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, fragment, getRegisteredEndpoints, getServerFunction, h, handleRPC, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, registerResource, registerServerFunction, removeClass, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, untrack, withRevalidation };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { internalEffect, createRoot, hydrateIsland, untrack, createEffect, pushSuspenseContext, popSuspenseContext, __DEV__, reportError, batch } from './chunk-TKGUHASG.js';
2
- export { Fragment, batch, cleanup, createEffect, createList, createMemo, createReducer, createRef, createResource, createRoot, createShow, fragment, h, hydrateIsland, on, onCleanup, onError, reconcileList, untrack } from './chunk-TKGUHASG.js';
3
- import { createSignal } from './chunk-DPSAVBCP.js';
4
- export { createComputed, createSignal } from './chunk-DPSAVBCP.js';
1
+ import { internalEffect, createRoot, hydrateIsland, untrack, createEffect, pushSuspenseContext, popSuspenseContext, __DEV__, reportError, batch } from './chunk-N522P3G6.js';
2
+ export { Fragment, batch, cleanup, createEffect, createList, createMemo, createReducer, createRef, createResource, createRoot, createShow, fragment, getBatchDepth, h, hydrateIsland, isComputed, isEffect, isEffectScope, isSignal, on, onCleanup, onError, reconcileList, trigger, untrack } from './chunk-N522P3G6.js';
3
+ import { createSignal } from './chunk-OZCHIVAZ.js';
4
+ export { createComputed, createSignal } from './chunk-OZCHIVAZ.js';
5
5
 
6
6
  // src/dom/text.ts
7
7
  function createText(value) {
@@ -219,13 +219,20 @@ function createSuspense(fallback, children2) {
219
219
  }
220
220
 
221
221
  // src/dom/activate.ts
222
+ var FORBIDDEN_PROP_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
223
+ function sanitizeProps(obj) {
224
+ for (const key of FORBIDDEN_PROP_KEYS) {
225
+ if (key in obj) delete obj[key];
226
+ }
227
+ return obj;
228
+ }
222
229
  function loadIslandProps(root, id, sharedProps) {
223
230
  const inline = root.getAttribute("data-forma-props");
224
231
  if (inline) {
225
- return JSON.parse(inline);
232
+ return sanitizeProps(JSON.parse(inline));
226
233
  }
227
234
  if (sharedProps && String(id) in sharedProps) {
228
- return sharedProps[String(id)];
235
+ return sanitizeProps(sharedProps[String(id)]);
229
236
  }
230
237
  return null;
231
238
  }
@@ -242,8 +249,8 @@ function activateIslands(registry2) {
242
249
  root.setAttribute("data-forma-status", "error");
243
250
  continue;
244
251
  }
245
- const trigger = root.getAttribute("data-forma-hydrate") || "load";
246
- if (trigger === "visible") {
252
+ const trigger2 = root.getAttribute("data-forma-hydrate") || "load";
253
+ if (trigger2 === "visible") {
247
254
  const observer = new IntersectionObserver(
248
255
  (entries) => {
249
256
  for (const entry of entries) {
@@ -255,14 +262,14 @@ function activateIslands(registry2) {
255
262
  { rootMargin: "200px" }
256
263
  );
257
264
  observer.observe(root);
258
- } else if (trigger === "idle") {
265
+ } else if (trigger2 === "idle") {
259
266
  const hydrate = () => hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps);
260
267
  if (typeof requestIdleCallback === "function") {
261
268
  requestIdleCallback(hydrate);
262
269
  } else {
263
270
  setTimeout(hydrate, 200);
264
271
  }
265
- } else if (trigger === "interaction") {
272
+ } else if (trigger2 === "interaction") {
266
273
  const hydrate = () => {
267
274
  root.removeEventListener("pointerdown", hydrate, true);
268
275
  root.removeEventListener("focusin", hydrate, true);
@@ -445,13 +452,15 @@ function shouldWrap(v) {
445
452
  if (v[PROXY]) return false;
446
453
  return true;
447
454
  }
448
- function deepClone(obj) {
449
- if (obj == null || typeof obj !== "object") return obj;
450
- if (Array.isArray(obj)) return obj.map(deepClone);
451
- if (obj instanceof Date) return new Date(obj.getTime());
455
+ function deepClone(obj, seen) {
456
+ if (obj === null || typeof obj !== "object") return obj;
457
+ if (!seen) seen = /* @__PURE__ */ new WeakSet();
458
+ if (seen.has(obj)) return obj;
459
+ seen.add(obj);
460
+ if (Array.isArray(obj)) return obj.map((item) => deepClone(item, seen));
452
461
  const out = {};
453
462
  for (const key of Object.keys(obj)) {
454
- out[key] = deepClone(obj[key]);
463
+ out[key] = deepClone(obj[key], seen);
455
464
  }
456
465
  return out;
457
466
  }
@@ -1502,40 +1511,6 @@ function createRPCMiddleware() {
1502
1511
  };
1503
1512
  }
1504
1513
 
1505
- // src/wasm/forma-wasm.ts
1506
- var wasmModule = null;
1507
- var irCache = /* @__PURE__ */ new Map();
1508
- async function ensureWasm() {
1509
- if (wasmModule) return wasmModule;
1510
- const config = window.__FORMA_WASM__;
1511
- if (!config) throw new Error("No __FORMA_WASM__ config");
1512
- const mod = await import(
1513
- /* @vite-ignore */
1514
- config.loader
1515
- );
1516
- await mod.default(config.binary);
1517
- wasmModule = mod;
1518
- return wasmModule;
1519
- }
1520
- async function getIR() {
1521
- const config = window.__FORMA_WASM__;
1522
- if (!config) throw new Error("No __FORMA_WASM__ config");
1523
- const cached = irCache.get(config.ir);
1524
- if (cached) return cached;
1525
- const response = await fetch(config.ir);
1526
- const bytes = new Uint8Array(await response.arrayBuffer());
1527
- irCache.set(config.ir, bytes);
1528
- return bytes;
1529
- }
1530
- async function renderLocal(slotsJson) {
1531
- const [wasm, ir] = await Promise.all([ensureWasm(), getIR()]);
1532
- return wasm.render(ir, slotsJson);
1533
- }
1534
- async function renderIsland(slotsJson, islandId) {
1535
- const [wasm, ir] = await Promise.all([ensureWasm(), getIR()]);
1536
- return wasm.render_island(ir, slotsJson, islandId);
1537
- }
1538
-
1539
- export { $, $$, $$serverFunction, activateIslands, addClass, applyRevalidation, children, closest, createAction, createBus, createContext, createErrorBoundary, createFetch, createHistory, createIndexedDB, createLocalStorage, createPortal, createRPCMiddleware, createSSE, createSessionStorage, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, getRegisteredEndpoints, getServerFunction, handleRPC, inject, mount, nextSibling, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, registerResource, registerServerFunction, removeClass, renderIsland, renderLocal, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, withRevalidation };
1514
+ export { $, $$, $$serverFunction, activateIslands, addClass, applyRevalidation, children, closest, createAction, createBus, createContext, createErrorBoundary, createFetch, createHistory, createIndexedDB, createLocalStorage, createPortal, createRPCMiddleware, createSSE, createSessionStorage, createStore, createSuspense, createSwitch, createText, createWebSocket, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, enableAutoRevalidation, fetchJSON, getRegisteredEndpoints, getServerFunction, handleRPC, inject, mount, nextSibling, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, registerResource, registerServerFunction, removeClass, setAttr, setHTML, setHTMLUnsafe, setStyle, setText, siblings, toggleClass, trackDisposer, unprovide, unregisterResource, withRevalidation };
1540
1515
  //# sourceMappingURL=index.js.map
1541
1516
  //# sourceMappingURL=index.js.map