@valentin30/signal 0.0.7 → 0.0.8

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/dist/index.d.mts CHANGED
@@ -38,27 +38,32 @@ declare class Collector<T> implements Collector$1<T> {
38
38
  ignore(callback: Callback): void;
39
39
  }
40
40
 
41
- type Equals<T> = (value: T, other: T) => boolean;
42
41
  interface Comparable<T> {
43
42
  equals(other: T): boolean;
44
43
  }
45
44
 
46
- interface Reader<T> {
45
+ interface Readable<T> {
47
46
  read(): T;
48
47
  }
49
48
 
50
- interface Subscription {
49
+ interface Subscribable {
51
50
  subscribe(callback: Callback): Callback;
52
51
  unsubscribe(callback: Callback): void;
53
52
  }
54
53
 
55
- interface Writer<T> {
54
+ interface Writable<T> {
56
55
  write(value: T): void;
57
56
  }
58
57
 
59
- interface Signal$1<T> extends Reader<T>, Writer<T>, Comparable<T>, Subscription {
58
+ type Equals<T> = (value: T, other: T) => boolean;
59
+
60
+ interface Peekable<T> {
61
+ peek(): T;
62
+ }
63
+
64
+ interface Signal$1<T> extends Readable<T>, Writable<T>, Peekable<T>, Comparable<T>, Subscribable {
60
65
  }
61
- interface ReadonlySignal<T> extends Reader<T>, Comparable<T>, Subscription {
66
+ interface ReadonlySignal<T> extends Readable<T>, Peekable<T>, Comparable<T>, Subscribable {
62
67
  }
63
68
  type SignalFactory = <T>(value: T, equals?: Equals<T>) => Signal$1<T>;
64
69
  declare const signal$1: Factory<SignalFactory>;
@@ -72,6 +77,7 @@ declare class Computed<T> implements ReadonlySignal<T> {
72
77
  #private;
73
78
  constructor(empty: boolean, value: T | undefined, values: [ReadonlySignal<unknown>, unknown][], dependencies: Set<ReadonlySignal<unknown>>, listeners: Set<Callback>, collector: Collector$1<ReadonlySignal<unknown>>, compute: () => T, equals: Maybe<Equals<T>>);
74
79
  read(): T;
80
+ peek(): T;
75
81
  equals(other: T): boolean;
76
82
  subscribe(callback: Callback): Callback;
77
83
  unsubscribe(callback: Callback): void;
@@ -130,6 +136,7 @@ declare class Signal<T> implements Signal$1<T> {
130
136
  #private;
131
137
  constructor(value: T, equals: Maybe<Equals<T>>, listeners: Set<Callback>, batcher: Collector$1<Callback>, collector: Collector$1<ReadonlySignal<unknown>>);
132
138
  read(): T;
139
+ peek(): T;
133
140
  write(value: T): void;
134
141
  equals(other: T): boolean;
135
142
  subscribe(callback: Callback): Callback;
@@ -191,4 +198,4 @@ interface Config {
191
198
  }
192
199
  declare function config(config?: Config): void;
193
200
 
194
- export { type Batch, type Callback, type Collector$1 as Collector, type CollectorFactory, type Comparable, type ComposedFactory, type ComputedFactory, type Config, type Effect, type EffectCallback, type EffectCleanup, type Equals, type Factory, type Function, type Ignore, type Maybe, type Reader, type ReadonlySignal, type Signal$1 as Signal, type SignalFactory, type Subscription, type Writer, batch, collector$1 as collector, composed, computed, config, effect$1 as effect, factory, ignore, index as internal, signal$1 as signal };
201
+ export { type Batch, type Callback, type Collector$1 as Collector, type CollectorFactory, type Comparable, type ComposedFactory, type ComputedFactory, type Config, type Effect, type EffectCallback, type EffectCleanup, type Equals, type Factory, type Function, type Ignore, type Maybe, type Peekable, type Readable, type ReadonlySignal, type Signal$1 as Signal, type SignalFactory, type Subscribable, type Writable, batch, collector$1 as collector, composed, computed, config, effect$1 as effect, factory, ignore, index as internal, signal$1 as signal };
package/dist/index.d.ts CHANGED
@@ -38,27 +38,32 @@ declare class Collector<T> implements Collector$1<T> {
38
38
  ignore(callback: Callback): void;
39
39
  }
40
40
 
41
- type Equals<T> = (value: T, other: T) => boolean;
42
41
  interface Comparable<T> {
43
42
  equals(other: T): boolean;
44
43
  }
45
44
 
46
- interface Reader<T> {
45
+ interface Readable<T> {
47
46
  read(): T;
48
47
  }
49
48
 
50
- interface Subscription {
49
+ interface Subscribable {
51
50
  subscribe(callback: Callback): Callback;
52
51
  unsubscribe(callback: Callback): void;
53
52
  }
54
53
 
55
- interface Writer<T> {
54
+ interface Writable<T> {
56
55
  write(value: T): void;
57
56
  }
58
57
 
59
- interface Signal$1<T> extends Reader<T>, Writer<T>, Comparable<T>, Subscription {
58
+ type Equals<T> = (value: T, other: T) => boolean;
59
+
60
+ interface Peekable<T> {
61
+ peek(): T;
62
+ }
63
+
64
+ interface Signal$1<T> extends Readable<T>, Writable<T>, Peekable<T>, Comparable<T>, Subscribable {
60
65
  }
61
- interface ReadonlySignal<T> extends Reader<T>, Comparable<T>, Subscription {
66
+ interface ReadonlySignal<T> extends Readable<T>, Peekable<T>, Comparable<T>, Subscribable {
62
67
  }
63
68
  type SignalFactory = <T>(value: T, equals?: Equals<T>) => Signal$1<T>;
64
69
  declare const signal$1: Factory<SignalFactory>;
@@ -72,6 +77,7 @@ declare class Computed<T> implements ReadonlySignal<T> {
72
77
  #private;
73
78
  constructor(empty: boolean, value: T | undefined, values: [ReadonlySignal<unknown>, unknown][], dependencies: Set<ReadonlySignal<unknown>>, listeners: Set<Callback>, collector: Collector$1<ReadonlySignal<unknown>>, compute: () => T, equals: Maybe<Equals<T>>);
74
79
  read(): T;
80
+ peek(): T;
75
81
  equals(other: T): boolean;
76
82
  subscribe(callback: Callback): Callback;
77
83
  unsubscribe(callback: Callback): void;
@@ -130,6 +136,7 @@ declare class Signal<T> implements Signal$1<T> {
130
136
  #private;
131
137
  constructor(value: T, equals: Maybe<Equals<T>>, listeners: Set<Callback>, batcher: Collector$1<Callback>, collector: Collector$1<ReadonlySignal<unknown>>);
132
138
  read(): T;
139
+ peek(): T;
133
140
  write(value: T): void;
134
141
  equals(other: T): boolean;
135
142
  subscribe(callback: Callback): Callback;
@@ -191,4 +198,4 @@ interface Config {
191
198
  }
192
199
  declare function config(config?: Config): void;
193
200
 
194
- export { type Batch, type Callback, type Collector$1 as Collector, type CollectorFactory, type Comparable, type ComposedFactory, type ComputedFactory, type Config, type Effect, type EffectCallback, type EffectCleanup, type Equals, type Factory, type Function, type Ignore, type Maybe, type Reader, type ReadonlySignal, type Signal$1 as Signal, type SignalFactory, type Subscription, type Writer, batch, collector$1 as collector, composed, computed, config, effect$1 as effect, factory, ignore, index as internal, signal$1 as signal };
201
+ export { type Batch, type Callback, type Collector$1 as Collector, type CollectorFactory, type Comparable, type ComposedFactory, type ComputedFactory, type Config, type Effect, type EffectCallback, type EffectCleanup, type Equals, type Factory, type Function, type Ignore, type Maybe, type Peekable, type Readable, type ReadonlySignal, type Signal$1 as Signal, type SignalFactory, type Subscribable, type Writable, batch, collector$1 as collector, composed, computed, config, effect$1 as effect, factory, ignore, index as internal, signal$1 as signal };
package/dist/index.js CHANGED
@@ -160,6 +160,9 @@ var Computed = class {
160
160
  }
161
161
  read() {
162
162
  this.#collector.add(this);
163
+ return this.peek();
164
+ }
165
+ peek() {
163
166
  if (!this.#empty && !this.#values.some(([dep, value]) => !dep.equals(value))) return this.#value;
164
167
  const current = this.#dependencies;
165
168
  const next = this.#collector.collect(() => this.#value = this.#compute());
@@ -282,6 +285,9 @@ var Signal = class {
282
285
  }
283
286
  read() {
284
287
  this.#collector.add(this);
288
+ return this.peek();
289
+ }
290
+ peek() {
285
291
  return this.#value;
286
292
  }
287
293
  write(value) {
package/dist/index.mjs CHANGED
@@ -131,6 +131,9 @@ var Computed = class {
131
131
  }
132
132
  read() {
133
133
  this.#collector.add(this);
134
+ return this.peek();
135
+ }
136
+ peek() {
134
137
  if (!this.#empty && !this.#values.some(([dep, value]) => !dep.equals(value))) return this.#value;
135
138
  const current = this.#dependencies;
136
139
  const next = this.#collector.collect(() => this.#value = this.#compute());
@@ -253,6 +256,9 @@ var Signal = class {
253
256
  }
254
257
  read() {
255
258
  this.#collector.add(this);
259
+ return this.peek();
260
+ }
261
+ peek() {
256
262
  return this.#value;
257
263
  }
258
264
  write(value) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valentin30/signal",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "My take on signals - lightweight reactive primitives inspired by Preact Signals, written in TypeScript.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",