kiru 0.46.1 → 0.47.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 (62) hide show
  1. package/dist/appContext.d.ts +6 -17
  2. package/dist/appContext.d.ts.map +1 -1
  3. package/dist/appContext.js +39 -95
  4. package/dist/appContext.js.map +1 -1
  5. package/dist/constants.d.ts +2 -1
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +2 -1
  8. package/dist/constants.js.map +1 -1
  9. package/dist/context.d.ts.map +1 -1
  10. package/dist/context.js +0 -2
  11. package/dist/context.js.map +1 -1
  12. package/dist/dom.d.ts.map +1 -1
  13. package/dist/dom.js +10 -13
  14. package/dist/dom.js.map +1 -1
  15. package/dist/hmr.d.ts +1 -2
  16. package/dist/hmr.d.ts.map +1 -1
  17. package/dist/hmr.js +0 -2
  18. package/dist/hmr.js.map +1 -1
  19. package/dist/index.d.ts +0 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +0 -20
  22. package/dist/index.js.map +1 -1
  23. package/dist/portal.d.ts +2 -5
  24. package/dist/portal.d.ts.map +1 -1
  25. package/dist/portal.js +22 -22
  26. package/dist/portal.js.map +1 -1
  27. package/dist/profiling.d.ts +1 -1
  28. package/dist/renderToString.d.ts +1 -1
  29. package/dist/renderToString.d.ts.map +1 -1
  30. package/dist/renderToString.js +3 -6
  31. package/dist/renderToString.js.map +1 -1
  32. package/dist/scheduler.d.ts +3 -3
  33. package/dist/scheduler.d.ts.map +1 -1
  34. package/dist/scheduler.js +52 -68
  35. package/dist/scheduler.js.map +1 -1
  36. package/dist/ssr/client.d.ts +1 -2
  37. package/dist/ssr/client.d.ts.map +1 -1
  38. package/dist/ssr/client.js +6 -4
  39. package/dist/ssr/client.js.map +1 -1
  40. package/dist/ssr/server.d.ts +1 -1
  41. package/dist/ssr/server.d.ts.map +1 -1
  42. package/dist/ssr/server.js +24 -27
  43. package/dist/ssr/server.js.map +1 -1
  44. package/dist/swr.d.ts +1 -1
  45. package/dist/swr.d.ts.map +1 -1
  46. package/dist/swr.js +1 -1
  47. package/dist/swr.js.map +1 -1
  48. package/dist/utils.js +1 -1
  49. package/package.json +1 -1
  50. package/src/appContext.ts +50 -117
  51. package/src/constants.ts +2 -0
  52. package/src/context.ts +0 -1
  53. package/src/dom.ts +10 -10
  54. package/src/hmr.ts +1 -3
  55. package/src/index.ts +0 -40
  56. package/src/portal.ts +22 -26
  57. package/src/renderToString.ts +3 -9
  58. package/src/scheduler.ts +51 -70
  59. package/src/ssr/client.ts +13 -19
  60. package/src/ssr/server.ts +25 -35
  61. package/src/swr.ts +1 -1
  62. package/src/utils.ts +1 -1
package/dist/swr.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"swr.js","sourceRoot":"","sources":["../src/swr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swr.js","sourceRoot":"","sources":["../src/swr.ts"],"names":[],"mappings":"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"}
package/dist/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { node, renderMode } from "./globals.js";
2
2
  import { $CONTEXT_PROVIDER, $FRAGMENT, $HYDRATION_BOUNDARY, booleanAttributes, FLAG_DELETION, FLAG_HAS_MEMO_ANCESTOR, FLAG_PLACEMENT, FLAG_UPDATE, REGEX_UNIT, } from "./constants.js";
3
- import { unwrap } from "./signals/utils.js";
3
+ import { unwrap } from "./signals/index.js";
4
4
  import { __DEV__ } from "./env.js";
5
5
  export { isVNode, isFragment, isLazy, isMemo, className, isContextProvider, isExoticType, isVNodeDeleted, vNodeContains, willMemoBlockUpdate, getCurrentVNode, getVNodeAppContext, commitSnapshot, traverseApply, postOrderApply, findParent, propToHtmlAttr, propValueToHtmlAttrValue, propsToElementAttributes, styleObjectToString, shallowCompare, deepCompare, sideEffectsEnabled, encodeHtmlEntities, noop, latest, propFilters, safeStringify, };
6
6
  const noop = Object.freeze(() => { });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiru",
3
- "version": "0.46.1",
3
+ "version": "0.47.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",
package/src/appContext.ts CHANGED
@@ -1,140 +1,73 @@
1
+ import { FLAG_STATIC_DOM } from "./constants.js"
1
2
  import { createElement } from "./element.js"
2
3
  import { __DEV__ } from "./env.js"
3
- import { KiruError } from "./error.js"
4
- import { renderMode } from "./globals.js"
5
- import { hydrationStack } from "./hydration.js"
6
- import {
7
- requestDelete,
8
- requestUpdate,
9
- flushSync,
10
- nextIdle,
11
- } from "./scheduler.js"
12
- import { generateRandomID } from "./generateId.js"
4
+ import { requestUpdate, flushSync } from "./scheduler.js"
13
5
 
14
6
  type VNode = Kiru.VNode
15
7
 
16
8
  export interface AppContextOptions {
17
- root?: HTMLElement
18
- /**
19
- * @internal
20
- * Sets the root node type for the app. Used for SSR & rendering without the DOM.
21
- */
22
- rootType?: ({ children }: { children: JSX.Children }) => JSX.Element
23
9
  name?: string
24
10
  }
25
11
 
26
- export interface AppContext<T extends Record<string, unknown> = {}> {
27
- id: string
12
+ export interface AppContext {
13
+ id: number
28
14
  name: string
29
- rootNode?: VNode
30
- root?: HTMLElement
31
- mounted: boolean
32
- mount(): Promise<AppContext<T>>
33
- unmount(): Promise<AppContext<T>>
34
- setProps(fn: (oldProps: T) => T): Promise<AppContext<T>>
15
+ rootNode: VNode
16
+ render(children: JSX.Element): void
17
+ unmount(): void
35
18
  }
36
19
 
37
- export function createAppContext<T extends Record<string, unknown> = {}>(
38
- appFunc: (props: T) => JSX.Element,
39
- appProps = {} as T,
40
- options?: AppContextOptions
41
- ): AppContext<T> {
42
- const id = generateRandomID()
43
- const name = options?.name ?? "App-" + id
44
- let root = options?.root
45
- let mounted = false
46
- let appContext: AppContext<T>
20
+ let appId = 0
47
21
 
48
- const appNode = createElement(appFunc, appProps as T)
49
- appNode.depth = 1
50
- const rootNode = options?.rootType
51
- ? createElement(options.rootType, {}, appNode)
52
- : root
53
- ? createElement(root!.nodeName.toLowerCase(), {}, appNode)
54
- : void 0
55
- if (rootNode) {
56
- rootNode.depth = 0
22
+ export function mount(
23
+ children: JSX.Element,
24
+ container: HTMLElement,
25
+ options?: AppContextOptions
26
+ ): AppContext {
27
+ const rootNode = createElement(container.nodeName.toLowerCase(), {})
28
+ if (__DEV__) {
29
+ if (container.__kiruNode) {
30
+ throw new Error(
31
+ "[kiru]: container in use - call unmount on the previous app first."
32
+ )
33
+ }
34
+ container.__kiruNode = rootNode
57
35
  }
36
+ rootNode.dom = container
37
+ rootNode.flags |= FLAG_STATIC_DOM
58
38
 
59
- function mount(): Promise<AppContext<T>> {
60
- return new Promise<AppContext<T>>((resolve, reject) => {
61
- if (mounted) return resolve(appContext)
62
- if (!rootNode) return reject(new KiruError("Root node not configured"))
63
- root ??= document.body
64
- rootNode.dom = root
65
- rootNode.app = appContext
66
-
67
- if (__DEV__) {
68
- root.__kiruNode = rootNode
69
- }
70
- if (renderMode.current === "hydrate") {
71
- hydrationStack.captureEvents(root!)
72
- }
73
- nextIdle(() => {
74
- if (renderMode.current === "hydrate") {
75
- hydrationStack.releaseEvents(root!)
76
- }
77
- mounted = true
78
- if (__DEV__) {
79
- window.__kiru?.emit("mount", appContext)
80
- }
81
- resolve(appContext)
82
- }, false)
83
- requestUpdate(rootNode)
84
- flushSync()
85
- })
39
+ const id = appId++
40
+ const name = options?.name ?? `App-${id}`
41
+ const appContext: AppContext = {
42
+ id,
43
+ name,
44
+ rootNode,
45
+ render,
46
+ unmount,
86
47
  }
87
48
 
88
- function unmount(): Promise<AppContext<T>> {
89
- return new Promise<AppContext<T>>((resolve) => {
90
- if (!mounted) return resolve(appContext)
91
- if (!rootNode?.child) return resolve(appContext)
92
- requestDelete(rootNode.child)
49
+ if (__DEV__) {
50
+ rootNode.app = appContext
51
+ window.__kiru?.emit("mount", appContext)
52
+ }
93
53
 
94
- nextIdle(() => {
95
- rootNode && (rootNode.child = null)
96
- mounted = false
97
- if (__DEV__) {
98
- window.__kiru?.emit("unmount", appContext)
99
- }
100
- resolve(appContext)
101
- })
102
- })
54
+ function render(children: JSX.Element) {
55
+ rootNode.props.children = children
56
+ requestUpdate(rootNode)
57
+ flushSync()
103
58
  }
104
59
 
105
- function setProps(fn: (oldProps: T) => T): Promise<AppContext<T>> {
106
- const rootChild = rootNode?.child
107
- if (!mounted || !rootChild)
108
- throw new KiruError(
109
- "Failed to apply new props - ensure the app is mounted"
110
- )
111
- return new Promise<AppContext<T>>((resolve) => {
112
- const { children, ref, key, ...rest } = rootChild.props
113
- rootChild.props = {
114
- ...Object.assign(rest, fn(rest as T)),
115
- children,
116
- ref,
117
- key,
118
- }
119
- requestUpdate(rootChild)
120
- nextIdle(() => resolve(appContext))
121
- })
60
+ function unmount() {
61
+ rootNode.props.children = null
62
+ requestUpdate(rootNode)
63
+ flushSync()
64
+ if (__DEV__) {
65
+ delete container.__kiruNode
66
+ delete rootNode.app
67
+ window.__kiru?.emit("unmount", appContext)
68
+ }
122
69
  }
123
70
 
124
- return (appContext = {
125
- id,
126
- name,
127
- get rootNode() {
128
- return rootNode
129
- },
130
- get root() {
131
- return root
132
- },
133
- get mounted() {
134
- return mounted
135
- },
136
- mount,
137
- unmount,
138
- setProps,
139
- })
71
+ render(children)
72
+ return appContext
140
73
  }
package/src/constants.ts CHANGED
@@ -13,6 +13,7 @@ export {
13
13
  FLAG_PLACEMENT,
14
14
  FLAG_DELETION,
15
15
  FLAG_HAS_MEMO_ANCESTOR,
16
+ FLAG_STATIC_DOM,
16
17
  }
17
18
 
18
19
  export { voidElements, svgTags, booleanAttributes }
@@ -32,6 +33,7 @@ const FLAG_UPDATE = 1 << 1
32
33
  const FLAG_PLACEMENT = 1 << 2
33
34
  const FLAG_DELETION = 1 << 3
34
35
  const FLAG_HAS_MEMO_ANCESTOR = 1 << 4
36
+ const FLAG_STATIC_DOM = 1 << 5
35
37
 
36
38
  const REGEX_UNIT = {
37
39
  AMP_G: /&/g,
package/src/context.ts CHANGED
@@ -31,7 +31,6 @@ export function createContext<T>(defaultValue: T): Kiru.Context<T> {
31
31
  inject: (prev) => {
32
32
  const newProvider = ctx.Provider
33
33
  window.__kiru!.apps.forEach((ctx) => {
34
- if (!ctx.mounted || !ctx.rootNode) return
35
34
  traverseApply(ctx.rootNode, (vNode) => {
36
35
  if (vNode.type === prev.Provider) {
37
36
  vNode.type = newProvider
package/src/dom.ts CHANGED
@@ -11,13 +11,13 @@ import {
11
11
  FLAG_DELETION,
12
12
  FLAG_PLACEMENT,
13
13
  FLAG_UPDATE,
14
+ FLAG_STATIC_DOM,
14
15
  svgTags,
15
16
  } from "./constants.js"
16
17
  import { Signal, unwrap } from "./signals/index.js"
17
18
  import { renderMode } from "./globals.js"
18
19
  import { hydrationStack } from "./hydration.js"
19
20
  import { StyleObject } from "./types.dom.js"
20
- import { isPortal } from "./portal.js"
21
21
  import { __DEV__ } from "./env.js"
22
22
  import { KiruError } from "./error.js"
23
23
  import type {
@@ -146,7 +146,6 @@ const vNodeToWrappedFocusEventHandlersMap = new WeakMap<
146
146
  >()
147
147
 
148
148
  function updateDom(vNode: VNode) {
149
- if (isPortal(vNode)) return
150
149
  const dom = vNode.dom as SomeDom
151
150
  const prevProps: Record<string, any> = vNode.prev?.props ?? {}
152
151
  const nextProps: Record<string, any> = vNode.props ?? {}
@@ -363,7 +362,7 @@ function hydrateDom(vNode: VNode) {
363
362
  })
364
363
  }
365
364
  vNode.dom = dom
366
- if (vNode.type !== "#text") {
365
+ if (vNode.type !== "#text" && !(vNode.flags & FLAG_STATIC_DOM)) {
367
366
  updateDom(vNode)
368
367
  return
369
368
  }
@@ -571,8 +570,8 @@ function getNextSiblingDom(vNode: VNode, parent: ElementVNode): MaybeDom {
571
570
  let sibling = node.sibling
572
571
 
573
572
  while (sibling) {
574
- // Skip unmounted, to-be-placed & portal nodes
575
- if (!(sibling.flags & FLAG_PLACEMENT) && !isPortal(sibling)) {
573
+ // Skip unmounted, to-be-placed & static nodes
574
+ if (!(sibling.flags & (FLAG_PLACEMENT | FLAG_STATIC_DOM))) {
576
575
  // Descend into the child to find host dom
577
576
  const dom = findFirstHostDom(sibling)
578
577
  if (dom?.isConnected) return dom
@@ -582,7 +581,7 @@ function getNextSiblingDom(vNode: VNode, parent: ElementVNode): MaybeDom {
582
581
 
583
582
  // Move up to parent — but don't escape portal boundary
584
583
  node = node.parent
585
- if (!node || isPortal(node) || node === parent) {
584
+ if (!node || node.flags & FLAG_STATIC_DOM || node === parent) {
586
585
  return
587
586
  }
588
587
  }
@@ -595,7 +594,7 @@ function findFirstHostDom(vNode: VNode): MaybeDom {
595
594
 
596
595
  while (node) {
597
596
  if (node.dom) return node.dom
598
- if (isPortal(node)) return // Don't descend into portals
597
+ if (node.flags & FLAG_STATIC_DOM) return // Don't descend into portals
599
598
  node = node.child
600
599
  }
601
600
  return
@@ -656,7 +655,9 @@ function commitWork(vNode: VNode) {
656
655
  currentHostNode = { node: getDomParent(node) }
657
656
  hostNodes.push(currentHostNode)
658
657
  }
659
- commitDom(node as DomVNode, currentHostNode, inheritsPlacement)
658
+ if (!(node.flags & FLAG_STATIC_DOM)) {
659
+ commitDom(node as DomVNode, currentHostNode, inheritsPlacement)
660
+ }
660
661
  }
661
662
  commitSnapshot(node)
662
663
  },
@@ -680,7 +681,6 @@ function commitDom(
680
681
  hostNode: HostNode,
681
682
  inheritsPlacement: boolean
682
683
  ) {
683
- if (isPortal(vNode)) return
684
684
  if (
685
685
  inheritsPlacement ||
686
686
  !vNode.dom.isConnected ||
@@ -720,7 +720,7 @@ function commitDeletion(vNode: VNode) {
720
720
 
721
721
  if (dom) {
722
722
  if (ref) setDomRef(ref as Kiru.Ref<SomeDom>, null)
723
- if (dom.isConnected && !isPortal(node)) {
723
+ if (dom.isConnected && !(node.flags & FLAG_STATIC_DOM)) {
724
724
  dom.remove()
725
725
  }
726
726
  delete node.dom
package/src/hmr.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  import type { Store } from "./store"
2
- import type { WatchEffect } from "./signals/watch"
3
2
  import { $HMR_ACCEPT } from "./constants.js"
4
3
  import { __DEV__ } from "./env.js"
5
4
  import { traverseApply } from "./utils.js"
6
5
  import { requestUpdate } from "./scheduler.js"
7
- import { Signal } from "./signals/index.js"
6
+ import { Signal, type WatchEffect } from "./signals/index.js"
8
7
  import type { AppContext } from "./appContext"
9
8
 
10
9
  export type HMRAccept<T = {}> = {
@@ -119,7 +118,6 @@ export function createHMRContext() {
119
118
  }
120
119
  if (oldEntry.type === "component" && newEntry.type === "component") {
121
120
  window.__kiru!.apps.forEach((ctx) => {
122
- if (!ctx.mounted || !ctx.rootNode) return
123
121
  traverseApply(ctx.rootNode, (vNode) => {
124
122
  if (vNode.type === oldEntry.value) {
125
123
  vNode.type = newEntry.value as any
package/src/index.ts CHANGED
@@ -1,11 +1,5 @@
1
- import {
2
- createAppContext,
3
- type AppContext,
4
- type AppContextOptions,
5
- } from "./appContext.js"
6
1
  import { createKiruGlobalContext } from "./globalContext.js"
7
2
  import { __DEV__ } from "./env.js"
8
- import { KiruError } from "./error.js"
9
3
 
10
4
  export type * from "./types"
11
5
  export * from "./appContext.js"
@@ -25,37 +19,3 @@ export * from "./transition.js"
25
19
  if ("window" in globalThis) {
26
20
  globalThis.window.__kiru ??= createKiruGlobalContext()
27
21
  }
28
-
29
- export function mount<T extends Record<string, unknown>>(
30
- appFunc: (props: T) => JSX.Element,
31
- options: AppContextOptions,
32
- appProps?: T
33
- ): Promise<AppContext<T>>
34
-
35
- export function mount<T extends Record<string, unknown>>(
36
- appFunc: (props: T) => JSX.Element,
37
- root: HTMLElement,
38
- appProps?: T
39
- ): Promise<AppContext<T>>
40
-
41
- export function mount<T extends Record<string, unknown>>(
42
- appFunc: (props: T) => JSX.Element,
43
- optionsOrRoot: HTMLElement | AppContextOptions,
44
- appProps = {} as T
45
- ): Promise<AppContext<T>> {
46
- let root: HTMLElement, opts: AppContextOptions | undefined
47
- if (optionsOrRoot instanceof HTMLElement) {
48
- root = optionsOrRoot
49
- opts = { root }
50
- } else {
51
- opts = optionsOrRoot
52
- root = optionsOrRoot.root!
53
- if (__DEV__) {
54
- if (!(root instanceof HTMLElement)) {
55
- throw new KiruError("Root node must be an HTMLElement")
56
- }
57
- }
58
- }
59
-
60
- return createAppContext<T>(appFunc, appProps, opts).mount()
61
- }
package/src/portal.ts CHANGED
@@ -1,42 +1,38 @@
1
+ import { FLAG_STATIC_DOM } from "./constants.js"
1
2
  import { __DEV__ } from "./env.js"
2
3
  import { KiruError } from "./error.js"
3
4
  import { renderMode } from "./globals.js"
4
5
  import { useVNode } from "./hooks/utils.js"
5
6
  import { nextIdle, requestUpdate } from "./scheduler.js"
6
7
 
7
- export { Portal, isPortal }
8
-
9
8
  type PortalProps = {
10
9
  children?: JSX.Children
11
10
  container: HTMLElement | (() => HTMLElement)
12
11
  }
13
12
 
14
- function Portal({ children, container }: PortalProps) {
13
+ export function Portal({ children, container }: PortalProps) {
15
14
  const vNode = useVNode()
16
- switch (renderMode.current) {
17
- case "dom":
18
- vNode.dom = typeof container === "function" ? container() : container
19
- if (!(vNode.dom instanceof HTMLElement)) {
20
- if (__DEV__) {
21
- throw new KiruError({
22
- message: `Invalid portal container, expected HTMLElement, got ${vNode.dom}`,
23
- vNode: vNode,
24
- })
15
+ if (!vNode.dom) {
16
+ vNode.flags |= FLAG_STATIC_DOM
17
+ switch (renderMode.current) {
18
+ case "dom":
19
+ vNode.dom = typeof container === "function" ? container() : container
20
+ if (!(vNode.dom instanceof HTMLElement)) {
21
+ if (__DEV__) {
22
+ throw new KiruError({
23
+ message: `Invalid portal container, expected HTMLElement, got ${vNode.dom}`,
24
+ vNode: vNode,
25
+ })
26
+ }
27
+ return null
25
28
  }
29
+ return children
30
+ case "hydrate":
31
+ nextIdle(() => requestUpdate(vNode))
32
+ case "stream":
33
+ case "string":
26
34
  return null
27
- }
28
- return children
29
- case "hydrate":
30
- nextIdle(() => requestUpdate(vNode))
31
- return null
32
- case "stream":
33
- case "string":
34
- return null
35
+ }
35
36
  }
36
- }
37
-
38
- function isPortal(
39
- node: Kiru.VNode
40
- ): node is Kiru.VNode & { type: typeof Portal } {
41
- return node.type === Portal
37
+ return children
42
38
  }
@@ -1,5 +1,4 @@
1
1
  import { node, renderMode } from "./globals.js"
2
- import { createAppContext } from "./appContext.js"
3
2
  import { Fragment } from "./element.js"
4
3
  import {
5
4
  isVNode,
@@ -13,16 +12,11 @@ import { assertValidElementProps } from "./props.js"
13
12
  import { HYDRATION_BOUNDARY_MARKER } from "./ssr/hydrationBoundary.js"
14
13
  import { __DEV__ } from "./env.js"
15
14
 
16
- export function renderToString<T extends Record<string, unknown>>(
17
- appFunc: (props: T) => JSX.Element,
18
- appProps = {} as T
19
- ) {
15
+ export function renderToString(element: JSX.Element) {
20
16
  const prev = renderMode.current
21
17
  renderMode.current = "string"
22
- const ctx = createAppContext(appFunc, appProps, {
23
- rootType: Fragment,
24
- })
25
- const res = renderToString_internal(ctx.rootNode, null, 0)
18
+ const rootNode = Fragment({ children: element })
19
+ const res = renderToString_internal(rootNode, null, 0)
26
20
  renderMode.current = prev
27
21
  return res
28
22
  }