flint-reactivity 4.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 +107 -0
- package/dist/compat.d.ts +120 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +229 -0
- package/dist/compat.js.map +1 -0
- package/dist/debug.d.ts +130 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +257 -0
- package/dist/debug.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/signals.d.ts +163 -0
- package/dist/signals.d.ts.map +1 -0
- package/dist/signals.js +757 -0
- package/dist/signals.js.map +1 -0
- package/dist/types-helpers.d.ts +238 -0
- package/dist/types-helpers.d.ts.map +1 -0
- package/dist/types-helpers.js +4 -0
- package/dist/types-helpers.js.map +1 -0
- package/dist/types.d.ts +95 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +42 -0
package/dist/debug.js
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
// Flint Reactivity v2 — Debug Mode & Signal Tracking
|
|
2
|
+
// Enhanced debugging capabilities for signals and computed values
|
|
3
|
+
// ─── Debug Manager ──────────────────────────────────────────────
|
|
4
|
+
let debugManager = null;
|
|
5
|
+
export class DebugManager {
|
|
6
|
+
options;
|
|
7
|
+
signalRegistry = new Map();
|
|
8
|
+
computedRegistry = new Map();
|
|
9
|
+
effectRegistry = new Map();
|
|
10
|
+
idCounter = 0;
|
|
11
|
+
enabled = false;
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.options = {
|
|
14
|
+
enabled: false,
|
|
15
|
+
logChanges: true,
|
|
16
|
+
logComputed: true,
|
|
17
|
+
logEffects: true,
|
|
18
|
+
logBatch: true,
|
|
19
|
+
maxHistory: 100,
|
|
20
|
+
trackPerformance: true,
|
|
21
|
+
...options,
|
|
22
|
+
};
|
|
23
|
+
this.enabled = this.options.enabled;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Enable debug mode
|
|
27
|
+
*/
|
|
28
|
+
enable() {
|
|
29
|
+
this.enabled = true;
|
|
30
|
+
this.options.enabled = true;
|
|
31
|
+
console.log('[Flint Debug] Debug mode enabled');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Disable debug mode
|
|
35
|
+
*/
|
|
36
|
+
disable() {
|
|
37
|
+
this.enabled = false;
|
|
38
|
+
this.options.enabled = false;
|
|
39
|
+
console.log('[Flint Debug] Debug mode disabled');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Track a signal
|
|
43
|
+
*/
|
|
44
|
+
trackSignal(name, signal) {
|
|
45
|
+
if (!this.enabled)
|
|
46
|
+
return signal;
|
|
47
|
+
const id = `signal_${this.idCounter++}`;
|
|
48
|
+
const debugInfo = {
|
|
49
|
+
id,
|
|
50
|
+
name,
|
|
51
|
+
value: signal(),
|
|
52
|
+
previousValue: undefined,
|
|
53
|
+
changeCount: 0,
|
|
54
|
+
lastChange: Date.now(),
|
|
55
|
+
history: [],
|
|
56
|
+
subscribers: [],
|
|
57
|
+
computedFrom: [],
|
|
58
|
+
};
|
|
59
|
+
this.signalRegistry.set(id, debugInfo);
|
|
60
|
+
// Wrap signal with tracking - create a proper Signal wrapper
|
|
61
|
+
const tracked = (() => {
|
|
62
|
+
// Read
|
|
63
|
+
return signal();
|
|
64
|
+
});
|
|
65
|
+
// Copy the set method with tracking
|
|
66
|
+
tracked.set = (value) => {
|
|
67
|
+
const oldValue = signal();
|
|
68
|
+
signal.set(value);
|
|
69
|
+
const newValue = signal();
|
|
70
|
+
debugInfo.previousValue = oldValue;
|
|
71
|
+
debugInfo.value = newValue;
|
|
72
|
+
debugInfo.changeCount++;
|
|
73
|
+
debugInfo.lastChange = Date.now();
|
|
74
|
+
debugInfo.history.push({
|
|
75
|
+
value: newValue,
|
|
76
|
+
timestamp: Date.now(),
|
|
77
|
+
});
|
|
78
|
+
// Trim history
|
|
79
|
+
if (debugInfo.history.length > this.options.maxHistory) {
|
|
80
|
+
debugInfo.history.shift();
|
|
81
|
+
}
|
|
82
|
+
if (this.options.logChanges) {
|
|
83
|
+
console.log(`[Flint Debug] Signal "${name}" changed:`, oldValue, '->', newValue);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
// Copy the peek method
|
|
87
|
+
tracked.peek = () => signal.peek();
|
|
88
|
+
return tracked;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Track a computed value
|
|
92
|
+
*/
|
|
93
|
+
trackComputed(name, computed$) {
|
|
94
|
+
if (!this.enabled)
|
|
95
|
+
return computed$;
|
|
96
|
+
const id = `computed_${this.idCounter++}`;
|
|
97
|
+
const debugInfo = {
|
|
98
|
+
id,
|
|
99
|
+
name,
|
|
100
|
+
value: computed$(),
|
|
101
|
+
recalculationCount: 0,
|
|
102
|
+
lastRecalculation: Date.now(),
|
|
103
|
+
dependencies: [],
|
|
104
|
+
isDirty: false,
|
|
105
|
+
computationTime: 0,
|
|
106
|
+
};
|
|
107
|
+
this.computedRegistry.set(id, debugInfo);
|
|
108
|
+
// Wrap computed with tracking
|
|
109
|
+
const original = computed$;
|
|
110
|
+
const tracked = (() => {
|
|
111
|
+
const startTime = performance.now();
|
|
112
|
+
const value = original();
|
|
113
|
+
const endTime = performance.now();
|
|
114
|
+
debugInfo.value = value;
|
|
115
|
+
debugInfo.recalculationCount++;
|
|
116
|
+
debugInfo.lastRecalculation = Date.now();
|
|
117
|
+
debugInfo.computationTime = endTime - startTime;
|
|
118
|
+
if (this.options.logComputed) {
|
|
119
|
+
console.log(`[Flint Debug] Computed "${name}" recalculated:`, value, `(${(endTime - startTime).toFixed(2)}ms)`);
|
|
120
|
+
}
|
|
121
|
+
return value;
|
|
122
|
+
});
|
|
123
|
+
return tracked;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get debug info for a signal
|
|
127
|
+
*/
|
|
128
|
+
getSignalDebugInfo(id) {
|
|
129
|
+
return this.signalRegistry.get(id);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get debug info for a computed
|
|
133
|
+
*/
|
|
134
|
+
getComputedDebugInfo(id) {
|
|
135
|
+
return this.computedRegistry.get(id);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get all tracked signals
|
|
139
|
+
*/
|
|
140
|
+
getAllSignals() {
|
|
141
|
+
return Array.from(this.signalRegistry.values());
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get all tracked computed values
|
|
145
|
+
*/
|
|
146
|
+
getAllComputed() {
|
|
147
|
+
return Array.from(this.computedRegistry.values());
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Clear all tracking data
|
|
151
|
+
*/
|
|
152
|
+
clear() {
|
|
153
|
+
this.signalRegistry.clear();
|
|
154
|
+
this.computedRegistry.clear();
|
|
155
|
+
this.effectRegistry.clear();
|
|
156
|
+
this.idCounter = 0;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get performance summary
|
|
160
|
+
*/
|
|
161
|
+
getPerformanceSummary() {
|
|
162
|
+
const signals = this.getAllSignals();
|
|
163
|
+
const computed = this.getAllComputed();
|
|
164
|
+
const avgTime = computed.length > 0
|
|
165
|
+
? computed.reduce((sum, c) => sum + c.computationTime, 0) / computed.length
|
|
166
|
+
: 0;
|
|
167
|
+
return {
|
|
168
|
+
totalSignals: signals.length,
|
|
169
|
+
totalComputed: computed.length,
|
|
170
|
+
totalEffects: this.effectRegistry.size,
|
|
171
|
+
averageComputationTime: avgTime,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// ─── Singleton Functions ────────────────────────────────────────
|
|
176
|
+
export function createDebugManager(options) {
|
|
177
|
+
if (!debugManager) {
|
|
178
|
+
debugManager = new DebugManager(options);
|
|
179
|
+
}
|
|
180
|
+
return debugManager;
|
|
181
|
+
}
|
|
182
|
+
export function getDebugManager() {
|
|
183
|
+
return debugManager;
|
|
184
|
+
}
|
|
185
|
+
export function enableDebug() {
|
|
186
|
+
if (!debugManager) {
|
|
187
|
+
debugManager = new DebugManager({ enabled: true });
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
debugManager.enable();
|
|
191
|
+
}
|
|
192
|
+
return debugManager;
|
|
193
|
+
}
|
|
194
|
+
export function disableDebug() {
|
|
195
|
+
debugManager?.disable();
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Track a signal in debug mode
|
|
199
|
+
*/
|
|
200
|
+
export function trackSignal(name, signal) {
|
|
201
|
+
if (!debugManager) {
|
|
202
|
+
debugManager = new DebugManager({ enabled: true });
|
|
203
|
+
}
|
|
204
|
+
return debugManager.trackSignal(name, signal);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Track a computed in debug mode
|
|
208
|
+
*/
|
|
209
|
+
export function trackComputed(name, computed$) {
|
|
210
|
+
if (!debugManager) {
|
|
211
|
+
debugManager = new DebugManager({ enabled: true });
|
|
212
|
+
}
|
|
213
|
+
return debugManager.trackComputed(name, computed$);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Print signal history
|
|
217
|
+
*/
|
|
218
|
+
export function printSignalHistory(signalId) {
|
|
219
|
+
const info = debugManager?.getSignalDebugInfo(signalId);
|
|
220
|
+
if (!info) {
|
|
221
|
+
console.log('[Flint Debug] Signal not found:', signalId);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
console.log(`[Flint Debug] Signal "${info.name}" history:`);
|
|
225
|
+
console.table(info.history);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Print computed stats
|
|
229
|
+
*/
|
|
230
|
+
export function printComputedStats(computedId) {
|
|
231
|
+
const info = debugManager?.getComputedDebugInfo(computedId);
|
|
232
|
+
if (!info) {
|
|
233
|
+
console.log('[Flint Debug] Computed not found:', computedId);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
console.log(`[Flint Debug] Computed "${info.name}" stats:`);
|
|
237
|
+
console.log(' Value:', info.value);
|
|
238
|
+
console.log(' Recalculations:', info.recalculationCount);
|
|
239
|
+
console.log(' Last Recalculation:', new Date(info.lastRecalculation).toISOString());
|
|
240
|
+
console.log(' Computation Time:', info.computationTime.toFixed(2), 'ms');
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Print performance summary
|
|
244
|
+
*/
|
|
245
|
+
export function printPerformanceSummary() {
|
|
246
|
+
if (!debugManager) {
|
|
247
|
+
console.log('[Flint Debug] Debug manager not initialized');
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const summary = debugManager.getPerformanceSummary();
|
|
251
|
+
console.log('[Flint Debug] Performance Summary:');
|
|
252
|
+
console.log(' Total Signals:', summary.totalSignals);
|
|
253
|
+
console.log(' Total Computed:', summary.totalComputed);
|
|
254
|
+
console.log(' Total Effects:', summary.totalEffects);
|
|
255
|
+
console.log(' Average Computation Time:', summary.averageComputationTime.toFixed(2), 'ms');
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { state, computed, effect, watch, flushSync, untrack, captureScope, createSelector, createRoot, onCleanup, reactive, model, bind, createRef, shallowRef, derive, signals, poll, watchDebounced, watchThrottled, computedSet, } from './signals.js';
|
|
2
|
+
export type { Signal, Computed, Effect, CleanupFn, Selector, Scope, ReactiveProxy, Ref, Writable, Readable, WatchHandle, } from './types.js';
|
|
3
|
+
export { DebugManager, createDebugManager, getDebugManager, enableDebug, disableDebug, trackSignal, trackComputed, printSignalHistory, printComputedStats, printPerformanceSummary, } from './debug.js';
|
|
4
|
+
export type { DebugOptions, SignalDebugInfo, ComputedDebugInfo, EffectDebugInfo, SignalHistoryEntry, } from './debug.js';
|
|
5
|
+
export type { InferSignal, InferComputed, InferWritable, InferReadable, ComponentProps, ComponentReturn, PartialExcept, RequiredExcept, InferFormValues, InferFormErrors, Validator, Validators, InferStoreState, InferStoreActions, Nullable, Optional, Maybe, DeepReadonly, DeepMutable, FunctionKeys, NonFunctionKeys, PickFunctions, PickState, MethodParams, MethodReturns, EventHandler, EventHandlers, UnwrapPromise, Async, Await, ArrayElement, Tuple, TupleOf, CamelCase, KebabCase, If, And, Or, Not, Equals, IsNever, IsAny, IsUnknown, } from './types-helpers.js';
|
|
6
|
+
export { createSignal, createEffect, createMemo, createStore, batch, createResource, from, produce, } from './compat.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,YAAY,EACZ,cAAc,EACd,UAAU,EACV,SAAS,EAET,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,EACJ,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,EACL,aAAa,EACb,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAA;AAGnB,YAAY,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,EACT,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,KAAK,EACL,KAAK,EACL,YAAY,EACZ,KAAK,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,EAAE,EACF,GAAG,EACH,EAAE,EACF,GAAG,EACH,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,GACV,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,KAAK,EACL,cAAc,EACd,IAAI,EACJ,OAAO,GACR,MAAM,aAAa,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Flint Reactivity — Fine-grained signals system v4
|
|
2
|
+
export { state, computed, effect, watch, flushSync, untrack, captureScope, createSelector, createRoot, onCleanup,
|
|
3
|
+
// NEW v4 simplified APIs
|
|
4
|
+
reactive, model, bind, createRef, shallowRef, derive, signals, poll, watchDebounced, watchThrottled, computedSet, } from './signals.js';
|
|
5
|
+
// Debug mode v2
|
|
6
|
+
export { DebugManager, createDebugManager, getDebugManager, enableDebug, disableDebug, trackSignal, trackComputed, printSignalHistory, printComputedStats, printPerformanceSummary, } from './debug.js';
|
|
7
|
+
// Solid/React Compatibility Aliases (v4.2)
|
|
8
|
+
export { createSignal, createEffect, createMemo, createStore, batch, createResource, from, produce, } from './compat.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,OAAO,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,YAAY,EACZ,cAAc,EACd,UAAU,EACV,SAAS;AACT,yBAAyB;AACzB,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,IAAI,EACJ,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,cAAc,CAAA;AAerB,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AAwDnB,2CAA2C;AAC3C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,KAAK,EACL,cAAc,EACd,IAAI,EACJ,OAAO,GACR,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import type { Signal, Computed, Effect, Readable, Writable, WatchHandle, SignalState, ComputedState, CleanupFn, Selector, Scope, ReactiveProxy, Ref } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a reactive state signal.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* const count = state(0)
|
|
7
|
+
* count() // read: 0
|
|
8
|
+
* count.set(5) // write: 5
|
|
9
|
+
* count.set(c => c + 1) // write: 6
|
|
10
|
+
*/
|
|
11
|
+
export declare function state<T>(initial: T): Writable<T> & Signal<T>;
|
|
12
|
+
/**
|
|
13
|
+
* Create a computed (derived) value.
|
|
14
|
+
* Lazily evaluated and cached. Only recomputes when dependencies change.
|
|
15
|
+
*/
|
|
16
|
+
export declare function computed<T>(fn: () => T, options?: {
|
|
17
|
+
equals?: (prev: T, next: T) => boolean;
|
|
18
|
+
}): Computed<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Create a writable computed value.
|
|
21
|
+
* Like computed, but can be set directly.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const count = state(0)
|
|
25
|
+
* const doubled = computedSet({
|
|
26
|
+
* get: () => count() * 2,
|
|
27
|
+
* set: (value) => count.set(value / 2)
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* doubled() // read: 0
|
|
31
|
+
* doubled.set(10) // write: sets count to 5
|
|
32
|
+
*/
|
|
33
|
+
export declare function computedSet<T>(options: {
|
|
34
|
+
get: () => T;
|
|
35
|
+
set: (value: T) => void;
|
|
36
|
+
equals?: (prev: T, next: T) => boolean;
|
|
37
|
+
}): Writable<T> & Computed<T>;
|
|
38
|
+
/**
|
|
39
|
+
* Create a side effect that auto-tracks dependencies.
|
|
40
|
+
*/
|
|
41
|
+
export declare function effect(fn: () => void | CleanupFn): Effect;
|
|
42
|
+
/**
|
|
43
|
+
* Watch a source function and call callback when value changes.
|
|
44
|
+
*/
|
|
45
|
+
export declare function watch<T>(source: () => T, callback: (value: T, oldValue: T | undefined) => void): WatchHandle;
|
|
46
|
+
/**
|
|
47
|
+
* Batch multiple signal updates into a single flush.
|
|
48
|
+
*/
|
|
49
|
+
export declare function batch(fn: () => void): void;
|
|
50
|
+
/**
|
|
51
|
+
* Run queued effects/computeds immediately.
|
|
52
|
+
*/
|
|
53
|
+
export declare function flushSync(): void;
|
|
54
|
+
export declare function captureScope<T>(fn: () => T): {
|
|
55
|
+
value: T;
|
|
56
|
+
dependencies: Set<SignalState<any> | ComputedState<any>>;
|
|
57
|
+
};
|
|
58
|
+
export declare function untrack<T>(fn: () => T): T;
|
|
59
|
+
export declare function createRoot<T>(fn: (dispose: () => void) => T): T & Scope;
|
|
60
|
+
export declare function onCleanup(fn: CleanupFn): void;
|
|
61
|
+
export declare function createSelector<T>(source: Signal<T> | Readable<T> | (() => T)): Selector<T>;
|
|
62
|
+
export { onCleanup as onDispose };
|
|
63
|
+
/**
|
|
64
|
+
* Create a reactive object with Proxy. Reads auto-track, writes auto-trigger.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* const user = reactive({ name: 'John', age: 30 })
|
|
68
|
+
* user.name // tracked
|
|
69
|
+
* user.age = 31 // triggers effects
|
|
70
|
+
*/
|
|
71
|
+
export declare function reactive<T extends object>(obj: T): ReactiveProxy<T>;
|
|
72
|
+
/**
|
|
73
|
+
* Create a model — a reactive container with actions.
|
|
74
|
+
* Combines state + computed + actions in one clean API.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* const counter = model({
|
|
78
|
+
* state: { count: 0, step: 1 },
|
|
79
|
+
* computed: {
|
|
80
|
+
* doubled: (s) => s.count * 2,
|
|
81
|
+
* isPositive: (s) => s.count > 0,
|
|
82
|
+
* },
|
|
83
|
+
* actions: {
|
|
84
|
+
* increment(s) { s.count += s.step },
|
|
85
|
+
* decrement(s) { s.count -= s.step },
|
|
86
|
+
* reset(s) { s.count = 0 },
|
|
87
|
+
* },
|
|
88
|
+
* })
|
|
89
|
+
*
|
|
90
|
+
* counter.count() // 0
|
|
91
|
+
* counter.doubled() // 0
|
|
92
|
+
* counter.increment() // s.count = 1
|
|
93
|
+
*/
|
|
94
|
+
export declare function model<T extends Record<string, any>, C extends Record<string, (state: T) => any>, A extends Record<string, (state: T, ...args: any[]) => void>>(config: {
|
|
95
|
+
state: T;
|
|
96
|
+
computed?: C;
|
|
97
|
+
actions?: A;
|
|
98
|
+
}): {
|
|
99
|
+
[K in keyof T]: T[K] extends object ? Writable<T[K]> : Signal<T[K]>;
|
|
100
|
+
} & {
|
|
101
|
+
[K in keyof C]: C[K] extends (s: T) => infer R ? Readable<R> : never;
|
|
102
|
+
} & {
|
|
103
|
+
[K in keyof A]: A[K] extends (s: T, ...args: infer P) => void ? (...args: P) => void : never;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Create a two-way binding between a signal and a DOM element property.
|
|
107
|
+
* Simplifies form handling dramatically.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* const name = state('')
|
|
111
|
+
* <input {...bind(name, 'value')} onInput={(e) => name.set(e.target.value)} />
|
|
112
|
+
*/
|
|
113
|
+
export declare function bind<T>(signal: Writable<T>, prop: string): Record<string, () => T>;
|
|
114
|
+
/**
|
|
115
|
+
* Create a mutable ref (like React's useRef).
|
|
116
|
+
*/
|
|
117
|
+
export declare function createRef<T>(initial: T): Ref<T>;
|
|
118
|
+
/**
|
|
119
|
+
* Create a shallow ref — only triggers on reference change, not deep mutation.
|
|
120
|
+
*/
|
|
121
|
+
export declare function shallowRef<T>(value: T): Writable<T> & {
|
|
122
|
+
readonly current: T;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Group multiple signals into a single derived signal.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* const [doubled, tripled] = derive(
|
|
129
|
+
* [count],
|
|
130
|
+
* (c) => [c * 2, c * 3]
|
|
131
|
+
* )
|
|
132
|
+
*/
|
|
133
|
+
export declare function derive<T extends Readable<any>[], R>(sources: T, fn: (...values: {
|
|
134
|
+
[K in keyof T]: T[K] extends Readable<infer V> ? V : never;
|
|
135
|
+
}) => R): Readable<R>;
|
|
136
|
+
/**
|
|
137
|
+
* Batch create multiple signals from an object.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* const [count, name, items] = signals(0, 'hello', [])
|
|
141
|
+
*/
|
|
142
|
+
export declare function signals<T extends any[]>(...initials: T): {
|
|
143
|
+
[K in keyof T]: Signal<T[K]>;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Create an effect that runs on a specific interval.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* poll(() => fetchData(), 5000) // poll every 5 seconds
|
|
150
|
+
*/
|
|
151
|
+
export declare function poll(fn: () => void | CleanupFn, ms: number): Effect;
|
|
152
|
+
/**
|
|
153
|
+
* Create an effect that runs when a signal changes (debounced).
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* watchDebounced(searchQuery, (q) => fetchResults(q), 300)
|
|
157
|
+
*/
|
|
158
|
+
export declare function watchDebounced<T>(source: () => T, callback: (value: T, oldValue: T | undefined) => void, ms: number): WatchHandle;
|
|
159
|
+
/**
|
|
160
|
+
* Create an effect that runs when a signal changes (throttled).
|
|
161
|
+
*/
|
|
162
|
+
export declare function watchThrottled<T>(source: () => T, callback: (value: T, oldValue: T | undefined) => void, ms: number): WatchHandle;
|
|
163
|
+
//# sourceMappingURL=signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../src/signals.ts"],"names":[],"mappings":"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"}
|