kiru 1.2.1 → 1.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 (86) hide show
  1. package/dist/components/derive.d.ts +7 -6
  2. package/dist/components/derive.d.ts.map +1 -1
  3. package/dist/components/derive.js +9 -10
  4. package/dist/components/derive.js.map +1 -1
  5. package/dist/components/errorBoundary.d.ts +1 -1
  6. package/dist/components/errorBoundary.d.ts.map +1 -1
  7. package/dist/components/errorBoundary.js.map +1 -1
  8. package/dist/components/transition.d.ts +1 -2
  9. package/dist/components/transition.d.ts.map +1 -1
  10. package/dist/components/transition.js +26 -15
  11. package/dist/components/transition.js.map +1 -1
  12. package/dist/error.d.ts +0 -2
  13. package/dist/error.d.ts.map +1 -1
  14. package/dist/error.js +11 -14
  15. package/dist/error.js.map +1 -1
  16. package/dist/headlessRender.d.ts +2 -2
  17. package/dist/headlessRender.d.ts.map +1 -1
  18. package/dist/headlessRender.js +2 -3
  19. package/dist/headlessRender.js.map +1 -1
  20. package/dist/hmr.d.ts +1 -0
  21. package/dist/hmr.d.ts.map +1 -1
  22. package/dist/hmr.js +6 -2
  23. package/dist/hmr.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/renderToString.js +1 -1
  29. package/dist/renderToString.js.map +1 -1
  30. package/dist/resource.d.ts +19 -0
  31. package/dist/resource.d.ts.map +1 -0
  32. package/dist/resource.js +167 -0
  33. package/dist/resource.js.map +1 -0
  34. package/dist/scheduler.js +13 -8
  35. package/dist/scheduler.js.map +1 -1
  36. package/dist/signals/base.d.ts +3 -5
  37. package/dist/signals/base.d.ts.map +1 -1
  38. package/dist/signals/base.js +12 -54
  39. package/dist/signals/base.js.map +1 -1
  40. package/dist/signals/computed.d.ts.map +1 -1
  41. package/dist/signals/computed.js +5 -11
  42. package/dist/signals/computed.js.map +1 -1
  43. package/dist/signals/globals.d.ts +0 -2
  44. package/dist/signals/globals.d.ts.map +1 -1
  45. package/dist/signals/globals.js +0 -1
  46. package/dist/signals/globals.js.map +1 -1
  47. package/dist/signals/types.d.ts +1 -4
  48. package/dist/signals/types.d.ts.map +1 -1
  49. package/dist/ssr/server.d.ts +4 -4
  50. package/dist/ssr/server.d.ts.map +1 -1
  51. package/dist/ssr/server.js +11 -7
  52. package/dist/ssr/server.js.map +1 -1
  53. package/dist/types.d.ts +3 -3
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/utils/index.d.ts +2 -1
  56. package/dist/utils/index.d.ts.map +1 -1
  57. package/dist/utils/index.js +2 -1
  58. package/dist/utils/index.js.map +1 -1
  59. package/dist/utils/stream.d.ts +12 -0
  60. package/dist/utils/stream.d.ts.map +1 -0
  61. package/dist/utils/stream.js +8 -0
  62. package/dist/utils/stream.js.map +1 -0
  63. package/package.json +1 -13
  64. package/src/components/derive.ts +29 -36
  65. package/src/components/errorBoundary.ts +3 -1
  66. package/src/components/transition.ts +29 -16
  67. package/src/error.ts +11 -19
  68. package/src/headlessRender.ts +5 -5
  69. package/src/hmr.ts +13 -3
  70. package/src/index.ts +1 -1
  71. package/src/renderToString.ts +1 -1
  72. package/src/resource.ts +207 -0
  73. package/src/scheduler.ts +14 -8
  74. package/src/signals/base.ts +18 -57
  75. package/src/signals/computed.ts +4 -8
  76. package/src/signals/globals.ts +0 -3
  77. package/src/signals/types.ts +1 -4
  78. package/src/ssr/server.ts +18 -11
  79. package/src/types.ts +6 -6
  80. package/src/utils/index.ts +2 -1
  81. package/src/utils/stream.ts +17 -0
  82. package/dist/statefulPromise.d.ts +0 -22
  83. package/dist/statefulPromise.d.ts.map +0 -1
  84. package/dist/statefulPromise.js +0 -94
  85. package/dist/statefulPromise.js.map +0 -1
  86. package/src/statefulPromise.ts +0 -136
@@ -1,4 +1,3 @@
1
- import { Readable } from "node:stream";
2
1
  import { Fragment } from "../element.js";
3
2
  import { renderMode } from "../globals.js";
4
3
  import { STREAMED_DATA_EVENT } from "../constants.js";
@@ -19,7 +18,12 @@ d.currentScript.remove()
19
18
  </script>
20
19
  `;
21
20
  export function renderToReadableStream(element) {
22
- const stream = new Readable({ read() { } });
21
+ let controller;
22
+ const stream = new ReadableStream({
23
+ start(c) {
24
+ controller = c;
25
+ },
26
+ });
23
27
  const rootNode = Fragment({ children: element });
24
28
  const streamPromises = new Set();
25
29
  const pendingWritePromises = [];
@@ -36,7 +40,7 @@ export function renderToReadableStream(element) {
36
40
  .catch(() => ({ error: promise.error?.message }))
37
41
  .then((value) => {
38
42
  const content = JSON.stringify(value);
39
- stream.push(`<script id="${promise.id}" k-data type="application/json">${content}</script>`);
43
+ controller.enqueue(`<script id="${promise.id}" k-data type="application/json">${content}</script>`);
40
44
  });
41
45
  pendingWritePromises.push(writePromise);
42
46
  }
@@ -44,16 +48,16 @@ export function renderToReadableStream(element) {
44
48
  };
45
49
  const prev = renderMode.current;
46
50
  renderMode.current = "stream";
47
- headlessRender(ctx, rootNode, null, 0);
51
+ headlessRender(ctx, rootNode);
48
52
  renderMode.current = prev;
49
53
  if (pendingWritePromises.length > 0) {
50
54
  Promise.all(pendingWritePromises).then(() => {
51
- stream.push(STREAMED_DATA_SETUP);
52
- stream.push(null);
55
+ controller.enqueue(STREAMED_DATA_SETUP);
56
+ controller.close();
53
57
  });
54
58
  }
55
59
  else {
56
- stream.push(null);
60
+ controller.close();
57
61
  }
58
62
  return { immediate, stream };
59
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ssr/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAA;AAE5E,MAAM,mBAAmB,GAAG;;;iBAGX,mBAAmB;;;;;mCAKD,mBAAmB;;;;;;CAMrD,CAAA;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IAIzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAChD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAA;IACnE,MAAM,oBAAoB,GAAoB,EAAE,CAAA;IAEhD,IAAI,SAAS,GAAG,EAAE,CAAA;IAElB,MAAM,GAAG,GAA0B;QACjC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACtC,YAAY,CAAC,IAAI;YACf,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAQ;gBACzC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAE3B,MAAM,YAAY,GAAG,OAAO;qBACzB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;qBACrC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;qBAChD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBACd,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;oBACrC,MAAM,CAAC,IAAI,CACT,eAAe,OAAO,CAAC,EAAE,oCAAoC,OAAO,WAAW,CAChF,CAAA;gBACH,CAAC,CAAC,CAAA;gBAEJ,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;KACF,CAAA;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAA;IAC/B,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAA;IAC7B,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACtC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAA;IAEzB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ssr/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAA;AAE5E,MAAM,mBAAmB,GAAG;;;iBAGX,mBAAmB;;;;;mCAKD,mBAAmB;;;;;;CAMrD,CAAA;AAOD,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IACzD,IAAI,UAAoD,CAAA;IACxD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAS;QACxC,KAAK,CAAC,CAAC;YACL,UAAU,GAAG,CAAC,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAChD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiC,CAAA;IAC/D,MAAM,oBAAoB,GAAoB,EAAE,CAAA;IAEhD,IAAI,SAAS,GAAG,EAAE,CAAA;IAElB,MAAM,GAAG,GAA0B;QACjC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACtC,YAAY,CAAC,IAAI;YACf,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAQ;gBACzC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAE3B,MAAM,YAAY,GAAG,OAAO;qBACzB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;qBACrC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;qBAChD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBACd,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;oBACrC,UAAU,CAAC,OAAO,CAChB,eAAe,OAAO,CAAC,EAAE,oCAAoC,OAAO,WAAW,CAChF,CAAA;gBACH,CAAC,CAAC,CAAA;gBAEJ,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;KACF,CAAA;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAA;IAC/B,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAA;IAC7B,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC7B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAA;IAEzB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1C,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;YACvC,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;AAC9B,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ReadonlySignal, Signal as SignalClass } from "./signals";
1
+ import type { Signal as SignalClass } from "./signals";
2
2
  import type { $CONTEXT, $ERROR_BOUNDARY, $FRAGMENT } from "./constants";
3
3
  import type { KiruGlobalContext } from "./globalContext";
4
4
  import type { GlobalAttributes, HtmlElementAttributes, SvgElementAttributes, SvgGlobalAttributes, StyleObject, HtmlElementBindableProps, HTMLTagToElement, SVGTagToElement } from "./types.dom";
@@ -87,11 +87,11 @@ declare global {
87
87
  value?: T;
88
88
  error?: Error;
89
89
  }
90
- interface StatefulPromiseBase<T> extends Promise<T>, PromiseState<T> {
90
+ interface StatefulPromise<T> extends Promise<T>, PromiseState<T> {
91
91
  }
92
92
  type RenderMode = "dom" | "hydrate" | "string" | "stream";
93
93
  type StateSetter<T> = T | ((prev: T) => T);
94
- type Signal<T> = SignalClass<T> | ReadonlySignal<T>;
94
+ type Signal<T> = SignalClass<T>;
95
95
  type ExoticSymbol = typeof $FRAGMENT | typeof $CONTEXT | typeof $ERROR_BOUNDARY;
96
96
  interface Element {
97
97
  type: (Function & {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  export * from "./compare.js";
2
2
  export * from "./dom.js";
3
3
  export * from "./format.js";
4
+ export * from "./generateId.js";
4
5
  export * from "./runtime.js";
6
+ export * from "./stream.js";
5
7
  export * from "./vdom.js";
6
- export * from "./generateId.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
@@ -1,7 +1,8 @@
1
1
  export * from "./compare.js";
2
2
  export * from "./dom.js";
3
3
  export * from "./format.js";
4
+ export * from "./generateId.js";
4
5
  export * from "./runtime.js";
6
+ export * from "./stream.js";
5
7
  export * from "./vdom.js";
6
- export * from "./generateId.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { $STREAM_DATA } from "../constants.js";
2
+ export interface StreamDataThrowValue {
3
+ [$STREAM_DATA]: {
4
+ fallback?: JSX.Element;
5
+ data: Kiru.StatefulPromise<unknown>[];
6
+ };
7
+ }
8
+ /**
9
+ * Returns true if the value is a {@link StreamDataThrowValue}
10
+ */
11
+ export declare function isStreamDataThrowValue(value: unknown): value is StreamDataThrowValue;
12
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,oBAAoB;IACnC,CAAC,YAAY,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;QACtB,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAA;KACtC,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,oBAAoB,CAE/B"}
@@ -0,0 +1,8 @@
1
+ import { $STREAM_DATA } from "../constants.js";
2
+ /**
3
+ * Returns true if the value is a {@link StreamDataThrowValue}
4
+ */
5
+ export function isStreamDataThrowValue(value) {
6
+ return typeof value === "object" && !!value && $STREAM_DATA in value;
7
+ }
8
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAS9C;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,YAAY,IAAI,KAAK,CAAA;AACtE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiru",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "A batteries-included, easy-to-use rendering library with a tiny footprint",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -10,14 +10,6 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "default": "./dist/index.js"
12
12
  },
13
- "./form": {
14
- "types": "./dist/form/index.d.ts",
15
- "default": "./dist/form/index.js"
16
- },
17
- "./swr": {
18
- "types": "./dist/swr.d.ts",
19
- "default": "./dist/swr.js"
20
- },
21
13
  "./utils": {
22
14
  "types": "./dist/utils/index.d.ts",
23
15
  "default": "./dist/utils/index.js"
@@ -26,10 +18,6 @@
26
18
  "types": "./dist/router/index.d.ts",
27
19
  "default": "./dist/router/index.js"
28
20
  },
29
- "./router/dev": {
30
- "types": "./dist/router/dev/index.d.ts",
31
- "default": "./dist/router/dev/index.js"
32
- },
33
21
  "./router/client": {
34
22
  "types": "./dist/router/client/index.d.ts",
35
23
  "default": "./dist/router/client/index.js"
@@ -1,33 +1,28 @@
1
- import { sideEffectsEnabled } from "../utils/index.js"
1
+ import {
2
+ sideEffectsEnabled,
3
+ type StreamDataThrowValue,
4
+ } from "../utils/index.js"
2
5
  import { Signal } from "../signals/index.js"
3
6
  import { $STREAM_DATA } from "../constants.js"
4
7
  import { node } from "../globals.js"
5
- import { ref } from "../ref.js"
6
8
  import { requestUpdate } from "../scheduler.js"
7
- import { isStatefulPromise, StreamDataThrowValue } from "../statefulPromise.js"
9
+ import { isResource, Resource } from "../resource.js"
8
10
  import type { RecordHas } from "../types.utils"
9
11
 
10
12
  export type Derivable =
11
13
  | Kiru.Signal<unknown>
12
- | Kiru.StatefulPromiseBase<unknown>
13
- | Record<string, Kiru.Signal<unknown> | Kiru.StatefulPromiseBase<unknown>>
14
+ | Record<string, Kiru.Signal<unknown>>
14
15
 
15
- type InnerOf<T> =
16
- T extends Kiru.Signal<infer V>
17
- ? V
18
- : T extends Kiru.StatefulPromiseBase<infer P>
19
- ? P
20
- : never
16
+ type InnerOf<T> = T extends Kiru.Signal<infer V> ? V : never
21
17
 
22
- type UnwrapDerive<T extends Derivable> = T extends
23
- | Kiru.Signal<unknown>
24
- | Kiru.StatefulPromiseBase<any>
25
- ? InnerOf<T>
26
- : { [K in keyof T]: InnerOf<T[K]> }
18
+ type UnwrapDerivable<T extends Derivable> =
19
+ T extends Kiru.Signal<unknown>
20
+ ? InnerOf<T>
21
+ : { [K in keyof T]: InnerOf<T[K]> }
27
22
 
28
- type RecordHasPromise<T extends Record<string, any>> = RecordHas<
23
+ type RecordHasResource<T extends Record<string, any>> = RecordHas<
29
24
  T,
30
- Kiru.StatefulPromiseBase<any>
25
+ Resource<any>
31
26
  >
32
27
 
33
28
  type ChildFn<T> = (value: T) => JSX.Children
@@ -41,21 +36,21 @@ export interface DeriveProps<
41
36
  > {
42
37
  from: T
43
38
  mode?: Mode
44
- children: T extends Kiru.StatefulPromiseBase<infer U>
39
+ children: T extends Resource<infer U>
45
40
  ? Mode extends "swr"
46
41
  ? ChildFnWithStale<U>
47
42
  : ChildFn<U>
48
43
  : T extends Record<string, any>
49
- ? RecordHasPromise<T> extends true
44
+ ? RecordHasResource<T> extends true
50
45
  ? Mode extends "swr"
51
- ? ChildFnWithStale<UnwrapDerive<T>>
52
- : ChildFn<UnwrapDerive<T>>
53
- : ChildFn<UnwrapDerive<T>>
54
- : ChildFn<UnwrapDerive<T>>
55
- fallback?: T extends Kiru.StatefulPromiseBase<any>
46
+ ? ChildFnWithStale<UnwrapDerivable<T>>
47
+ : ChildFn<UnwrapDerivable<T>>
48
+ : ChildFn<UnwrapDerivable<T>>
49
+ : ChildFn<UnwrapDerivable<T>>
50
+ fallback?: T extends Resource<any>
56
51
  ? JSX.Element
57
52
  : T extends Record<string, any>
58
- ? RecordHasPromise<T> extends true
53
+ ? RecordHasResource<T> extends true
59
54
  ? JSX.Element
60
55
  : never
61
56
  : never
@@ -72,15 +67,15 @@ type Derive = {
72
67
  * @see https://kirujs.dev/docs/components/derive
73
68
  */
74
69
  export const Derive: Derive = () => {
70
+ let prevSuccess: unknown
75
71
  return (props) => {
76
72
  const { from, children, fallback, mode } = props
77
- const prevSuccess = ref<unknown>(null)
78
73
 
79
- const promises = new Set<Kiru.StatefulPromiseBase<any>>()
74
+ const promises = new Set<Kiru.StatefulPromise<any>>()
80
75
  let value: unknown
81
76
 
82
- if (isStatefulPromise(from)) {
83
- promises.add(from)
77
+ if (isResource(from)) {
78
+ promises.add(from.promise)
84
79
  value = from.value as unknown
85
80
  } else if (Signal.isSignal(from)) {
86
81
  value = from.value as unknown
@@ -88,10 +83,8 @@ export const Derive: Derive = () => {
88
83
  const out: Record<string, any> = {}
89
84
  for (const key in from) {
90
85
  const v = from[key]
91
- if (isStatefulPromise(v)) promises.add(v)
92
- out[key] = (
93
- v as Signal<unknown> | Kiru.StatefulPromiseBase<unknown>
94
- ).value
86
+ if (isResource(v)) promises.add(v.promise)
87
+ out[key] = (v as Signal<unknown> | Kiru.StatefulPromise<unknown>).value
95
88
  }
96
89
  value = out as unknown
97
90
  }
@@ -116,7 +109,7 @@ export const Derive: Derive = () => {
116
109
  const nodeRef = node.current!
117
110
  Promise.allSettled(promises).then(() => requestUpdate(nodeRef))
118
111
 
119
- const prev = prevSuccess.current!
112
+ const prev = prevSuccess
120
113
  if (mode !== "fallback" && prev) {
121
114
  return (children as ChildFnWithStale<unknown>)(prev, true)
122
115
  }
@@ -124,7 +117,7 @@ export const Derive: Derive = () => {
124
117
  }
125
118
  }
126
119
 
127
- prevSuccess.current = value
120
+ prevSuccess = value
128
121
  return (children as ChildFnWithStale<unknown>)(value, false)
129
122
  }
130
123
  }
@@ -3,7 +3,9 @@ import { createElement } from "../index.js"
3
3
 
4
4
  export interface ErrorBoundaryProps {
5
5
  children?: JSX.Children
6
- fallback?: JSX.Element | ((error: Error) => JSX.Element)
6
+ fallback?:
7
+ | Exclude<JSX.Element, (props: any) => JSX.Element>
8
+ | ((error: Error) => JSX.Element)
7
9
  onError?: (error: Error) => void
8
10
  }
9
11
 
@@ -1,11 +1,10 @@
1
- import { onCleanup } from "../hooks/onCleanup.js"
2
- import { signal, Signal } from "../signals/base.js"
3
- import { effect } from "../signals/effect.js"
1
+ import { onMount } from "../hooks/onMount.js"
4
2
  import { unwrap } from "../signals/utils.js"
3
+ import { setup } from "../hooks/setup.js"
5
4
 
6
5
  export type TransitionState = "entering" | "entered" | "exiting" | "exited"
7
6
  interface TransitionProps {
8
- in: boolean | Signal<boolean>
7
+ in: boolean | Kiru.Signal<boolean>
9
8
  /**
10
9
  * Initial state of the transition
11
10
  * @default "exited"
@@ -26,40 +25,54 @@ interface TransitionProps {
26
25
  * @see https://kirujs.dev/docs/components/transition
27
26
  */
28
27
  export const Transition: Kiru.FC<TransitionProps> = (props) => {
29
- const tState = signal<TransitionState>(props.initialState || "exited")
28
+ const $ = setup<typeof Transition>()
29
+ const tState = $.derive<TransitionState>((p) => p.initialState || "exited")
30
+ const inState = $.derive((p) => unwrap(p.in, true))
30
31
  let timeoutRef: number | undefined
32
+ let onTransitionEnd = props.onTransitionEnd
33
+ let duration = props.duration
31
34
 
32
35
  const setTransitionState = (transitionState: TransitionState) => {
33
36
  clearTimeout(timeoutRef)
34
37
  tState.value = transitionState
35
38
  if (transitionState === "entered" || transitionState === "exited") {
36
- if (props.onTransitionEnd) props.onTransitionEnd(transitionState)
39
+ onTransitionEnd?.(transitionState)
37
40
  }
38
41
  }
39
42
 
40
43
  const queueStateChange = (transitionState: "entered" | "exited") => {
41
44
  timeoutRef = window.setTimeout(
42
45
  () => setTransitionState(transitionState),
43
- getTiming(transitionState, props.duration)
46
+ getTiming(transitionState, duration)
44
47
  )
45
48
  }
46
49
 
47
- effect(() => {
48
- const newIn = unwrap(props.in, true)
49
- const current = tState.peek()
50
- if (newIn && current !== "entered" && current !== "entering") {
50
+ const onInChange = (currentIn: boolean) => {
51
+ const t = tState.peek()
52
+ if (currentIn && t !== "entered" && t !== "entering") {
51
53
  setTransitionState("entering")
52
54
  queueStateChange("entered")
53
- } else if (!newIn && current !== "exited" && current !== "exiting") {
55
+ } else if (!currentIn && t !== "exited" && t !== "exiting") {
54
56
  setTransitionState("exiting")
55
57
  queueStateChange("exited")
56
58
  }
57
- })
59
+ }
60
+
61
+ const unsub = inState.subscribe(onInChange)
58
62
 
59
- onCleanup(() => clearTimeout(timeoutRef))
63
+ onMount(() => {
64
+ onInChange(inState.peek())
65
+ return () => {
66
+ unsub()
67
+ clearTimeout(timeoutRef)
68
+ }
69
+ })
60
70
 
61
- return (newProps) => {
62
- return newProps.element(tState.value)
71
+ return (props) => {
72
+ console.log("tState", tState.value)
73
+ duration = props.duration
74
+ onTransitionEnd = props.onTransitionEnd
75
+ return props.element(tState.value)
63
76
  }
64
77
  }
65
78
 
package/src/error.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { $KIRU_ERROR } from "./constants.js"
1
+ import { $DEV_FILE_LINK, $KIRU_ERROR } from "./constants.js"
2
2
  import { __DEV__ } from "./env.js"
3
- import { findParent, noop } from "./utils/index.js"
4
3
 
5
4
  type KiruErrorOptions =
6
5
  | string
@@ -16,8 +15,6 @@ export class KiruError extends Error {
16
15
  [$KIRU_ERROR] = true
17
16
  /** Indicates whether the error is fatal and should crash the application */
18
17
  fatal?: boolean
19
- /** Present if vNode is provided */
20
- customNodeStack?: string
21
18
  constructor(optionsOrMessage: KiruErrorOptions) {
22
19
  const message =
23
20
  typeof optionsOrMessage === "string"
@@ -26,18 +23,21 @@ export class KiruError extends Error {
26
23
  super(message)
27
24
  if (typeof optionsOrMessage !== "string") {
28
25
  if (__DEV__ && optionsOrMessage?.vNode) {
29
- this.customNodeStack = captureErrorStack(optionsOrMessage.vNode)
26
+ const stack = createVNodeStack(optionsOrMessage.vNode)
27
+ this.message = `${message}
28
+ ${stack.map((item) => ` at ${item}`).join("\n")}
29
+ `
30
30
  }
31
31
  this.fatal = optionsOrMessage?.fatal
32
32
  }
33
33
  }
34
34
 
35
35
  static isKiruError(error: unknown): error is KiruError {
36
- return error instanceof Error && (error as KiruError)[$KIRU_ERROR] === true
36
+ return error instanceof Error && $KIRU_ERROR in error
37
37
  }
38
38
  }
39
39
 
40
- function captureErrorStack(vNode: Kiru.VNode) {
40
+ function createVNodeStack(vNode: Kiru.VNode) {
41
41
  let n = vNode
42
42
  let componentFns: string[] = []
43
43
  while (n) {
@@ -45,24 +45,16 @@ function captureErrorStack(vNode: Kiru.VNode) {
45
45
  if (typeof n.type === "function") {
46
46
  componentFns.push(getComponentErrorDisplayText(n.type))
47
47
  } else if (typeof n.type === "string") {
48
- componentFns.push(n.type)
48
+ componentFns.push(`<${n.type}>`)
49
49
  }
50
50
  n = n.parent
51
51
  }
52
- const componentNode = (
53
- typeof vNode.type === "function"
54
- ? vNode
55
- : findParent(vNode, (n) => typeof n.type === "function")
56
- ) as (Kiru.VNode & { type: Function }) | null
57
- return `The above error occurred in the <${getFunctionName(
58
- componentNode?.type || noop
59
- )}> component:
60
52
 
61
- ${componentFns.map((x) => ` at ${x}`).join("\n")}\n`
53
+ return componentFns
62
54
  }
63
55
 
64
56
  function getComponentErrorDisplayText(fn: Function) {
65
- let str = getFunctionName(fn)
57
+ let str = `<${getFunctionName(fn)}>`
66
58
  if (__DEV__) {
67
59
  const fileLink = getComponentFileLink(fn)
68
60
  if (fileLink) {
@@ -77,5 +69,5 @@ function getFunctionName(fn: Function) {
77
69
  }
78
70
 
79
71
  function getComponentFileLink(fn: Function) {
80
- return fn.toString().match(/\/\/ \[kiru_devtools\]:(.*)/)?.[1] ?? null
72
+ return (fn as any)[$DEV_FILE_LINK] ?? null
81
73
  }
@@ -7,8 +7,8 @@ import {
7
7
  assertValidElementProps,
8
8
  isPrimitiveChild,
9
9
  isValidTextChild,
10
+ isStreamDataThrowValue,
10
11
  } from "./utils/index.js"
11
- import { isStreamDataThrowValue } from "./statefulPromise.js"
12
12
  import { Signal } from "./signals/base.js"
13
13
  import { $ERROR_BOUNDARY, voidElements, $STREAM_DATA } from "./constants.js"
14
14
  import { __DEV__ } from "./env.js"
@@ -16,14 +16,14 @@ import type { ErrorBoundaryNode } from "./types.utils"
16
16
 
17
17
  export interface HeadlessRenderContext {
18
18
  write(chunk: string): void
19
- onStreamData?: (data: Kiru.StatefulPromiseBase<unknown>[]) => void
19
+ onStreamData?: (data: Kiru.StatefulPromise<unknown>[]) => void
20
20
  }
21
21
 
22
22
  export function headlessRender(
23
23
  ctx: HeadlessRenderContext,
24
24
  el: unknown,
25
- parent: Kiru.VNode | null,
26
- idx: number
25
+ parent: Kiru.VNode | null = null,
26
+ idx: number = 0
27
27
  ): void {
28
28
  if (el === null) return
29
29
  if (el === undefined) return
@@ -66,7 +66,7 @@ export function headlessRender(
66
66
  if (isExoticType(type)) {
67
67
  if (type === $ERROR_BOUNDARY) {
68
68
  let boundaryBuffer = ""
69
- const streamPromises = new Set<Kiru.StatefulPromiseBase<unknown>>()
69
+ const streamPromises = new Set<Kiru.StatefulPromise<unknown>>()
70
70
  const boundaryCtx: HeadlessRenderContext = {
71
71
  write(chunk) {
72
72
  boundaryBuffer += chunk
package/src/hmr.ts CHANGED
@@ -98,6 +98,8 @@ export function createHmrContext() {
98
98
  if (currentModuleMemory === null)
99
99
  throw new Error("[kiru]: HMR could not register: No active module")
100
100
 
101
+ // TODO: we should call destroy() on unmatched old entries
102
+
101
103
  let dirtyNodes = new Set<Kiru.VNode>()
102
104
  for (const [name, newEntry] of Object.entries(hotVarRegistrationEntries)) {
103
105
  const oldEntry = currentModuleMemory.hotVars.get(name)
@@ -120,10 +122,10 @@ export function createHmrContext() {
120
122
  isGenericHmrAcceptor(oldEntry.value) &&
121
123
  isGenericHmrAcceptor(newEntry.value)
122
124
  ) {
123
- newEntry.value[$HMR_ACCEPT].inject(
124
- oldEntry.value[$HMR_ACCEPT].provide()
125
+ performHmrAccept(
126
+ oldEntry.value[$HMR_ACCEPT],
127
+ newEntry.value[$HMR_ACCEPT]
125
128
  )
126
- oldEntry.value[$HMR_ACCEPT].destroy()
127
129
  continue
128
130
  }
129
131
  if (oldEntry.type === "component" && newEntry.type === "component") {
@@ -192,3 +194,11 @@ export function onHmr(callback: () => void): void {
192
194
  window.__kiru.HMRContext.onHmr(callback)
193
195
  }
194
196
  }
197
+
198
+ export function performHmrAccept<T>(
199
+ oldThing: HMRAccept<T>,
200
+ newThing: HMRAccept<T>
201
+ ) {
202
+ newThing.inject(oldThing.provide())
203
+ oldThing.destroy()
204
+ }
package/src/index.ts CHANGED
@@ -22,7 +22,7 @@ export {
22
22
  requestUpdate,
23
23
  useRequestUpdate,
24
24
  } from "./scheduler.js"
25
- export * from "./statefulPromise.js"
25
+ export * from "./resource.js"
26
26
  export * from "./viewTransitions.js"
27
27
 
28
28
  if (isBrowser) {
@@ -11,7 +11,7 @@ export function renderToString(element: JSX.Element) {
11
11
  result += chunk
12
12
  },
13
13
  }
14
- headlessRender(ctx, Fragment({ children: element }), null, 0)
14
+ headlessRender(ctx, Fragment({ children: element }))
15
15
  renderMode.current = prev
16
16
  return result
17
17
  }