@getforma/core 0.2.0 → 0.3.1

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 (38) hide show
  1. package/README.md +265 -13
  2. package/dist/{chunk-VKKPX4YU.js → chunk-5H52PKGF.js} +62 -12
  3. package/dist/chunk-5H52PKGF.js.map +1 -0
  4. package/dist/{chunk-VP5EOGM5.cjs → chunk-TSQ7AKFT.cjs} +62 -11
  5. package/dist/chunk-TSQ7AKFT.cjs.map +1 -0
  6. package/dist/forma-runtime-csp.js +2 -0
  7. package/dist/forma-runtime.js +2 -0
  8. package/dist/formajs-runtime-hardened.global.js +1 -1
  9. package/dist/formajs-runtime-hardened.global.js.map +1 -1
  10. package/dist/formajs-runtime.global.js +1 -1
  11. package/dist/formajs-runtime.global.js.map +1 -1
  12. package/dist/formajs.global.js +1 -1
  13. package/dist/formajs.global.js.map +1 -1
  14. package/dist/index.cjs +100 -69
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +43 -27
  17. package/dist/index.d.ts +43 -27
  18. package/dist/index.js +57 -27
  19. package/dist/index.js.map +1 -1
  20. package/dist/runtime-hardened.cjs +166 -50
  21. package/dist/runtime-hardened.cjs.map +1 -1
  22. package/dist/runtime-hardened.d.cts +86 -0
  23. package/dist/runtime-hardened.d.ts +86 -0
  24. package/dist/runtime-hardened.js +166 -50
  25. package/dist/runtime-hardened.js.map +1 -1
  26. package/dist/runtime.cjs +188 -72
  27. package/dist/runtime.cjs.map +1 -1
  28. package/dist/runtime.js +167 -51
  29. package/dist/runtime.js.map +1 -1
  30. package/dist/ssr/index.cjs +59 -71
  31. package/dist/ssr/index.cjs.map +1 -1
  32. package/dist/ssr/index.d.cts +4 -0
  33. package/dist/ssr/index.d.ts +4 -0
  34. package/dist/ssr/index.js +59 -71
  35. package/dist/ssr/index.js.map +1 -1
  36. package/package.json +26 -3
  37. package/dist/chunk-VKKPX4YU.js.map +0 -1
  38. package/dist/chunk-VP5EOGM5.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkVP5EOGM5_cjs = require('./chunk-VP5EOGM5.cjs');
3
+ var chunkTSQ7AKFT_cjs = require('./chunk-TSQ7AKFT.cjs');
4
4
  var chunkFPSLC62A_cjs = require('./chunk-FPSLC62A.cjs');
5
5
 
6
6
  // src/dom/text.ts
7
7
  function createText(value) {
8
8
  if (typeof value === "function") {
9
9
  const node = new Text("");
10
- chunkVP5EOGM5_cjs.internalEffect(() => {
10
+ chunkTSQ7AKFT_cjs.internalEffect(() => {
11
11
  node.data = value();
12
12
  });
13
13
  return node;
@@ -23,12 +23,12 @@ function mount(component, container) {
23
23
  }
24
24
  let disposeRoot;
25
25
  if (target.hasAttribute("data-forma-ssr")) {
26
- chunkVP5EOGM5_cjs.createRoot((dispose) => {
26
+ chunkTSQ7AKFT_cjs.createRoot((dispose) => {
27
27
  disposeRoot = dispose;
28
- chunkVP5EOGM5_cjs.hydrateIsland(component, target);
28
+ chunkTSQ7AKFT_cjs.hydrateIsland(component, target);
29
29
  });
30
30
  } else {
31
- const dom = chunkVP5EOGM5_cjs.createRoot((dispose) => {
31
+ const dom = chunkTSQ7AKFT_cjs.createRoot((dispose) => {
32
32
  disposeRoot = dispose;
33
33
  return component();
34
34
  });
@@ -54,7 +54,7 @@ function createSwitch(value, cases, fallback) {
54
54
  const cache = /* @__PURE__ */ new Map();
55
55
  let currentNode = null;
56
56
  let currentMatch = UNSET;
57
- const switchDispose = chunkVP5EOGM5_cjs.internalEffect(() => {
57
+ const switchDispose = chunkTSQ7AKFT_cjs.internalEffect(() => {
58
58
  const val = value();
59
59
  if (val === currentMatch) return;
60
60
  const DEBUG = typeof globalThis.__FORMA_DEBUG__ !== "undefined";
@@ -89,9 +89,9 @@ function createSwitch(value, cases, fallback) {
89
89
  let entry = cache.get(val);
90
90
  if (!entry) {
91
91
  let branchDispose;
92
- const node = chunkVP5EOGM5_cjs.createRoot((dispose) => {
92
+ const node = chunkTSQ7AKFT_cjs.createRoot((dispose) => {
93
93
  branchDispose = dispose;
94
- return chunkVP5EOGM5_cjs.untrack(() => matchedCase.render());
94
+ return chunkTSQ7AKFT_cjs.untrack(() => matchedCase.render());
95
95
  });
96
96
  entry = { node, dispose: branchDispose };
97
97
  cache.set(val, entry);
@@ -134,7 +134,7 @@ function createPortal(children2, target) {
134
134
  }
135
135
  mountedNode = null;
136
136
  };
137
- chunkVP5EOGM5_cjs.createEffect(() => {
137
+ chunkTSQ7AKFT_cjs.createEffect(() => {
138
138
  const node = children2();
139
139
  removeMountedNode();
140
140
  mountedNode = node;
@@ -155,7 +155,7 @@ function createErrorBoundary(tryFn, catchFn) {
155
155
  fragment2.appendChild(endMarker);
156
156
  const [retryCount, setRetryCount] = chunkFPSLC62A_cjs.createSignal(0);
157
157
  let currentNode = null;
158
- chunkVP5EOGM5_cjs.internalEffect(() => {
158
+ chunkTSQ7AKFT_cjs.internalEffect(() => {
159
159
  retryCount();
160
160
  const parent2 = startMarker.parentNode;
161
161
  if (!parent2) return;
@@ -195,13 +195,13 @@ function createSuspense(fallback, children2) {
195
195
  setPending((p) => Math.max(0, p - 1));
196
196
  }
197
197
  };
198
- chunkVP5EOGM5_cjs.pushSuspenseContext(ctx);
198
+ chunkTSQ7AKFT_cjs.pushSuspenseContext(ctx);
199
199
  try {
200
200
  resolvedNode = children2();
201
201
  } finally {
202
- chunkVP5EOGM5_cjs.popSuspenseContext();
202
+ chunkTSQ7AKFT_cjs.popSuspenseContext();
203
203
  }
204
- chunkVP5EOGM5_cjs.internalEffect(() => {
204
+ chunkTSQ7AKFT_cjs.internalEffect(() => {
205
205
  const parent2 = startMarker.parentNode;
206
206
  if (!parent2) return;
207
207
  const isPending = pending() > 0;
@@ -238,13 +238,13 @@ function activateIslands(registry2) {
238
238
  const componentName = root.getAttribute("data-forma-component");
239
239
  const hydrateFn = registry2[componentName];
240
240
  if (!hydrateFn) {
241
- console.warn(`[forma] No hydrate function for island "${componentName}" (id=${id})`);
241
+ if (chunkTSQ7AKFT_cjs.__DEV__) console.warn(`[forma] No hydrate function for island "${componentName}" (id=${id})`);
242
242
  root.setAttribute("data-forma-status", "error");
243
243
  continue;
244
244
  }
245
245
  const trigger = root.getAttribute("data-forma-hydrate") || "load";
246
246
  if (trigger === "interaction" || trigger === "idle") {
247
- console.warn(`[forma] Trigger "${trigger}" not yet implemented for island "${componentName}" (id=${id}), falling back to load`);
247
+ if (chunkTSQ7AKFT_cjs.__DEV__) console.warn(`[forma] Trigger "${trigger}" not yet implemented for island "${componentName}" (id=${id}), falling back to load`);
248
248
  }
249
249
  if (trigger === "visible") {
250
250
  const observer = new IntersectionObserver(
@@ -268,13 +268,13 @@ function hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps) {
268
268
  const props = loadIslandProps(root, id, sharedProps);
269
269
  root.setAttribute("data-forma-status", "hydrating");
270
270
  let activeRoot = root;
271
- chunkVP5EOGM5_cjs.createRoot((dispose) => {
272
- activeRoot = chunkVP5EOGM5_cjs.hydrateIsland(() => hydrateFn(props), root);
271
+ chunkTSQ7AKFT_cjs.createRoot((dispose) => {
272
+ activeRoot = chunkTSQ7AKFT_cjs.hydrateIsland(() => hydrateFn(props), root);
273
273
  activeRoot.__formaDispose = dispose;
274
274
  });
275
275
  activeRoot.setAttribute("data-forma-status", "active");
276
276
  } catch (err) {
277
- console.error(`[forma] Island "${componentName}" (id=${id}) failed:`, err);
277
+ if (chunkTSQ7AKFT_cjs.__DEV__) console.error(`[forma] Island "${componentName}" (id=${id}) failed:`, err);
278
278
  root.setAttribute("data-forma-status", "error");
279
279
  }
280
280
  }
@@ -483,7 +483,7 @@ function createStore(initial) {
483
483
  if (isArr && ARRAY_MUTATORS.has(key)) {
484
484
  return (...args) => {
485
485
  let result;
486
- chunkVP5EOGM5_cjs.batch(() => {
486
+ chunkTSQ7AKFT_cjs.batch(() => {
487
487
  const rawArgs = args.map(
488
488
  (a) => a != null && typeof a === "object" && a[RAW] ? a[RAW] : a
489
489
  );
@@ -597,11 +597,11 @@ function createStore(initial) {
597
597
  }
598
598
  const rootProxy = wrap(initial, "");
599
599
  function getCurrentSnapshot() {
600
- return chunkVP5EOGM5_cjs.untrack(() => deepClone(initial));
600
+ return chunkTSQ7AKFT_cjs.untrack(() => deepClone(initial));
601
601
  }
602
602
  const setter = (partial) => {
603
603
  const updates = typeof partial === "function" ? partial(getCurrentSnapshot()) : partial;
604
- chunkVP5EOGM5_cjs.batch(() => {
604
+ chunkTSQ7AKFT_cjs.batch(() => {
605
605
  for (const key of Object.keys(updates)) {
606
606
  rootProxy[key] = updates[key];
607
607
  }
@@ -620,7 +620,7 @@ function createHistory(source, options) {
620
620
  const [cursorSignal, setCursorSignal] = chunkFPSLC62A_cjs.createValueSignal(_cursor);
621
621
  const [stackLenSignal, setStackLenSignal] = chunkFPSLC62A_cjs.createValueSignal(_stack.length);
622
622
  function syncSignals() {
623
- chunkVP5EOGM5_cjs.batch(() => {
623
+ chunkTSQ7AKFT_cjs.batch(() => {
624
624
  setStackSignal([..._stack]);
625
625
  setCursorSignal(_cursor);
626
626
  setStackLenSignal(_stack.length);
@@ -628,7 +628,7 @@ function createHistory(source, options) {
628
628
  }
629
629
  let ignoreNext = false;
630
630
  let isFirstRun = true;
631
- chunkVP5EOGM5_cjs.internalEffect(() => {
631
+ chunkTSQ7AKFT_cjs.internalEffect(() => {
632
632
  const value = sourceGet();
633
633
  if (isFirstRun) {
634
634
  isFirstRun = false;
@@ -685,15 +685,18 @@ function persist(source, key, options) {
685
685
  const storage = options?.storage ?? globalThis.localStorage;
686
686
  const serialize = options?.serialize ?? JSON.stringify;
687
687
  const deserialize = options?.deserialize ?? JSON.parse;
688
+ const validate = options?.validate;
688
689
  try {
689
690
  const stored = storage.getItem(key);
690
691
  if (stored !== null) {
691
692
  const value = deserialize(stored);
692
- sourceSet(value);
693
+ if (!validate || validate(value)) {
694
+ sourceSet(value);
695
+ }
693
696
  }
694
697
  } catch {
695
698
  }
696
- chunkVP5EOGM5_cjs.internalEffect(() => {
699
+ chunkTSQ7AKFT_cjs.internalEffect(() => {
697
700
  const value = sourceGet();
698
701
  try {
699
702
  const serialized = serialize(value);
@@ -870,6 +873,9 @@ function setText(el, text) {
870
873
  function setHTML(el, html) {
871
874
  el.innerHTML = html;
872
875
  }
876
+ function setHTMLUnsafe(el, html) {
877
+ el.innerHTML = html;
878
+ }
873
879
 
874
880
  // src/dom-utils/traverse.ts
875
881
  function closest(el, selector) {
@@ -953,20 +959,26 @@ function onMutation(el, handler, options) {
953
959
  function createLocalStorage(key, options) {
954
960
  const serialize = options?.serialize ?? JSON.stringify;
955
961
  const deserialize = options?.deserialize ?? JSON.parse;
962
+ const validate = options?.validate;
956
963
  return {
957
964
  key,
958
965
  get() {
959
966
  try {
960
967
  const raw = localStorage.getItem(key);
961
968
  if (raw === null) return null;
962
- return deserialize(raw);
969
+ const value = deserialize(raw);
970
+ if (validate && !validate(value)) return null;
971
+ return value;
963
972
  } catch {
964
973
  return null;
965
974
  }
966
975
  },
967
976
  set(value) {
968
- const serialized = serialize(value);
969
- localStorage.setItem(key, serialized);
977
+ try {
978
+ const serialized = serialize(value);
979
+ localStorage.setItem(key, serialized);
980
+ } catch {
981
+ }
970
982
  },
971
983
  remove() {
972
984
  localStorage.removeItem(key);
@@ -978,20 +990,26 @@ function createLocalStorage(key, options) {
978
990
  function createSessionStorage(key, options) {
979
991
  const serialize = options?.serialize ?? JSON.stringify;
980
992
  const deserialize = options?.deserialize ?? JSON.parse;
993
+ const validate = options?.validate;
981
994
  return {
982
995
  key,
983
996
  get() {
984
997
  try {
985
998
  const raw = sessionStorage.getItem(key);
986
999
  if (raw === null) return null;
987
- return deserialize(raw);
1000
+ const value = deserialize(raw);
1001
+ if (validate && !validate(value)) return null;
1002
+ return value;
988
1003
  } catch {
989
1004
  return null;
990
1005
  }
991
1006
  },
992
1007
  set(value) {
993
- const serialized = serialize(value);
994
- sessionStorage.setItem(key, serialized);
1008
+ try {
1009
+ const serialized = serialize(value);
1010
+ sessionStorage.setItem(key, serialized);
1011
+ } catch {
1012
+ }
995
1013
  },
996
1014
  remove() {
997
1015
  sessionStorage.removeItem(key);
@@ -1122,7 +1140,7 @@ function createFetch(url, options) {
1122
1140
  const transformed = transform ? transform(json) : json;
1123
1141
  setData(transformed);
1124
1142
  } catch (err) {
1125
- if (err?.name === "AbortError") {
1143
+ if (err instanceof Error && err.name === "AbortError") {
1126
1144
  return;
1127
1145
  }
1128
1146
  setError(err instanceof Error ? err : new Error(String(err)));
@@ -1135,7 +1153,7 @@ function createFetch(url, options) {
1135
1153
  }
1136
1154
  }
1137
1155
  if (typeof url === "function") {
1138
- chunkVP5EOGM5_cjs.internalEffect(() => {
1156
+ chunkTSQ7AKFT_cjs.internalEffect(() => {
1139
1157
  url();
1140
1158
  execute();
1141
1159
  });
@@ -1174,13 +1192,15 @@ function createSSE(url, options) {
1174
1192
  setConnected(true);
1175
1193
  setError(null);
1176
1194
  };
1177
- source.onmessage = (event) => {
1195
+ const parseMessage = options?.parse ?? ((raw) => {
1178
1196
  try {
1179
- const parsed = JSON.parse(event.data);
1180
- setData(parsed);
1197
+ return JSON.parse(raw);
1181
1198
  } catch {
1182
- setData(event.data);
1199
+ return raw;
1183
1200
  }
1201
+ });
1202
+ source.onmessage = (event) => {
1203
+ setData(parseMessage(event.data));
1184
1204
  };
1185
1205
  source.onerror = (event) => {
1186
1206
  setError(event);
@@ -1195,12 +1215,15 @@ function createSSE(url, options) {
1195
1215
  setConnected(false);
1196
1216
  },
1197
1217
  on(event, handler) {
1198
- const listener = (e) => {
1218
+ const parseEvent = options?.parse ?? ((raw) => {
1199
1219
  try {
1200
- handler(JSON.parse(e.data));
1220
+ return JSON.parse(raw);
1201
1221
  } catch {
1202
- handler(e.data);
1222
+ return raw;
1203
1223
  }
1224
+ });
1225
+ const listener = (e) => {
1226
+ handler(parseEvent(e.data));
1204
1227
  };
1205
1228
  source.addEventListener(event, listener);
1206
1229
  return () => {
@@ -1230,13 +1253,15 @@ function createWebSocket(url, options) {
1230
1253
  setStatus("open");
1231
1254
  reconnectCount = 0;
1232
1255
  };
1233
- socket.onmessage = (event) => {
1234
- let parsed;
1256
+ const parseMessage = options?.parse ?? ((raw) => {
1235
1257
  try {
1236
- parsed = JSON.parse(event.data);
1258
+ return JSON.parse(raw);
1237
1259
  } catch {
1238
- parsed = event.data;
1260
+ return raw;
1239
1261
  }
1262
+ });
1263
+ socket.onmessage = (event) => {
1264
+ const parsed = parseMessage(event.data);
1240
1265
  setData(parsed);
1241
1266
  for (const handler of handlers) {
1242
1267
  handler(parsed);
@@ -1297,14 +1322,14 @@ function createAction(serverFn, options) {
1297
1322
  setError(void 0);
1298
1323
  if (options?.optimistic) {
1299
1324
  try {
1300
- chunkVP5EOGM5_cjs.batch(() => options.optimistic(...args));
1325
+ chunkTSQ7AKFT_cjs.batch(() => options.optimistic(...args));
1301
1326
  } catch {
1302
1327
  }
1303
1328
  }
1304
1329
  try {
1305
1330
  const result = await serverFn(...args);
1306
1331
  if (options?.onSuccess) {
1307
- chunkVP5EOGM5_cjs.batch(() => options.onSuccess(result, ...args));
1332
+ chunkTSQ7AKFT_cjs.batch(() => options.onSuccess(result, ...args));
1308
1333
  }
1309
1334
  if (options?.invalidates) {
1310
1335
  for (const resource of options.invalidates) {
@@ -1316,7 +1341,7 @@ function createAction(serverFn, options) {
1316
1341
  } catch (err) {
1317
1342
  if (options?.onError) {
1318
1343
  try {
1319
- chunkVP5EOGM5_cjs.batch(() => options.onError(err, ...args));
1344
+ chunkTSQ7AKFT_cjs.batch(() => options.onError(err, ...args));
1320
1345
  } catch {
1321
1346
  }
1322
1347
  }
@@ -1349,6 +1374,10 @@ function applyRevalidation(revalidateData) {
1349
1374
  }
1350
1375
  }
1351
1376
  function enableAutoRevalidation() {
1377
+ if (typeof window === "undefined") {
1378
+ return () => {
1379
+ };
1380
+ }
1352
1381
  const handler = (event) => {
1353
1382
  const detail = event.detail;
1354
1383
  if (detail && typeof detail === "object") {
@@ -1417,9 +1446,10 @@ async function handleRPC(endpoint, body, revalidateData) {
1417
1446
  if (revalidateData) {
1418
1447
  return { data: result, __revalidate: revalidateData };
1419
1448
  }
1420
- return result;
1449
+ return { data: result };
1421
1450
  } catch (err) {
1422
- const message = err instanceof Error ? err.message : String(err);
1451
+ const isDev = typeof process !== "undefined" && process.env?.NODE_ENV === "development";
1452
+ const message = isDev && err instanceof Error ? err.message : "Internal server error";
1423
1453
  return { error: message };
1424
1454
  }
1425
1455
  }
@@ -1479,83 +1509,83 @@ async function renderIsland(slotsJson, islandId) {
1479
1509
 
1480
1510
  Object.defineProperty(exports, "Fragment", {
1481
1511
  enumerable: true,
1482
- get: function () { return chunkVP5EOGM5_cjs.Fragment; }
1512
+ get: function () { return chunkTSQ7AKFT_cjs.Fragment; }
1483
1513
  });
1484
1514
  Object.defineProperty(exports, "batch", {
1485
1515
  enumerable: true,
1486
- get: function () { return chunkVP5EOGM5_cjs.batch; }
1516
+ get: function () { return chunkTSQ7AKFT_cjs.batch; }
1487
1517
  });
1488
1518
  Object.defineProperty(exports, "cleanup", {
1489
1519
  enumerable: true,
1490
- get: function () { return chunkVP5EOGM5_cjs.cleanup; }
1520
+ get: function () { return chunkTSQ7AKFT_cjs.cleanup; }
1491
1521
  });
1492
1522
  Object.defineProperty(exports, "createEffect", {
1493
1523
  enumerable: true,
1494
- get: function () { return chunkVP5EOGM5_cjs.createEffect; }
1524
+ get: function () { return chunkTSQ7AKFT_cjs.createEffect; }
1495
1525
  });
1496
1526
  Object.defineProperty(exports, "createList", {
1497
1527
  enumerable: true,
1498
- get: function () { return chunkVP5EOGM5_cjs.createList; }
1528
+ get: function () { return chunkTSQ7AKFT_cjs.createList; }
1499
1529
  });
1500
1530
  Object.defineProperty(exports, "createMemo", {
1501
1531
  enumerable: true,
1502
- get: function () { return chunkVP5EOGM5_cjs.createMemo; }
1532
+ get: function () { return chunkTSQ7AKFT_cjs.createMemo; }
1503
1533
  });
1504
1534
  Object.defineProperty(exports, "createReducer", {
1505
1535
  enumerable: true,
1506
- get: function () { return chunkVP5EOGM5_cjs.createReducer; }
1536
+ get: function () { return chunkTSQ7AKFT_cjs.createReducer; }
1507
1537
  });
1508
1538
  Object.defineProperty(exports, "createRef", {
1509
1539
  enumerable: true,
1510
- get: function () { return chunkVP5EOGM5_cjs.createRef; }
1540
+ get: function () { return chunkTSQ7AKFT_cjs.createRef; }
1511
1541
  });
1512
1542
  Object.defineProperty(exports, "createResource", {
1513
1543
  enumerable: true,
1514
- get: function () { return chunkVP5EOGM5_cjs.createResource; }
1544
+ get: function () { return chunkTSQ7AKFT_cjs.createResource; }
1515
1545
  });
1516
1546
  Object.defineProperty(exports, "createRoot", {
1517
1547
  enumerable: true,
1518
- get: function () { return chunkVP5EOGM5_cjs.createRoot; }
1548
+ get: function () { return chunkTSQ7AKFT_cjs.createRoot; }
1519
1549
  });
1520
1550
  Object.defineProperty(exports, "createShow", {
1521
1551
  enumerable: true,
1522
- get: function () { return chunkVP5EOGM5_cjs.createShow; }
1552
+ get: function () { return chunkTSQ7AKFT_cjs.createShow; }
1523
1553
  });
1524
1554
  Object.defineProperty(exports, "fragment", {
1525
1555
  enumerable: true,
1526
- get: function () { return chunkVP5EOGM5_cjs.fragment; }
1556
+ get: function () { return chunkTSQ7AKFT_cjs.fragment; }
1527
1557
  });
1528
1558
  Object.defineProperty(exports, "h", {
1529
1559
  enumerable: true,
1530
- get: function () { return chunkVP5EOGM5_cjs.h; }
1560
+ get: function () { return chunkTSQ7AKFT_cjs.h; }
1531
1561
  });
1532
1562
  Object.defineProperty(exports, "hydrateIsland", {
1533
1563
  enumerable: true,
1534
- get: function () { return chunkVP5EOGM5_cjs.hydrateIsland; }
1564
+ get: function () { return chunkTSQ7AKFT_cjs.hydrateIsland; }
1535
1565
  });
1536
1566
  Object.defineProperty(exports, "longestIncreasingSubsequence", {
1537
1567
  enumerable: true,
1538
- get: function () { return chunkVP5EOGM5_cjs.longestIncreasingSubsequence; }
1568
+ get: function () { return chunkTSQ7AKFT_cjs.longestIncreasingSubsequence; }
1539
1569
  });
1540
1570
  Object.defineProperty(exports, "on", {
1541
1571
  enumerable: true,
1542
- get: function () { return chunkVP5EOGM5_cjs.on; }
1572
+ get: function () { return chunkTSQ7AKFT_cjs.on; }
1543
1573
  });
1544
1574
  Object.defineProperty(exports, "onCleanup", {
1545
1575
  enumerable: true,
1546
- get: function () { return chunkVP5EOGM5_cjs.onCleanup; }
1576
+ get: function () { return chunkTSQ7AKFT_cjs.onCleanup; }
1547
1577
  });
1548
1578
  Object.defineProperty(exports, "onError", {
1549
1579
  enumerable: true,
1550
- get: function () { return chunkVP5EOGM5_cjs.onError; }
1580
+ get: function () { return chunkTSQ7AKFT_cjs.onError; }
1551
1581
  });
1552
1582
  Object.defineProperty(exports, "reconcileList", {
1553
1583
  enumerable: true,
1554
- get: function () { return chunkVP5EOGM5_cjs.reconcileList; }
1584
+ get: function () { return chunkTSQ7AKFT_cjs.reconcileList; }
1555
1585
  });
1556
1586
  Object.defineProperty(exports, "untrack", {
1557
1587
  enumerable: true,
1558
- get: function () { return chunkVP5EOGM5_cjs.untrack; }
1588
+ get: function () { return chunkTSQ7AKFT_cjs.untrack; }
1559
1589
  });
1560
1590
  Object.defineProperty(exports, "createComputed", {
1561
1591
  enumerable: true,
@@ -1618,6 +1648,7 @@ exports.renderIsland = renderIsland;
1618
1648
  exports.renderLocal = renderLocal;
1619
1649
  exports.setAttr = setAttr;
1620
1650
  exports.setHTML = setHTML;
1651
+ exports.setHTMLUnsafe = setHTMLUnsafe;
1621
1652
  exports.setStyle = setStyle;
1622
1653
  exports.setText = setText;
1623
1654
  exports.siblings = siblings;