@lytjs/reactivity 5.0.0 → 6.0.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.
- package/README.md +327 -202
- package/dist/async.cjs +276 -0
- package/dist/async.cjs.map +1 -0
- package/dist/async.d.cts +32 -0
- package/dist/async.d.ts +32 -0
- package/dist/async.mjs +273 -0
- package/dist/async.mjs.map +1 -0
- package/dist/index.cjs +1607 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +226 -0
- package/dist/index.d.ts +226 -0
- package/dist/index.mjs +1543 -1
- package/dist/index.mjs.map +1 -0
- package/dist/ref-CwOCKoy2.d.cts +42 -0
- package/dist/ref-CwOCKoy2.d.ts +42 -0
- package/dist/scope.cjs +74 -0
- package/dist/scope.cjs.map +1 -0
- package/dist/scope.d.cts +71 -0
- package/dist/scope.d.ts +71 -0
- package/dist/scope.mjs +70 -0
- package/dist/scope.mjs.map +1 -0
- package/dist/signal-BOAyevht.d.cts +109 -0
- package/dist/signal-BOAyevht.d.ts +109 -0
- package/dist/signal-component.cjs +39 -0
- package/dist/signal-component.cjs.map +1 -0
- package/dist/signal-component.d.cts +31 -0
- package/dist/signal-component.d.ts +31 -0
- package/dist/signal-component.mjs +35 -0
- package/dist/signal-component.mjs.map +1 -0
- package/dist/signal.cjs +350 -1
- package/dist/signal.cjs.map +1 -0
- package/dist/signal.d.cts +1 -0
- package/dist/signal.d.ts +1 -0
- package/dist/signal.mjs +334 -1
- package/dist/signal.mjs.map +1 -0
- package/dist/types-CMYee6LB.d.cts +270 -0
- package/dist/types-CXeWWYm6.d.ts +270 -0
- package/package.json +54 -31
- package/dist/types/computed.d.ts +0 -70
- package/dist/types/computed.d.ts.map +0 -1
- package/dist/types/effect.d.ts +0 -157
- package/dist/types/effect.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -21
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/reactive.d.ts +0 -98
- package/dist/types/reactive.d.ts.map +0 -1
- package/dist/types/ref.d.ts +0 -128
- package/dist/types/ref.d.ts.map +0 -1
- package/dist/types/scheduler.d.ts +0 -44
- package/dist/types/scheduler.d.ts.map +0 -1
- package/dist/types/signal-component.d.ts +0 -45
- package/dist/types/signal-component.d.ts.map +0 -1
- package/dist/types/signal.d.ts +0 -87
- package/dist/types/signal.d.ts.map +0 -1
- package/dist/types/watch.d.ts +0 -125
- package/dist/types/watch.d.ts.map +0 -1
package/dist/types/signal.d.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js Signal 响应式系统
|
|
3
|
-
*
|
|
4
|
-
* 基于 Signal 的细粒度响应式实现(类似 Solid.js / Angular Signals / Preact Signals)。
|
|
5
|
-
* 纯原生零依赖实现,无 DOM / 浏览器 API 依赖。
|
|
6
|
-
*
|
|
7
|
-
* 核心概念:
|
|
8
|
-
* - Signal: 可写信号,存储值并在变化时通知订阅者
|
|
9
|
-
* - ComputedSignal: 只读计算信号,自动追踪依赖并惰性求值
|
|
10
|
-
* - Effect: 副作用,自动追踪依赖并在变化时重新执行
|
|
11
|
-
* - Batch: 批量更新,延迟通知直到最外层 batch 完成
|
|
12
|
-
* - Untrack: 在不创建订阅的情况下读取信号
|
|
13
|
-
*/
|
|
14
|
-
/** Signal 只读接口 — 调用即读取值 */
|
|
15
|
-
export interface Signal<T> {
|
|
16
|
-
(): T;
|
|
17
|
-
}
|
|
18
|
-
/** WritableSignal — 可写信号,支持 set / update / dispose */
|
|
19
|
-
export interface WritableSignal<T> extends Signal<T> {
|
|
20
|
-
set(value: T): void;
|
|
21
|
-
update(fn: (prev: T) => T): void;
|
|
22
|
-
/** 销毁信号,释放所有订阅者 */
|
|
23
|
-
dispose(): void;
|
|
24
|
-
/** 内部订阅方法(由 Dependency 接口使用) */
|
|
25
|
-
_subscribe(subscriber: Subscriber): void;
|
|
26
|
-
/** 内部取消订阅方法(由 Dependency 接口使用) */
|
|
27
|
-
_unsubscribe(subscriber: Subscriber): void;
|
|
28
|
-
}
|
|
29
|
-
/** ComputedSignal — 只读计算信号 */
|
|
30
|
-
export interface ComputedSignal<T> extends Signal<T> {
|
|
31
|
-
/** 内部订阅方法(由 Dependency 接口使用) */
|
|
32
|
-
_subscribe(subscriber: Subscriber): void;
|
|
33
|
-
/** 内部取消订阅方法(由 Dependency 接口使用) */
|
|
34
|
-
_unsubscribe(subscriber: Subscriber): void;
|
|
35
|
-
/** 通知订阅者其依赖已变化 */
|
|
36
|
-
notify(): void;
|
|
37
|
-
/** 标记订阅者需要重新计算/执行 */
|
|
38
|
-
_dirty: boolean;
|
|
39
|
-
}
|
|
40
|
-
/** Effect 清理回调 */
|
|
41
|
-
export type EffectCleanup = () => void;
|
|
42
|
-
/** 订阅者接口(effect 或 computed) */
|
|
43
|
-
interface Subscriber {
|
|
44
|
-
/** 通知订阅者其依赖已变化 */
|
|
45
|
-
notify(): void;
|
|
46
|
-
/** 标记订阅者需要重新计算/执行 */
|
|
47
|
-
_dirty: boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* 创建一个可写信号
|
|
51
|
-
*
|
|
52
|
-
* @param initialValue 初始值
|
|
53
|
-
* @returns WritableSignal 实例
|
|
54
|
-
*/
|
|
55
|
-
export declare function signal<T>(initialValue: T): WritableSignal<T>;
|
|
56
|
-
/**
|
|
57
|
-
* 创建一个计算信号(只读、惰性求值)
|
|
58
|
-
*
|
|
59
|
-
* @param fn 计算函数
|
|
60
|
-
* @returns ComputedSignal 实例
|
|
61
|
-
*/
|
|
62
|
-
export declare function computed<T>(fn: () => T): ComputedSignal<T>;
|
|
63
|
-
/**
|
|
64
|
-
* 创建副作用
|
|
65
|
-
*
|
|
66
|
-
* @param fn 副作用函数,接收 onCleanup 回调
|
|
67
|
-
* @returns dispose 函数,调用后停止副作用
|
|
68
|
-
*/
|
|
69
|
-
export declare function effect(fn: (onCleanup: (cleanup: EffectCleanup) => void) => void): () => void;
|
|
70
|
-
/**
|
|
71
|
-
* 批量更新
|
|
72
|
-
*
|
|
73
|
-
* 在 batch 内的 signal 更新不会立即触发 effect,
|
|
74
|
-
* 而是延迟到最外层 batch 完成后统一执行。
|
|
75
|
-
*
|
|
76
|
-
* @param fn 批量操作函数
|
|
77
|
-
*/
|
|
78
|
-
export declare function batch(fn: () => void): void;
|
|
79
|
-
/**
|
|
80
|
-
* 在不创建订阅的情况下执行函数
|
|
81
|
-
*
|
|
82
|
-
* @param fn 要执行的函数
|
|
83
|
-
* @returns 函数返回值
|
|
84
|
-
*/
|
|
85
|
-
export declare function untrack<T>(fn: () => T): T;
|
|
86
|
-
export {};
|
|
87
|
-
//# sourceMappingURL=signal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,2BAA2B;AAC3B,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,CAAA;CACN;AAED,sDAAsD;AACtD,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAClD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAChC,mBAAmB;IACnB,OAAO,IAAI,IAAI,CAAA;IACf,gCAAgC;IAChC,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IACxC,kCAAkC;IAClC,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;CAC3C;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAClD,gCAAgC;IAChC,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IACxC,kCAAkC;IAClC,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC1C,kBAAkB;IAClB,MAAM,IAAI,IAAI,CAAA;IACd,qBAAqB;IACrB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAA;AAEtC,+BAA+B;AAC/B,UAAU,UAAU;IAClB,kBAAkB;IAClB,MAAM,IAAI,IAAI,CAAA;IACd,qBAAqB;IACrB,MAAM,EAAE,OAAO,CAAA;CAChB;AAiCD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAsC5D;AAMD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAgE1D;AAMD;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK,IAAI,GACxD,MAAM,IAAI,CA6DZ;AAMD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAU1C;AA4BD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQzC"}
|
package/dist/types/watch.d.ts
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lyt.js 响应式系统 — 侦听器(Watch)
|
|
3
|
-
*
|
|
4
|
-
* watch 和 watchEffect 用于观察响应式数据的变化并执行副作用。
|
|
5
|
-
*
|
|
6
|
-
* watch:
|
|
7
|
-
* - 显式指定侦听源(ref/reactive/getter/数组)
|
|
8
|
-
* - 回调接收新值和旧值
|
|
9
|
-
* - 默认懒执行(不会立即执行回调)
|
|
10
|
-
*
|
|
11
|
-
* watchEffect:
|
|
12
|
-
* - 自动收集依赖(不需要显式指定源)
|
|
13
|
-
* - 立即执行一次
|
|
14
|
-
* - 回调不接收参数
|
|
15
|
-
*
|
|
16
|
-
* nextTick:
|
|
17
|
-
* - 在下一个微任务中执行回调
|
|
18
|
-
* - 等待 DOM 更新后执行
|
|
19
|
-
*/
|
|
20
|
-
import { Ref } from './ref';
|
|
21
|
-
import { nextTick as schedulerNextTick } from '@lytjs/common';
|
|
22
|
-
/** watch 回调函数类型 */
|
|
23
|
-
export type WatchCallback<T = any, O = T> = (newValue: T, oldValue: O, onCleanup: (cleanupFn: () => void) => void) => void;
|
|
24
|
-
/** watch 源类型:可以是 ref、reactive 对象、getter 函数或它们的数组 */
|
|
25
|
-
export type WatchSource<T = any> = Ref<T> | (() => T) | {
|
|
26
|
-
[key: string]: any;
|
|
27
|
-
};
|
|
28
|
-
/** watch 选项 */
|
|
29
|
-
export interface WatchOptions {
|
|
30
|
-
/** 是否立即执行回调(默认 false) */
|
|
31
|
-
immediate?: boolean;
|
|
32
|
-
/** 是否深度侦听(默认 true,对 reactive 对象自动开启) */
|
|
33
|
-
deep?: boolean;
|
|
34
|
-
/** 是否在组件卸载时自动停止(预留) */
|
|
35
|
-
flush?: 'pre' | 'post' | 'sync';
|
|
36
|
-
}
|
|
37
|
-
/** watchEffect 选项 */
|
|
38
|
-
export interface WatchEffectOptions {
|
|
39
|
-
/** 副作用执行前的回调 */
|
|
40
|
-
onTrack?: (event: any) => void;
|
|
41
|
-
/** 副作用触发时的回调 */
|
|
42
|
-
onTrigger?: (event: any) => void;
|
|
43
|
-
/** 刷新时机 */
|
|
44
|
-
flush?: 'pre' | 'post' | 'sync';
|
|
45
|
-
}
|
|
46
|
-
/** watch 停止句柄 */
|
|
47
|
-
export type WatchStopHandle = () => void;
|
|
48
|
-
/**
|
|
49
|
-
* 侦听一个或多个响应式数据源,并在数据变化时执行回调
|
|
50
|
-
*
|
|
51
|
-
* @param source - 侦听源(ref / reactive / getter / 数组)
|
|
52
|
-
* @param cb - 变化时的回调函数,接收 (newValue, oldValue, onCleanup)
|
|
53
|
-
* @param options - 配置选项
|
|
54
|
-
* @returns 停止侦听的函数
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```ts
|
|
58
|
-
* // 侦听 ref
|
|
59
|
-
* const count = ref(0)
|
|
60
|
-
* const stop = watch(count, (newVal, oldVal) => {
|
|
61
|
-
* console.log(`count: ${oldVal} -> ${newVal}`)
|
|
62
|
-
* })
|
|
63
|
-
* count.value++ // 输出: count: 0 -> 1
|
|
64
|
-
* stop() // 停止侦听
|
|
65
|
-
*
|
|
66
|
-
* // 侦听 getter
|
|
67
|
-
* watch(
|
|
68
|
-
* () => state.count + state.name,
|
|
69
|
-
* (newVal, oldVal) => console.log(newVal, oldVal)
|
|
70
|
-
* )
|
|
71
|
-
*
|
|
72
|
-
* // 侦听多个源
|
|
73
|
-
* watch([count, name], ([newCount, newName], [oldCount, oldName]) => {
|
|
74
|
-
* console.log(newCount, newName)
|
|
75
|
-
* })
|
|
76
|
-
*
|
|
77
|
-
* // 立即执行
|
|
78
|
-
* watch(count, (val) => console.log(val), { immediate: true })
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function watch<T = any>(source: WatchSource<T> | WatchSource<T>[], cb: WatchCallback<T>, options?: WatchOptions): WatchStopHandle;
|
|
82
|
-
/**
|
|
83
|
-
* 立即运行一个函数,同时响应式地追踪其依赖
|
|
84
|
-
* 当依赖变化时自动重新执行
|
|
85
|
-
*
|
|
86
|
-
* @param fn - 要执行的副作用函数
|
|
87
|
-
* @param options - 配置选项
|
|
88
|
-
* @returns 停止侦听的函数
|
|
89
|
-
*
|
|
90
|
-
* @example
|
|
91
|
-
* ```ts
|
|
92
|
-
* const count = ref(0)
|
|
93
|
-
* const stop = watchEffect(() => {
|
|
94
|
-
* console.log(`count is: ${count.value}`)
|
|
95
|
-
* })
|
|
96
|
-
* // 立即输出: count is: 0
|
|
97
|
-
* count.value++ // 输出: count is: 1
|
|
98
|
-
* stop() // 停止侦听
|
|
99
|
-
*
|
|
100
|
-
* // 带清理函数
|
|
101
|
-
* watchEffect((onCleanup) => {
|
|
102
|
-
* const timer = setInterval(() => console.log('tick'), 1000)
|
|
103
|
-
* onCleanup(() => clearInterval(timer)) // 依赖变化时清理
|
|
104
|
-
* })
|
|
105
|
-
* ```
|
|
106
|
-
*/
|
|
107
|
-
export declare function watchEffect(fn: (onCleanup: (cleanupFn: () => void) => void) => void, options?: WatchEffectOptions): WatchStopHandle;
|
|
108
|
-
/**
|
|
109
|
-
* 在下一个微任务中执行回调
|
|
110
|
-
* 等待当前所有响应式更新完成后再执行
|
|
111
|
-
*
|
|
112
|
-
* @returns Promise
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* ```ts
|
|
116
|
-
* await nextTick()
|
|
117
|
-
* // 此时 DOM 已更新完毕
|
|
118
|
-
*
|
|
119
|
-
* nextTick().then(() => {
|
|
120
|
-
* console.log('更新完成')
|
|
121
|
-
* })
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
export { schedulerNextTick as nextTick };
|
|
125
|
-
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,EAAS,GAAG,EAAS,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAY,QAAQ,IAAI,iBAAiB,EAAY,MAAM,eAAe,CAAC;AAIlF,mBAAmB;AACnB,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAC1C,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,KACvC,IAAI,CAAC;AAEV,oDAAoD;AACpD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAC3B,GAAG,CAAC,CAAC,CAAC,GACN,CAAC,MAAM,CAAC,CAAC,GACT;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEN,eAAe;AACf,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uBAAuB;IACvB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CACjC;AAED,qBAAqB;AACrB,MAAM,WAAW,kBAAkB;IACjC,gBAAgB;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,gBAAgB;IAChB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,WAAW;IACX,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CACjC;AAED,iBAAiB;AACjB,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC;AAuEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,KAAK,CAAC,CAAC,GAAG,GAAG,EAC3B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EACzC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,eAAe,CAqFjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,EACxD,OAAO,GAAE,kBAAuB,GAC/B,eAAe,CAuCjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,CAAC"}
|