@valentin30/signal 0.0.7 → 0.0.9

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
@@ -1,13 +1,13 @@
1
- type Function = (...args: any[]) => any;
1
+ type Callable = (...args: any[]) => any;
2
2
 
3
3
  type Maybe<T> = T | null | undefined;
4
4
 
5
- type Factory<Fn extends Function> = Fn & {
5
+ type Factory<Fn extends Callable> = Fn & {
6
6
  factory(factory: Maybe<Fn>): void;
7
7
  default(factory: Maybe<Fn>): void;
8
8
  configured(): boolean;
9
9
  };
10
- declare function factory<Fn extends Function>(name: string): Factory<Fn>;
10
+ declare function factory<Fn extends Callable>(name: string): Factory<Fn>;
11
11
 
12
12
  type Callback = () => void;
13
13
 
@@ -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 Callable, 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 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
@@ -1,13 +1,13 @@
1
- type Function = (...args: any[]) => any;
1
+ type Callable = (...args: any[]) => any;
2
2
 
3
3
  type Maybe<T> = T | null | undefined;
4
4
 
5
- type Factory<Fn extends Function> = Fn & {
5
+ type Factory<Fn extends Callable> = Fn & {
6
6
  factory(factory: Maybe<Fn>): void;
7
7
  default(factory: Maybe<Fn>): void;
8
8
  configured(): boolean;
9
9
  };
10
- declare function factory<Fn extends Function>(name: string): Factory<Fn>;
10
+ declare function factory<Fn extends Callable>(name: string): Factory<Fn>;
11
11
 
12
12
  type Callback = () => void;
13
13
 
@@ -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 Callable, 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 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
@@ -42,9 +42,13 @@ function factory(name) {
42
42
  if (__default__) return __default__(...args);
43
43
  throw new Error(`${name}.factory() not configured!`);
44
44
  }
45
- object.default = (factory2) => __default__ = factory2;
46
- object.factory = (factory2) => __factory__ = factory2;
47
45
  object.configured = () => __default__ !== null || __factory__ !== null;
46
+ object.default = (factory2) => {
47
+ __default__ = factory2 ?? null;
48
+ };
49
+ object.factory = (factory2) => {
50
+ __factory__ = factory2 ?? null;
51
+ };
48
52
  return object;
49
53
  }
50
54
 
@@ -160,6 +164,9 @@ var Computed = class {
160
164
  }
161
165
  read() {
162
166
  this.#collector.add(this);
167
+ return this.peek();
168
+ }
169
+ peek() {
163
170
  if (!this.#empty && !this.#values.some(([dep, value]) => !dep.equals(value))) return this.#value;
164
171
  const current = this.#dependencies;
165
172
  const next = this.#collector.collect(() => this.#value = this.#compute());
@@ -282,6 +289,9 @@ var Signal = class {
282
289
  }
283
290
  read() {
284
291
  this.#collector.add(this);
292
+ return this.peek();
293
+ }
294
+ peek() {
285
295
  return this.#value;
286
296
  }
287
297
  write(value) {
package/dist/index.mjs CHANGED
@@ -13,9 +13,13 @@ function factory(name) {
13
13
  if (__default__) return __default__(...args);
14
14
  throw new Error(`${name}.factory() not configured!`);
15
15
  }
16
- object.default = (factory2) => __default__ = factory2;
17
- object.factory = (factory2) => __factory__ = factory2;
18
16
  object.configured = () => __default__ !== null || __factory__ !== null;
17
+ object.default = (factory2) => {
18
+ __default__ = factory2 ?? null;
19
+ };
20
+ object.factory = (factory2) => {
21
+ __factory__ = factory2 ?? null;
22
+ };
19
23
  return object;
20
24
  }
21
25
 
@@ -131,6 +135,9 @@ var Computed = class {
131
135
  }
132
136
  read() {
133
137
  this.#collector.add(this);
138
+ return this.peek();
139
+ }
140
+ peek() {
134
141
  if (!this.#empty && !this.#values.some(([dep, value]) => !dep.equals(value))) return this.#value;
135
142
  const current = this.#dependencies;
136
143
  const next = this.#collector.collect(() => this.#value = this.#compute());
@@ -253,6 +260,9 @@ var Signal = class {
253
260
  }
254
261
  read() {
255
262
  this.#collector.add(this);
263
+ return this.peek();
264
+ }
265
+ peek() {
256
266
  return this.#value;
257
267
  }
258
268
  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.9",
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",