kiru 1.4.0 → 1.5.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 (110) hide show
  1. package/dist/components/derive.d.ts +1 -1
  2. package/dist/components/derive.d.ts.map +1 -1
  3. package/dist/constants.d.ts +2 -1
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +2 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/devtools.d.ts +1 -1
  8. package/dist/devtools.d.ts.map +1 -1
  9. package/dist/dom/nodes.d.ts +1 -1
  10. package/dist/dom/nodes.d.ts.map +1 -1
  11. package/dist/dom/nodes.js.map +1 -1
  12. package/dist/dom/props.js.map +1 -1
  13. package/dist/globalContext.d.ts +2 -2
  14. package/dist/globalContext.d.ts.map +1 -1
  15. package/dist/headlessRender.d.ts.map +1 -1
  16. package/dist/headlessRender.js +3 -0
  17. package/dist/headlessRender.js.map +1 -1
  18. package/dist/hooks/onCleanup.d.ts.map +1 -1
  19. package/dist/hooks/onCleanup.js +3 -1
  20. package/dist/hooks/onCleanup.js.map +1 -1
  21. package/dist/hooks/setup.d.ts.map +1 -1
  22. package/dist/hooks/setup.js +108 -63
  23. package/dist/hooks/setup.js.map +1 -1
  24. package/dist/hooks/utils.d.ts.map +1 -1
  25. package/dist/hooks/utils.js +2 -1
  26. package/dist/hooks/utils.js.map +1 -1
  27. package/dist/hydration.d.ts +1 -1
  28. package/dist/hydration.d.ts.map +1 -1
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/profiling.d.ts +1 -1
  32. package/dist/profiling.d.ts.map +1 -1
  33. package/dist/reconciler.d.ts.map +1 -1
  34. package/dist/reconciler.js +38 -6
  35. package/dist/reconciler.js.map +1 -1
  36. package/dist/resource.d.ts +11 -5
  37. package/dist/resource.d.ts.map +1 -1
  38. package/dist/resource.js +83 -39
  39. package/dist/resource.js.map +1 -1
  40. package/dist/router/client/index.d.ts +1 -1
  41. package/dist/router/client/index.d.ts.map +1 -1
  42. package/dist/router/globals.d.ts +2 -2
  43. package/dist/router/globals.d.ts.map +1 -1
  44. package/dist/router/link.d.ts +1 -1
  45. package/dist/router/link.d.ts.map +1 -1
  46. package/dist/router/pageConfig.d.ts +1 -1
  47. package/dist/router/pageConfig.d.ts.map +1 -1
  48. package/dist/router/types.d.ts +3 -3
  49. package/dist/router/types.d.ts.map +1 -1
  50. package/dist/router/types.internal.d.ts +2 -2
  51. package/dist/router/types.internal.d.ts.map +1 -1
  52. package/dist/router/utils/index.d.ts +2 -2
  53. package/dist/router/utils/index.d.ts.map +1 -1
  54. package/dist/scheduler.d.ts.map +1 -1
  55. package/dist/scheduler.js +15 -2
  56. package/dist/scheduler.js.map +1 -1
  57. package/dist/signals/base.d.ts +1 -0
  58. package/dist/signals/base.d.ts.map +1 -1
  59. package/dist/signals/base.js +14 -2
  60. package/dist/signals/base.js.map +1 -1
  61. package/dist/signals/effect.d.ts.map +1 -1
  62. package/dist/signals/effect.js +8 -0
  63. package/dist/signals/effect.js.map +1 -1
  64. package/dist/signals/tracking.d.ts.map +1 -1
  65. package/dist/signals/tracking.js +13 -14
  66. package/dist/signals/tracking.js.map +1 -1
  67. package/dist/ssr/client.d.ts +1 -1
  68. package/dist/ssr/client.d.ts.map +1 -1
  69. package/dist/types.d.ts +31 -7
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/types.dom.d.ts +190 -2
  72. package/dist/types.dom.d.ts.map +1 -1
  73. package/dist/types.utils.d.ts +28 -21
  74. package/dist/types.utils.d.ts.map +1 -1
  75. package/dist/utils/vdom.d.ts.map +1 -1
  76. package/dist/utils/vdom.js +5 -2
  77. package/dist/utils/vdom.js.map +1 -1
  78. package/package.json +1 -1
  79. package/src/components/derive.ts +1 -1
  80. package/src/constants.ts +2 -0
  81. package/src/devtools.ts +1 -1
  82. package/src/dom/commit.ts +1 -1
  83. package/src/dom/nodes.ts +8 -3
  84. package/src/dom/props.ts +6 -6
  85. package/src/globalContext.ts +2 -2
  86. package/src/headlessRender.ts +4 -1
  87. package/src/hooks/onCleanup.ts +3 -1
  88. package/src/hooks/setup.ts +133 -80
  89. package/src/hooks/utils.ts +2 -1
  90. package/src/hydration.ts +1 -1
  91. package/src/index.ts +1 -1
  92. package/src/profiling.ts +1 -1
  93. package/src/reconciler.ts +51 -9
  94. package/src/resource.ts +112 -44
  95. package/src/router/client/index.ts +2 -2
  96. package/src/router/globals.ts +2 -2
  97. package/src/router/link.ts +1 -1
  98. package/src/router/pageConfig.ts +1 -1
  99. package/src/router/types.internal.ts +2 -2
  100. package/src/router/types.ts +3 -3
  101. package/src/router/utils/index.ts +1 -1
  102. package/src/scheduler.ts +20 -3
  103. package/src/signals/base.ts +20 -2
  104. package/src/signals/effect.ts +8 -0
  105. package/src/signals/tracking.ts +17 -15
  106. package/src/ssr/client.ts +1 -1
  107. package/src/types.dom.ts +270 -53
  108. package/src/types.ts +36 -32
  109. package/src/types.utils.ts +56 -22
  110. package/src/utils/vdom.ts +7 -1
package/src/types.dom.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Signal } from "./signals"
2
- import type { Prettify, Signalable } from "./types.utils"
1
+ import type { Signal } from "./signals/base.js"
2
+ import type { Prettify, Signalable } from "./types.utils.js"
3
3
 
4
4
  export type {
5
5
  HTMLTagToElement,
@@ -16,8 +16,8 @@ type HTMLTagToElement<T extends keyof HtmlElementAttributes> =
16
16
  T extends keyof HTMLElementTagNameMap
17
17
  ? HTMLElementTagNameMap[T]
18
18
  : T extends keyof HTMLElementDeprecatedTagNameMap
19
- ? HTMLElementDeprecatedTagNameMap[T]
20
- : never
19
+ ? HTMLElementDeprecatedTagNameMap[T]
20
+ : never
21
21
 
22
22
  type SVGTagToElement<T extends keyof SvgElementAttributes> =
23
23
  T extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[T] : never
@@ -369,53 +369,81 @@ declare global {
369
369
  bivarianceHack(event: E): void
370
370
  }["bivarianceHack"]
371
371
 
372
- interface BaseEvent<T extends DomElement = DomElement>
373
- extends DOMEvent<Event, T> {}
374
-
375
- interface AnimationEvent<T extends DomElement = DomElement>
376
- extends DOMEvent<NativeAnimationEvent, T> {}
377
-
378
- interface ClipboardEvent<T extends DomElement = DomElement>
379
- extends DOMEvent<NativeClipboardEvent, T> {}
380
-
381
- interface CompositionEvent<T extends DomElement = DomElement>
382
- extends DOMEvent<NativeCompositionEvent, T> {}
383
-
384
- interface DragEvent<T extends DomElement = DomElement>
385
- extends DOMEvent<NativeDragEvent, T> {}
386
-
387
- interface FocusEvent<T extends DomElement = DomElement>
388
- extends DOMEvent<NativeFocusEvent, T> {}
389
-
390
- interface FormEvent<T extends DomElement = DomElement>
391
- extends DOMEvent<Event, T> {}
392
-
393
- interface KeyboardEvent<T extends DomElement = DomElement>
394
- extends DOMEvent<NativeKeyboardEvent, T> {}
395
-
396
- interface MouseEvent<T extends DomElement = DomElement>
397
- extends DOMEvent<NativeMouseEvent, T> {}
398
-
399
- interface PointerEvent<T extends DomElement = DomElement>
400
- extends DOMEvent<NativePointerEvent, T> {}
401
-
402
- interface SubmitEvent<T extends DomElement = DomElement>
403
- extends DOMEvent<NativeSubmitEvent, T> {}
404
-
405
- interface TouchEvent<T extends DomElement = DomElement>
406
- extends DOMEvent<NativeTouchEvent, T> {}
407
-
408
- interface ToggleEvent<T extends DomElement = DomElement>
409
- extends DOMEvent<NativeToggleEvent, T> {}
410
-
411
- interface TransitionEvent<T extends DomElement = DomElement>
412
- extends DOMEvent<NativeTransitionEvent, T> {}
413
-
414
- interface UIEvent<T extends DomElement = DomElement>
415
- extends DOMEvent<NativeUIEvent, T> {}
416
-
417
- interface WheelEvent<T extends DomElement = DomElement>
418
- extends DOMEvent<NativeWheelEvent, T> {}
372
+ interface BaseEvent<T extends DomElement = DomElement> extends DOMEvent<
373
+ Event,
374
+ T
375
+ > {}
376
+
377
+ interface AnimationEvent<
378
+ T extends DomElement = DomElement,
379
+ > extends DOMEvent<NativeAnimationEvent, T> {}
380
+
381
+ interface ClipboardEvent<
382
+ T extends DomElement = DomElement,
383
+ > extends DOMEvent<NativeClipboardEvent, T> {}
384
+
385
+ interface CompositionEvent<
386
+ T extends DomElement = DomElement,
387
+ > extends DOMEvent<NativeCompositionEvent, T> {}
388
+
389
+ interface DragEvent<T extends DomElement = DomElement> extends DOMEvent<
390
+ NativeDragEvent,
391
+ T
392
+ > {}
393
+
394
+ interface FocusEvent<T extends DomElement = DomElement> extends DOMEvent<
395
+ NativeFocusEvent,
396
+ T
397
+ > {}
398
+
399
+ interface FormEvent<T extends DomElement = DomElement> extends DOMEvent<
400
+ Event,
401
+ T
402
+ > {}
403
+
404
+ interface KeyboardEvent<T extends DomElement = DomElement> extends DOMEvent<
405
+ NativeKeyboardEvent,
406
+ T
407
+ > {}
408
+
409
+ interface MouseEvent<T extends DomElement = DomElement> extends DOMEvent<
410
+ NativeMouseEvent,
411
+ T
412
+ > {}
413
+
414
+ interface PointerEvent<T extends DomElement = DomElement> extends DOMEvent<
415
+ NativePointerEvent,
416
+ T
417
+ > {}
418
+
419
+ interface SubmitEvent<T extends DomElement = DomElement> extends DOMEvent<
420
+ NativeSubmitEvent,
421
+ T
422
+ > {}
423
+
424
+ interface TouchEvent<T extends DomElement = DomElement> extends DOMEvent<
425
+ NativeTouchEvent,
426
+ T
427
+ > {}
428
+
429
+ interface ToggleEvent<T extends DomElement = DomElement> extends DOMEvent<
430
+ NativeToggleEvent,
431
+ T
432
+ > {}
433
+
434
+ interface TransitionEvent<
435
+ T extends DomElement = DomElement,
436
+ > extends DOMEvent<NativeTransitionEvent, T> {}
437
+
438
+ interface UIEvent<T extends DomElement = DomElement> extends DOMEvent<
439
+ NativeUIEvent,
440
+ T
441
+ > {}
442
+
443
+ interface WheelEvent<T extends DomElement = DomElement> extends DOMEvent<
444
+ NativeWheelEvent,
445
+ T
446
+ > {}
419
447
 
420
448
  type BaseEventHandler<T extends DomElement = DomElement> = EventHandler<
421
449
  BaseEvent<T>
@@ -466,8 +494,9 @@ declare global {
466
494
  ) => void
467
495
  }
468
496
 
469
- interface EventAttributes<T extends DomElement = DomElement>
470
- extends CustomEventAttributes {
497
+ interface EventAttributes<
498
+ T extends DomElement = DomElement,
499
+ > extends CustomEventAttributes {
471
500
  // Clipboard Events
472
501
  oncopy?: ClipboardEventHandler<T> | undefined
473
502
  oncut?: ClipboardEventHandler<T> | undefined
@@ -1035,6 +1064,7 @@ interface HtmlElementAttributes {
1035
1064
  ev: PictureInPictureEvent
1036
1065
  ) => void
1037
1066
  }
1067
+ wbr: {}
1038
1068
  }
1039
1069
 
1040
1070
  interface SvgGlobalAttributes {
@@ -1091,6 +1121,46 @@ interface FeFuncAttributes {
1091
1121
  }
1092
1122
 
1093
1123
  interface SvgElementAttributes {
1124
+ animate: {
1125
+ begin?: string
1126
+ dur?: string
1127
+ end?: string
1128
+ min?: string
1129
+ max?: string
1130
+ restart?: "always" | "whenNotActive" | "never"
1131
+ repeatCount?: "indefinite" | number
1132
+ repeatDur?: string
1133
+ fill?: "freeze" | "remove" | "default"
1134
+ calcMode?: "linear" | "discrete" | "spline" | "paced"
1135
+ keyTimes?: string
1136
+ keySplines?: string
1137
+ values?: string
1138
+ from?: string
1139
+ to?: string
1140
+ by?: string
1141
+ attributeName?: string
1142
+ attributeType?: "CSS" | "XML"
1143
+ additive?: "replace" | "sum"
1144
+ accumulate?: "none" | "sum"
1145
+ }
1146
+ animateMotion: {
1147
+ begin?: string
1148
+ dur?: string
1149
+ end?: string
1150
+ min?: string
1151
+ max?: string
1152
+ restart?: "always" | "whenNotActive" | "never"
1153
+ repeatCount?: "indefinite" | number
1154
+ repeatDur?: string
1155
+ fill?: "freeze" | "remove" | "default"
1156
+ calcMode?: "linear" | "discrete" | "spline" | "paced"
1157
+ keyTimes?: string
1158
+ keySplines?: string
1159
+ path?: string
1160
+ keyPoints?: string
1161
+ rotate?: "none" | (string & {})
1162
+ origin?: string
1163
+ }
1094
1164
  animateTransform: {
1095
1165
  begin?: string
1096
1166
  dur?: string
@@ -1126,6 +1196,69 @@ interface SvgElementAttributes {
1126
1196
  }
1127
1197
  defs: {}
1128
1198
  desc: {}
1199
+ foreignObject: {
1200
+ x?: string | number
1201
+ y?: string | number
1202
+ width?: string | number
1203
+ height?: string | number
1204
+ requiredExtensions?: string
1205
+ requiredFeatures?: string
1206
+ systemLanguage?: string
1207
+ }
1208
+ marker: {
1209
+ markerUnits?: "userSpaceOnUse" | "strokeWidth"
1210
+ markerWidth?: string | number
1211
+ markerHeight?: string | number
1212
+ refX?: string | number
1213
+ refY?: string | number
1214
+ orient?: "auto" | "auto-start-reverse" | string
1215
+ viewBox?: string
1216
+ }
1217
+ metadata: {}
1218
+ mpath: {
1219
+ href?: string
1220
+ "xlink:href"?: string
1221
+ }
1222
+ set: {
1223
+ begin?: string
1224
+ dur?: string
1225
+ end?: string
1226
+ min?: string
1227
+ max?: string
1228
+ restart?: "always" | "whenNotActive" | "never"
1229
+ repeatCount?: "indefinite" | number
1230
+ repeatDur?: string
1231
+ fill?: "freeze" | "remove" | "default"
1232
+ attributeName?: string
1233
+ attributeType?: "CSS" | "XML"
1234
+ to?: string
1235
+ }
1236
+ switch: {
1237
+ requiredExtensions?: string
1238
+ requiredFeatures?: string
1239
+ systemLanguage?: string
1240
+ }
1241
+ symbol: {
1242
+ x?: string | number
1243
+ y?: string | number
1244
+ width?: string | number
1245
+ height?: string | number
1246
+ viewBox?: string
1247
+ preserveAspectRatio?: string
1248
+ }
1249
+ use: {
1250
+ href?: string
1251
+ "xlink:href"?: string
1252
+ x?: string | number
1253
+ y?: string | number
1254
+ width?: string | number
1255
+ height?: string | number
1256
+ }
1257
+ view: {
1258
+ viewBox?: string
1259
+ preserveAspectRatio?: string
1260
+ zoomAndPan?: "magnify" | "disable" | string
1261
+ }
1129
1262
  ellipse: SvgStrokeAttributes & {
1130
1263
  cx?: string | number
1131
1264
  cy?: string | number
@@ -1140,6 +1273,90 @@ interface SvgElementAttributes {
1140
1273
  in2?: string
1141
1274
  result?: string
1142
1275
  }
1276
+ feColorMatrix: {
1277
+ in?: string
1278
+ type?: "matrix" | "saturate" | "hueRotate" | "luminanceToAlpha"
1279
+ values?: string
1280
+ result?: string
1281
+ }
1282
+ feComposite: {
1283
+ in?: string
1284
+ in2?: string
1285
+ operator?: "over" | "in" | "out" | "atop" | "xor" | "arithmetic"
1286
+ k1?: string | number
1287
+ k2?: string | number
1288
+ k3?: string | number
1289
+ k4?: string | number
1290
+ result?: string
1291
+ }
1292
+ feConvolveMatrix: {
1293
+ in?: string
1294
+ order?: string
1295
+ kernelMatrix?: string
1296
+ divisor?: string | number
1297
+ bias?: string | number
1298
+ targetX?: string | number
1299
+ targetY?: string | number
1300
+ edgeMode?: "duplicate" | "wrap" | "none"
1301
+ preserveAlpha?: boolean
1302
+ result?: string
1303
+ }
1304
+ feDiffuseLighting: {
1305
+ in?: string
1306
+ surfaceScale?: string | number
1307
+ diffuseConstant?: string | number
1308
+ kernelUnitLength?: string
1309
+ lightingColor?: string
1310
+ azimuth?: string | number
1311
+ elevation?: string | number
1312
+ result?: string
1313
+ }
1314
+ feImage: {
1315
+ x?: string | number
1316
+ y?: string | number
1317
+ width?: string | number
1318
+ height?: string | number
1319
+ preserveAspectRatio?: string
1320
+ href?: string
1321
+ result?: string
1322
+ }
1323
+ feMerge: {
1324
+ result?: string
1325
+ }
1326
+ feMergeNode: {
1327
+ in?: string
1328
+ }
1329
+ feMorphology: {
1330
+ in?: string
1331
+ operator?: "erode" | "dilate"
1332
+ radius?: string | number
1333
+ result?: string
1334
+ }
1335
+ feOffset: {
1336
+ in?: string
1337
+ dx?: string | number
1338
+ dy?: string | number
1339
+ result?: string
1340
+ }
1341
+ feSpecularLighting: {
1342
+ in?: string
1343
+ surfaceScale?: string | number
1344
+ specularConstant?: string | number
1345
+ specularExponent?: string | number
1346
+ kernelUnitLength?: string
1347
+ lightingColor?: string
1348
+ azimuth?: string | number
1349
+ elevation?: string | number
1350
+ result?: string
1351
+ }
1352
+ feTile: {
1353
+ in?: string
1354
+ x?: string | number
1355
+ y?: string | number
1356
+ width?: string | number
1357
+ height?: string | number
1358
+ result?: string
1359
+ }
1143
1360
  feFuncR: FeFuncAttributes
1144
1361
  feFuncG: FeFuncAttributes
1145
1362
  feFuncB: FeFuncAttributes
package/src/types.ts CHANGED
@@ -1,6 +1,11 @@
1
- import type { Signal as SignalClass } from "./signals"
2
- import type { $CONTEXT, $ERROR_BOUNDARY, $FRAGMENT } from "./constants"
3
- import type { KiruGlobalContext } from "./globalContext"
1
+ import type { Signal as SignalClass } from "./signals/base.js"
2
+ import type {
3
+ $CONTEXT,
4
+ $ERROR_BOUNDARY,
5
+ $FRAGMENT,
6
+ $INLINE_FN,
7
+ } from "./constants.js"
8
+ import type { KiruGlobalContext } from "./globalContext.js"
4
9
  import type {
5
10
  GlobalAttributes,
6
11
  HtmlElementAttributes,
@@ -10,14 +15,14 @@ import type {
10
15
  HtmlElementBindableProps,
11
16
  HTMLTagToElement,
12
17
  SVGTagToElement,
13
- } from "./types.dom"
18
+ } from "./types.dom.js"
14
19
  import type {
15
20
  AsyncTaskState,
16
21
  Prettify,
17
22
  Signalable,
18
23
  SomeDom,
19
- } from "./types.utils"
20
- import type { AppHandle } from "./appHandle"
24
+ } from "./types.utils.js"
25
+ import type { AppHandle } from "./appHandle.js"
21
26
 
22
27
  export type { AsyncTaskState, ElementProps, Prettify, Signalable, StyleObject }
23
28
 
@@ -131,7 +136,6 @@ declare global {
131
136
  input: HTMLElementProps<"input">
132
137
  ins: HTMLElementProps<"ins">
133
138
  kbd: HTMLElementProps<"kbd">
134
- //keygen: HTMLElementProps<"keygen">
135
139
  label: HTMLElementProps<"label">
136
140
  legend: HTMLElementProps<"legend">
137
141
  li: HTMLElementProps<"li">
@@ -140,7 +144,6 @@ declare global {
140
144
  map: HTMLElementProps<"map">
141
145
  mark: HTMLElementProps<"mark">
142
146
  menu: HTMLElementProps<"menu">
143
- //menuitem: HTMLElementProps<"menuitem">
144
147
  meta: HTMLElementProps<"meta">
145
148
  meter: HTMLElementProps<"meter">
146
149
  nav: HTMLElementProps<"nav">
@@ -187,12 +190,11 @@ declare global {
187
190
  ul: HTMLElementProps<"ul">
188
191
  var: HTMLElementProps<"var">
189
192
  video: HTMLElementProps<"video">
190
- //wbr: HTMLElementProps<"wbr">
191
- //webview: HTMLElementProps<"webview">
193
+ wbr: HTMLElementProps<"wbr">
192
194
 
193
195
  // SVG
194
- // animate: SVGElementProps<"animate">
195
- // animateMotion: SVGElementProps<"animateMotion">
196
+ animate: SVGElementProps<"animate">
197
+ animateMotion: SVGElementProps<"animateMotion">
196
198
  animateTransform: SVGElementProps<"animateTransform">
197
199
  circle: SVGElementProps<"circle">
198
200
  clipPath: SVGElementProps<"clipPath">
@@ -200,11 +202,11 @@ declare global {
200
202
  desc: SVGElementProps<"desc">
201
203
  ellipse: SVGElementProps<"ellipse">
202
204
  feBlend: SVGElementProps<"feBlend">
203
- //feColorMatrix: SVGElementProps<"feColorMatrix">
205
+ feColorMatrix: SVGElementProps<"feColorMatrix">
204
206
  feComponentTransfer: SVGElementProps<"feComponentTransfer">
205
- // feComposite: SVGElementProps<"feComposite">
206
- // feConvolveMatrix: SVGElementProps<"feConvolveMatrix">
207
- // feDiffuseLighting: SVGElementProps<"feDiffuseLighting">
207
+ feComposite: SVGElementProps<"feComposite">
208
+ feConvolveMatrix: SVGElementProps<"feConvolveMatrix">
209
+ feDiffuseLighting: SVGElementProps<"feDiffuseLighting">
208
210
  feDisplacementMap: SVGElementProps<"feDisplacementMap">
209
211
  feDropShadow: SVGElementProps<"feDropShadow">
210
212
  feFlood: SVGElementProps<"feFlood">
@@ -213,40 +215,41 @@ declare global {
213
215
  feFuncG: SVGElementProps<"feFuncG">
214
216
  feFuncR: SVGElementProps<"feFuncR">
215
217
  feGaussianBlur: SVGElementProps<"feGaussianBlur">
216
- // feImage: SVGElementProps<"feImage">
217
- // feMerge: SVGElementProps<"feMerge">
218
- // feMergeNode: SVGElementProps<"feMergeNode">
219
- // feMorphology: SVGElementProps<"feMorphology">
220
- // feOffset: SVGElementProps<"feOffset">
221
- // feSpecularLighting: SVGElementProps<"feSpecularLighting">
222
- // feTile: SVGElementProps<"feTile">
218
+ feImage: SVGElementProps<"feImage">
219
+ feMerge: SVGElementProps<"feMerge">
220
+ feMergeNode: SVGElementProps<"feMergeNode">
221
+ feMorphology: SVGElementProps<"feMorphology">
222
+ feOffset: SVGElementProps<"feOffset">
223
+ feSpotLight: SVGElementProps<"feSpotLight">
224
+ feSpecularLighting: SVGElementProps<"feSpecularLighting">
225
+ feTile: SVGElementProps<"feTile">
223
226
  feTurbulence: SVGElementProps<"feTurbulence">
224
227
  filter: SVGElementProps<"filter">
225
- // foreignObject: SVGElementProps<"foreignObject">
228
+ foreignObject: SVGElementProps<"foreignObject">
226
229
  g: SVGElementProps<"g">
227
230
  image: SVGElementProps<"image">
228
231
  line: SVGElementProps<"line">
229
232
  linearGradient: SVGElementProps<"linearGradient">
230
- // marker: SVGElementProps<"marker">
233
+ marker: SVGElementProps<"marker">
231
234
  mask: SVGElementProps<"mask">
232
- // metadata: SVGElementProps<"metadata">
233
- // mpath: SVGElementProps<"mpath">
235
+ metadata: SVGElementProps<"metadata">
236
+ mpath: SVGElementProps<"mpath">
234
237
  path: SVGElementProps<"path">
235
238
  pattern: SVGElementProps<"pattern">
236
239
  polygon: SVGElementProps<"polygon">
237
240
  polyline: SVGElementProps<"polyline">
238
241
  radialGradient: SVGElementProps<"radialGradient">
239
242
  rect: SVGElementProps<"rect">
240
- // set: SVGElementProps<"set">
243
+ set: SVGElementProps<"set">
241
244
  stop: SVGElementProps<"stop">
242
- // switch: SVGElementProps<"switch">
243
- // symbol: SVGElementProps<"symbol">
245
+ switch: SVGElementProps<"switch">
246
+ symbol: SVGElementProps<"symbol">
244
247
  text: SVGElementProps<"text">
245
248
  textPath: SVGElementProps<"textPath">
246
249
  tspan: SVGElementProps<"tspan">
247
250
  svg: SVGElementProps<"svg">
248
- // use: SVGElementProps<"use">
249
- // view: SVGElementProps<"view">
251
+ use: SVGElementProps<"use">
252
+ view: SVGElementProps<"view">
250
253
  }
251
254
 
252
255
  interface IntrinsicAttributes {
@@ -332,6 +335,7 @@ declare global {
332
335
  | typeof $FRAGMENT
333
336
  | typeof $CONTEXT
334
337
  | typeof $ERROR_BOUNDARY
338
+ | typeof $INLINE_FN
335
339
 
336
340
  interface Element {
337
341
  type:
@@ -1,26 +1,53 @@
1
- import type { $CONTEXT, $ERROR_BOUNDARY, $FRAGMENT } from "./constants"
2
- import type { Signal } from "./signals"
3
- import type { ErrorBoundaryProps } from "./components/errorBoundary"
1
+ import type {
2
+ $CONTEXT,
3
+ $ERROR_BOUNDARY,
4
+ $FRAGMENT,
5
+ $INLINE_FN,
6
+ } from "./constants.js"
7
+ import type { Signal } from "./signals/base.js"
8
+ import type { ErrorBoundaryProps } from "./components/errorBoundary.js"
4
9
 
5
- export type SomeElement = HTMLElement | SVGElement
6
- export type SomeDom = HTMLElement | SVGElement | Text
7
- export type MaybeElement = SomeElement | undefined
8
- export type MaybeDom = SomeDom | undefined
10
+ export type {
11
+ SomeElement,
12
+ SomeDom,
13
+ MaybeElement,
14
+ MaybeDom,
15
+ FunctionVNode,
16
+ ElementVNode,
17
+ DomVNode,
18
+ ContextNode,
19
+ ErrorBoundaryNode,
20
+ FragmentNode,
21
+ InlineFnNode,
22
+ Prettify,
23
+ Signalable,
24
+ AsyncTaskState,
25
+ Guard,
26
+ ArrayHas,
27
+ RecordHas,
28
+ Falsy,
29
+ Truthy,
30
+ }
31
+
32
+ type SomeElement = HTMLElement | SVGElement
33
+ type SomeDom = HTMLElement | SVGElement | Text
34
+ type MaybeElement = SomeElement | undefined
35
+ type MaybeDom = SomeDom | undefined
9
36
 
10
- export interface FunctionVNode extends Kiru.VNode {
37
+ interface FunctionVNode extends Kiru.VNode {
11
38
  type: (props: Record<string, unknown>) => JSX.Element
12
39
  }
13
40
 
14
- export interface ElementVNode extends Kiru.VNode {
41
+ interface ElementVNode extends Kiru.VNode {
15
42
  dom: SomeElement
16
43
  type: string
17
44
  }
18
- export interface DomVNode extends Kiru.VNode {
45
+ interface DomVNode extends Kiru.VNode {
19
46
  dom: SomeDom
20
47
  type: "#text" | (string & {})
21
48
  }
22
49
 
23
- export interface ContextNode<T> extends Kiru.VNode {
50
+ interface ContextNode<T> extends Kiru.VNode {
24
51
  type: typeof $CONTEXT
25
52
  props: Kiru.VNode["props"] & {
26
53
  value: T
@@ -28,23 +55,30 @@ export interface ContextNode<T> extends Kiru.VNode {
28
55
  }
29
56
  }
30
57
 
31
- export interface ErrorBoundaryNode extends Kiru.VNode {
58
+ interface ErrorBoundaryNode extends Kiru.VNode {
32
59
  type: typeof $ERROR_BOUNDARY
33
60
  props: ErrorBoundaryProps
34
61
  error?: Error
35
62
  }
36
63
 
37
- export interface FragmentNode extends Kiru.VNode {
64
+ interface FragmentNode extends Kiru.VNode {
38
65
  type: typeof $FRAGMENT
39
66
  }
40
67
 
41
- export type Prettify<T> = {
68
+ interface InlineFnNode extends Kiru.VNode {
69
+ type: typeof $INLINE_FN
70
+ props: {
71
+ expr: () => JSX.Element
72
+ }
73
+ }
74
+
75
+ type Prettify<T> = {
42
76
  [K in keyof T]: T[K]
43
77
  } & {}
44
78
 
45
- export type Signalable<T> = T | Signal<T>
79
+ type Signalable<T> = T | Signal<T>
46
80
 
47
- export type AsyncTaskState<T, E extends Error = Error> =
81
+ type AsyncTaskState<T, E extends Error = Error> =
48
82
  | {
49
83
  data: null
50
84
  error: null
@@ -61,19 +95,19 @@ export type AsyncTaskState<T, E extends Error = Error> =
61
95
  loading: false
62
96
  }
63
97
 
64
- export type Guard<T, K extends keyof T> = {
98
+ type Guard<T, K extends keyof T> = {
65
99
  [P in K]: T[P]
66
100
  }
67
101
 
68
- export type ArrayHas<T extends any[], U> =
102
+ type ArrayHas<T extends any[], U> =
69
103
  // does the union of element types intersect U?
70
104
  Extract<T[number], U> extends never ? false : true
71
105
 
72
- export type RecordHas<T extends Record<string, any>, U> = [
73
- Extract<T[keyof T], U>
106
+ type RecordHas<T extends Record<string, any>, U> = [
107
+ Extract<T[keyof T], U>,
74
108
  ] extends [never]
75
109
  ? false
76
110
  : true
77
111
 
78
- export type Falsy = false | 0 | 0n | "" | null | undefined
79
- export type Truthy<T> = Exclude<T, Falsy>
112
+ type Falsy = false | 0 | 0n | "" | null | undefined
113
+ type Truthy<T> = Exclude<T, Falsy>
package/src/utils/vdom.ts CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  FLAG_UPDATE,
6
6
  $ERROR_BOUNDARY,
7
7
  $CONTEXT,
8
+ $INLINE_FN,
8
9
  } from "../constants.js"
9
10
  import { createElement } from "../index.js"
10
11
  import { KiruError } from "../error.js"
@@ -70,7 +71,12 @@ function isValidTextChild(thing: unknown): thing is string | number | bigint {
70
71
  }
71
72
 
72
73
  function isExoticType(type: Kiru.VNode["type"]): type is Kiru.ExoticSymbol {
73
- return type === $FRAGMENT || type === $CONTEXT || type === $ERROR_BOUNDARY
74
+ return (
75
+ type === $FRAGMENT ||
76
+ type === $CONTEXT ||
77
+ type === $ERROR_BOUNDARY ||
78
+ type === $INLINE_FN
79
+ )
74
80
  }
75
81
 
76
82
  function isFragment(