@valentin30/signal 0.2.0 → 1.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.
Files changed (56) hide show
  1. package/.prettierrc +21 -0
  2. package/package.json +86 -8
  3. package/src/core/computed.ts +68 -0
  4. package/src/core/contracts/consumer.ts +3 -0
  5. package/src/core/contracts/source.ts +7 -0
  6. package/src/core/interfaces/consumers.ts +8 -0
  7. package/src/core/interfaces/sources.ts +8 -0
  8. package/src/core/interfaces/value.ts +5 -0
  9. package/src/core/signal.ts +45 -0
  10. package/src/modules/common/contracts/addable.ts +3 -0
  11. package/src/modules/common/contracts/disposable.ts +3 -0
  12. package/src/modules/common/contracts/subscriber.ts +6 -0
  13. package/src/modules/common/types/callable.ts +1 -0
  14. package/src/modules/common/types/callback.ts +1 -0
  15. package/src/modules/common/utils/compare.ts +3 -0
  16. package/src/modules/common/utils/swap.ts +23 -0
  17. package/src/modules/consumers/factory.ts +26 -0
  18. package/src/modules/event/channel.ts +82 -0
  19. package/src/modules/event/effect.ts +45 -0
  20. package/src/modules/event/notifier.ts +38 -0
  21. package/src/modules/node/factory.ts +51 -0
  22. package/src/modules/node/index.ts +13 -0
  23. package/src/modules/node/source.ts +11 -0
  24. package/src/modules/scheduler/dispatch.ts +3 -0
  25. package/src/modules/scheduler/runner.ts +47 -0
  26. package/src/modules/sources/dynamic.ts +73 -0
  27. package/src/modules/sources/static.ts +49 -0
  28. package/src/modules/value/factory.ts +29 -0
  29. package/src/packages/builder/consumers.ts +11 -0
  30. package/src/packages/builder/node.ts +16 -0
  31. package/src/packages/builder/sources.ts +18 -0
  32. package/src/packages/builder/value.ts +11 -0
  33. package/src/packages/builder.ts +4 -0
  34. package/src/packages/core/computed.ts +15 -0
  35. package/src/packages/core/context.ts +5 -0
  36. package/src/packages/core/scheduler.ts +5 -0
  37. package/src/packages/core/signal.ts +12 -0
  38. package/src/packages/core.ts +2 -0
  39. package/src/packages/event/channel.ts +17 -0
  40. package/src/packages/event/effect.ts +15 -0
  41. package/src/packages/event/notifier.ts +14 -0
  42. package/src/packages/event.ts +3 -0
  43. package/src/packages/react/use-computed.ts +9 -0
  44. package/src/packages/react/use-read.ts +23 -0
  45. package/src/packages/react/use-signal.ts +9 -0
  46. package/src/packages/react.ts +3 -0
  47. package/src/runtime/context.ts +36 -0
  48. package/src/runtime/scheduler.ts +75 -0
  49. package/tsconfig.build.json +4 -0
  50. package/tsconfig.json +16 -0
  51. package/tsup.config.ts +53 -0
  52. package/vitest.config.ts +14 -0
  53. package/dist/index.d.mts +0 -287
  54. package/dist/index.d.ts +0 -287
  55. package/dist/index.js +0 -497
  56. package/dist/index.mjs +0 -465
package/dist/index.d.mts DELETED
@@ -1,287 +0,0 @@
1
- type Callable<Args extends any[] = any[], ReturnType = any> = (...args: Args) => ReturnType;
2
-
3
- interface Batcher {
4
- batch<Value>(callback: () => Value): Value;
5
- batch<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
6
- }
7
- declare function batch<Value>(callback: () => Value): Value;
8
- declare function batch<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
9
-
10
- type Write<T> = (value: T) => void | undefined | boolean;
11
- interface Writable<T> {
12
- write(value: T): boolean;
13
- }
14
- declare function writer<T>(write: Write<T>): Writable<T>;
15
-
16
- interface Comparator<T> {
17
- equals(value: T, other: T): boolean;
18
- }
19
- interface Comparable<T> extends Comparator<T> {
20
- equals(other: T): boolean;
21
- equals(value: T, other: T): boolean;
22
- }
23
- type Equals<T> = (value: T, other: T) => boolean;
24
- declare namespace Equals {
25
- function strict<T>(value: T, other: T): boolean;
26
- }
27
- declare function comparator<T>(equals?: Equals<T>): Comparator<T>;
28
-
29
- interface Peekable<T> {
30
- peek(): T;
31
- }
32
-
33
- interface Readable<T> {
34
- read(): T;
35
- }
36
- declare function reader<T>(read: () => T): Readable<T>;
37
-
38
- type Callback = () => void;
39
-
40
- interface Subscribable {
41
- subscribe(callback: Callback): Callback;
42
- unsubscribe(callback: Callback): void;
43
- }
44
-
45
- interface Signal<T> extends Readable<T>, Writable<T>, Comparable<T>, Peekable<T>, Subscribable {
46
- }
47
- interface ReadonlySignal<T> extends Readable<T>, Comparable<T>, Peekable<T>, Subscribable {
48
- }
49
- interface SignalFactory {
50
- <T>(value: T, equals?: Equals<T>): Signal<T>;
51
- }
52
- declare function signal<T>(value: T, equals?: Equals<T>): Signal<T>;
53
-
54
- interface ComposedFactory {
55
- <T>(value: ReadonlySignal<T>, write: Write<T>): Signal<T>;
56
- }
57
- declare function composed<T>(value: ReadonlySignal<T>, write: Write<T>): Signal<T>;
58
-
59
- interface ComputedFactory {
60
- <T>(compute: () => T, equals?: Equals<T>): ReadonlySignal<T>;
61
- }
62
- declare function computed<T>(compute: () => T, equals?: Equals<T>): ReadonlySignal<T>;
63
-
64
- interface Ignore {
65
- ignore<Value>(callback: () => Value): Value;
66
- ignore<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
67
- }
68
- declare function ignore<Value>(callback: () => Value): Value;
69
- declare function ignore<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
70
-
71
- interface CollectorState {
72
- collecting(): boolean;
73
- }
74
- interface CollectorTarget<T> extends CollectorState {
75
- add(value: T): void;
76
- }
77
- interface Collector<T> extends CollectorState {
78
- collect<Value>(callback: () => Value): [Value, Readonly<Set<T>>];
79
- collect<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): [Value, Readonly<Set<T>>];
80
- }
81
-
82
- interface Tracker<T> {
83
- track(value: T): void;
84
- }
85
-
86
- interface DependencyState {
87
- changed(): boolean;
88
- }
89
- interface DependencyObserver extends DependencyState, Tracker<Callback> {
90
- }
91
- interface DependencyTracker extends DependencyObserver, Subscribable {
92
- }
93
-
94
- interface Scheduler<T> {
95
- schedule(...value: T[]): void;
96
- }
97
-
98
- declare class CollectorBasedBatcher implements Batcher {
99
- private readonly collector;
100
- constructor(collector: Collector<Callback>);
101
- batch<Value>(callback: () => Value): Value;
102
- batch<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
103
- }
104
-
105
- type Maybe<T> = T | null | undefined;
106
-
107
- declare class CollectorController<T> implements Collector<T>, CollectorTarget<T>, CollectorState, Ignore, Tracker<T> {
108
- private values;
109
- constructor(values?: Maybe<Set<T>>);
110
- collecting(): boolean;
111
- add(value: T): void;
112
- track(value: T): void;
113
- collect<Value>(callback: () => Value): [Value, Readonly<Set<T>>];
114
- collect<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): [Value, Readonly<Set<T>>];
115
- ignore<Value>(callback: () => Value): Value;
116
- ignore<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
117
- }
118
-
119
- declare class Composed<T> implements Signal<T> {
120
- private readonly value;
121
- private readonly writer;
122
- constructor(value: ReadonlySignal<T>, writer: Writable<T>);
123
- read(): T;
124
- peek(): T;
125
- write(value: T): boolean;
126
- equals(other: T): boolean;
127
- equals(value: T, other: T): boolean;
128
- subscribe(callback: Callback): Callback;
129
- unsubscribe(callback: Callback): void;
130
- }
131
-
132
- type Snapshot = [ReadonlySignal<unknown>, unknown];
133
- declare namespace Snapshot {
134
- function changed([value, snapshot]: Snapshot): boolean;
135
- function from(values: Set<ReadonlySignal<unknown>>): Snapshot[];
136
- }
137
- declare class DependencyManager implements DependencyTracker {
138
- private snapshot;
139
- private dependencies;
140
- private readonly collector;
141
- private readonly listeners;
142
- constructor(collector: Collector<ReadonlySignal<unknown>>, listeners?: Set<Callback>, dependencies?: Set<ReadonlySignal<unknown>>, snapshot?: Maybe<Snapshot[]>);
143
- changed(): boolean;
144
- track(callback: Callback): void;
145
- subscribe(callback: Callback): Callback;
146
- unsubscribe(callback: Callback): void;
147
- private equals;
148
- }
149
-
150
- interface Emitter {
151
- emit(): void;
152
- }
153
-
154
- declare class ScheduledEmitter implements Emitter, Subscribable {
155
- private readonly listeners;
156
- private readonly scheduler;
157
- constructor(scheduler: Scheduler<Callback>, listeners?: Set<Callback>);
158
- emit(): void;
159
- subscribe(callback: Callback): Callback;
160
- unsubscribe(callback: Callback): void;
161
- }
162
-
163
- interface Value<T> extends Readable<T>, Writable<T>, Comparable<T> {
164
- }
165
-
166
- declare class Reactive<T> implements Signal<T> {
167
- private readonly value;
168
- private readonly tracker;
169
- private readonly subscription;
170
- constructor(value: Value<T>, tracker: Tracker<ReadonlySignal<unknown>>, subscription: Subscribable);
171
- read(): T;
172
- peek(): T;
173
- write(value: T): boolean;
174
- equals(other: T): boolean;
175
- equals(value: T, other: T): boolean;
176
- subscribe(callback: Callback): Callback;
177
- unsubscribe(callback: Callback): void;
178
- }
179
-
180
- declare class CallbackScheduler implements Scheduler<Callback> {
181
- private readonly collector;
182
- private readonly add;
183
- constructor(collector: CollectorTarget<Callback>);
184
- schedule(...args: Callback[]): void;
185
- }
186
-
187
- declare class BasicValue<T> implements Value<T> {
188
- private value;
189
- private readonly comparator;
190
- constructor(value: T, comparator: Comparator<T>);
191
- read(): T;
192
- write(value: T): boolean;
193
- equals(other: T): boolean;
194
- equals(value: T, other: T): boolean;
195
- }
196
- declare class EmittingValue<T> {
197
- private readonly value;
198
- private readonly emitter;
199
- constructor(value: Value<T>, emitter: Emitter);
200
- read(): T;
201
- write(value: T): boolean;
202
- equals(other: T): boolean;
203
- equals(value: T, other: T): boolean;
204
- }
205
- declare class ComputedValue<T> implements Value<T> {
206
- private readonly cache;
207
- private readonly computation;
208
- private readonly dependencies;
209
- constructor(cache: Value<T>, computation: Readable<T>, dependencies: DependencyObserver);
210
- read(): T;
211
- private recompute;
212
- write(_: T): boolean;
213
- equals(other: T): boolean;
214
- equals(value: T, other: T): boolean;
215
- }
216
-
217
- declare class BatchWriter<T> implements Writable<T> {
218
- private readonly writer;
219
- private readonly batcher;
220
- constructor(writer: Writable<T>, batcher: Batcher);
221
- write(value: T): boolean;
222
- }
223
-
224
- type internal_BasicValue<T> = BasicValue<T>;
225
- declare const internal_BasicValue: typeof BasicValue;
226
- type internal_BatchWriter<T> = BatchWriter<T>;
227
- declare const internal_BatchWriter: typeof BatchWriter;
228
- type internal_CallbackScheduler = CallbackScheduler;
229
- declare const internal_CallbackScheduler: typeof CallbackScheduler;
230
- type internal_CollectorBasedBatcher = CollectorBasedBatcher;
231
- declare const internal_CollectorBasedBatcher: typeof CollectorBasedBatcher;
232
- type internal_CollectorController<T> = CollectorController<T>;
233
- declare const internal_CollectorController: typeof CollectorController;
234
- type internal_Composed<T> = Composed<T>;
235
- declare const internal_Composed: typeof Composed;
236
- type internal_ComputedValue<T> = ComputedValue<T>;
237
- declare const internal_ComputedValue: typeof ComputedValue;
238
- type internal_DependencyManager = DependencyManager;
239
- declare const internal_DependencyManager: typeof DependencyManager;
240
- type internal_EmittingValue<T> = EmittingValue<T>;
241
- declare const internal_EmittingValue: typeof EmittingValue;
242
- type internal_Reactive<T> = Reactive<T>;
243
- declare const internal_Reactive: typeof Reactive;
244
- type internal_ScheduledEmitter = ScheduledEmitter;
245
- declare const internal_ScheduledEmitter: typeof ScheduledEmitter;
246
- declare const internal_Snapshot: typeof Snapshot;
247
- declare namespace internal {
248
- export { internal_BasicValue as BasicValue, internal_BatchWriter as BatchWriter, internal_CallbackScheduler as CallbackScheduler, internal_CollectorBasedBatcher as CollectorBasedBatcher, internal_CollectorController as CollectorController, internal_Composed as Composed, internal_ComputedValue as ComputedValue, internal_DependencyManager as DependencyManager, internal_EmittingValue as EmittingValue, internal_Reactive as Reactive, internal_ScheduledEmitter as ScheduledEmitter, internal_Snapshot as Snapshot };
249
- }
250
-
251
- declare function call(callback: Callback): void;
252
-
253
- type Factory<FactoryFunction extends Callable> = FactoryFunction & {
254
- factory(factory: Maybe<FactoryFunction>): void;
255
- default(factory: Maybe<FactoryFunction>): void;
256
- configured(): boolean;
257
- };
258
- declare function factory<FactoryFunction extends Callable>(name: string): Factory<FactoryFunction>;
259
-
260
- declare function singleton<T>(factory: () => T): {
261
- (): T;
262
- instance: T | undefined;
263
- };
264
-
265
- type utils_Factory<FactoryFunction extends Callable> = Factory<FactoryFunction>;
266
- declare const utils_call: typeof call;
267
- declare const utils_factory: typeof factory;
268
- declare const utils_singleton: typeof singleton;
269
- declare namespace utils {
270
- export { type utils_Factory as Factory, utils_call as call, utils_factory as factory, utils_singleton as singleton };
271
- }
272
-
273
- declare function configuration(): {
274
- signal: Factory<SignalFactory>;
275
- computed: Factory<ComputedFactory>;
276
- composed: Factory<ComposedFactory>;
277
- batcher: Factory<() => Batcher>;
278
- ignorer: Factory<() => Ignore>;
279
- scheduler: Factory<() => Scheduler<Callback>>;
280
- tracker: Factory<() => Tracker<ReadonlySignal<unknown>>>;
281
- collector: Factory<() => Collector<ReadonlySignal<unknown>>>;
282
- dependency_tracker: Factory<() => DependencyTracker>;
283
- dependency_collector: Factory<() => CollectorController<ReadonlySignal<unknown>>>;
284
- callback_collector: Factory<() => CollectorController<Callback>>;
285
- };
286
-
287
- export { type Batcher, type Callable, type Callback, type Collector, type CollectorState, type CollectorTarget, type Comparable, type Comparator, type ComposedFactory, type ComputedFactory, type DependencyObserver, type DependencyState, type DependencyTracker, type Emitter, Equals, type Ignore, internal as Internal, type Maybe, type Peekable, type Readable, type ReadonlySignal, type Scheduler, type Signal, type SignalFactory, type Subscribable, type Tracker, type Value, type Writable, type Write, batch, comparator, composed, computed, configuration, ignore, reader, signal, utils, writer };
package/dist/index.d.ts DELETED
@@ -1,287 +0,0 @@
1
- type Callable<Args extends any[] = any[], ReturnType = any> = (...args: Args) => ReturnType;
2
-
3
- interface Batcher {
4
- batch<Value>(callback: () => Value): Value;
5
- batch<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
6
- }
7
- declare function batch<Value>(callback: () => Value): Value;
8
- declare function batch<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
9
-
10
- type Write<T> = (value: T) => void | undefined | boolean;
11
- interface Writable<T> {
12
- write(value: T): boolean;
13
- }
14
- declare function writer<T>(write: Write<T>): Writable<T>;
15
-
16
- interface Comparator<T> {
17
- equals(value: T, other: T): boolean;
18
- }
19
- interface Comparable<T> extends Comparator<T> {
20
- equals(other: T): boolean;
21
- equals(value: T, other: T): boolean;
22
- }
23
- type Equals<T> = (value: T, other: T) => boolean;
24
- declare namespace Equals {
25
- function strict<T>(value: T, other: T): boolean;
26
- }
27
- declare function comparator<T>(equals?: Equals<T>): Comparator<T>;
28
-
29
- interface Peekable<T> {
30
- peek(): T;
31
- }
32
-
33
- interface Readable<T> {
34
- read(): T;
35
- }
36
- declare function reader<T>(read: () => T): Readable<T>;
37
-
38
- type Callback = () => void;
39
-
40
- interface Subscribable {
41
- subscribe(callback: Callback): Callback;
42
- unsubscribe(callback: Callback): void;
43
- }
44
-
45
- interface Signal<T> extends Readable<T>, Writable<T>, Comparable<T>, Peekable<T>, Subscribable {
46
- }
47
- interface ReadonlySignal<T> extends Readable<T>, Comparable<T>, Peekable<T>, Subscribable {
48
- }
49
- interface SignalFactory {
50
- <T>(value: T, equals?: Equals<T>): Signal<T>;
51
- }
52
- declare function signal<T>(value: T, equals?: Equals<T>): Signal<T>;
53
-
54
- interface ComposedFactory {
55
- <T>(value: ReadonlySignal<T>, write: Write<T>): Signal<T>;
56
- }
57
- declare function composed<T>(value: ReadonlySignal<T>, write: Write<T>): Signal<T>;
58
-
59
- interface ComputedFactory {
60
- <T>(compute: () => T, equals?: Equals<T>): ReadonlySignal<T>;
61
- }
62
- declare function computed<T>(compute: () => T, equals?: Equals<T>): ReadonlySignal<T>;
63
-
64
- interface Ignore {
65
- ignore<Value>(callback: () => Value): Value;
66
- ignore<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
67
- }
68
- declare function ignore<Value>(callback: () => Value): Value;
69
- declare function ignore<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
70
-
71
- interface CollectorState {
72
- collecting(): boolean;
73
- }
74
- interface CollectorTarget<T> extends CollectorState {
75
- add(value: T): void;
76
- }
77
- interface Collector<T> extends CollectorState {
78
- collect<Value>(callback: () => Value): [Value, Readonly<Set<T>>];
79
- collect<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): [Value, Readonly<Set<T>>];
80
- }
81
-
82
- interface Tracker<T> {
83
- track(value: T): void;
84
- }
85
-
86
- interface DependencyState {
87
- changed(): boolean;
88
- }
89
- interface DependencyObserver extends DependencyState, Tracker<Callback> {
90
- }
91
- interface DependencyTracker extends DependencyObserver, Subscribable {
92
- }
93
-
94
- interface Scheduler<T> {
95
- schedule(...value: T[]): void;
96
- }
97
-
98
- declare class CollectorBasedBatcher implements Batcher {
99
- private readonly collector;
100
- constructor(collector: Collector<Callback>);
101
- batch<Value>(callback: () => Value): Value;
102
- batch<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
103
- }
104
-
105
- type Maybe<T> = T | null | undefined;
106
-
107
- declare class CollectorController<T> implements Collector<T>, CollectorTarget<T>, CollectorState, Ignore, Tracker<T> {
108
- private values;
109
- constructor(values?: Maybe<Set<T>>);
110
- collecting(): boolean;
111
- add(value: T): void;
112
- track(value: T): void;
113
- collect<Value>(callback: () => Value): [Value, Readonly<Set<T>>];
114
- collect<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): [Value, Readonly<Set<T>>];
115
- ignore<Value>(callback: () => Value): Value;
116
- ignore<Value, Args extends any[]>(callback: Callable<Args, Value>, ...args: Args): Value;
117
- }
118
-
119
- declare class Composed<T> implements Signal<T> {
120
- private readonly value;
121
- private readonly writer;
122
- constructor(value: ReadonlySignal<T>, writer: Writable<T>);
123
- read(): T;
124
- peek(): T;
125
- write(value: T): boolean;
126
- equals(other: T): boolean;
127
- equals(value: T, other: T): boolean;
128
- subscribe(callback: Callback): Callback;
129
- unsubscribe(callback: Callback): void;
130
- }
131
-
132
- type Snapshot = [ReadonlySignal<unknown>, unknown];
133
- declare namespace Snapshot {
134
- function changed([value, snapshot]: Snapshot): boolean;
135
- function from(values: Set<ReadonlySignal<unknown>>): Snapshot[];
136
- }
137
- declare class DependencyManager implements DependencyTracker {
138
- private snapshot;
139
- private dependencies;
140
- private readonly collector;
141
- private readonly listeners;
142
- constructor(collector: Collector<ReadonlySignal<unknown>>, listeners?: Set<Callback>, dependencies?: Set<ReadonlySignal<unknown>>, snapshot?: Maybe<Snapshot[]>);
143
- changed(): boolean;
144
- track(callback: Callback): void;
145
- subscribe(callback: Callback): Callback;
146
- unsubscribe(callback: Callback): void;
147
- private equals;
148
- }
149
-
150
- interface Emitter {
151
- emit(): void;
152
- }
153
-
154
- declare class ScheduledEmitter implements Emitter, Subscribable {
155
- private readonly listeners;
156
- private readonly scheduler;
157
- constructor(scheduler: Scheduler<Callback>, listeners?: Set<Callback>);
158
- emit(): void;
159
- subscribe(callback: Callback): Callback;
160
- unsubscribe(callback: Callback): void;
161
- }
162
-
163
- interface Value<T> extends Readable<T>, Writable<T>, Comparable<T> {
164
- }
165
-
166
- declare class Reactive<T> implements Signal<T> {
167
- private readonly value;
168
- private readonly tracker;
169
- private readonly subscription;
170
- constructor(value: Value<T>, tracker: Tracker<ReadonlySignal<unknown>>, subscription: Subscribable);
171
- read(): T;
172
- peek(): T;
173
- write(value: T): boolean;
174
- equals(other: T): boolean;
175
- equals(value: T, other: T): boolean;
176
- subscribe(callback: Callback): Callback;
177
- unsubscribe(callback: Callback): void;
178
- }
179
-
180
- declare class CallbackScheduler implements Scheduler<Callback> {
181
- private readonly collector;
182
- private readonly add;
183
- constructor(collector: CollectorTarget<Callback>);
184
- schedule(...args: Callback[]): void;
185
- }
186
-
187
- declare class BasicValue<T> implements Value<T> {
188
- private value;
189
- private readonly comparator;
190
- constructor(value: T, comparator: Comparator<T>);
191
- read(): T;
192
- write(value: T): boolean;
193
- equals(other: T): boolean;
194
- equals(value: T, other: T): boolean;
195
- }
196
- declare class EmittingValue<T> {
197
- private readonly value;
198
- private readonly emitter;
199
- constructor(value: Value<T>, emitter: Emitter);
200
- read(): T;
201
- write(value: T): boolean;
202
- equals(other: T): boolean;
203
- equals(value: T, other: T): boolean;
204
- }
205
- declare class ComputedValue<T> implements Value<T> {
206
- private readonly cache;
207
- private readonly computation;
208
- private readonly dependencies;
209
- constructor(cache: Value<T>, computation: Readable<T>, dependencies: DependencyObserver);
210
- read(): T;
211
- private recompute;
212
- write(_: T): boolean;
213
- equals(other: T): boolean;
214
- equals(value: T, other: T): boolean;
215
- }
216
-
217
- declare class BatchWriter<T> implements Writable<T> {
218
- private readonly writer;
219
- private readonly batcher;
220
- constructor(writer: Writable<T>, batcher: Batcher);
221
- write(value: T): boolean;
222
- }
223
-
224
- type internal_BasicValue<T> = BasicValue<T>;
225
- declare const internal_BasicValue: typeof BasicValue;
226
- type internal_BatchWriter<T> = BatchWriter<T>;
227
- declare const internal_BatchWriter: typeof BatchWriter;
228
- type internal_CallbackScheduler = CallbackScheduler;
229
- declare const internal_CallbackScheduler: typeof CallbackScheduler;
230
- type internal_CollectorBasedBatcher = CollectorBasedBatcher;
231
- declare const internal_CollectorBasedBatcher: typeof CollectorBasedBatcher;
232
- type internal_CollectorController<T> = CollectorController<T>;
233
- declare const internal_CollectorController: typeof CollectorController;
234
- type internal_Composed<T> = Composed<T>;
235
- declare const internal_Composed: typeof Composed;
236
- type internal_ComputedValue<T> = ComputedValue<T>;
237
- declare const internal_ComputedValue: typeof ComputedValue;
238
- type internal_DependencyManager = DependencyManager;
239
- declare const internal_DependencyManager: typeof DependencyManager;
240
- type internal_EmittingValue<T> = EmittingValue<T>;
241
- declare const internal_EmittingValue: typeof EmittingValue;
242
- type internal_Reactive<T> = Reactive<T>;
243
- declare const internal_Reactive: typeof Reactive;
244
- type internal_ScheduledEmitter = ScheduledEmitter;
245
- declare const internal_ScheduledEmitter: typeof ScheduledEmitter;
246
- declare const internal_Snapshot: typeof Snapshot;
247
- declare namespace internal {
248
- export { internal_BasicValue as BasicValue, internal_BatchWriter as BatchWriter, internal_CallbackScheduler as CallbackScheduler, internal_CollectorBasedBatcher as CollectorBasedBatcher, internal_CollectorController as CollectorController, internal_Composed as Composed, internal_ComputedValue as ComputedValue, internal_DependencyManager as DependencyManager, internal_EmittingValue as EmittingValue, internal_Reactive as Reactive, internal_ScheduledEmitter as ScheduledEmitter, internal_Snapshot as Snapshot };
249
- }
250
-
251
- declare function call(callback: Callback): void;
252
-
253
- type Factory<FactoryFunction extends Callable> = FactoryFunction & {
254
- factory(factory: Maybe<FactoryFunction>): void;
255
- default(factory: Maybe<FactoryFunction>): void;
256
- configured(): boolean;
257
- };
258
- declare function factory<FactoryFunction extends Callable>(name: string): Factory<FactoryFunction>;
259
-
260
- declare function singleton<T>(factory: () => T): {
261
- (): T;
262
- instance: T | undefined;
263
- };
264
-
265
- type utils_Factory<FactoryFunction extends Callable> = Factory<FactoryFunction>;
266
- declare const utils_call: typeof call;
267
- declare const utils_factory: typeof factory;
268
- declare const utils_singleton: typeof singleton;
269
- declare namespace utils {
270
- export { type utils_Factory as Factory, utils_call as call, utils_factory as factory, utils_singleton as singleton };
271
- }
272
-
273
- declare function configuration(): {
274
- signal: Factory<SignalFactory>;
275
- computed: Factory<ComputedFactory>;
276
- composed: Factory<ComposedFactory>;
277
- batcher: Factory<() => Batcher>;
278
- ignorer: Factory<() => Ignore>;
279
- scheduler: Factory<() => Scheduler<Callback>>;
280
- tracker: Factory<() => Tracker<ReadonlySignal<unknown>>>;
281
- collector: Factory<() => Collector<ReadonlySignal<unknown>>>;
282
- dependency_tracker: Factory<() => DependencyTracker>;
283
- dependency_collector: Factory<() => CollectorController<ReadonlySignal<unknown>>>;
284
- callback_collector: Factory<() => CollectorController<Callback>>;
285
- };
286
-
287
- export { type Batcher, type Callable, type Callback, type Collector, type CollectorState, type CollectorTarget, type Comparable, type Comparator, type ComposedFactory, type ComputedFactory, type DependencyObserver, type DependencyState, type DependencyTracker, type Emitter, Equals, type Ignore, internal as Internal, type Maybe, type Peekable, type Readable, type ReadonlySignal, type Scheduler, type Signal, type SignalFactory, type Subscribable, type Tracker, type Value, type Writable, type Write, batch, comparator, composed, computed, configuration, ignore, reader, signal, utils, writer };