kiru 0.47.0 → 0.47.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 (84) hide show
  1. package/dist/constants.d.ts +2 -1
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +2 -1
  4. package/dist/constants.js.map +1 -1
  5. package/dist/dom.d.ts.map +1 -1
  6. package/dist/dom.js +2 -1
  7. package/dist/dom.js.map +1 -1
  8. package/dist/element.js +2 -2
  9. package/dist/element.js.map +1 -1
  10. package/dist/hmr.d.ts +3 -2
  11. package/dist/hmr.d.ts.map +1 -1
  12. package/dist/hmr.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/memo.d.ts.map +1 -1
  18. package/dist/memo.js +1 -3
  19. package/dist/memo.js.map +1 -1
  20. package/dist/props.js +1 -1
  21. package/dist/props.js.map +1 -1
  22. package/dist/reconciler.d.ts.map +1 -1
  23. package/dist/reconciler.js +3 -3
  24. package/dist/reconciler.js.map +1 -1
  25. package/dist/renderToString.js +1 -1
  26. package/dist/renderToString.js.map +1 -1
  27. package/dist/scheduler.d.ts.map +1 -1
  28. package/dist/scheduler.js +3 -3
  29. package/dist/scheduler.js.map +1 -1
  30. package/dist/signals/base.d.ts +1 -1
  31. package/dist/signals/base.d.ts.map +1 -1
  32. package/dist/signals/base.js +2 -2
  33. package/dist/signals/base.js.map +1 -1
  34. package/dist/signals/computed.d.ts +1 -1
  35. package/dist/signals/computed.d.ts.map +1 -1
  36. package/dist/signals/computed.js +3 -3
  37. package/dist/signals/computed.js.map +1 -1
  38. package/dist/signals/effect.d.ts +1 -1
  39. package/dist/signals/effect.d.ts.map +1 -1
  40. package/dist/signals/effect.js +3 -2
  41. package/dist/signals/effect.js.map +1 -1
  42. package/dist/signals/globals.d.ts +1 -1
  43. package/dist/signals/globals.d.ts.map +1 -1
  44. package/dist/signals/jsx.d.ts +1 -1
  45. package/dist/signals/jsx.d.ts.map +1 -1
  46. package/dist/signals/types.d.ts +1 -1
  47. package/dist/signals/types.d.ts.map +1 -1
  48. package/dist/signals/utils.d.ts +1 -1
  49. package/dist/signals/utils.d.ts.map +1 -1
  50. package/dist/signals/utils.js +1 -1
  51. package/dist/signals/utils.js.map +1 -1
  52. package/dist/ssr/server.js +1 -1
  53. package/dist/ssr/server.js.map +1 -1
  54. package/dist/swr.d.ts +1 -1
  55. package/dist/swr.d.ts.map +1 -1
  56. package/dist/swr.js +1 -1
  57. package/dist/swr.js.map +1 -1
  58. package/dist/types.d.ts +0 -1
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/utils.d.ts.map +1 -1
  61. package/dist/utils.js +5 -3
  62. package/dist/utils.js.map +1 -1
  63. package/package.json +1 -1
  64. package/src/constants.ts +2 -0
  65. package/src/dom.ts +2 -1
  66. package/src/element.ts +2 -2
  67. package/src/hmr.ts +4 -3
  68. package/src/index.ts +1 -1
  69. package/src/memo.ts +1 -3
  70. package/src/props.ts +1 -1
  71. package/src/reconciler.ts +3 -2
  72. package/src/renderToString.ts +1 -1
  73. package/src/scheduler.ts +3 -2
  74. package/src/signals/base.ts +4 -4
  75. package/src/signals/computed.ts +4 -4
  76. package/src/signals/effect.ts +4 -3
  77. package/src/signals/globals.ts +1 -1
  78. package/src/signals/jsx.ts +1 -1
  79. package/src/signals/types.ts +1 -1
  80. package/src/signals/utils.ts +1 -1
  81. package/src/ssr/server.ts +1 -1
  82. package/src/swr.ts +1 -1
  83. package/src/types.ts +0 -1
  84. package/src/utils.ts +4 -2
@@ -6,7 +6,7 @@ import {
6
6
  propsToElementAttributes,
7
7
  isExoticType,
8
8
  } from "./utils.js"
9
- import { Signal } from "./signals/index.js"
9
+ import { Signal } from "./signals/base.js"
10
10
  import { $HYDRATION_BOUNDARY, voidElements } from "./constants.js"
11
11
  import { assertValidElementProps } from "./props.js"
12
12
  import { HYDRATION_BOUNDARY_MARKER } from "./ssr/hydrationBoundary.js"
package/src/scheduler.ts CHANGED
@@ -7,6 +7,7 @@ import {
7
7
  $CONTEXT_PROVIDER,
8
8
  CONSECUTIVE_DIRTY_LIMIT,
9
9
  FLAG_DELETION,
10
+ FLAG_MEMO,
10
11
  } from "./constants.js"
11
12
  import { commitDeletion, commitWork, createDom, hydrateDom } from "./dom.js"
12
13
  import { __DEV__ } from "./env.js"
@@ -363,8 +364,8 @@ function performUnitOfWork(vNode: VNode): VNode | void {
363
364
  }
364
365
 
365
366
  function updateFunctionComponent(vNode: FunctionVNode) {
366
- const { type, props, subs, prev, isMemoized } = vNode
367
- if (isMemoized) {
367
+ const { type, props, subs, prev, flags } = vNode
368
+ if (flags & FLAG_MEMO) {
368
369
  vNode.memoizedProps = props
369
370
  if (
370
371
  prev?.memoizedProps &&
@@ -1,13 +1,13 @@
1
+ import { latest, safeStringify, sideEffectsEnabled } from "../utils.js"
1
2
  import { $HMR_ACCEPT, $SIGNAL } from "../constants.js"
2
3
  import { __DEV__ } from "../env.js"
3
- import type { HMRAccept } from "../hmr.js"
4
- import { latest, safeStringify, sideEffectsEnabled } from "../utils.js"
5
- import { tracking, signalSubsMap } from "./globals.js"
6
- import { type SignalSubscriber, ReadonlySignal } from "./types.js"
7
4
  import { node } from "../globals.js"
8
5
  import { useHook } from "../hooks/utils.js"
9
6
  import { generateRandomID } from "../generateId.js"
10
7
  import { requestUpdate } from "../scheduler.js"
8
+ import { tracking, signalSubsMap } from "./globals.js"
9
+ import type { SignalSubscriber, ReadonlySignal } from "./types.js"
10
+ import type { HMRAccept } from "../hmr.js"
11
11
 
12
12
  export class Signal<T> {
13
13
  [$SIGNAL] = true;
@@ -1,11 +1,11 @@
1
1
  import { __DEV__ } from "../env.js"
2
- import { Signal } from "./index.js"
3
- import { effectQueue, signalSubsMap } from "./globals.js"
4
2
  import { $HMR_ACCEPT } from "../constants.js"
5
- import type { HMRAccept } from "../hmr.js"
6
3
  import { useHook } from "../hooks/utils.js"
7
- import { executeWithTracking } from "./effect.js"
8
4
  import { latest } from "../utils.js"
5
+ import { effectQueue, signalSubsMap } from "./globals.js"
6
+ import { executeWithTracking } from "./effect.js"
7
+ import { Signal } from "./base.js"
8
+ import type { HMRAccept } from "../hmr.js"
9
9
 
10
10
  export class ComputedSignal<T> extends Signal<T> {
11
11
  protected $getter: (prev?: T) => T
@@ -1,7 +1,8 @@
1
1
  import { node } from "../globals.js"
2
2
  import { sideEffectsEnabled } from "../utils.js"
3
3
  import { tracking, effectQueue } from "./globals.js"
4
- import type { Signal } from "./index.js"
4
+ import { tick } from "./utils.js"
5
+ import type { Signal } from "./base.js"
5
6
  import type { SignalValues } from "./types.js"
6
7
 
7
8
  type TrackedExecutionContext<T, Deps extends readonly Signal<unknown>[]> = {
@@ -42,8 +43,8 @@ export function executeWithTracking<T, Deps extends readonly Signal<unknown>[]>(
42
43
  }
43
44
 
44
45
  const effect = () => {
45
- if (!effectQueue.has(id)) {
46
- queueMicrotask(() => effectQueue.get(id)?.())
46
+ if (!effectQueue.size) {
47
+ queueMicrotask(tick)
47
48
  }
48
49
  effectQueue.set(id, onDepChanged)
49
50
  }
@@ -1,4 +1,4 @@
1
- import type { Signal } from "./index.js"
1
+ import type { Signal } from "./base.js"
2
2
  import type { SignalSubscriber } from "./types.js"
3
3
 
4
4
  export const tracking = {
@@ -1,4 +1,4 @@
1
- import type { Signal } from "./index.js"
1
+ import type { Signal } from "./base.js"
2
2
  import type { SignalValues } from "./types.js"
3
3
 
4
4
  type InferArraySignalItemType<T extends Signal<any[]>> = T extends Signal<
@@ -1,4 +1,4 @@
1
- import { type Signal } from "./index.js"
1
+ import type { Signal } from "./base.js"
2
2
 
3
3
  export type ReadonlySignal<T> = Signal<T> & {
4
4
  readonly value: T
@@ -1,4 +1,4 @@
1
- import { Signal } from "./index.js"
1
+ import { Signal } from "./base.js"
2
2
  import { effectQueue } from "./globals.js"
3
3
 
4
4
  export function unwrap<T>(value: T | Signal<T>, reactive = false): T {
package/src/ssr/server.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  propsToElementAttributes,
8
8
  isExoticType,
9
9
  } from "../utils.js"
10
- import { Signal } from "../signals/index.js"
10
+ import { Signal } from "../signals/base.js"
11
11
  import { $HYDRATION_BOUNDARY, voidElements } from "../constants.js"
12
12
  import { assertValidElementProps } from "../props.js"
13
13
  import { HYDRATION_BOUNDARY_MARKER } from "./hydrationBoundary.js"
package/src/swr.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { __DEV__ } from "./env.js"
2
2
  import { useHook } from "./hooks/utils.js"
3
- import { Signal } from "./signals/index.js"
3
+ import { Signal } from "./signals/base.js"
4
4
  import {
5
5
  noop,
6
6
  deepCompare,
package/src/types.ts CHANGED
@@ -194,7 +194,6 @@ declare global {
194
194
  effects?: Array<Function>
195
195
  immediateEffects?: Array<Function>
196
196
  memoizedProps?: Record<string, any>
197
- isMemoized?: boolean
198
197
  arePropsEqual?: (
199
198
  prev: Record<string, any>,
200
199
  next: Record<string, any>
package/src/utils.ts CHANGED
@@ -8,9 +8,10 @@ import {
8
8
  FLAG_HAS_MEMO_ANCESTOR,
9
9
  FLAG_PLACEMENT,
10
10
  FLAG_UPDATE,
11
+ FLAG_MEMO,
11
12
  REGEX_UNIT,
12
13
  } from "./constants.js"
13
- import { unwrap } from "./signals/index.js"
14
+ import { unwrap } from "./signals/utils.js"
14
15
  import { __DEV__ } from "./env.js"
15
16
  import type { AppContext } from "./appContext"
16
17
 
@@ -162,8 +163,9 @@ function willMemoBlockUpdate(root: VNode, target: VNode): boolean {
162
163
 
163
164
  while (node && node !== root && node.flags & FLAG_HAS_MEMO_ANCESTOR) {
164
165
  const parent = node.parent
166
+ if (!parent) return false
165
167
  if (
166
- parent?.isMemoized &&
168
+ parent.flags & FLAG_MEMO &&
167
169
  parent.prev?.memoizedProps &&
168
170
  parent.arePropsEqual!(parent.prev.memoizedProps, parent.props)
169
171
  ) {