@bodil/signal 0.0.1 → 0.0.2

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.
@@ -0,0 +1,26 @@
1
+ import { Signal } from "signal-polyfill";
2
+ import { type Disposifiable } from "@bodil/disposable";
3
+ interface ReadableSignal<A> {
4
+ readonly value: A;
5
+ map<B>(fn: (value: A) => B): ComputedSignal<B>;
6
+ on(callback: (value: A) => void): Disposable;
7
+ }
8
+ export declare class StateSignal<A> extends Signal.State<A> implements ReadableSignal<A> {
9
+ get value(): A;
10
+ set value(value: A);
11
+ update(fn: (value: A) => A): void;
12
+ readOnly(): ComputedSignal<A>;
13
+ map<B>(fn: (value: A) => B): ComputedSignal<B>;
14
+ on(callback: (value: A) => void): Disposable;
15
+ }
16
+ export declare class ComputedSignal<A> extends Signal.Computed<A> implements ReadableSignal<A> {
17
+ get value(): A;
18
+ map<B>(fn: (value: A) => B): ComputedSignal<B>;
19
+ on(callback: (value: A) => void): Disposable;
20
+ }
21
+ export type { ReadableSignal as Signal };
22
+ export declare function signal<A>(value: A, options?: Signal.Options<A>): StateSignal<A>;
23
+ export declare function computed<A>(fn: (this: ComputedSignal<A>) => A, options?: Signal.Options<A>): ComputedSignal<A>;
24
+ export declare function effect(fn: () => Disposifiable | void): Disposable;
25
+ export declare function subscribe<A>(signal: ReadableSignal<A>, callback: (value: A) => void): Disposable;
26
+ export declare function asyncComputed<A>(fn: (abort: AbortSignal) => Promise<A>, options?: Signal.Options<A>): Promise<ComputedSignal<A>>;
package/dist/index.js ADDED
@@ -0,0 +1,107 @@
1
+ import { Signal } from "signal-polyfill";
2
+ import { toDisposable } from "@bodil/disposable";
3
+ import { abortable } from "@bodil/core/async";
4
+ import { Err, Ok } from "@bodil/core";
5
+ export class StateSignal extends Signal.State {
6
+ get value() {
7
+ return this.get();
8
+ }
9
+ set value(value) {
10
+ this.set(value);
11
+ }
12
+ update(fn) {
13
+ this.set(Signal.subtle.untrack(() => fn(this.get())));
14
+ }
15
+ readOnly() {
16
+ return computed(() => this.get());
17
+ }
18
+ map(fn) {
19
+ return computed(() => fn(this.get()));
20
+ }
21
+ on(callback) {
22
+ return subscribe(this, callback);
23
+ }
24
+ }
25
+ export class ComputedSignal extends Signal.Computed {
26
+ get value() {
27
+ return this.get();
28
+ }
29
+ map(fn) {
30
+ return computed(() => fn(this.get()));
31
+ }
32
+ on(callback) {
33
+ return subscribe(this, callback);
34
+ }
35
+ }
36
+ export function signal(value, options) {
37
+ return new StateSignal(value, options);
38
+ }
39
+ export function computed(fn, options) {
40
+ return new ComputedSignal(fn, options);
41
+ }
42
+ let effectNeedsEnqueue = true;
43
+ const effectWatcher = new Signal.subtle.Watcher(() => {
44
+ if (effectNeedsEnqueue) {
45
+ effectNeedsEnqueue = false;
46
+ queueMicrotask(effectProcess);
47
+ }
48
+ });
49
+ function effectProcess() {
50
+ effectNeedsEnqueue = true;
51
+ for (const sig of effectWatcher.getPending()) {
52
+ sig.get();
53
+ }
54
+ effectWatcher.watch();
55
+ }
56
+ export function effect(fn) {
57
+ let cleanup;
58
+ const computed = new ComputedSignal(() => {
59
+ if (cleanup !== undefined) {
60
+ cleanup[Symbol.dispose]();
61
+ }
62
+ const result = fn();
63
+ cleanup = result !== undefined ? toDisposable(result) : undefined;
64
+ });
65
+ effectWatcher.watch(computed);
66
+ computed.get();
67
+ return toDisposable(() => {
68
+ effectWatcher.unwatch(computed);
69
+ if (cleanup !== undefined) {
70
+ cleanup[Symbol.dispose]();
71
+ }
72
+ });
73
+ }
74
+ export function subscribe(signal, callback) {
75
+ return effect(() => callback(signal.value));
76
+ }
77
+ export function asyncComputed(fn, options) {
78
+ const result = Promise.withResolvers();
79
+ const stream = computed(() => abortable(fn));
80
+ const sig = signal(Err(new Error()));
81
+ let job = undefined;
82
+ let resolved = false;
83
+ const resolve = () => {
84
+ if (!resolved) {
85
+ resolved = true;
86
+ result.resolve(computed(() => sig.get().unwrapExact(), options));
87
+ }
88
+ };
89
+ effect(() => {
90
+ if (job !== undefined) {
91
+ job.abort();
92
+ }
93
+ job = stream.get();
94
+ job.result.then((next) => {
95
+ sig.set(Ok(next));
96
+ resolve();
97
+ }, (error) => {
98
+ if (job?.signal.aborted === true) {
99
+ return;
100
+ }
101
+ sig.set(Err(error));
102
+ resolve();
103
+ });
104
+ });
105
+ return result.promise;
106
+ }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,77 @@
1
+ import { sleep } from "@bodil/core/async";
2
+ import { expect, test } from "vitest";
3
+ import { asyncComputed, effect, signal } from ".";
4
+ test("Signal", async () => {
5
+ const sig = signal(0);
6
+ const result = [];
7
+ effect(() => void result.push(sig.value));
8
+ expect(result).toEqual([0]);
9
+ sig.value = 1;
10
+ sig.value = 2;
11
+ sig.value = 3;
12
+ expect(result).toEqual([0]);
13
+ const done = Promise.withResolvers();
14
+ setTimeout(() => {
15
+ try {
16
+ expect(result).toEqual([0, 3]);
17
+ done.resolve();
18
+ }
19
+ catch (e) {
20
+ done.reject(e);
21
+ }
22
+ }, 1);
23
+ await done.promise;
24
+ });
25
+ test("signal equality", async () => {
26
+ const result = [];
27
+ const sig = signal(0);
28
+ effect(() => void result.push(sig.value));
29
+ expect(result).toEqual([0]);
30
+ sig.value = 1;
31
+ await sleep(1);
32
+ expect(result).toEqual([0, 1]);
33
+ sig.value = 1;
34
+ await sleep(1);
35
+ expect(result).toEqual([0, 1]);
36
+ sig.value = 2;
37
+ await sleep(1);
38
+ expect(result).toEqual([0, 1, 2]);
39
+ sig.value = 2;
40
+ await sleep(1);
41
+ expect(result).toEqual([0, 1, 2]);
42
+ sig.value = 3;
43
+ await sleep(1);
44
+ expect(result).toEqual([0, 1, 2, 3]);
45
+ sig.value = 3;
46
+ await sleep(1);
47
+ expect(result).toEqual([0, 1, 2, 3]);
48
+ sig.value = 2;
49
+ await sleep(1);
50
+ expect(result).toEqual([0, 1, 2, 3, 2]);
51
+ });
52
+ test("asyncComputed", async () => {
53
+ const s = signal(1);
54
+ const c = await asyncComputed(() => Promise.resolve(s.value + 1));
55
+ expect(c.value).toEqual(2);
56
+ try {
57
+ await asyncComputed(() => {
58
+ throw new Error("welp!");
59
+ });
60
+ throw new Error("computed error failed to throw");
61
+ }
62
+ catch (error) {
63
+ expect(error).toBeInstanceOf(Error);
64
+ expect(error.message).toEqual("welp!");
65
+ }
66
+ s.value = 2;
67
+ expect(c.value).toEqual(2);
68
+ await sleep(1);
69
+ expect(c.value).toEqual(3);
70
+ s.value = 1;
71
+ s.value = 2;
72
+ s.value = 3;
73
+ expect(c.value).toEqual(3);
74
+ await sleep(1);
75
+ expect(c.value).toEqual(4);
76
+ });
77
+ //# sourceMappingURL=signal.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.test.js","sourceRoot":"","sources":["../src/signal.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bodil/signal",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Preact Signals like signal implementation built on the TC39 Signals Proposal",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,15 +24,14 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@bodil/core": "^0.0.0",
28
- "@bodil/disposable": "link:../disposable",
29
- "@bodil/opt": "^0.2.6",
27
+ "@bodil/core": "^0.0.2",
28
+ "@bodil/disposable": "^0.0.2",
30
29
  "signal-polyfill": "^0.2.1"
31
30
  },
32
31
  "devDependencies": {
33
32
  "@bodil/opt-vitest": "^1.0.0",
34
33
  "@eslint/eslintrc": "^3.2.0",
35
- "@eslint/js": "^9.17.0",
34
+ "@eslint/js": "^9.18.0",
36
35
  "@typescript-eslint/eslint-plugin": "^8.19.1",
37
36
  "@typescript-eslint/parser": "^8.19.1",
38
37
  "eslint": "^9.17.0",
@@ -45,6 +44,7 @@
45
44
  "scripts": {
46
45
  "build": "tsc",
47
46
  "test": "vitest --run",
48
- "lint": "eslint src"
47
+ "lint": "eslint src",
48
+ "prepublish": "tsc"
49
49
  }
50
50
  }