@getforma/core 1.0.10 → 1.2.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.
Files changed (55) hide show
  1. package/dist/{chunk-T33QUD2Y.cjs → chunk-E3FV2VSU.cjs} +43 -43
  2. package/dist/{chunk-T33QUD2Y.cjs.map → chunk-E3FV2VSU.cjs.map} +1 -1
  3. package/dist/chunk-ETPJTPYD.js +103 -0
  4. package/dist/chunk-ETPJTPYD.js.map +1 -0
  5. package/dist/chunk-H7MDUHS5.cjs +110 -0
  6. package/dist/chunk-H7MDUHS5.cjs.map +1 -0
  7. package/dist/{chunk-6FW5E54W.cjs → chunk-KUXNZ5MG.cjs} +127 -103
  8. package/dist/chunk-KUXNZ5MG.cjs.map +1 -0
  9. package/dist/{chunk-3G7ET4O5.js → chunk-Y3A2EVVS.js} +121 -94
  10. package/dist/chunk-Y3A2EVVS.js.map +1 -0
  11. package/dist/{chunk-AFRFF7XL.js → chunk-YRNYOZF3.js} +4 -4
  12. package/dist/{chunk-AFRFF7XL.js.map → chunk-YRNYOZF3.js.map} +1 -1
  13. package/dist/forma-runtime-csp.js +52 -4
  14. package/dist/forma-runtime.js +98 -10
  15. package/dist/formajs-runtime-hardened.global.js +52 -4
  16. package/dist/formajs-runtime-hardened.global.js.map +1 -1
  17. package/dist/formajs-runtime.global.js +98 -10
  18. package/dist/formajs-runtime.global.js.map +1 -1
  19. package/dist/formajs.global.js +368 -147
  20. package/dist/formajs.global.js.map +1 -1
  21. package/dist/http.cjs +11 -11
  22. package/dist/http.js +2 -2
  23. package/dist/index.cjs +262 -141
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +32 -27
  26. package/dist/index.d.ts +32 -27
  27. package/dist/index.js +204 -83
  28. package/dist/index.js.map +1 -1
  29. package/dist/{resource-DeEzxUz6.d.cts → resource-D6HfVgiA.d.cts} +7 -2
  30. package/dist/{resource-BHsgURy0.d.ts → resource-ljs2X5NM.d.ts} +7 -2
  31. package/dist/runtime-hardened.cjs +53 -3
  32. package/dist/runtime-hardened.cjs.map +1 -1
  33. package/dist/runtime-hardened.js +53 -3
  34. package/dist/runtime-hardened.js.map +1 -1
  35. package/dist/runtime.cjs +29 -29
  36. package/dist/runtime.js +3 -3
  37. package/dist/server.cjs +7 -7
  38. package/dist/server.d.cts +2 -2
  39. package/dist/server.d.ts +2 -2
  40. package/dist/server.js +2 -2
  41. package/dist/{signal-C9v4akyJ.d.cts → signal-CRBJYQ6B.d.cts} +0 -8
  42. package/dist/{signal-C9v4akyJ.d.ts → signal-CRBJYQ6B.d.ts} +0 -8
  43. package/dist/tc39-compat.cjs +3 -6
  44. package/dist/tc39-compat.cjs.map +1 -1
  45. package/dist/tc39-compat.d.cts +1 -1
  46. package/dist/tc39-compat.d.ts +1 -1
  47. package/dist/tc39-compat.js +1 -4
  48. package/dist/tc39-compat.js.map +1 -1
  49. package/package.json +1 -1
  50. package/dist/chunk-3G7ET4O5.js.map +0 -1
  51. package/dist/chunk-6FW5E54W.cjs.map +0 -1
  52. package/dist/chunk-HLM5BZZQ.js +0 -35
  53. package/dist/chunk-HLM5BZZQ.js.map +0 -1
  54. package/dist/chunk-QLPCVK7C.cjs +0 -38
  55. package/dist/chunk-QLPCVK7C.cjs.map +0 -1
@@ -438,11 +438,32 @@ var FormaRuntime = (function (exports) {
438
438
  }
439
439
  }
440
440
 
441
- // src/reactive/signal.ts
441
+ // src/reactive/dev.ts
442
+ function isDev() {
443
+ if (typeof process !== "undefined") {
444
+ return process.env?.NODE_ENV !== "production";
445
+ }
446
+ return typeof __FORMA_DEV__ !== "undefined" ? !!__FORMA_DEV__ : false;
447
+ }
448
+ isDev();
449
+ var _errorHandlers = /* @__PURE__ */ new Set();
450
+ function reportError(error, source) {
451
+ for (const handler of _errorHandlers) {
452
+ try {
453
+ handler(error, source ? { source } : {});
454
+ } catch {
455
+ }
456
+ }
457
+ if (isDev()) {
458
+ console.error(`[forma] ${source} error:`, error);
459
+ }
460
+ }
442
461
  function applySignalSet(s, v, equals) {
443
462
  if (typeof v !== "function") {
444
- s(v);
445
- return;
463
+ {
464
+ s(v);
465
+ return;
466
+ }
446
467
  }
447
468
  const prevSub = setActiveSub(void 0);
448
469
  const prev = s();
@@ -462,8 +483,35 @@ var FormaRuntime = (function (exports) {
462
483
  }
463
484
 
464
485
  // src/reactive/computed.ts
486
+ var ERR = /* @__PURE__ */ Symbol("formaComputedError");
487
+ function isErrBox(v) {
488
+ return typeof v === "object" && v !== null && ERR in v;
489
+ }
465
490
  function createComputed(fn) {
466
- return computed(fn);
491
+ let errored = false;
492
+ let error;
493
+ let lastGood;
494
+ const raw = computed(() => {
495
+ try {
496
+ const v = fn(lastGood);
497
+ errored = false;
498
+ error = void 0;
499
+ lastGood = v;
500
+ return v;
501
+ } catch (e) {
502
+ errored = true;
503
+ error = e;
504
+ reportError(e, "computed");
505
+ return { [ERR]: e };
506
+ }
507
+ });
508
+ const reader = () => {
509
+ const v = raw();
510
+ if (errored || isErrBox(v)) throw error;
511
+ return v;
512
+ };
513
+ Object.defineProperty(reader, "name", { value: raw.name, configurable: true });
514
+ return reader;
467
515
  }
468
516
 
469
517
  // src/reactive/batch.ts
@@ -348,6 +348,33 @@ var FormaRuntime = (() => {
348
348
  }
349
349
  return effectOper.bind(e);
350
350
  }
351
+ function trigger(fn) {
352
+ const sub = {
353
+ deps: void 0,
354
+ depsTail: void 0,
355
+ flags: 2
356
+ };
357
+ const prevSub = setActiveSub(sub);
358
+ try {
359
+ fn();
360
+ } finally {
361
+ activeSub = prevSub;
362
+ let link2 = sub.deps;
363
+ while (link2 !== void 0) {
364
+ const dep = link2.dep;
365
+ link2 = unlink(link2, sub);
366
+ const subs = dep.subs;
367
+ if (subs !== void 0) {
368
+ sub.flags = 0;
369
+ propagate(subs);
370
+ shallowPropagate(subs);
371
+ }
372
+ }
373
+ if (!batchDepth) {
374
+ flush();
375
+ }
376
+ }
377
+ }
351
378
  function updateComputed(c) {
352
379
  ++cycle;
353
380
  c.depsTail = void 0;
@@ -478,16 +505,41 @@ var FormaRuntime = (() => {
478
505
  }
479
506
  }
480
507
 
508
+ // src/reactive/dev.ts
509
+ function isDev() {
510
+ if (typeof process !== "undefined") {
511
+ return process.env?.NODE_ENV !== "production";
512
+ }
513
+ return typeof __FORMA_DEV__ !== "undefined" ? !!__FORMA_DEV__ : false;
514
+ }
515
+ var __DEV__ = isDev();
516
+ var _errorHandlers = /* @__PURE__ */ new Set();
517
+ function reportError(error, source) {
518
+ for (const handler of _errorHandlers) {
519
+ try {
520
+ handler(error, source ? { source } : {});
521
+ } catch {
522
+ }
523
+ }
524
+ if (isDev()) {
525
+ console.error(`[forma] ${source ?? "Unknown"} error:`, error);
526
+ }
527
+ }
528
+
481
529
  // src/reactive/signal.ts
530
+ var signalNames = /* @__PURE__ */ new WeakMap();
482
531
  function applySignalSet(s, v, equals) {
483
532
  if (typeof v !== "function") {
484
- if (equals) {
485
- const prevSub2 = setActiveSub(void 0);
486
- const prev2 = s();
487
- setActiveSub(prevSub2);
488
- if (equals(prev2, v)) return;
533
+ if (!equals) {
534
+ s(v);
535
+ return;
489
536
  }
537
+ const prevSub2 = setActiveSub(void 0);
538
+ const prev2 = s();
539
+ setActiveSub(prevSub2);
540
+ if (equals(prev2, v)) return;
490
541
  s(v);
542
+ if (Object.is(prev2, v)) forceNotify(s);
491
543
  return;
492
544
  }
493
545
  const prevSub = setActiveSub(void 0);
@@ -496,24 +548,33 @@ var FormaRuntime = (() => {
496
548
  const next = v(prev);
497
549
  if (equals && equals(prev, next)) return;
498
550
  s(next);
551
+ if (equals && Object.is(prev, next)) forceNotify(s);
552
+ }
553
+ function forceNotify(s) {
554
+ trigger(() => {
555
+ s();
556
+ });
499
557
  }
500
558
  function createSignal(initialValue, options) {
501
559
  const s = signal(initialValue);
502
560
  const getter = s;
561
+ if (__DEV__ && options?.name) {
562
+ signalNames.set(getter, options.name);
563
+ }
503
564
  const eq = options?.equals;
504
565
  const setter = (v) => applySignalSet(s, v, eq);
505
566
  return [getter, setter];
506
567
  }
507
568
 
508
569
  // src/reactive/root.ts
509
- var currentRoot = null;
570
+ var currentOwner = null;
510
571
  function registerDisposer(dispose) {
511
- if (currentRoot) {
512
- currentRoot.disposers.push(dispose);
572
+ if (currentOwner) {
573
+ currentOwner.disposers.push(dispose);
513
574
  }
514
575
  }
515
576
  function hasActiveRoot() {
516
- return currentRoot !== null;
577
+ return currentOwner !== null;
517
578
  }
518
579
 
519
580
  // src/reactive/effect.ts
@@ -529,8 +590,35 @@ var FormaRuntime = (() => {
529
590
  }
530
591
 
531
592
  // src/reactive/computed.ts
593
+ var ERR = /* @__PURE__ */ Symbol("formaComputedError");
594
+ function isErrBox(v) {
595
+ return typeof v === "object" && v !== null && ERR in v;
596
+ }
532
597
  function createComputed(fn) {
533
- return computed(fn);
598
+ let errored = false;
599
+ let error;
600
+ let lastGood;
601
+ const raw = computed(() => {
602
+ try {
603
+ const v = fn(lastGood);
604
+ errored = false;
605
+ error = void 0;
606
+ lastGood = v;
607
+ return v;
608
+ } catch (e) {
609
+ errored = true;
610
+ error = e;
611
+ reportError(e, "computed");
612
+ return { [ERR]: e };
613
+ }
614
+ });
615
+ const reader = () => {
616
+ const v = raw();
617
+ if (errored || isErrBox(v)) throw error;
618
+ return v;
619
+ };
620
+ Object.defineProperty(reader, "name", { value: raw.name, configurable: true });
621
+ return reader;
534
622
  }
535
623
 
536
624
  // src/reactive/batch.ts
@@ -438,11 +438,32 @@ var FormaRuntime = (function (exports) {
438
438
  }
439
439
  }
440
440
 
441
- // src/reactive/signal.ts
441
+ // src/reactive/dev.ts
442
+ function isDev() {
443
+ if (typeof process !== "undefined") {
444
+ return process.env?.NODE_ENV !== "production";
445
+ }
446
+ return typeof __FORMA_DEV__ !== "undefined" ? !!__FORMA_DEV__ : false;
447
+ }
448
+ isDev();
449
+ var _errorHandlers = /* @__PURE__ */ new Set();
450
+ function reportError(error, source) {
451
+ for (const handler of _errorHandlers) {
452
+ try {
453
+ handler(error, source ? { source } : {});
454
+ } catch {
455
+ }
456
+ }
457
+ if (isDev()) {
458
+ console.error(`[forma] ${source} error:`, error);
459
+ }
460
+ }
442
461
  function applySignalSet(s, v, equals) {
443
462
  if (typeof v !== "function") {
444
- s(v);
445
- return;
463
+ {
464
+ s(v);
465
+ return;
466
+ }
446
467
  }
447
468
  const prevSub = setActiveSub(void 0);
448
469
  const prev = s();
@@ -462,8 +483,35 @@ var FormaRuntime = (function (exports) {
462
483
  }
463
484
 
464
485
  // src/reactive/computed.ts
486
+ var ERR = /* @__PURE__ */ Symbol("formaComputedError");
487
+ function isErrBox(v) {
488
+ return typeof v === "object" && v !== null && ERR in v;
489
+ }
465
490
  function createComputed(fn) {
466
- return computed(fn);
491
+ let errored = false;
492
+ let error;
493
+ let lastGood;
494
+ const raw = computed(() => {
495
+ try {
496
+ const v = fn(lastGood);
497
+ errored = false;
498
+ error = void 0;
499
+ lastGood = v;
500
+ return v;
501
+ } catch (e) {
502
+ errored = true;
503
+ error = e;
504
+ reportError(e, "computed");
505
+ return { [ERR]: e };
506
+ }
507
+ });
508
+ const reader = () => {
509
+ const v = raw();
510
+ if (errored || isErrBox(v)) throw error;
511
+ return v;
512
+ };
513
+ Object.defineProperty(reader, "name", { value: raw.name, configurable: true });
514
+ return reader;
467
515
  }
468
516
 
469
517
  // src/reactive/batch.ts