@e280/strata 0.2.0-0 → 0.2.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.
Files changed (58) hide show
  1. package/README.md +21 -1
  2. package/package.json +2 -2
  3. package/s/signals/derive.ts +0 -4
  4. package/s/signals/index.ts +1 -1
  5. package/s/signals/parts/hipster.ts +35 -0
  6. package/s/signals/{fns.ts → porcelain.ts} +1 -0
  7. package/s/signals/signal.ts +20 -8
  8. package/s/signals/signals.test.ts +11 -264
  9. package/s/signals/tests/derive.test.ts +89 -0
  10. package/s/signals/tests/effect.test.ts +89 -0
  11. package/s/signals/tests/lazy.test.ts +49 -0
  12. package/s/signals/tests/signal-fn.test.ts +56 -0
  13. package/s/signals/tests/signal.test.ts +63 -0
  14. package/s/signals/types.ts +8 -0
  15. package/s/tests.test.ts +1 -1
  16. package/s/tree/parts/branch.ts +1 -1
  17. package/s/tree/parts/trunk.ts +1 -1
  18. package/x/signals/derive.d.ts +0 -1
  19. package/x/signals/derive.js +0 -3
  20. package/x/signals/derive.js.map +1 -1
  21. package/x/signals/index.d.ts +1 -1
  22. package/x/signals/index.js +1 -1
  23. package/x/signals/index.js.map +1 -1
  24. package/x/signals/parts/hipster.d.ts +3 -0
  25. package/x/signals/parts/hipster.js +24 -0
  26. package/x/signals/parts/hipster.js.map +1 -0
  27. package/x/signals/{fns.d.ts → porcelain.d.ts} +3 -2
  28. package/x/signals/{fns.js → porcelain.js} +2 -1
  29. package/x/signals/porcelain.js.map +1 -0
  30. package/x/signals/signal.d.ts +2 -1
  31. package/x/signals/signal.js +13 -5
  32. package/x/signals/signal.js.map +1 -1
  33. package/x/signals/signals.test.d.ts +35 -19
  34. package/x/signals/signals.test.js +11 -217
  35. package/x/signals/signals.test.js.map +1 -1
  36. package/x/signals/tests/derive.test.d.ts +8 -0
  37. package/x/signals/tests/derive.test.js +73 -0
  38. package/x/signals/tests/derive.test.js.map +1 -0
  39. package/x/signals/tests/effect.test.d.ts +10 -0
  40. package/x/signals/tests/effect.test.js +72 -0
  41. package/x/signals/tests/effect.test.js.map +1 -0
  42. package/x/signals/tests/lazy.test.d.ts +7 -0
  43. package/x/signals/tests/lazy.test.js +39 -0
  44. package/x/signals/tests/lazy.test.js.map +1 -0
  45. package/x/signals/tests/signal-fn.test.d.ts +8 -0
  46. package/x/signals/tests/signal-fn.test.js +43 -0
  47. package/x/signals/tests/signal-fn.test.js.map +1 -0
  48. package/x/signals/tests/signal.test.d.ts +12 -0
  49. package/x/signals/tests/signal.test.js +54 -0
  50. package/x/signals/tests/signal.test.js.map +1 -0
  51. package/x/signals/types.d.ts +6 -0
  52. package/x/tests.test.js +1 -1
  53. package/x/tests.test.js.map +1 -1
  54. package/x/tree/parts/branch.js +1 -1
  55. package/x/tree/parts/branch.js.map +1 -1
  56. package/x/tree/parts/trunk.js +1 -1
  57. package/x/tree/parts/trunk.js.map +1 -1
  58. package/x/signals/fns.js.map +0 -1
@@ -0,0 +1,56 @@
1
+
2
+ import {Science, test, expect} from "@e280/science"
3
+ import {signal} from "../porcelain.js"
4
+
5
+ export default Science.suite({
6
+ "get and set": test(async() => {
7
+ const count = signal.fn(0)
8
+ expect(count()).is(0)
9
+
10
+ count(count() + 1)
11
+ expect(count()).is(1)
12
+ }),
13
+
14
+ "old get and set still work": test(async() => {
15
+ const count = signal.fn(0)
16
+ expect(count.get()).is(0)
17
+
18
+ count.set(count.get() + 1)
19
+ expect(count.get()).is(1)
20
+ }),
21
+
22
+ "interop": test(async() => {
23
+ const count = signal.fn(0)
24
+
25
+ count(1)
26
+ expect(count()).is(1)
27
+ expect(count.get()).is(1)
28
+ expect(count.value).is(1)
29
+
30
+ count.set(2)
31
+ expect(count()).is(2)
32
+ expect(count.get()).is(2)
33
+ expect(count.value).is(2)
34
+
35
+ count.value = 3
36
+ expect(count()).is(3)
37
+ expect(count.get()).is(3)
38
+ expect(count.value).is(3)
39
+ }),
40
+
41
+ ".on 'this' interrogation": test(async() => {
42
+ const count = signal.fn(0)
43
+ expect(count()).is(0)
44
+
45
+ let reported = count()
46
+ count.on(x => {reported = x})
47
+
48
+ count(1)
49
+ expect(reported).is(1)
50
+
51
+ count.on.clear()
52
+ count(2)
53
+ expect(reported).is(1)
54
+ }),
55
+ })
56
+
@@ -0,0 +1,63 @@
1
+
2
+ import {Science, test, expect} from "@e280/science"
3
+ import {signal} from "../porcelain.js"
4
+
5
+ export default Science.suite({
6
+ "get/set value": test(async() => {
7
+ const count = signal(0)
8
+ expect(count.value).is(0)
9
+
10
+ count.value++
11
+ expect(count.value).is(1)
12
+
13
+ count.value = 5
14
+ expect(count.value).is(5)
15
+ }),
16
+
17
+ "set and publish returns value": test(async() => {
18
+ const count = signal(0)
19
+ expect(count.value).is(0)
20
+ expect(await count.set(1)).is(1)
21
+ expect(await count.publish(2)).is(2)
22
+ }),
23
+
24
+ "syntax interop": test(async() => {
25
+ const count = signal(0)
26
+ count.value = 1
27
+ expect(count.get()).is(1)
28
+ }),
29
+
30
+ "on": Science.suite({
31
+ "on is not debounced": test(async() => {
32
+ const count = signal(1)
33
+ let runs = 0
34
+ count.on(() => void runs++)
35
+ await count.set(2)
36
+ await count.set(3)
37
+ expect(runs).is(2)
38
+ }),
39
+
40
+ "on only fires on change": test(async() => {
41
+ const count = signal(1)
42
+ let runs = 0
43
+ count.on(() => void runs++)
44
+ await count.set(2)
45
+ await count.set(2)
46
+ expect(runs).is(1)
47
+ }),
48
+
49
+ "on circularity forbidden": test(async() => {
50
+ const count = signal(1)
51
+ let runs = 0
52
+ count.on(async() => {
53
+ await count.set(99)
54
+ runs++
55
+ })
56
+ expect(async() => {
57
+ await count.set(2)
58
+ }).throwsAsync()
59
+ expect(runs).is(0)
60
+ }),
61
+ }),
62
+ })
63
+
@@ -9,3 +9,11 @@ export type SignalOptions = {
9
9
  compare: (a: any, b: any) => boolean
10
10
  }
11
11
 
12
+ export type SignalFn<V> = {
13
+ (): V
14
+ (v: V): Promise<V>
15
+ (v?: V): V | Promise<V>
16
+
17
+ signal: Signal<V>
18
+ } & Signal<V>
19
+
package/s/tests.test.ts CHANGED
@@ -5,7 +5,7 @@ import tree from "./tree/tree.test.js"
5
5
  import signals from "./signals/signals.test.js"
6
6
  import tracker from "./tracker/tracker.test.js"
7
7
 
8
- import {signal} from "./signals/fns.js"
8
+ import {signal} from "./signals/porcelain.js"
9
9
  import {effect} from "./signals/effect.js"
10
10
  import {Trunk} from "./tree/parts/trunk.js"
11
11
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  import {deep} from "@e280/stz"
3
- import {derive} from "../../signals/fns.js"
3
+ import {derive} from "../../signals/porcelain.js"
4
4
  import {Derive} from "../../signals/derive.js"
5
5
  import {Branchstate, Immutable, Mutator, Options, Selector, Tree} from "./types.js"
6
6
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  import {deep} from "@e280/stz"
3
3
  import {Branch} from "./branch.js"
4
- import {signal} from "../../signals/fns.js"
4
+ import {signal} from "../../signals/porcelain.js"
5
5
  import {trunkSetup} from "./utils/setup.js"
6
6
  import {Derive} from "../../signals/derive.js"
7
7
  import {Signal} from "../../signals/signal.js"
@@ -3,6 +3,5 @@ import { Reactive } from "./parts/reactive.js";
3
3
  export declare class Derive<V> extends Reactive<V> {
4
4
  #private;
5
5
  constructor(formula: () => V, options?: Partial<SignalOptions>);
6
- get value(): V;
7
6
  dispose(): void;
8
7
  }
@@ -20,9 +20,6 @@ export class Derive extends Reactive {
20
20
  super(result);
21
21
  this.#dispose = dispose;
22
22
  }
23
- get value() {
24
- return this.get();
25
- }
26
23
  dispose() {
27
24
  super.dispose();
28
25
  this.#dispose();
@@ -1 +1 @@
1
- {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../s/signals/derive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAA;AAEzD,MAAM,OAAO,MAAU,SAAQ,QAAW;IACzC,QAAQ,CAAY;IAEpB,YAAY,OAAgB,EAAE,OAAgC;QAC7D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,cAAc,CAAA;QAClD,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,IAAG,EAAE;YAC5D,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;YACvB,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC7C,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClB,MAAM,OAAO,CAAC,GAAG,CAAC;oBACjB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;iBAClB,CAAC,CAAA;YACH,CAAC;QACF,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,OAAO;QACN,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,QAAQ,EAAE,CAAA;IAChB,CAAC;CACD"}
1
+ {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../s/signals/derive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAA;AAEzD,MAAM,OAAO,MAAU,SAAQ,QAAW;IACzC,QAAQ,CAAY;IAEpB,YAAY,OAAgB,EAAE,OAAgC;QAC7D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,cAAc,CAAA;QAClD,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,IAAG,EAAE;YAC5D,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;YACvB,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC7C,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClB,MAAM,OAAO,CAAC,GAAG,CAAC;oBACjB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;iBAClB,CAAC,CAAA;YACH,CAAC;QACF,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,OAAO;QACN,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,QAAQ,EAAE,CAAA;IAChB,CAAC;CACD"}
@@ -2,7 +2,7 @@ export * from "./parts/reactive.js";
2
2
  export * from "./parts/readable.js";
3
3
  export * from "./derive.js";
4
4
  export * from "./effect.js";
5
- export * from "./fns.js";
5
+ export * from "./porcelain.js";
6
6
  export * from "./lazy.js";
7
7
  export * from "./signal.js";
8
8
  export * from "./types.js";
@@ -2,7 +2,7 @@ export * from "./parts/reactive.js";
2
2
  export * from "./parts/readable.js";
3
3
  export * from "./derive.js";
4
4
  export * from "./effect.js";
5
- export * from "./fns.js";
5
+ export * from "./porcelain.js";
6
6
  export * from "./lazy.js";
7
7
  export * from "./signal.js";
8
8
  export * from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/signals/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/signals/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Signal } from "../signal.js";
2
+ import { SignalFn } from "../types.js";
3
+ export declare function hipster<V>(sig: Signal<V>): SignalFn<V>;
@@ -0,0 +1,24 @@
1
+ export function hipster(sig) {
2
+ function f(_v) {
3
+ return (arguments.length === 0)
4
+ ? sig.get()
5
+ : sig.set(arguments[0]);
6
+ }
7
+ f.signal = sig;
8
+ f.get = sig.get.bind(sig);
9
+ f.set = sig.set.bind(sig);
10
+ f.on = sig.on;
11
+ f.dispose = sig.dispose.bind(sig);
12
+ f.publish = sig.publish.bind(sig);
13
+ f.fn = sig.fn.bind(sig);
14
+ Object.defineProperty(f, "value", {
15
+ get: () => sig.value,
16
+ set: (v) => sig.value = v,
17
+ });
18
+ Object.defineProperty(f, "sneak", {
19
+ get: () => sig.sneak,
20
+ set: (v) => sig.sneak = v,
21
+ });
22
+ return f;
23
+ }
24
+ //# sourceMappingURL=hipster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hipster.js","sourceRoot":"","sources":["../../../s/signals/parts/hipster.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,OAAO,CAAI,GAAc;IAGxC,SAAS,CAAC,CAAC,EAAM;QAChB,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;YACX,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IAED,CAAC,CAAC,MAAM,GAAG,GAAG,CAAA;IAEd,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAA;IACb,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEvB,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE;QACjC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK;QACpB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;KACzB,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE;QACjC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK;QACpB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;KACzB,CAAC,CAAA;IAEF,OAAO,CAAgB,CAAA;AACxB,CAAC"}
@@ -6,6 +6,7 @@ export declare function lazy<V>(formula: () => V, options?: Partial<SignalOption
6
6
  export declare function derive<V>(formula: () => V, options?: Partial<SignalOptions>): Derive<V>;
7
7
  export declare function signal<V>(value: V, options?: Partial<SignalOptions>): Signal<V>;
8
8
  export declare namespace signal {
9
- var lazy: typeof import("./fns.js").lazy;
10
- var derive: typeof import("./fns.js").derive;
9
+ var lazy: typeof import("./porcelain.js").lazy;
10
+ var derive: typeof import("./porcelain.js").derive;
11
+ var fn: <V>(value: V) => import("./types.js").SignalFn<V>;
11
12
  }
@@ -12,4 +12,5 @@ export function signal(value, options) {
12
12
  }
13
13
  signal.lazy = lazy;
14
14
  signal.derive = derive;
15
- //# sourceMappingURL=fns.js.map
15
+ signal.fn = (value) => signal(value).fn();
16
+ //# sourceMappingURL=porcelain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"porcelain.js","sourceRoot":"","sources":["../../s/signals/porcelain.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAGlC,MAAM,UAAU,IAAI,CAClB,OAAgB,EAChB,OAAgC;IAEjC,OAAO,IAAI,IAAI,CAAI,OAAO,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,OAAgB,EAChB,OAAgC;IAEjC,OAAO,IAAI,MAAM,CAAI,OAAO,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,KAAQ,EACR,OAAgC;IAEjC,OAAO,IAAI,MAAM,CAAI,KAAK,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;AAClB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;AACtB,MAAM,CAAC,EAAE,GAAG,CAAI,KAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAA"}
@@ -2,7 +2,8 @@ import { SignalOptions } from "./types.js";
2
2
  import { Reactive } from "./parts/reactive.js";
3
3
  export declare class Signal<V> extends Reactive<V> {
4
4
  #private;
5
- constructor(sneak: V, options?: Partial<SignalOptions>);
5
+ constructor(value: V, options?: Partial<SignalOptions>);
6
+ fn(): import("./types.js").SignalFn<V>;
6
7
  set(v: V): Promise<V>;
7
8
  get value(): V;
8
9
  set value(v: V);
@@ -1,13 +1,17 @@
1
+ import { hipster } from "./parts/hipster.js";
1
2
  import { Reactive } from "./parts/reactive.js";
2
3
  import { tracker } from "../tracker/tracker.js";
3
4
  import { defaultCompare } from "./utils/default-compare.js";
4
5
  export class Signal extends Reactive {
5
6
  #lock = false;
6
7
  #compare;
7
- constructor(sneak, options) {
8
- super(sneak);
8
+ constructor(value, options) {
9
+ super(value);
9
10
  this.#compare = options?.compare ?? defaultCompare;
10
11
  }
12
+ fn() {
13
+ return hipster(this);
14
+ }
11
15
  async set(v) {
12
16
  const isChanged = !this.#compare(this.sneak, v);
13
17
  if (isChanged)
@@ -18,9 +22,13 @@ export class Signal extends Reactive {
18
22
  return this.get();
19
23
  }
20
24
  set value(v) {
21
- this.set(v);
25
+ void this.set(v);
22
26
  }
23
- async publish(v = this.get()) {
27
+ async publish(v = this.sneak) {
28
+ // only wizards are allowed beyond this point.
29
+ // - the implementation is subtle
30
+ // - it looks wrong, but it's right
31
+ // - tarnished alchemists, take heed: lock engages only for sync activity of the async fns (think of the value setter!)
24
32
  if (this.#lock)
25
33
  throw new Error("forbid circularity");
26
34
  let promise = Promise.resolve();
@@ -29,7 +37,7 @@ export class Signal extends Reactive {
29
37
  this.sneak = v;
30
38
  promise = Promise.all([
31
39
  tracker.notifyWrite(this),
32
- this.on.pub(v),
40
+ this.on.publish(v),
33
41
  ]);
34
42
  }
35
43
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../s/signals/signal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAA;AAEzD,MAAM,OAAO,MAAU,SAAQ,QAAW;IACzC,KAAK,GAAG,KAAK,CAAA;IACb,QAAQ,CAA6B;IAErC,YAAY,KAAQ,EAAE,OAAgC;QACrD,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,IAAI,cAAc,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,CAAI;QACb,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC/C,IAAI,SAAS;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,CAAA;IACT,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,CAAI;QACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;QAC3B,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACrD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAE/B,IAAI,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;YACd,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;gBACrB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aACd,CAAQ,CAAA;QACV,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACnB,CAAC;QAED,MAAM,OAAO,CAAA;QACb,OAAO,CAAC,CAAA;IACT,CAAC;CACD"}
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../s/signals/signal.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAA;AAEzD,MAAM,OAAO,MAAU,SAAQ,QAAW;IACzC,KAAK,GAAG,KAAK,CAAA;IACb,QAAQ,CAA6B;IAErC,YAAY,KAAQ,EAAE,OAAgC;QACrD,KAAK,CAAC,KAAK,CAAC,CAAA;QACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,IAAI,cAAc,CAAA;IACnD,CAAC;IAED,EAAE;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,CAAI;QACb,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC/C,IAAI,SAAS;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,CAAA;IACT,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,CAAI;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK;QAC3B,8CAA8C;QAC9C,iCAAiC;QACjC,mCAAmC;QACnC,uHAAuH;QAEvH,IAAI,IAAI,CAAC,KAAK;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAEtC,IAAI,OAAO,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAA;QAE7C,IAAI,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;YACd,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;gBACrB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;aAClB,CAAC,CAAA;QACH,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACnB,CAAC;QAED,MAAM,OAAO,CAAA;QACb,OAAO,CAAC,CAAA;IACT,CAAC;CACD"}
@@ -1,23 +1,39 @@
1
1
  import { Science } from "@e280/science";
2
2
  declare const _default: {
3
- "signal get/set value": Science.Test;
4
- "signal set and publish returns value": Science.Test;
5
- "signal syntax interop": Science.Test;
6
- "signal on is not debounced": Science.Test;
7
- "signal on only fires on change": Science.Test;
8
- "signal on circularity forbidden": Science.Test;
9
- "effect tracks signal changes": Science.Test;
10
- "effect is only called when signal actually changes": Science.Test;
11
- "effects are debounced": Science.Test;
12
- "effects can be disposed": Science.Test;
13
- "signal set promise waits for effects": Science.Test;
14
- "effect only runs on change": Science.Test;
15
- "lazy values": Science.Test;
16
- "effect reacts to derived changes": Science.Test;
17
- "effect doesn't overreact to derived": Science.Test;
18
- "derived.on": Science.Test;
19
- "derived.on not called if result doesn't change": Science.Test;
20
- "lazy is lazy": Science.Test;
21
- "lazy syntax": Science.Test;
3
+ signal: {
4
+ "get/set value": Science.Test;
5
+ "set and publish returns value": Science.Test;
6
+ "syntax interop": Science.Test;
7
+ on: {
8
+ "on is not debounced": Science.Test;
9
+ "on only fires on change": Science.Test;
10
+ "on circularity forbidden": Science.Test;
11
+ };
12
+ };
13
+ "signal.fn": {
14
+ "get and set": Science.Test;
15
+ "old get and set still work": Science.Test;
16
+ interop: Science.Test;
17
+ ".on 'this' interrogation": Science.Test;
18
+ };
19
+ effect: {
20
+ "tracks signal changes": Science.Test;
21
+ "is only called when signal actually changes": Science.Test;
22
+ debounced: Science.Test;
23
+ "can be disposed": Science.Test;
24
+ "signal set promise waits for effects": Science.Test;
25
+ "only runs on change": Science.Test;
26
+ };
27
+ lazy: {
28
+ "lazy values": Science.Test;
29
+ "lazy is lazy": Science.Test;
30
+ "lazy syntax": Science.Test;
31
+ };
32
+ derive: {
33
+ "effect reacts to derived changes": Science.Test;
34
+ "effect doesn't overreact to derived": Science.Test;
35
+ "derived.on": Science.Test;
36
+ "derived.on not called if result doesn't change": Science.Test;
37
+ };
22
38
  };
23
39
  export default _default;
@@ -1,220 +1,14 @@
1
- import { Science, test, expect, spy } from "@e280/science";
2
- import { effect } from "./effect.js";
3
- import { derive, lazy, signal } from "./fns.js";
1
+ import { Science } from "@e280/science";
2
+ import signalTest from "./tests/signal.test.js";
3
+ import signalFnTest from "./tests/signal-fn.test.js";
4
+ import effectTest from "./tests/effect.test.js";
5
+ import lazyTest from "./tests/lazy.test.js";
6
+ import deriveTest from "./tests/derive.test.js";
4
7
  export default Science.suite({
5
- "signal get/set value": test(async () => {
6
- const count = signal(0);
7
- expect(count.value).is(0);
8
- count.value++;
9
- expect(count.value).is(1);
10
- count.value = 5;
11
- expect(count.value).is(5);
12
- }),
13
- "signal set and publish returns value": test(async () => {
14
- const count = signal(0);
15
- expect(count.value).is(0);
16
- expect(await count.set(1)).is(1);
17
- expect(await count.publish(2)).is(2);
18
- }),
19
- "signal syntax interop": test(async () => {
20
- const count = signal(0);
21
- count.value = 1;
22
- expect(count.get()).is(1);
23
- }),
24
- "signal on is not debounced": test(async () => {
25
- const count = signal(1);
26
- let runs = 0;
27
- count.on(() => void runs++);
28
- await count.set(2);
29
- await count.set(3);
30
- expect(runs).is(2);
31
- }),
32
- "signal on only fires on change": test(async () => {
33
- const count = signal(1);
34
- let runs = 0;
35
- count.on(() => void runs++);
36
- await count.set(2);
37
- await count.set(2);
38
- expect(runs).is(1);
39
- }),
40
- "signal on circularity forbidden": test(async () => {
41
- const count = signal(1);
42
- let runs = 0;
43
- count.on(async () => {
44
- await count.set(99);
45
- runs++;
46
- });
47
- expect(async () => {
48
- await count.set(2);
49
- }).throwsAsync();
50
- expect(runs).is(0);
51
- }),
52
- "effect tracks signal changes": test(async () => {
53
- const count = signal(1);
54
- let doubled = 0;
55
- effect(() => doubled = count.value * 2);
56
- expect(doubled).is(2);
57
- await count.set(3);
58
- expect(doubled).is(6);
59
- }),
60
- "effect is only called when signal actually changes": test(async () => {
61
- const count = signal(1);
62
- let runs = 0;
63
- effect(() => {
64
- count.get();
65
- runs++;
66
- });
67
- expect(runs).is(1);
68
- await count.set(999);
69
- expect(runs).is(2);
70
- await count.set(999);
71
- expect(runs).is(2);
72
- }),
73
- "effects are debounced": test(async () => {
74
- const count = signal(1);
75
- let runs = 0;
76
- effect(() => {
77
- count.get();
78
- runs++;
79
- });
80
- expect(runs).is(1);
81
- count.value++;
82
- count.value++;
83
- await count.set(count.get() + 1);
84
- expect(runs).is(2);
85
- }),
86
- "effects can be disposed": test(async () => {
87
- const count = signal(1);
88
- let doubled = 0;
89
- const dispose = effect(() => doubled = count.value * 2);
90
- expect(doubled).is(2);
91
- await count.set(3);
92
- expect(doubled).is(6);
93
- dispose();
94
- await count.set(4);
95
- expect(doubled).is(6); // old value
96
- }),
97
- "signal set promise waits for effects": test(async () => {
98
- const count = signal(1);
99
- let doubled = 0;
100
- effect(() => doubled = count.value * 2);
101
- expect(doubled).is(2);
102
- await count.set(3);
103
- expect(doubled).is(6);
104
- }),
105
- "effect only runs on change": test(async () => {
106
- const sig = signal("a");
107
- let runs = 0;
108
- effect(() => {
109
- sig.value;
110
- runs++;
111
- });
112
- expect(runs).is(1);
113
- await sig.set("a");
114
- expect(runs).is(1);
115
- await sig.set("b");
116
- expect(runs).is(2);
117
- }),
118
- "lazy values": test(async () => {
119
- const a = signal(2);
120
- const b = signal(3);
121
- const sum = lazy(() => a.value + b.value);
122
- expect(sum.value).is(5);
123
- await a.set(5);
124
- expect(sum.value).is(8);
125
- await b.set(7);
126
- expect(sum.value).is(12);
127
- }),
128
- "effect reacts to derived changes": test(async () => {
129
- const a = signal(1);
130
- const b = signal(10);
131
- const product = derive(() => a.value * b.value);
132
- let mutations = 0;
133
- effect(() => {
134
- void product.get();
135
- mutations++;
136
- });
137
- expect(product.value).is(10);
138
- expect(mutations).is(1);
139
- await a.set(2);
140
- expect(product.value).is(20);
141
- expect(mutations).is(2);
142
- await a.set(3);
143
- expect(product.value).is(30);
144
- expect(mutations).is(3);
145
- }),
146
- "effect doesn't overreact to derived": test(async () => {
147
- const a = signal(1);
148
- const b = signal(10);
149
- const product = signal.derive(() => a.value * b.value);
150
- const derivedSpy = spy(() => { });
151
- product.on(derivedSpy);
152
- let mutations = 0;
153
- effect(() => {
154
- a.get();
155
- product.get();
156
- mutations++;
157
- });
158
- expect(product.value).is(10);
159
- expect(mutations).is(1);
160
- expect(derivedSpy.spy.calls.length).is(0);
161
- await a.set(2);
162
- expect(product.value).is(20);
163
- expect(mutations).is(2);
164
- expect(derivedSpy.spy.calls.length).is(1);
165
- }),
166
- "derived.on": test(async () => {
167
- const a = signal(1);
168
- const b = signal(10);
169
- const product = signal.derive(() => a.value * b.value);
170
- expect(product.value).is(10);
171
- const mole = spy((_v) => { });
172
- product.on(mole);
173
- expect(mole.spy.calls.length).is(0);
174
- await a.set(2);
175
- expect(product.value).is(20);
176
- expect(mole.spy.calls.length).is(1);
177
- expect(mole.spy.calls[0].args[0]).is(20);
178
- }),
179
- "derived.on not called if result doesn't change": test(async () => {
180
- const a = signal(1);
181
- const b = signal(10);
182
- const product = signal.derive(() => a.value * b.value);
183
- expect(product.value).is(10);
184
- const mole = spy((_v) => { });
185
- product.on(mole);
186
- expect(mole.spy.calls.length).is(0);
187
- await a.set(2);
188
- expect(product.value).is(20);
189
- expect(mole.spy.calls.length).is(1);
190
- expect(mole.spy.calls[0].args[0]).is(20);
191
- await a.set(2);
192
- expect(product.value).is(20);
193
- expect(mole.spy.calls.length).is(1);
194
- }),
195
- "lazy is lazy": test(async () => {
196
- const a = signal(1);
197
- let runs = 0;
198
- const comp = lazy(() => {
199
- runs++;
200
- return a.value * 10;
201
- });
202
- expect(runs).is(0);
203
- expect(comp.value).is(10);
204
- expect(runs).is(1);
205
- await a.set(2);
206
- expect(runs).is(1);
207
- expect(comp.value).is(20);
208
- expect(runs).is(2);
209
- }),
210
- "lazy syntax": test(async () => {
211
- const a = signal(2);
212
- const b = signal(3);
213
- const sum = lazy(() => a.value + b.value);
214
- expect(sum.value).is(5);
215
- await a.set(5);
216
- expect(sum.value).is(8);
217
- expect(sum.get()).is(8);
218
- }),
8
+ "signal": signalTest,
9
+ "signal.fn": signalFnTest,
10
+ "effect": effectTest,
11
+ "lazy": lazyTest,
12
+ "derive": deriveTest,
219
13
  });
220
14
  //# sourceMappingURL=signals.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals.test.js","sourceRoot":"","sources":["../../s/signals/signals.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signals.test.js","sourceRoot":"","sources":["../../s/signals/signals.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,YAAY,MAAM,2BAA2B,CAAA;AACpD,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,QAAQ,MAAM,sBAAsB,CAAA;AAC3C,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAE/C,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACpB,CAAC,CAAA"}