kiru 0.52.4 → 0.54.0-preview.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 (202) hide show
  1. package/dist/appContext.d.ts.map +1 -1
  2. package/dist/appContext.js +14 -11
  3. package/dist/appContext.js.map +1 -1
  4. package/dist/components/derive.d.ts +20 -0
  5. package/dist/components/derive.d.ts.map +1 -0
  6. package/dist/components/derive.js +57 -0
  7. package/dist/components/derive.js.map +1 -0
  8. package/dist/components/errorBoundary.d.ts +1 -1
  9. package/dist/components/errorBoundary.d.ts.map +1 -1
  10. package/dist/components/index.d.ts +1 -1
  11. package/dist/components/index.d.ts.map +1 -1
  12. package/dist/components/index.js +1 -1
  13. package/dist/components/index.js.map +1 -1
  14. package/dist/components/memo.d.ts +6 -3
  15. package/dist/components/memo.d.ts.map +1 -1
  16. package/dist/components/memo.js.map +1 -1
  17. package/dist/constants.d.ts +3 -3
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +3 -3
  20. package/dist/constants.js.map +1 -1
  21. package/dist/dom.d.ts.map +1 -1
  22. package/dist/dom.js +69 -66
  23. package/dist/dom.js.map +1 -1
  24. package/dist/element.d.ts +2 -2
  25. package/dist/element.d.ts.map +1 -1
  26. package/dist/element.js +20 -32
  27. package/dist/element.js.map +1 -1
  28. package/dist/globalContext.d.ts +6 -1
  29. package/dist/globalContext.d.ts.map +1 -1
  30. package/dist/globalContext.js +14 -2
  31. package/dist/globalContext.js.map +1 -1
  32. package/dist/globals.d.ts +1 -1
  33. package/dist/globals.d.ts.map +1 -1
  34. package/dist/globals.js.map +1 -1
  35. package/dist/hooks/usePromise.d.ts +4 -9
  36. package/dist/hooks/usePromise.d.ts.map +1 -1
  37. package/dist/hooks/usePromise.js +25 -28
  38. package/dist/hooks/usePromise.js.map +1 -1
  39. package/dist/hooks/useRef.d.ts +2 -2
  40. package/dist/hooks/useRef.d.ts.map +1 -1
  41. package/dist/jsx.d.ts +1 -1
  42. package/dist/jsx.d.ts.map +1 -1
  43. package/dist/reconciler.d.ts +1 -1
  44. package/dist/reconciler.d.ts.map +1 -1
  45. package/dist/reconciler.js +57 -117
  46. package/dist/reconciler.js.map +1 -1
  47. package/dist/recursiveRender.d.ts +4 -3
  48. package/dist/recursiveRender.d.ts.map +1 -1
  49. package/dist/recursiveRender.js +20 -19
  50. package/dist/recursiveRender.js.map +1 -1
  51. package/dist/renderToString.js +2 -2
  52. package/dist/renderToString.js.map +1 -1
  53. package/dist/router/client/index.d.ts +4 -2
  54. package/dist/router/client/index.d.ts.map +1 -1
  55. package/dist/router/client/index.js +49 -11
  56. package/dist/router/client/index.js.map +1 -1
  57. package/dist/router/context.d.ts +2 -0
  58. package/dist/router/context.d.ts.map +1 -1
  59. package/dist/router/context.js +5 -1
  60. package/dist/router/context.js.map +1 -1
  61. package/dist/router/fileRouterController.d.ts +3 -1
  62. package/dist/router/fileRouterController.d.ts.map +1 -1
  63. package/dist/router/fileRouterController.js +80 -9
  64. package/dist/router/fileRouterController.js.map +1 -1
  65. package/dist/router/globals.d.ts +3 -0
  66. package/dist/router/globals.d.ts.map +1 -1
  67. package/dist/router/globals.js +3 -0
  68. package/dist/router/globals.js.map +1 -1
  69. package/dist/router/guard.d.ts +17 -0
  70. package/dist/router/guard.d.ts.map +1 -0
  71. package/dist/router/guard.js +45 -0
  72. package/dist/router/guard.js.map +1 -0
  73. package/dist/router/head.d.ts.map +1 -1
  74. package/dist/router/head.js +5 -7
  75. package/dist/router/head.js.map +1 -1
  76. package/dist/router/index.d.ts +3 -2
  77. package/dist/router/index.d.ts.map +1 -1
  78. package/dist/router/index.js +2 -1
  79. package/dist/router/index.js.map +1 -1
  80. package/dist/router/{server → ssg}/index.d.ts +4 -3
  81. package/dist/router/ssg/index.d.ts.map +1 -0
  82. package/dist/router/{server → ssg}/index.js +7 -4
  83. package/dist/router/ssg/index.js.map +1 -0
  84. package/dist/router/ssr/index.d.ts +20 -0
  85. package/dist/router/ssr/index.d.ts.map +1 -0
  86. package/dist/router/ssr/index.js +160 -0
  87. package/dist/router/ssr/index.js.map +1 -0
  88. package/dist/router/types.d.ts +37 -4
  89. package/dist/router/types.d.ts.map +1 -1
  90. package/dist/router/types.internal.d.ts +4 -0
  91. package/dist/router/types.internal.d.ts.map +1 -1
  92. package/dist/router/utils/index.d.ts +9 -4
  93. package/dist/router/utils/index.d.ts.map +1 -1
  94. package/dist/router/utils/index.js +38 -6
  95. package/dist/router/utils/index.js.map +1 -1
  96. package/dist/signals/base.d.ts +1 -3
  97. package/dist/signals/base.d.ts.map +1 -1
  98. package/dist/signals/base.js +3 -3
  99. package/dist/signals/base.js.map +1 -1
  100. package/dist/signals/computed.d.ts +4 -2
  101. package/dist/signals/computed.d.ts.map +1 -1
  102. package/dist/signals/computed.js +29 -6
  103. package/dist/signals/computed.js.map +1 -1
  104. package/dist/signals/for.d.ts +10 -0
  105. package/dist/signals/for.d.ts.map +1 -0
  106. package/dist/signals/for.js +7 -0
  107. package/dist/signals/for.js.map +1 -0
  108. package/dist/signals/index.d.ts +1 -1
  109. package/dist/signals/index.js +1 -1
  110. package/dist/signals/types.d.ts +1 -1
  111. package/dist/signals/types.d.ts.map +1 -1
  112. package/dist/ssr/client.d.ts +1 -1
  113. package/dist/ssr/client.d.ts.map +1 -1
  114. package/dist/ssr/server.d.ts +1 -2
  115. package/dist/ssr/server.d.ts.map +1 -1
  116. package/dist/ssr/server.js +26 -29
  117. package/dist/ssr/server.js.map +1 -1
  118. package/dist/types.d.ts +13 -11
  119. package/dist/types.d.ts.map +1 -1
  120. package/dist/types.dom.d.ts +33 -32
  121. package/dist/types.dom.d.ts.map +1 -1
  122. package/dist/types.utils.d.ts +5 -1
  123. package/dist/types.utils.d.ts.map +1 -1
  124. package/dist/utils/format.d.ts +4 -3
  125. package/dist/utils/format.d.ts.map +1 -1
  126. package/dist/utils/format.js +8 -4
  127. package/dist/utils/format.js.map +1 -1
  128. package/dist/utils/index.d.ts +0 -1
  129. package/dist/utils/index.d.ts.map +1 -1
  130. package/dist/utils/index.js +0 -1
  131. package/dist/utils/index.js.map +1 -1
  132. package/dist/utils/promise.d.ts +16 -0
  133. package/dist/utils/promise.d.ts.map +1 -0
  134. package/dist/utils/promise.js +14 -0
  135. package/dist/utils/promise.js.map +1 -0
  136. package/dist/utils/runtime.d.ts +11 -2
  137. package/dist/utils/runtime.d.ts.map +1 -1
  138. package/dist/utils/runtime.js +26 -2
  139. package/dist/utils/runtime.js.map +1 -1
  140. package/dist/utils/vdom.d.ts +4 -4
  141. package/dist/utils/vdom.d.ts.map +1 -1
  142. package/dist/utils/vdom.js +18 -17
  143. package/dist/utils/vdom.js.map +1 -1
  144. package/dist/vNode.d.ts +4 -0
  145. package/dist/vNode.d.ts.map +1 -0
  146. package/dist/vNode.js +22 -0
  147. package/dist/vNode.js.map +1 -0
  148. package/package.json +8 -4
  149. package/src/appContext.ts +15 -13
  150. package/src/components/derive.ts +121 -0
  151. package/src/components/index.ts +1 -1
  152. package/src/components/memo.ts +3 -2
  153. package/src/constants.ts +4 -4
  154. package/src/dom.ts +71 -66
  155. package/src/element.ts +22 -35
  156. package/src/globalContext.ts +24 -3
  157. package/src/globals.ts +1 -1
  158. package/src/hooks/usePromise.ts +32 -41
  159. package/src/hooks/useRef.ts +2 -2
  160. package/src/reconciler.ts +87 -125
  161. package/src/recursiveRender.ts +25 -23
  162. package/src/renderToString.ts +3 -3
  163. package/src/router/client/index.ts +100 -14
  164. package/src/router/context.ts +7 -1
  165. package/src/router/fileRouterController.ts +137 -8
  166. package/src/router/globals.ts +4 -0
  167. package/src/router/guard.ts +72 -0
  168. package/src/router/head.ts +5 -7
  169. package/src/router/index.ts +12 -1
  170. package/src/router/{server → ssg}/index.ts +16 -9
  171. package/src/router/ssr/index.ts +247 -0
  172. package/src/router/types.internal.ts +5 -0
  173. package/src/router/types.ts +48 -4
  174. package/src/router/utils/index.ts +74 -8
  175. package/src/signals/base.ts +3 -3
  176. package/src/signals/computed.ts +43 -6
  177. package/src/signals/for.ts +25 -0
  178. package/src/signals/index.ts +1 -1
  179. package/src/signals/types.ts +5 -1
  180. package/src/ssr/client.ts +1 -1
  181. package/src/ssr/server.ts +31 -33
  182. package/src/types.dom.ts +40 -40
  183. package/src/types.ts +14 -11
  184. package/src/types.utils.ts +11 -1
  185. package/src/utils/format.ts +12 -4
  186. package/src/utils/index.ts +0 -2
  187. package/src/utils/promise.ts +26 -0
  188. package/src/utils/runtime.ts +30 -2
  189. package/src/utils/vdom.ts +20 -23
  190. package/src/vNode.ts +30 -0
  191. package/dist/components/suspense.d.ts +0 -24
  192. package/dist/components/suspense.d.ts.map +0 -1
  193. package/dist/components/suspense.js +0 -36
  194. package/dist/components/suspense.js.map +0 -1
  195. package/dist/router/server/index.d.ts.map +0 -1
  196. package/dist/router/server/index.js.map +0 -1
  197. package/dist/signals/jsx.d.ts +0 -17
  198. package/dist/signals/jsx.d.ts.map +0 -1
  199. package/dist/signals/jsx.js +0 -11
  200. package/dist/signals/jsx.js.map +0 -1
  201. package/src/components/suspense.ts +0 -72
  202. package/src/signals/jsx.ts +0 -46
@@ -1 +1 @@
1
- {"version":3,"file":"appContext.d.ts","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAEvB,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAA;IACf,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACnC,OAAO,IAAI,IAAI,CAAA;CAChB;AAID,wBAAgB,KAAK,CACnB,QAAQ,EAAE,GAAG,CAAC,OAAO,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,UAAU,CAsDZ"}
1
+ {"version":3,"file":"appContext.d.ts","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAKA,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAEvB,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,KAAK,CAAA;IACf,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IACnC,OAAO,IAAI,IAAI,CAAA;CAChB;AAID,wBAAgB,KAAK,CACnB,QAAQ,EAAE,GAAG,CAAC,OAAO,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,UAAU,CA8CZ"}
@@ -1,7 +1,7 @@
1
1
  import { FLAG_STATIC_DOM } from "./constants.js";
2
- import { createElement } from "./element.js";
3
2
  import { __DEV__ } from "./env.js";
4
- import { renderRootSync } from "./scheduler.js";
3
+ import { renderRootSync, requestUpdate } from "./scheduler.js";
4
+ import { createVNode } from "./vNode.js";
5
5
  let appId = 0;
6
6
  export function mount(children, container, options) {
7
7
  if (__DEV__) {
@@ -9,17 +9,11 @@ export function mount(children, container, options) {
9
9
  throw new Error("[kiru]: container in use - call unmount on the previous app first.");
10
10
  }
11
11
  }
12
- const rootNode = createElement(container.nodeName.toLowerCase(), {});
13
- if (__DEV__) {
14
- container.__kiruNode = rootNode;
15
- }
16
- rootNode.dom = container;
17
- rootNode.flags |= FLAG_STATIC_DOM;
12
+ const rootNode = createRootNode(container);
18
13
  const id = appId++;
19
- const name = options?.name ?? `App-${id}`;
20
14
  const appContext = {
21
15
  id,
22
- name,
16
+ name: options?.name ?? `App-${id}`,
23
17
  rootNode,
24
18
  render,
25
19
  unmount,
@@ -41,7 +35,7 @@ export function mount(children, container, options) {
41
35
  rootNode.app = appContext;
42
36
  }
43
37
  render(children);
44
- window.__kiru.emit("mount", appContext);
38
+ window.__kiru.emit("mount", appContext, requestUpdate);
45
39
  if (__DEV__) {
46
40
  queueMicrotask(() => {
47
41
  window.dispatchEvent(new Event("kiru:ready"));
@@ -49,4 +43,13 @@ export function mount(children, container, options) {
49
43
  }
50
44
  return appContext;
51
45
  }
46
+ function createRootNode(container) {
47
+ const node = createVNode(container.nodeName.toLowerCase());
48
+ node.flags |= FLAG_STATIC_DOM;
49
+ node.dom = container;
50
+ if (__DEV__) {
51
+ container.__kiruNode = node;
52
+ }
53
+ return node;
54
+ }
52
55
  //# sourceMappingURL=appContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appContext.js","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAmB/C,IAAI,KAAK,GAAG,CAAC,CAAA;AAEb,MAAM,UAAU,KAAK,CACnB,QAAqB,EACrB,SAAsB,EACtB,OAA2B;IAE3B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;IACpE,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAA;IACjC,CAAC;IAED,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,IAAI,eAAe,CAAA;IAEjC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,EAAE,CAAA;IACzC,MAAM,UAAU,GAAe;QAC7B,EAAE;QACF,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,OAAO;KACR,CAAA;IAED,SAAS,MAAM,CAAC,QAAqB;QACnC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAClC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC;IAED,SAAS,OAAO;QACd,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC9B,cAAc,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC,UAAU,CAAA;YAC3B,OAAO,QAAQ,CAAC,GAAG,CAAA;QACrB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,cAAc,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"appContext.js","sourceRoot":"","sources":["../src/appContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAmBxC,IAAI,KAAK,GAAG,CAAC,CAAA;AAEb,MAAM,UAAU,KAAK,CACnB,QAAqB,EACrB,SAAsB,EACtB,OAA2B;IAE3B,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAC1C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,UAAU,GAAe;QAC7B,EAAE;QACF,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,EAAE;QAClC,QAAQ;QACR,MAAM;QACN,OAAO;KACR,CAAA;IAED,SAAS,MAAM,CAAC,QAAqB;QACnC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAClC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC;IAED,SAAS,OAAO;QACd,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC9B,cAAc,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC,UAAU,CAAA;YAC3B,OAAO,QAAQ,CAAC,GAAG,CAAA;QACrB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IACtD,IAAI,OAAO,EAAE,CAAC;QACZ,cAAc,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,SAAsB;IAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK,IAAI,eAAe,CAAA;IAC7B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,UAAU,GAAG,IAAI,CAAA;IAC7B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Signal } from "../signals/index.js";
2
+ import type { RecordHas } from "../types.utils";
3
+ export type Derivable = Kiru.Signal<unknown> | Kiru.StatefulPromise<unknown> | Record<string, Kiru.Signal<unknown> | Kiru.StatefulPromise<unknown>>;
4
+ type InnerOf<T> = T extends Kiru.Signal<infer V> ? V : T extends Kiru.StatefulPromise<infer P> ? P : never;
5
+ type UnwrapDerive<T extends Derivable> = T extends Kiru.Signal<unknown> | Kiru.StatefulPromise<any> ? InnerOf<T> : {
6
+ [K in keyof T]: InnerOf<T[K]>;
7
+ };
8
+ type RecordHasPromise<T extends Record<string, any>> = RecordHas<T, Kiru.StatefulPromise<any>>;
9
+ type ChildFn<T> = (value: T) => JSX.Children;
10
+ type ChildFnWithStale<T> = (value: T, isStale: boolean) => JSX.Children;
11
+ export type DeriveFallbackMode = "swr" | "fallback";
12
+ export interface DeriveProps<T extends Derivable, Mode extends DeriveFallbackMode = "fallback"> {
13
+ from: T;
14
+ mode?: Mode;
15
+ children: T extends Kiru.StatefulPromise<infer U> ? Mode extends "swr" ? ChildFnWithStale<U> : ChildFn<U> : T extends Record<string, any> ? RecordHasPromise<T> extends true ? Mode extends "swr" ? ChildFnWithStale<UnwrapDerive<T>> : ChildFn<UnwrapDerive<T>> : ChildFn<UnwrapDerive<T>> : ChildFn<UnwrapDerive<T>>;
16
+ fallback?: T extends Kiru.StatefulPromise<any> ? JSX.Element : T extends Record<string, any> ? RecordHasPromise<T> extends true ? JSX.Element : never : never;
17
+ }
18
+ export declare function Derive<T extends Derivable, U extends DeriveFallbackMode = "swr">(props: DeriveProps<T, U>): string | number | bigint | boolean | Kiru.Element | JSX.Element[] | Signal<JSX.PrimitiveChild> | (T extends Kiru.StatefulPromise<any> ? JSX.Element : T extends Record<string, any> ? RecordHas<T, Kiru.StatefulPromise<any>> extends true ? JSX.Element : never : never) | null | undefined;
19
+ export {};
20
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,MAAM,MAAM,SAAS,GACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;AAExE,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAC5C,CAAC,GACD,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GACvC,CAAC,GACD,KAAK,CAAA;AAET,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GACpB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,GACV;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAErC,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,SAAS,CAC9D,CAAC,EACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAC1B,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAA;AAC5C,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAA;AAEvE,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,UAAU,CAAA;AAEnD,MAAM,WAAW,WAAW,CAC1B,CAAC,SAAS,SAAS,EACnB,IAAI,SAAS,kBAAkB,GAAG,UAAU;IAE5C,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAC7C,IAAI,SAAS,KAAK,GAChB,gBAAgB,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,GACZ,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,gBAAgB,CAAC,CAAC,CAAC,SAAS,IAAI,GAC9B,IAAI,SAAS,KAAK,GAChB,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAC1C,GAAG,CAAC,OAAO,GACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,gBAAgB,CAAC,CAAC,CAAC,SAAS,IAAI,GAC9B,GAAG,CAAC,OAAO,GACX,KAAK,GACP,KAAK,CAAA;CACV;AAED,wBAAgB,MAAM,CACpB,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,kBAAkB,GAAG,KAAK,EACpC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,gSAuDzB"}
@@ -0,0 +1,57 @@
1
+ import { node } from "../globals.js";
2
+ import { $STREAM_DATA } from "../constants.js";
3
+ import { requestUpdate } from "../scheduler.js";
4
+ import { useRef } from "../hooks/index.js";
5
+ import { Signal } from "../signals/index.js";
6
+ import { sideEffectsEnabled } from "../utils/index.js";
7
+ import { isStatefulPromise } from "../utils/promise.js";
8
+ export function Derive(props) {
9
+ const { from, children, fallback, mode } = props;
10
+ const prevSuccess = useRef(null);
11
+ const promises = new Set();
12
+ let value;
13
+ if (isStatefulPromise(from)) {
14
+ promises.add(from);
15
+ value = from.value;
16
+ }
17
+ else if (Signal.isSignal(from)) {
18
+ value = from.value;
19
+ }
20
+ else {
21
+ const out = {};
22
+ for (const key in from) {
23
+ const v = from[key];
24
+ if (isStatefulPromise(v))
25
+ promises.add(v);
26
+ out[key] = v.value;
27
+ }
28
+ value = out;
29
+ }
30
+ if (promises.size === 0) {
31
+ return children(value);
32
+ }
33
+ if (!sideEffectsEnabled()) {
34
+ throw {
35
+ [$STREAM_DATA]: {
36
+ fallback,
37
+ data: Array.from(promises),
38
+ },
39
+ };
40
+ }
41
+ for (const p of promises) {
42
+ if (p.state === "rejected") {
43
+ throw p.error;
44
+ }
45
+ if (p.state === "pending") {
46
+ const nodeRef = node.current;
47
+ Promise.allSettled(promises).then(() => requestUpdate(nodeRef));
48
+ if (mode !== "fallback" && prevSuccess.current) {
49
+ return children(prevSuccess.current, true);
50
+ }
51
+ return fallback;
52
+ }
53
+ }
54
+ prevSuccess.current = value;
55
+ return children(value, false);
56
+ }
57
+ //# sourceMappingURL=derive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/components/derive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAA;AAuD7E,MAAM,UAAU,MAAM,CAGpB,KAAwB;IACxB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAChD,MAAM,WAAW,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAA;IAExD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAA;IACrD,IAAI,KAAsB,CAAA;IAE1B,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,KAAK,GAAG,IAAI,CAAC,KAAwB,CAAA;IACvC,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,KAAK,GAAG,IAAI,CAAC,KAAwB,CAAA;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAwB,EAAE,CAAA;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,IAAI,iBAAiB,CAAC,CAAC,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACzC,GAAG,CAAC,GAAG,CAAC,GAAI,CAAqD,CAAC,KAAK,CAAA;QACzE,CAAC;QACD,KAAK,GAAG,GAAsB,CAAA;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAQ,QAAqC,CAAC,KAAK,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,MAAM;YACJ,CAAC,YAAY,CAAC,EAAE;gBACd,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3B;SAC6B,CAAA;IAClC,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,CAAC,KAAK,CAAA;QACf,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAA;YAC7B,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;YAE/D,IAAI,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC/C,OAAQ,QAA8C,CACpD,WAAW,CAAC,OAAO,EACnB,IAAI,CACL,CAAA;YACH,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAO,GAAG,KAAK,CAAA;IAC3B,OAAQ,QAA8C,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtE,CAAC"}
@@ -3,5 +3,5 @@ export interface ErrorBoundaryProps {
3
3
  fallback?: JSX.Element | ((error: Error) => JSX.Element);
4
4
  onError?: (error: Error) => void;
5
5
  }
6
- export declare function ErrorBoundary({ children, fallback, onError, }: ErrorBoundaryProps): Kiru.VNode;
6
+ export declare function ErrorBoundary({ children, fallback, onError, }: ErrorBoundaryProps): Kiru.Element;
7
7
  //# sourceMappingURL=errorBoundary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/errorBoundary.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,kBAAkB,cAEpB"}
1
+ {"version":3,"file":"errorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/errorBoundary.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,kBAAkB,gBAEpB"}
@@ -1,7 +1,7 @@
1
1
  export { ErrorBoundary, type ErrorBoundaryProps } from "./errorBoundary.js";
2
+ export * from "./derive.js";
2
3
  export * from "./lazy.js";
3
4
  export { memo } from "./memo.js";
4
5
  export * from "./portal.js";
5
- export * from "./suspense.js";
6
6
  export * from "./transition.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  export { ErrorBoundary } from "./errorBoundary.js";
2
+ export * from "./derive.js";
2
3
  export * from "./lazy.js";
3
4
  export { memo } from "./memo.js";
4
5
  export * from "./portal.js";
5
- export * from "./suspense.js";
6
6
  export * from "./transition.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAC3E,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAC3E,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
@@ -1,9 +1,12 @@
1
1
  import { $MEMO } from "../constants.js";
2
- export type MemoFn = Function & {
2
+ export interface MemoFn<T extends Record<string, unknown> = {}> {
3
+ (props: T): JSX.Element;
3
4
  [$MEMO]: {
4
5
  arePropsEqual: (prevProps: Record<string, unknown>, nextProps: Record<string, unknown>) => boolean;
5
6
  };
6
- };
7
+ }
7
8
  export declare function memo<T extends Record<string, unknown> = {}>(fn: Kiru.FC<T>, arePropsEqual?: (prevProps: T, nextProps: T) => boolean): (props: T) => JSX.Element;
8
- export declare function isMemoFn(fn: any): fn is MemoFn;
9
+ export declare function isMemoFn(fn: Function & {
10
+ [$MEMO]?: any;
11
+ }): fn is MemoFn;
9
12
  //# sourceMappingURL=memo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAiBvC,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG;IAC9B,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAA;KACb,CAAA;CACF,CAAA;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EACzD,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EACd,aAAa,GAAE,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,OAAwB,GACtE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAU3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,MAAM,CAI9C"}
1
+ {"version":3,"file":"memo.d.ts","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAiBvC,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE;IAC5D,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;IACvB,CAAC,KAAK,CAAC,EAAE;QACP,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAA;KACb,CAAA;CACF;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EACzD,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EACd,aAAa,GAAE,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,OAAwB,GACtE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAU3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,EAAE,IAAI,MAAM,CAIvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,SAAS,cAAc,CACrB,SAAY,EACZ,SAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAWD,MAAM,UAAU,IAAI,CAClB,EAAc,EACd,gBAAyD,cAAc;IAEvE,OAAO,MAAM,CAAC,MAAM,CAClB,SAAS,IAAI,CAAC,KAAQ;QACpB,OAAO,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC,EACD;QACE,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1B,WAAW,EAAE,WAAW;KACzB,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAO;IAC9B,OAAO,CACL,OAAO,EAAE,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,UAAU,CAC3E,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"memo.js","sourceRoot":"","sources":["../../src/components/memo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,SAAS,cAAc,CACrB,SAAY,EACZ,SAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAYD,MAAM,UAAU,IAAI,CAClB,EAAc,EACd,gBAAyD,cAAc;IAEvE,OAAO,MAAM,CAAC,MAAM,CAClB,SAAS,IAAI,CAAC,KAAQ;QACpB,OAAO,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC,EACD;QACE,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE;QAC1B,WAAW,EAAE,WAAW;KACzB,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAgC;IACvD,OAAO,CACL,OAAO,EAAE,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,KAAK,UAAU,CAC3E,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $SUSPENSE_THROW, $DEV_FILE_LINK, CONSECUTIVE_DIRTY_LIMIT, PREFETCHED_DATA_EVENT, EVENT_PREFIX_REGEX, FLAG_UPDATE, FLAG_PLACEMENT, FLAG_DELETION, FLAG_STATIC_DOM, FLAG_MEMO, FLAG_NOOP, FLAG_DIRTY, };
1
+ export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $STREAM_DATA, $DEV_FILE_LINK, CONSECUTIVE_DIRTY_LIMIT, STREAMED_DATA_EVENT, EVENT_PREFIX_REGEX, FLAG_UPDATE, FLAG_PLACEMENT, FLAG_DELETION, FLAG_STATIC_DOM, FLAG_MEMO, FLAG_NOOP, FLAG_DIRTY, };
2
2
  export { voidElements, svgTags, booleanAttributes, snakeCaseAttributes };
3
3
  declare const $SIGNAL: unique symbol;
4
4
  declare const $CONTEXT: unique symbol;
@@ -8,10 +8,10 @@ declare const $KIRU_ERROR: unique symbol;
8
8
  declare const $HMR_ACCEPT: unique symbol;
9
9
  declare const $MEMO: unique symbol;
10
10
  declare const $ERROR_BOUNDARY: unique symbol;
11
- declare const $SUSPENSE_THROW: unique symbol;
11
+ declare const $STREAM_DATA: unique symbol;
12
12
  declare const $DEV_FILE_LINK: unique symbol;
13
13
  declare const CONSECUTIVE_DIRTY_LIMIT = 50;
14
- declare const PREFETCHED_DATA_EVENT = "kiru:prefetched";
14
+ declare const STREAMED_DATA_EVENT = "kiru:deferred";
15
15
  declare const FLAG_UPDATE: number;
16
16
  declare const FLAG_PLACEMENT: number;
17
17
  declare const FLAG_DELETION: number;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AAExE,QAAA,MAAM,OAAO,eAA4B,CAAA;AACzC,QAAA,MAAM,QAAQ,eAA6B,CAAA;AAC3C,QAAA,MAAM,iBAAiB,eAAqC,CAAA;AAC5D,QAAA,MAAM,SAAS,eAA8B,CAAA;AAC7C,QAAA,MAAM,WAAW,eAA2B,CAAA;AAC5C,QAAA,MAAM,WAAW,eAA+B,CAAA;AAChD,QAAA,MAAM,KAAK,eAA0B,CAAA;AACrC,QAAA,MAAM,eAAe,eAAmC,CAAA;AACxD,QAAA,MAAM,eAAe,eAAmC,CAAA;AACxD,QAAA,MAAM,cAAc,eAAiC,CAAA;AAErD,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAClC,QAAA,MAAM,qBAAqB,oBAAoB,CAAA;AAE/C,QAAA,MAAM,WAAW,QAAS,CAAA;AAC1B,QAAA,MAAM,cAAc,QAAS,CAAA;AAC7B,QAAA,MAAM,aAAa,QAAS,CAAA;AAC5B,QAAA,MAAM,eAAe,QAAS,CAAA;AAC9B,QAAA,MAAM,SAAS,QAAS,CAAA;AACxB,QAAA,MAAM,SAAS,QAAS,CAAA;AACxB,QAAA,MAAM,UAAU,QAAS,CAAA;AAEzB,QAAA,MAAM,kBAAkB,QAAU,CAAA;AAElC,QAAA,MAAM,YAAY,aAgBhB,CAAA;AAEF,QAAA,MAAM,OAAO,aAiDX,CAAA;AAEF,QAAA,MAAM,iBAAiB,aAkCrB,CAAA;AAEF,QAAA,MAAM,mBAAmB,qBA6EvB,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,GACX,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAA;AAExE,QAAA,MAAM,OAAO,eAA4B,CAAA;AACzC,QAAA,MAAM,QAAQ,eAA6B,CAAA;AAC3C,QAAA,MAAM,iBAAiB,eAAqC,CAAA;AAC5D,QAAA,MAAM,SAAS,eAA8B,CAAA;AAC7C,QAAA,MAAM,WAAW,eAA2B,CAAA;AAC5C,QAAA,MAAM,WAAW,eAA+B,CAAA;AAChD,QAAA,MAAM,KAAK,eAA0B,CAAA;AACrC,QAAA,MAAM,eAAe,eAAmC,CAAA;AACxD,QAAA,MAAM,YAAY,eAAgC,CAAA;AAClD,QAAA,MAAM,cAAc,eAAiC,CAAA;AAErD,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAClC,QAAA,MAAM,mBAAmB,kBAAkB,CAAA;AAE3C,QAAA,MAAM,WAAW,QAAS,CAAA;AAC1B,QAAA,MAAM,cAAc,QAAS,CAAA;AAC7B,QAAA,MAAM,aAAa,QAAS,CAAA;AAC5B,QAAA,MAAM,eAAe,QAAS,CAAA;AAC9B,QAAA,MAAM,SAAS,QAAS,CAAA;AACxB,QAAA,MAAM,SAAS,QAAS,CAAA;AACxB,QAAA,MAAM,UAAU,QAAS,CAAA;AAEzB,QAAA,MAAM,kBAAkB,QAAU,CAAA;AAElC,QAAA,MAAM,YAAY,aAgBhB,CAAA;AAEF,QAAA,MAAM,OAAO,aAiDX,CAAA;AAEF,QAAA,MAAM,iBAAiB,aAkCrB,CAAA;AAEF,QAAA,MAAM,mBAAmB,qBA6EvB,CAAA"}
package/dist/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $SUSPENSE_THROW, $DEV_FILE_LINK, CONSECUTIVE_DIRTY_LIMIT, PREFETCHED_DATA_EVENT, EVENT_PREFIX_REGEX, FLAG_UPDATE, FLAG_PLACEMENT, FLAG_DELETION, FLAG_STATIC_DOM, FLAG_MEMO, FLAG_NOOP, FLAG_DIRTY, };
1
+ export { $SIGNAL, $CONTEXT, $CONTEXT_PROVIDER, $FRAGMENT, $KIRU_ERROR, $HMR_ACCEPT, $MEMO, $ERROR_BOUNDARY, $STREAM_DATA, $DEV_FILE_LINK, CONSECUTIVE_DIRTY_LIMIT, STREAMED_DATA_EVENT, EVENT_PREFIX_REGEX, FLAG_UPDATE, FLAG_PLACEMENT, FLAG_DELETION, FLAG_STATIC_DOM, FLAG_MEMO, FLAG_NOOP, FLAG_DIRTY, };
2
2
  export { voidElements, svgTags, booleanAttributes, snakeCaseAttributes };
3
3
  const $SIGNAL = Symbol.for("kiru.signal");
4
4
  const $CONTEXT = Symbol.for("kiru.context");
@@ -8,10 +8,10 @@ const $KIRU_ERROR = Symbol.for("kiru.error");
8
8
  const $HMR_ACCEPT = Symbol.for("kiru.hmrAccept");
9
9
  const $MEMO = Symbol.for("kiru.memo");
10
10
  const $ERROR_BOUNDARY = Symbol.for("kiru.errorBoundary");
11
- const $SUSPENSE_THROW = Symbol.for("kiru.suspenseThrow");
11
+ const $STREAM_DATA = Symbol.for("kiru.streamData");
12
12
  const $DEV_FILE_LINK = Symbol.for("kiru.devFileLink");
13
13
  const CONSECUTIVE_DIRTY_LIMIT = 50;
14
- const PREFETCHED_DATA_EVENT = "kiru:prefetched";
14
+ const STREAMED_DATA_EVENT = "kiru:deferred";
15
15
  const FLAG_UPDATE = 1 << 1;
16
16
  const FLAG_PLACEMENT = 1 << 2;
17
17
  const FLAG_DELETION = 1 << 3;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/dom.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,QAAQ,EAGR,OAAO,EAER,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,UAAU,GACX,CAAA;AAED,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAevB,iBAAS,uBAAuB,SAM/B;AAED,iBAAS,sBAAsB,SAS9B;AAiBD,iBAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAU3C;AA8PD,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,QA0C/B;AAwND,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,QAa/B;AAsDD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,QAsCnC"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,QAAQ,EAGR,OAAO,EAER,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,UAAU,GACX,CAAA;AAED,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAevB,iBAAS,uBAAuB,SAM/B;AAED,iBAAS,sBAAsB,SAS9B;AAED,iBAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAU3C;AAgRD,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,QA0C/B;AAuND,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,QAa/B;AAsDD,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,QAwCnC"}
package/dist/dom.js CHANGED
@@ -1,4 +1,4 @@
1
- import { traverseApply, commitSnapshot, propFilters, propToHtmlAttr, getVNodeAppContext, } from "./utils/index.js";
1
+ import { traverseApply, commitSnapshot, propFilters, propToHtmlAttr, getVNodeAppContext, setRef, } from "./utils/index.js";
2
2
  import { booleanAttributes, FLAG_PLACEMENT, FLAG_UPDATE, FLAG_STATIC_DOM, svgTags, FLAG_NOOP, EVENT_PREFIX_REGEX, } from "./constants.js";
3
3
  import { Signal } from "./signals/base.js";
4
4
  import { unwrap } from "./signals/utils.js";
@@ -33,21 +33,6 @@ function onAfterFlushDomChanges() {
33
33
  }
34
34
  persistingFocus = false;
35
35
  }
36
- function setDomRef(ref, value) {
37
- if (typeof ref === "function") {
38
- ref(value);
39
- return;
40
- }
41
- if (Signal.isSignal(ref)) {
42
- ref.sneak(value);
43
- ref.notify({
44
- filter: (sub) => typeof sub === "function",
45
- });
46
- return;
47
- }
48
- ;
49
- ref.current = value;
50
- }
51
36
  function createDom(vNode) {
52
37
  const t = vNode.type;
53
38
  const dom = t == "#text"
@@ -82,62 +67,70 @@ function wrapFocusEventHandler(vNode, evtName, callback) {
82
67
  }
83
68
  const vNodeToWrappedFocusEventHandlersMap = new WeakMap();
84
69
  function updateDom(vNode) {
85
- const dom = vNode.dom;
86
- const prevProps = vNode.prev?.props ?? {};
87
- const nextProps = vNode.props ?? {};
88
- const keys = new Set([...Object.keys(prevProps), ...Object.keys(nextProps)]);
70
+ const { dom, prev, props, cleanups } = vNode;
71
+ const prevProps = prev?.props ?? {};
72
+ const nextProps = props ?? {};
89
73
  const isHydration = renderMode.current === "hydrate";
90
- keys.forEach((key) => {
91
- const prev = prevProps[key], next = nextProps[key];
92
- if (propFilters.internalProps.includes(key) && key !== "innerHTML") {
93
- if (key === "ref" && prev !== next) {
94
- if (prev) {
95
- setDomRef(prev, null);
96
- }
97
- if (next) {
98
- setDomRef(next, dom);
99
- }
100
- }
101
- return;
74
+ // TEXT NODE SHORT-PATH
75
+ if (dom instanceof Text) {
76
+ const nextVal = nextProps.nodeValue;
77
+ if (!Signal.isSignal(nextVal) && dom.nodeValue !== nextVal) {
78
+ dom.nodeValue = nextVal;
102
79
  }
80
+ return;
81
+ }
82
+ const keys = [];
83
+ for (const k in prevProps)
84
+ keys.push(k);
85
+ for (const k in nextProps) {
86
+ if (!(k in prevProps))
87
+ keys.push(k);
88
+ }
89
+ for (let i = 0; i < keys.length; i++) {
90
+ const key = keys[i];
91
+ const prevVal = prevProps[key];
92
+ const nextVal = nextProps[key];
103
93
  if (propFilters.isEvent(key)) {
104
- if (prev !== next || renderMode.current === "hydrate") {
94
+ if (prevVal !== nextVal || isHydration) {
105
95
  const evtName = key.replace(EVENT_PREFIX_REGEX, "");
106
- const isFocusEvent = evtName === "focus" || evtName === "blur";
96
+ const isFocus = evtName === "focus" || evtName === "blur";
97
+ const wrappedMap = vNodeToWrappedFocusEventHandlersMap.get(vNode);
107
98
  if (key in prevProps) {
108
- dom.removeEventListener(evtName, isFocusEvent
109
- ? vNodeToWrappedFocusEventHandlersMap.get(vNode)?.[evtName]
110
- : prev);
99
+ dom.removeEventListener(evtName, isFocus ? wrappedMap?.[evtName] : prevVal);
111
100
  }
112
101
  if (key in nextProps) {
113
- dom.addEventListener(evtName, isFocusEvent ? wrapFocusEventHandler(vNode, evtName, next) : next);
102
+ dom.addEventListener(evtName, isFocus ? wrapFocusEventHandler(vNode, evtName, nextVal) : nextVal);
114
103
  }
115
104
  }
116
- return;
105
+ continue;
117
106
  }
118
- if (!(dom instanceof Text)) {
119
- if (prev === next || (isHydration && dom.getAttribute(key) === next)) {
120
- return;
121
- }
122
- if (Signal.isSignal(prev) && vNode.cleanups) {
123
- const v = vNode.cleanups[key];
124
- v && (v(), delete vNode.cleanups[key]);
125
- }
126
- if (Signal.isSignal(next)) {
127
- return setSignalProp(vNode, dom, key, next, prev);
128
- }
129
- setProp(dom, key, next, prev);
130
- return;
107
+ if (propFilters.isInternalProp(key) && key !== "innerHTML") {
108
+ continue;
131
109
  }
132
- if (Signal.isSignal(next)) {
133
- // signal textNodes are handled via 'subTextNode'.
134
- return;
110
+ if (prevVal === nextVal) {
111
+ continue;
112
+ }
113
+ if (Signal.isSignal(prevVal) && cleanups) {
114
+ const disposer = cleanups[key];
115
+ if (disposer) {
116
+ disposer();
117
+ delete cleanups[key];
118
+ }
135
119
  }
136
- // text node
137
- if (dom.nodeValue !== next) {
138
- dom.nodeValue = next;
120
+ if (Signal.isSignal(nextVal)) {
121
+ setSignalProp(vNode, dom, key, nextVal, prevVal);
122
+ continue;
139
123
  }
140
- });
124
+ setProp(dom, key, nextVal, prevVal);
125
+ }
126
+ const prevRef = prevProps.ref;
127
+ const nextRef = nextProps.ref;
128
+ if (prevRef !== nextRef) {
129
+ if (prevRef)
130
+ setRef(prevRef, null);
131
+ if (nextRef)
132
+ setRef(nextRef, dom);
133
+ }
141
134
  }
142
135
  function deriveSelectElementValue(dom) {
143
136
  if (dom.multiple) {
@@ -168,12 +161,19 @@ function setSignalProp(vNode, dom, key, signal, prevValue) {
168
161
  const [modifier, attr] = key.split(":");
169
162
  if (modifier !== "bind") {
170
163
  cleanups[key] = signal.subscribe((value, prev) => {
164
+ if (value === prev)
165
+ return;
171
166
  setProp(dom, key, value, prev);
172
167
  if (__DEV__) {
173
168
  window.__kiru.profilingContext?.emit("signalAttrUpdate", getVNodeAppContext(vNode));
174
169
  }
175
170
  });
176
- return setProp(dom, key, signal.peek(), unwrap(prevValue));
171
+ const value = signal.peek();
172
+ const prev = unwrap(prevValue);
173
+ if (value === prev)
174
+ return;
175
+ setProp(dom, key, value, prev);
176
+ return;
177
177
  }
178
178
  const evtName = bindAttrToEventMap[attr];
179
179
  if (!evtName) {
@@ -194,7 +194,7 @@ function setSignalProp(vNode, dom, key, signal, prevValue) {
194
194
  };
195
195
  const setSigFromElement = (val) => {
196
196
  signal.sneak(val);
197
- signal.notify({ filter: (sub) => sub !== signalUpdateCallback });
197
+ signal.notify((sub) => sub !== signalUpdateCallback);
198
198
  };
199
199
  let evtHandler;
200
200
  if (attr === "value") {
@@ -230,7 +230,11 @@ function setSignalProp(vNode, dom, key, signal, prevValue) {
230
230
  dom.removeEventListener(evtName, evtHandler);
231
231
  unsub();
232
232
  };
233
- return setProp(dom, attr, signal.peek(), unwrap(prevValue));
233
+ const value = signal.peek();
234
+ const prev = unwrap(prevValue);
235
+ if (value === prev)
236
+ return;
237
+ setProp(dom, attr, value, prev);
234
238
  }
235
239
  function subTextNode(vNode, textNode, signal) {
236
240
  ;
@@ -328,8 +332,6 @@ const needsExplicitValueSet = (element) => {
328
332
  return explicitValueElementTags.indexOf(element.nodeName) > -1;
329
333
  };
330
334
  function setProp(element, key, value, prev) {
331
- if (value === prev)
332
- return;
333
335
  switch (key) {
334
336
  case "style":
335
337
  return setStyleProp(element, value, prev);
@@ -546,11 +548,12 @@ function commitDeletion(vNode) {
546
548
  }
547
549
  }
548
550
  if (dom) {
549
- if (ref)
550
- setDomRef(ref, null);
551
551
  if (dom.isConnected && !(node.flags & FLAG_STATIC_DOM)) {
552
552
  dom.remove();
553
553
  }
554
+ if (ref) {
555
+ setRef(ref, null);
556
+ }
554
557
  delete node.dom;
555
558
  }
556
559
  });