ilha 0.4.0 → 0.4.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 (2) hide show
  1. package/dist/index.js +64 -29
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -605,6 +605,7 @@ var IlhaBuilder = class IlhaBuilder {
605
605
  const input = resolveInput(props);
606
606
  const state = buildPlainState(input);
607
607
  const results = deriveds.map((entry) => {
608
+ const prevSub = setActiveSub(void 0);
608
609
  try {
609
610
  return {
610
611
  key: entry.key,
@@ -619,6 +620,8 @@ var IlhaBuilder = class IlhaBuilder {
619
620
  key: entry.key,
620
621
  result: Promise.reject(err)
621
622
  };
623
+ } finally {
624
+ setActiveSub(prevSub);
622
625
  }
623
626
  });
624
627
  if (!results.some((r) => r.result instanceof Promise) || sync) {
@@ -633,12 +636,17 @@ var IlhaBuilder = class IlhaBuilder {
633
636
  value: r.result,
634
637
  error: void 0
635
638
  };
636
- const { html } = renderWithCtx(() => fn({
637
- state,
638
- derived,
639
- input
640
- }));
641
- return stylePrefix + html;
639
+ const prevSub = setActiveSub(void 0);
640
+ try {
641
+ const { html } = renderWithCtx(() => fn({
642
+ state,
643
+ derived,
644
+ input
645
+ }));
646
+ return stylePrefix + html;
647
+ } finally {
648
+ setActiveSub(prevSub);
649
+ }
642
650
  }
643
651
  return Promise.all(results.map(async (r) => {
644
652
  try {
@@ -663,12 +671,17 @@ var IlhaBuilder = class IlhaBuilder {
663
671
  })).then(async (resolved) => {
664
672
  const derived = {};
665
673
  for (const r of resolved) derived[r.key] = r.envelope;
666
- const { html } = await renderWithCtx(() => fn({
667
- state,
668
- derived,
669
- input
670
- }), void 0, true);
671
- return stylePrefix + html;
674
+ const prevSub = setActiveSub(void 0);
675
+ try {
676
+ const { html } = await renderWithCtx(() => fn({
677
+ state,
678
+ derived,
679
+ input
680
+ }), void 0, true);
681
+ return stylePrefix + html;
682
+ } finally {
683
+ setActiveSub(prevSub);
684
+ }
672
685
  });
673
686
  }
674
687
  function mountIsland(host, props) {
@@ -1028,23 +1041,45 @@ Element: ${host.outerHTML.slice(0, 120)}`);
1028
1041
  if (doState) for (const entry of states) snapshotData[entry.key] = plainState[entry.key]();
1029
1042
  if (doDerived) {
1030
1043
  const derivedResults = {};
1031
- for (const entry of deriveds) try {
1032
- const result = await Promise.resolve(entry.fn({
1033
- state: plainState,
1034
- input,
1035
- signal: new AbortController().signal
1036
- }));
1037
- derivedResults[entry.key] = {
1038
- loading: false,
1039
- value: result,
1040
- error: void 0
1041
- };
1042
- } catch (err) {
1043
- derivedResults[entry.key] = {
1044
- loading: false,
1045
- value: void 0,
1046
- error: err instanceof Error ? err.message : String(err)
1047
- };
1044
+ for (const entry of deriveds) {
1045
+ const prevSub = setActiveSub(void 0);
1046
+ let resultPromise;
1047
+ let syncError;
1048
+ let threw = false;
1049
+ try {
1050
+ resultPromise = entry.fn({
1051
+ state: plainState,
1052
+ input,
1053
+ signal: new AbortController().signal
1054
+ });
1055
+ } catch (err) {
1056
+ threw = true;
1057
+ syncError = err;
1058
+ } finally {
1059
+ setActiveSub(prevSub);
1060
+ }
1061
+ if (threw) {
1062
+ derivedResults[entry.key] = {
1063
+ loading: false,
1064
+ value: void 0,
1065
+ error: syncError instanceof Error ? syncError.message : String(syncError)
1066
+ };
1067
+ continue;
1068
+ }
1069
+ try {
1070
+ const result = await Promise.resolve(resultPromise);
1071
+ derivedResults[entry.key] = {
1072
+ loading: false,
1073
+ value: result,
1074
+ error: void 0
1075
+ };
1076
+ } catch (err) {
1077
+ derivedResults[entry.key] = {
1078
+ loading: false,
1079
+ value: void 0,
1080
+ error: err instanceof Error ? err.message : String(err)
1081
+ };
1082
+ }
1048
1083
  }
1049
1084
  snapshotData["_derived"] = derivedResults;
1050
1085
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ilha",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "A tiny, framework-free island architecture library",
5
5
  "license": "MIT",
6
6
  "author": "Ryuz <ryuzer@proton.me>",
@@ -26,6 +26,6 @@
26
26
  "alien-signals": "3.1.2"
27
27
  },
28
28
  "devDependencies": {
29
- "zod": "^4.4.1"
29
+ "zod": "^4.4.3"
30
30
  }
31
31
  }