kiru 0.48.3 → 0.50.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 (253) hide show
  1. package/dist/action.d.ts +22 -0
  2. package/dist/action.d.ts.map +1 -0
  3. package/dist/action.js +20 -0
  4. package/dist/action.js.map +1 -0
  5. package/dist/components/errorBoundary.d.ts +7 -0
  6. package/dist/components/errorBoundary.d.ts.map +1 -0
  7. package/dist/components/errorBoundary.js +6 -0
  8. package/dist/components/errorBoundary.js.map +1 -0
  9. package/dist/components/index.d.ts +7 -0
  10. package/dist/components/index.d.ts.map +1 -0
  11. package/dist/components/index.js +7 -0
  12. package/dist/components/index.js.map +1 -0
  13. package/dist/components/lazy.d.ts.map +1 -0
  14. package/dist/{lazy.js → components/lazy.js} +11 -11
  15. package/dist/components/lazy.js.map +1 -0
  16. package/dist/{memo.d.ts → components/memo.d.ts} +1 -1
  17. package/dist/components/memo.d.ts.map +1 -0
  18. package/dist/{memo.js → components/memo.js} +2 -2
  19. package/dist/components/memo.js.map +1 -0
  20. package/dist/components/portal.d.ts.map +1 -0
  21. package/dist/{portal.js → components/portal.js} +6 -6
  22. package/dist/components/portal.js.map +1 -0
  23. package/dist/components/router/index.d.ts.map +1 -0
  24. package/dist/components/router/index.js.map +1 -0
  25. package/dist/components/router/route.d.ts.map +1 -0
  26. package/dist/{router → components/router}/route.js +1 -1
  27. package/dist/components/router/route.js.map +1 -0
  28. package/dist/{router → components/router}/router.d.ts +1 -1
  29. package/dist/components/router/router.d.ts.map +1 -0
  30. package/dist/{router → components/router}/router.js +8 -8
  31. package/dist/components/router/router.js.map +1 -0
  32. package/dist/components/router/routerUtils.d.ts.map +1 -0
  33. package/dist/components/router/routerUtils.js.map +1 -0
  34. package/dist/components/suspense.d.ts +33 -0
  35. package/dist/components/suspense.d.ts.map +1 -0
  36. package/dist/components/suspense.js +113 -0
  37. package/dist/components/suspense.js.map +1 -0
  38. package/dist/components/transition.d.ts.map +1 -0
  39. package/dist/{transition.js → components/transition.js} +5 -5
  40. package/dist/components/transition.js.map +1 -0
  41. package/dist/constants.d.ts +6 -12
  42. package/dist/constants.d.ts.map +1 -1
  43. package/dist/constants.js +83 -12
  44. package/dist/constants.js.map +1 -1
  45. package/dist/context.js +1 -1
  46. package/dist/context.js.map +1 -1
  47. package/dist/dom.d.ts.map +1 -1
  48. package/dist/dom.js +9 -12
  49. package/dist/dom.js.map +1 -1
  50. package/dist/element.js +2 -2
  51. package/dist/element.js.map +1 -1
  52. package/dist/error.js +1 -1
  53. package/dist/error.js.map +1 -1
  54. package/dist/form/index.d.ts.map +1 -1
  55. package/dist/form/index.js +1 -2
  56. package/dist/form/index.js.map +1 -1
  57. package/dist/hmr.js +1 -1
  58. package/dist/hmr.js.map +1 -1
  59. package/dist/hooks/useAsync.d.ts.map +1 -1
  60. package/dist/hooks/useAsync.js +2 -2
  61. package/dist/hooks/useAsync.js.map +1 -1
  62. package/dist/hooks/useCallback.d.ts.map +1 -1
  63. package/dist/hooks/useCallback.js +2 -1
  64. package/dist/hooks/useCallback.js.map +1 -1
  65. package/dist/hooks/useEffect.d.ts.map +1 -1
  66. package/dist/hooks/useEffect.js +2 -1
  67. package/dist/hooks/useEffect.js.map +1 -1
  68. package/dist/hooks/useEffectEvent.d.ts.map +1 -1
  69. package/dist/hooks/useEffectEvent.js +2 -1
  70. package/dist/hooks/useEffectEvent.js.map +1 -1
  71. package/dist/hooks/useLayoutEffect.d.ts.map +1 -1
  72. package/dist/hooks/useLayoutEffect.js +2 -1
  73. package/dist/hooks/useLayoutEffect.js.map +1 -1
  74. package/dist/hooks/useMemo.d.ts.map +1 -1
  75. package/dist/hooks/useMemo.js +2 -1
  76. package/dist/hooks/useMemo.js.map +1 -1
  77. package/dist/hooks/useReducer.js +2 -2
  78. package/dist/hooks/useReducer.js.map +1 -1
  79. package/dist/hooks/useRef.d.ts.map +1 -1
  80. package/dist/hooks/useRef.js +2 -1
  81. package/dist/hooks/useRef.js.map +1 -1
  82. package/dist/hooks/useState.js +2 -2
  83. package/dist/hooks/useState.js.map +1 -1
  84. package/dist/hooks/useSyncExternalStore.js +2 -2
  85. package/dist/hooks/useSyncExternalStore.js.map +1 -1
  86. package/dist/hooks/useViewTransition.d.ts.map +1 -1
  87. package/dist/hooks/useViewTransition.js +1 -2
  88. package/dist/hooks/useViewTransition.js.map +1 -1
  89. package/dist/hooks/utils.d.ts +0 -1
  90. package/dist/hooks/utils.d.ts.map +1 -1
  91. package/dist/hooks/utils.js +2 -2
  92. package/dist/hooks/utils.js.map +1 -1
  93. package/dist/index.d.ts +3 -5
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +3 -5
  96. package/dist/index.js.map +1 -1
  97. package/dist/reconciler.js +8 -7
  98. package/dist/reconciler.js.map +1 -1
  99. package/dist/renderToString.d.ts.map +1 -1
  100. package/dist/renderToString.js +93 -38
  101. package/dist/renderToString.js.map +1 -1
  102. package/dist/scheduler.d.ts.map +1 -1
  103. package/dist/scheduler.js +48 -11
  104. package/dist/scheduler.js.map +1 -1
  105. package/dist/signals/base.d.ts.map +1 -1
  106. package/dist/signals/base.js +1 -2
  107. package/dist/signals/base.js.map +1 -1
  108. package/dist/signals/computed.js +1 -1
  109. package/dist/signals/computed.js.map +1 -1
  110. package/dist/signals/effect.js +1 -1
  111. package/dist/signals/effect.js.map +1 -1
  112. package/dist/signals/watch.d.ts.map +1 -1
  113. package/dist/signals/watch.js +2 -3
  114. package/dist/signals/watch.js.map +1 -1
  115. package/dist/ssr/server.d.ts +4 -1
  116. package/dist/ssr/server.d.ts.map +1 -1
  117. package/dist/ssr/server.js +136 -66
  118. package/dist/ssr/server.js.map +1 -1
  119. package/dist/store.d.ts +1 -1
  120. package/dist/store.d.ts.map +1 -1
  121. package/dist/store.js +2 -2
  122. package/dist/store.js.map +1 -1
  123. package/dist/swr.js +1 -1
  124. package/dist/swr.js.map +1 -1
  125. package/dist/types.d.ts +14 -5
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/types.dom.d.ts +2 -2
  128. package/dist/types.dom.d.ts.map +1 -1
  129. package/dist/types.utils.d.ts +7 -1
  130. package/dist/types.utils.d.ts.map +1 -1
  131. package/dist/utils/compare.d.ts +3 -0
  132. package/dist/utils/compare.d.ts.map +1 -0
  133. package/dist/utils/compare.js +123 -0
  134. package/dist/utils/compare.js.map +1 -0
  135. package/dist/utils/format.d.ts +20 -0
  136. package/dist/utils/format.d.ts.map +1 -0
  137. package/dist/utils/format.js +136 -0
  138. package/dist/utils/format.js.map +1 -0
  139. package/dist/utils/generateId.d.ts.map +1 -0
  140. package/dist/utils/generateId.js.map +1 -0
  141. package/dist/utils/index.d.ts +7 -0
  142. package/dist/utils/index.d.ts.map +1 -0
  143. package/dist/utils/index.js +7 -0
  144. package/dist/utils/index.js.map +1 -0
  145. package/dist/utils/runtime.d.ts +11 -0
  146. package/dist/utils/runtime.d.ts.map +1 -0
  147. package/dist/utils/runtime.js +23 -0
  148. package/dist/utils/runtime.js.map +1 -0
  149. package/dist/utils/vdom.d.ts +27 -0
  150. package/dist/utils/vdom.d.ts.map +1 -0
  151. package/dist/utils/vdom.js +128 -0
  152. package/dist/utils/vdom.js.map +1 -0
  153. package/package.json +6 -6
  154. package/src/action.ts +42 -0
  155. package/src/components/errorBoundary.ts +16 -0
  156. package/src/components/index.ts +6 -0
  157. package/src/{lazy.ts → components/lazy.ts} +12 -12
  158. package/src/{memo.ts → components/memo.ts} +3 -3
  159. package/src/{portal.ts → components/portal.ts} +6 -6
  160. package/src/{router → components/router}/route.ts +1 -1
  161. package/src/{router → components/router}/router.ts +9 -9
  162. package/src/components/suspense.ts +193 -0
  163. package/src/{transition.ts → components/transition.ts} +5 -5
  164. package/src/constants.ts +86 -13
  165. package/src/context.ts +1 -1
  166. package/src/customEvents.ts +22 -22
  167. package/src/dom.ts +8 -11
  168. package/src/element.ts +2 -2
  169. package/src/error.ts +1 -1
  170. package/src/form/index.ts +5 -2
  171. package/src/hmr.ts +1 -1
  172. package/src/hooks/useAsync.ts +5 -3
  173. package/src/hooks/useCallback.ts +2 -1
  174. package/src/hooks/useEffect.ts +2 -6
  175. package/src/hooks/useEffectEvent.ts +2 -1
  176. package/src/hooks/useLayoutEffect.ts +2 -6
  177. package/src/hooks/useMemo.ts +2 -1
  178. package/src/hooks/useReducer.ts +2 -2
  179. package/src/hooks/useRef.ts +2 -1
  180. package/src/hooks/useState.ts +2 -2
  181. package/src/hooks/useSyncExternalStore.ts +2 -2
  182. package/src/hooks/useViewTransition.ts +1 -2
  183. package/src/hooks/utils.ts +2 -2
  184. package/src/index.ts +3 -5
  185. package/src/reconciler.ts +13 -11
  186. package/src/renderToString.ts +108 -42
  187. package/src/scheduler.ts +61 -14
  188. package/src/signals/base.ts +6 -2
  189. package/src/signals/computed.ts +1 -1
  190. package/src/signals/effect.ts +1 -1
  191. package/src/signals/watch.ts +2 -3
  192. package/src/ssr/server.ts +163 -71
  193. package/src/store.ts +6 -2
  194. package/src/swr.ts +3 -3
  195. package/src/types.dom.ts +2 -1
  196. package/src/types.ts +20 -2
  197. package/src/types.utils.ts +8 -0
  198. package/src/utils/compare.ts +125 -0
  199. package/src/utils/format.ts +162 -0
  200. package/src/utils/index.ts +7 -0
  201. package/src/utils/runtime.ts +25 -0
  202. package/src/utils/vdom.ts +195 -0
  203. package/dist/cloneVNode.d.ts +0 -2
  204. package/dist/cloneVNode.d.ts.map +0 -1
  205. package/dist/cloneVNode.js +0 -14
  206. package/dist/cloneVNode.js.map +0 -1
  207. package/dist/generateId.d.ts.map +0 -1
  208. package/dist/generateId.js.map +0 -1
  209. package/dist/lazy.d.ts.map +0 -1
  210. package/dist/lazy.js.map +0 -1
  211. package/dist/memo.d.ts.map +0 -1
  212. package/dist/memo.js.map +0 -1
  213. package/dist/portal.d.ts.map +0 -1
  214. package/dist/portal.js.map +0 -1
  215. package/dist/props.d.ts +0 -4
  216. package/dist/props.d.ts.map +0 -1
  217. package/dist/props.js +0 -27
  218. package/dist/props.js.map +0 -1
  219. package/dist/router/index.d.ts.map +0 -1
  220. package/dist/router/index.js.map +0 -1
  221. package/dist/router/route.d.ts.map +0 -1
  222. package/dist/router/route.js.map +0 -1
  223. package/dist/router/router.d.ts.map +0 -1
  224. package/dist/router/router.js.map +0 -1
  225. package/dist/router/routerUtils.d.ts.map +0 -1
  226. package/dist/router/routerUtils.js.map +0 -1
  227. package/dist/transition.d.ts.map +0 -1
  228. package/dist/transition.js.map +0 -1
  229. package/dist/utils.d.ts +0 -52
  230. package/dist/utils.d.ts.map +0 -1
  231. package/dist/utils.js +0 -433
  232. package/dist/utils.js.map +0 -1
  233. package/dist/warning.d.ts +0 -2
  234. package/dist/warning.d.ts.map +0 -1
  235. package/dist/warning.js +0 -4
  236. package/dist/warning.js.map +0 -1
  237. package/src/cloneVNode.ts +0 -14
  238. package/src/props.ts +0 -34
  239. package/src/utils.ts +0 -518
  240. package/src/warning.ts +0 -9
  241. /package/dist/{lazy.d.ts → components/lazy.d.ts} +0 -0
  242. /package/dist/{portal.d.ts → components/portal.d.ts} +0 -0
  243. /package/dist/{router → components/router}/index.d.ts +0 -0
  244. /package/dist/{router → components/router}/index.js +0 -0
  245. /package/dist/{router → components/router}/route.d.ts +0 -0
  246. /package/dist/{router → components/router}/routerUtils.d.ts +0 -0
  247. /package/dist/{router → components/router}/routerUtils.js +0 -0
  248. /package/dist/{transition.d.ts → components/transition.d.ts} +0 -0
  249. /package/dist/{generateId.d.ts → utils/generateId.d.ts} +0 -0
  250. /package/dist/{generateId.js → utils/generateId.js} +0 -0
  251. /package/src/{router → components/router}/index.ts +0 -0
  252. /package/src/{router → components/router}/routerUtils.ts +0 -0
  253. /package/src/{generateId.ts → utils/generateId.ts} +0 -0
@@ -0,0 +1,136 @@
1
+ import { unwrap } from "../signals/index.js";
2
+ import { booleanAttributes, snakeCaseAttributes } from "../constants.js";
3
+ export { className, encodeHtmlEntities, propFilters, propToHtmlAttr, styleObjectToString, propValueToHtmlAttrValue, propsToElementAttributes, safeStringify, };
4
+ const REGEX_AMP = /&/g;
5
+ const REGEX_LT = /</g;
6
+ const REGEX_GT = />/g;
7
+ const REGEX_SQT = /'/g;
8
+ const REGEX_DBLQT = /"/g;
9
+ const REGEX_SLASH = /\//g;
10
+ const REGEX_ALPHA_UPPER = /[A-Z]/g;
11
+ function className(...classes) {
12
+ return classes.filter(Boolean).join(" ");
13
+ }
14
+ function encodeHtmlEntities(text) {
15
+ return text
16
+ .replace(REGEX_AMP, "&amp;")
17
+ .replace(REGEX_LT, "&lt;")
18
+ .replace(REGEX_GT, "&gt;")
19
+ .replace(REGEX_DBLQT, "&quot;")
20
+ .replace(REGEX_SQT, "&#039;")
21
+ .replace(REGEX_SLASH, "&#47;");
22
+ }
23
+ const propFilters = {
24
+ internalProps: ["children", "ref", "key", "innerHTML"],
25
+ isEvent: (key) => key.startsWith("on"),
26
+ isProperty: (key) => !propFilters.internalProps.includes(key) && !propFilters.isEvent(key),
27
+ };
28
+ function propToHtmlAttr(key) {
29
+ switch (key) {
30
+ case "className":
31
+ return "class";
32
+ case "htmlFor":
33
+ return "for";
34
+ case "tabIndex":
35
+ case "formAction":
36
+ case "formMethod":
37
+ case "formEncType":
38
+ case "contentEditable":
39
+ case "spellCheck":
40
+ case "allowFullScreen":
41
+ case "autoPlay":
42
+ case "disablePictureInPicture":
43
+ case "disableRemotePlayback":
44
+ case "formNoValidate":
45
+ case "noModule":
46
+ case "noValidate":
47
+ case "popoverTarget":
48
+ case "popoverTargetAction":
49
+ case "playsInline":
50
+ case "readOnly":
51
+ case "itemscope":
52
+ case "rowSpan":
53
+ case "crossOrigin":
54
+ return key.toLowerCase();
55
+ default:
56
+ if (key.indexOf("-") > -1)
57
+ return key;
58
+ if (key.startsWith("aria"))
59
+ return "aria-" + key.substring(4).toLowerCase();
60
+ return snakeCaseAttributes.get(key) || key;
61
+ }
62
+ }
63
+ function styleObjectToString(obj) {
64
+ let cssString = "";
65
+ for (const key in obj) {
66
+ const cssKey = key.replace(REGEX_ALPHA_UPPER, "-$&").toLowerCase();
67
+ cssString += `${cssKey}:${obj[key]};`;
68
+ }
69
+ return cssString;
70
+ }
71
+ function stylePropToString(style) {
72
+ if (typeof style === "string")
73
+ return style;
74
+ if (typeof style === "object" && !!style)
75
+ return styleObjectToString(style);
76
+ return "";
77
+ }
78
+ function propValueToHtmlAttrValue(key, value) {
79
+ return key === "style" && typeof value === "object" && !!value
80
+ ? styleObjectToString(value)
81
+ : String(value);
82
+ }
83
+ function propsToElementAttributes(props) {
84
+ const attrs = [];
85
+ const { className, style, ...rest } = props;
86
+ if (className) {
87
+ const val = unwrap(className);
88
+ if (!!val)
89
+ attrs.push(`class="${val}"`);
90
+ }
91
+ if (style) {
92
+ const val = unwrap(style);
93
+ if (!!val)
94
+ attrs.push(`style="${stylePropToString(val)}"`);
95
+ }
96
+ const keys = Object.keys(rest).filter(propFilters.isProperty);
97
+ for (let i = 0; i < keys.length; i++) {
98
+ let k = keys[i];
99
+ let val = unwrap(props[k]);
100
+ if (val === null || val === undefined)
101
+ continue;
102
+ k = k.split("bind:")[1] ?? k; // normalize bind props
103
+ const key = propToHtmlAttr(k);
104
+ switch (typeof val) {
105
+ case "function":
106
+ case "symbol":
107
+ continue;
108
+ case "boolean":
109
+ if (booleanAttributes.has(key)) {
110
+ if (val)
111
+ attrs.push(key);
112
+ continue;
113
+ }
114
+ }
115
+ attrs.push(`${key}="${val}"`);
116
+ }
117
+ return attrs.join(" ");
118
+ }
119
+ function safeStringify(value, opts = { functions: true }) {
120
+ const seen = new WeakSet();
121
+ return JSON.stringify(value, (_, value) => {
122
+ if (typeof value === "object" && value !== null) {
123
+ if (seen.has(value)) {
124
+ return "[CIRCULAR]";
125
+ }
126
+ seen.add(value);
127
+ }
128
+ if (typeof value === "function") {
129
+ if (!opts.functions)
130
+ return `[FUNCTION (${value.name || "anonymous"})]`;
131
+ return value.toString();
132
+ }
133
+ return value;
134
+ });
135
+ }
136
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateId.d.ts","sourceRoot":"","sources":["../../src/utils/generateId.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,MAAW,EACjB,YAAY,GAAE,MAA2B,GACxC,MAAM,CAMR"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateId.js","sourceRoot":"","sources":["../../src/utils/generateId.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GACtB,kEAA2E,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EAAE,EACjB,eAAuB,kBAAkB;IAEzC,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,EAAE,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,+CAA+C;IAC/G,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./compare.js";
2
+ export * from "./format.js";
3
+ export * from "./runtime.js";
4
+ export * from "./vdom.js";
5
+ export * from "./generateId.js";
6
+ export declare const noop: () => void;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAE/B,eAAO,MAAM,IAAI,YAA0B,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from "./compare.js";
2
+ export * from "./format.js";
3
+ export * from "./runtime.js";
4
+ export * from "./vdom.js";
5
+ export * from "./generateId.js";
6
+ export const noop = Object.freeze(() => { });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAE/B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ export { latest, sideEffectsEnabled };
2
+ /**
3
+ * This is a no-op in production. It is used to get the latest
4
+ * iteration of a component or signal after HMR has happened.
5
+ */
6
+ declare function latest<T extends Exclude<object, null>>(thing: T): T;
7
+ /**
8
+ * Returns false if called during "stream" or "string" render modes.
9
+ */
10
+ declare function sideEffectsEnabled(): boolean;
11
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;AAErC;;;GAGG;AACH,iBAAS,MAAM,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ5D;AAED;;GAEG;AACH,iBAAS,kBAAkB,IAAI,OAAO,CAErC"}
@@ -0,0 +1,23 @@
1
+ import { __DEV__ } from "../env.js";
2
+ import { renderMode } from "../globals.js";
3
+ export { latest, sideEffectsEnabled };
4
+ /**
5
+ * This is a no-op in production. It is used to get the latest
6
+ * iteration of a component or signal after HMR has happened.
7
+ */
8
+ function latest(thing) {
9
+ let tgt = thing;
10
+ if (__DEV__) {
11
+ while ("__next" in tgt) {
12
+ tgt = tgt.__next;
13
+ }
14
+ }
15
+ return tgt;
16
+ }
17
+ /**
18
+ * Returns false if called during "stream" or "string" render modes.
19
+ */
20
+ function sideEffectsEnabled() {
21
+ return renderMode.current === "dom" || renderMode.current === "hydrate";
22
+ }
23
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/utils/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;AAErC;;;GAGG;AACH,SAAS,MAAM,CAAkC,KAAQ;IACvD,IAAI,GAAG,GAAQ,KAAK,CAAA;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,IAAI,GAAG,EAAE,CAAC;YACvB,GAAG,GAAG,GAAG,CAAC,MAAoB,CAAA;QAChC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO,UAAU,CAAC,OAAO,KAAK,KAAK,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,CAAA;AACzE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { $FRAGMENT, $CONTEXT_PROVIDER } from "../constants.js";
2
+ import type { AppContext } from "../appContext.js";
3
+ import type { ErrorBoundaryNode } from "../types.utils.js";
4
+ export { cloneVNode, isVNodeDeleted, isVNode, isExoticType, isFragment, isLazy, isMemo, isContextProvider, vNodeContains, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, findParent, findParentErrorBoundary, assertValidElementProps, isValidElementKeyProp, isValidElementRefProp, };
5
+ declare function cloneVNode(vNode: Kiru.VNode): Kiru.VNode;
6
+ declare function isVNodeDeleted(vNode: Kiru.VNode): boolean;
7
+ declare function isVNode(thing: unknown): thing is Kiru.VNode;
8
+ declare function isExoticType(type: Kiru.VNode["type"]): type is Kiru.ExoticSymbol;
9
+ declare function isFragment(vNode: Kiru.VNode): vNode is Kiru.VNode & {
10
+ type: typeof $FRAGMENT;
11
+ };
12
+ declare function isLazy(vNode: Kiru.VNode): boolean;
13
+ declare function isMemo(vNode: Kiru.VNode): boolean;
14
+ declare function isContextProvider(thing: unknown): thing is Kiru.VNode & {
15
+ type: typeof $CONTEXT_PROVIDER;
16
+ };
17
+ declare function getCurrentVNode(): Kiru.VNode | null;
18
+ declare function getVNodeAppContext(vNode: Kiru.VNode): AppContext | null;
19
+ declare function commitSnapshot(vNode: Kiru.VNode): void;
20
+ declare function vNodeContains(haystack: Kiru.VNode, needle: Kiru.VNode): boolean;
21
+ declare function traverseApply(vNode: Kiru.VNode, func: (node: Kiru.VNode) => void): void;
22
+ declare function findParent(vNode: Kiru.VNode, predicate: (n: Kiru.VNode) => boolean): Kiru.VNode | null;
23
+ declare function findParentErrorBoundary(vNode: Kiru.VNode): ErrorBoundaryNode | null;
24
+ declare function assertValidElementProps(vNode: Kiru.VNode): void;
25
+ declare function isValidElementKeyProp(thing: unknown): thing is string | number;
26
+ declare function isValidElementRefProp(thing: unknown): thing is Kiru.Ref<any>;
27
+ //# sourceMappingURL=vdom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vdom.d.ts","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,iBAAiB,EAKlB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EACL,UAAU,EACV,cAAc,EACd,OAAO,EACP,YAAY,EACZ,UAAU,EACV,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,CAAA;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAUjD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAElD;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAEpD;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,YAAY,CAOzE;AAED,iBAAS,UAAU,CACjB,KAAK,EAAE,IAAI,CAAC,KAAK,GAChB,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAAE,CAElD;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAM1C;AAED,iBAAS,iBAAiB,CACxB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAA;CAAE,CAE1D;AAED,iBAAS,eAAe,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAE5C;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAUhE;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAQ/C;AAED,iBAAS,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAaxE;AAED,iBAAS,aAAa,CACpB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,GAC/B,IAAI,CAUN;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,qBAO3E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAK5E;AAED,iBAAS,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,QAgBjD;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,CAEvE;AAED,iBAAS,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAMrE"}
@@ -0,0 +1,128 @@
1
+ import { Signal } from "../signals/index.js";
2
+ import { FLAG_DELETION, $FRAGMENT, $CONTEXT_PROVIDER, $HYDRATION_BOUNDARY, FLAG_PLACEMENT, FLAG_UPDATE, $ERROR_BOUNDARY, } from "../constants.js";
3
+ import { createElement } from "../index.js";
4
+ import { KiruError } from "../error.js";
5
+ import { node } from "../globals.js";
6
+ export { cloneVNode, isVNodeDeleted, isVNode, isExoticType, isFragment, isLazy, isMemo, isContextProvider, vNodeContains, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, findParent, findParentErrorBoundary, assertValidElementProps, isValidElementKeyProp, isValidElementRefProp, };
7
+ function cloneVNode(vNode) {
8
+ const children = vNode.props.children;
9
+ let clonedChildren;
10
+ if (isVNode(children)) {
11
+ clonedChildren = cloneVNode(children);
12
+ }
13
+ else if (Array.isArray(children)) {
14
+ clonedChildren = children.map((c) => (isVNode(c) ? cloneVNode(c) : c));
15
+ }
16
+ return createElement(vNode.type, { ...vNode.props, children: clonedChildren });
17
+ }
18
+ function isVNodeDeleted(vNode) {
19
+ return (vNode.flags & FLAG_DELETION) !== 0;
20
+ }
21
+ function isVNode(thing) {
22
+ return typeof thing === "object" && thing !== null && "type" in thing;
23
+ }
24
+ function isExoticType(type) {
25
+ return (type === $FRAGMENT ||
26
+ type === $CONTEXT_PROVIDER ||
27
+ type === $ERROR_BOUNDARY ||
28
+ type === $HYDRATION_BOUNDARY);
29
+ }
30
+ function isFragment(vNode) {
31
+ return vNode.type === $FRAGMENT;
32
+ }
33
+ function isLazy(vNode) {
34
+ return (typeof vNode.type === "function" &&
35
+ "displayName" in vNode.type &&
36
+ vNode.type.displayName === "Kiru.lazy");
37
+ }
38
+ function isMemo(vNode) {
39
+ return (typeof vNode.type === "function" &&
40
+ "displayName" in vNode.type &&
41
+ vNode.type.displayName === "Kiru.memo");
42
+ }
43
+ function isContextProvider(thing) {
44
+ return isVNode(thing) && thing.type === $CONTEXT_PROVIDER;
45
+ }
46
+ function getCurrentVNode() {
47
+ return node.current;
48
+ }
49
+ function getVNodeAppContext(vNode) {
50
+ let n = vNode;
51
+ while (n) {
52
+ if (n.app) {
53
+ return (vNode.app = n.app);
54
+ }
55
+ n = n.parent;
56
+ }
57
+ return null;
58
+ }
59
+ function commitSnapshot(vNode) {
60
+ const { props: { children, ...props }, memoizedProps, index, } = vNode;
61
+ vNode.prev = { props, memoizedProps, index };
62
+ vNode.flags &= ~(FLAG_UPDATE | FLAG_PLACEMENT | FLAG_DELETION);
63
+ }
64
+ function vNodeContains(haystack, needle) {
65
+ if (needle.depth < haystack.depth)
66
+ return false;
67
+ if (haystack === needle)
68
+ return true;
69
+ let checkSiblings = false;
70
+ const stack = [haystack];
71
+ while (stack.length) {
72
+ const n = stack.pop();
73
+ if (n === needle)
74
+ return true;
75
+ n.child && stack.push(n.child);
76
+ checkSiblings && n.sibling && stack.push(n.sibling);
77
+ checkSiblings = true;
78
+ }
79
+ return false;
80
+ }
81
+ function traverseApply(vNode, func) {
82
+ func(vNode);
83
+ let child = vNode.child;
84
+ while (child) {
85
+ func(child);
86
+ if (child.child) {
87
+ traverseApply(child, func);
88
+ }
89
+ child = child.sibling;
90
+ }
91
+ }
92
+ function findParent(vNode, predicate) {
93
+ let n = vNode.parent;
94
+ while (n) {
95
+ if (predicate(n))
96
+ return n;
97
+ n = n.parent;
98
+ }
99
+ return null;
100
+ }
101
+ function findParentErrorBoundary(vNode) {
102
+ return findParent(vNode, (n) => n.type === $ERROR_BOUNDARY);
103
+ }
104
+ function assertValidElementProps(vNode) {
105
+ if ("children" in vNode.props && vNode.props.innerHTML) {
106
+ throw new KiruError({
107
+ message: "Cannot use both children and innerHTML on an element",
108
+ vNode,
109
+ });
110
+ }
111
+ for (const key in vNode.props) {
112
+ if ("bind:" + key in vNode.props) {
113
+ throw new KiruError({
114
+ message: `Cannot use both bind:${key} and ${key} on an element`,
115
+ vNode,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ function isValidElementKeyProp(thing) {
121
+ return typeof thing === "string" || typeof thing === "number";
122
+ }
123
+ function isValidElementRefProp(thing) {
124
+ return (typeof thing === "function" ||
125
+ (typeof thing === "object" && !!thing && "current" in thing) ||
126
+ Signal.isSignal(thing));
127
+ }
128
+ //# sourceMappingURL=vdom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vdom.js","sourceRoot":"","sources":["../../src/utils/vdom.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiru",
3
- "version": "0.48.3",
3
+ "version": "0.50.0-preview.0",
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",
@@ -15,16 +15,16 @@
15
15
  "default": "./dist/form/index.js"
16
16
  },
17
17
  "./router": {
18
- "types": "./dist/router/index.d.ts",
19
- "default": "./dist/router/index.js"
18
+ "types": "./dist/components/router/index.d.ts",
19
+ "default": "./dist/components/router/index.js"
20
20
  },
21
21
  "./swr": {
22
22
  "types": "./dist/swr.d.ts",
23
23
  "default": "./dist/swr.js"
24
24
  },
25
25
  "./utils": {
26
- "types": "./dist/utils.d.ts",
27
- "default": "./dist/utils.js"
26
+ "types": "./dist/utils/index.d.ts",
27
+ "default": "./dist/utils/index.js"
28
28
  },
29
29
  "./ssr": {
30
30
  "types": "./dist/ssr/index.d.ts",
@@ -75,7 +75,7 @@
75
75
  },
76
76
  "scripts": {
77
77
  "build": "rm -rf dist && pnpm i && tsc",
78
- "test": "node --test",
78
+ "test": "node --test dist/**/*.test.js",
79
79
  "dev": "tsc --watch"
80
80
  }
81
81
  }
package/src/action.ts ADDED
@@ -0,0 +1,42 @@
1
+ export type ActionResult<T> =
2
+ | {
3
+ error: ActionError
4
+ data: null
5
+ }
6
+ | {
7
+ error: null
8
+ data: T
9
+ }
10
+
11
+ export interface ActionConfig<T> {
12
+ /**
13
+ * Executes the action and returns the result.
14
+ */
15
+ execute: () => Promise<T>
16
+ /**
17
+ * Called when the action fails.
18
+ */
19
+ onError?: (error: ActionError) => void
20
+ }
21
+
22
+ export class ActionError extends Error {
23
+ constructor(cause: unknown) {
24
+ super("Error occurred during action execution", { cause })
25
+ }
26
+ }
27
+
28
+ export function defineAction<T extends readonly unknown[], R>(
29
+ callback: (...args: T) => ActionConfig<R>
30
+ ): (...args: T) => Promise<ActionResult<R>> {
31
+ return async (...args: T) => {
32
+ const { execute, onError } = callback(...args)
33
+ try {
34
+ const data = await execute()
35
+ return { error: null, data }
36
+ } catch (e) {
37
+ const error = new ActionError(e)
38
+ onError?.(error)
39
+ return { error, data: null }
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,16 @@
1
+ import { $ERROR_BOUNDARY } from "../constants.js"
2
+ import { createElement } from "../index.js"
3
+
4
+ export interface ErrorBoundaryProps {
5
+ children?: JSX.Children
6
+ fallback?: JSX.Element | ((error: Error) => JSX.Element)
7
+ onError?: (error: Error) => void
8
+ }
9
+
10
+ export function ErrorBoundary({
11
+ children,
12
+ fallback,
13
+ onError,
14
+ }: ErrorBoundaryProps) {
15
+ return createElement($ERROR_BOUNDARY, { children, fallback, onError })
16
+ }
@@ -0,0 +1,6 @@
1
+ export { ErrorBoundary, type ErrorBoundaryProps } from "./errorBoundary.js"
2
+ export * from "./lazy.js"
3
+ export { memo } from "./memo.js"
4
+ export * from "./portal.js"
5
+ export * from "./suspense.js"
6
+ export * from "./transition.js"
@@ -1,18 +1,18 @@
1
- import { createElement } from "./element.js"
2
- import { __DEV__ } from "./env.js"
3
- import { KiruError } from "./error.js"
4
- import { node, renderMode } from "./globals.js"
5
- import { useContext } from "./hooks/useContext.js"
6
- import { useRef } from "./hooks/useRef.js"
7
- import { useRequestUpdate } from "./hooks/utils.js"
8
- import { hydrationStack } from "./hydration.js"
9
- import { flushSync, nextIdle } from "./scheduler.js"
1
+ import { createElement } from "../element.js"
2
+ import { __DEV__ } from "../env.js"
3
+ import { KiruError } from "../error.js"
4
+ import { node, renderMode } from "../globals.js"
5
+ import { useContext } from "../hooks/useContext.js"
6
+ import { useRef } from "../hooks/useRef.js"
7
+ import { useRequestUpdate } from "../hooks/utils.js"
8
+ import { hydrationStack } from "../hydration.js"
9
+ import { flushSync, nextIdle } from "../scheduler.js"
10
10
  import {
11
11
  HYDRATION_BOUNDARY_MARKER,
12
12
  HydrationBoundaryContext,
13
- } from "./ssr/hydrationBoundary.js"
14
- import type { SomeDom } from "./types.utils"
15
- import { noop } from "./utils.js"
13
+ } from "../ssr/hydrationBoundary.js"
14
+ import { noop } from "../utils/index.js"
15
+ import type { SomeDom } from "../types.utils"
16
16
 
17
17
  interface FCModule {
18
18
  default: Kiru.FC<any>
@@ -1,6 +1,6 @@
1
- import { $MEMO } from "./constants.js"
2
- import { createElement } from "./element.js"
3
- import { __DEV__ } from "./env.js"
1
+ import { $MEMO } from "../constants.js"
2
+ import { createElement } from "../element.js"
3
+ import { __DEV__ } from "../env.js"
4
4
 
5
5
  function _arePropsEqual<T extends Record<string, unknown>>(
6
6
  prevProps: T,
@@ -1,9 +1,9 @@
1
- import { FLAG_STATIC_DOM } from "./constants.js"
2
- import { __DEV__ } from "./env.js"
3
- import { KiruError } from "./error.js"
4
- import { renderMode } from "./globals.js"
5
- import { useVNode } from "./hooks/utils.js"
6
- import { nextIdle, requestUpdate } from "./scheduler.js"
1
+ import { FLAG_STATIC_DOM } from "../constants.js"
2
+ import { __DEV__ } from "../env.js"
3
+ import { KiruError } from "../error.js"
4
+ import { renderMode } from "../globals.js"
5
+ import { useVNode } from "../hooks/utils.js"
6
+ import { nextIdle, requestUpdate } from "../scheduler.js"
7
7
 
8
8
  interface PortalProps {
9
9
  children?: JSX.Children
@@ -1,4 +1,4 @@
1
- import { isVNode } from "../utils.js"
1
+ import { isVNode } from "../../utils/index.js"
2
2
 
3
3
  interface RouteProps {
4
4
  /**
@@ -1,23 +1,23 @@
1
- import { createElement } from "../element.js"
1
+ import { createElement } from "../../element.js"
2
2
  import {
3
3
  useState,
4
4
  useMemo,
5
5
  useContext,
6
6
  useLayoutEffect,
7
7
  useRef,
8
- } from "../hooks/index.js"
9
- import { __DEV__ } from "../env.js"
8
+ } from "../../hooks/index.js"
9
+ import { __DEV__ } from "../../env.js"
10
+ import { createContext } from "../../context.js"
11
+ import { isRoute, Route } from "./route.js"
12
+ import { noop } from "../../utils/index.js"
13
+ import { node } from "../../globals.js"
14
+ import type { ElementProps } from "../../types.js"
15
+ import { flushSync, nextIdle } from "../../scheduler.js"
10
16
  import {
11
17
  parsePathParams,
12
18
  parseSearchParams,
13
19
  routeMatchesPath,
14
20
  } from "./routerUtils.js"
15
- import { createContext } from "../context.js"
16
- import { isRoute, Route } from "./route.js"
17
- import { noop } from "../utils.js"
18
- import { node } from "../globals.js"
19
- import type { ElementProps } from "../types"
20
- import { flushSync, nextIdle } from "../scheduler.js"
21
21
 
22
22
  export interface LinkProps extends Omit<ElementProps<"a">, "href"> {
23
23
  /**