@e280/strata 0.2.8 → 0.3.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 (153) hide show
  1. package/README.md +11 -47
  2. package/package.json +3 -3
  3. package/s/index.ts +0 -1
  4. package/s/prism/prism.test.ts +2 -1
  5. package/s/prism/prism.ts +1 -1
  6. package/s/signals/derived/class.ts +34 -0
  7. package/s/signals/derived/fn.ts +36 -0
  8. package/s/signals/{tests/derived.test.ts → derived/test.ts} +13 -14
  9. package/s/signals/effect/effect.ts +7 -0
  10. package/s/signals/effect/test.ts +172 -0
  11. package/s/signals/effect/watch.ts +32 -0
  12. package/s/signals/index.ts +11 -7
  13. package/s/signals/lazy/class.ts +74 -0
  14. package/s/signals/lazy/fn.ts +22 -0
  15. package/s/signals/{tests/lazy.test.ts → lazy/test.ts} +23 -12
  16. package/s/signals/signal/class.ts +77 -0
  17. package/s/signals/signal/fn.ts +31 -0
  18. package/s/signals/{tests/signal.test.ts → signal/test.ts} +56 -59
  19. package/s/signals/signals.test.ts +8 -8
  20. package/s/signals/types.ts +4 -23
  21. package/s/signals/utils/default-compare.ts +1 -1
  22. package/s/signals/utils/symbols.ts +9 -0
  23. package/s/tests.test.ts +1 -57
  24. package/x/index.d.ts +0 -1
  25. package/x/index.js +0 -1
  26. package/x/index.js.map +1 -1
  27. package/x/prism/prism.js.map +1 -1
  28. package/x/prism/prism.test.js +1 -1
  29. package/x/prism/prism.test.js.map +1 -1
  30. package/x/signals/derived/class.d.ts +14 -0
  31. package/x/signals/derived/class.js +23 -0
  32. package/x/signals/derived/class.js.map +1 -0
  33. package/x/signals/derived/fn.d.ts +3 -0
  34. package/x/signals/derived/fn.js +28 -0
  35. package/x/signals/derived/fn.js.map +1 -0
  36. package/x/signals/{tests/derived.test.d.ts → derived/test.d.ts} +1 -3
  37. package/x/signals/{tests/derived.test.js → derived/test.js} +14 -15
  38. package/x/signals/derived/test.js.map +1 -0
  39. package/x/signals/effect/effect.d.ts +1 -0
  40. package/x/signals/effect/effect.js +5 -0
  41. package/x/signals/effect/effect.js.map +1 -0
  42. package/x/signals/{tests/effect.test.d.ts → effect/test.d.ts} +7 -0
  43. package/x/signals/effect/test.js +132 -0
  44. package/x/signals/effect/test.js.map +1 -0
  45. package/x/signals/effect/watch.d.ts +4 -0
  46. package/x/signals/effect/watch.js +25 -0
  47. package/x/signals/effect/watch.js.map +1 -0
  48. package/x/signals/index.d.ts +8 -7
  49. package/x/signals/index.js +8 -7
  50. package/x/signals/index.js.map +1 -1
  51. package/x/signals/lazy/class.d.ts +19 -0
  52. package/x/signals/lazy/class.js +59 -0
  53. package/x/signals/lazy/class.js.map +1 -0
  54. package/x/signals/lazy/fn.d.ts +3 -0
  55. package/x/signals/lazy/fn.js +17 -0
  56. package/x/signals/lazy/fn.js.map +1 -0
  57. package/x/signals/{tests/lazy.test.d.ts → lazy/test.d.ts} +2 -3
  58. package/x/signals/{tests/lazy.test.js → lazy/test.js} +23 -13
  59. package/x/signals/lazy/test.js.map +1 -0
  60. package/x/signals/signal/class.d.ts +20 -0
  61. package/x/signals/signal/class.js +57 -0
  62. package/x/signals/signal/class.js.map +1 -0
  63. package/x/signals/signal/fn.d.ts +7 -0
  64. package/x/signals/signal/fn.js +23 -0
  65. package/x/signals/signal/fn.js.map +1 -0
  66. package/x/signals/{tests/signal.test.d.ts → signal/test.d.ts} +8 -7
  67. package/x/signals/{tests/signal.test.js → signal/test.js} +50 -46
  68. package/x/signals/signal/test.js.map +1 -0
  69. package/x/signals/signals.test.d.ts +25 -20
  70. package/x/signals/signals.test.js +8 -8
  71. package/x/signals/signals.test.js.map +1 -1
  72. package/x/signals/types.d.ts +4 -19
  73. package/x/signals/utils/default-compare.js +1 -1
  74. package/x/signals/utils/default-compare.js.map +1 -1
  75. package/x/signals/utils/symbols.d.ts +7 -0
  76. package/x/signals/utils/symbols.js +8 -0
  77. package/x/signals/utils/symbols.js.map +1 -0
  78. package/x/tests.test.js +1 -45
  79. package/x/tests.test.js.map +1 -1
  80. package/s/signals/core/derived.ts +0 -65
  81. package/s/signals/core/effect.ts +0 -31
  82. package/s/signals/core/lazy.ts +0 -78
  83. package/s/signals/core/parts/reactive.ts +0 -12
  84. package/s/signals/core/parts/readable.ts +0 -16
  85. package/s/signals/core/signal.ts +0 -101
  86. package/s/signals/porcelain.ts +0 -30
  87. package/s/signals/tests/effect.test.ts +0 -89
  88. package/s/tree/index.ts +0 -7
  89. package/s/tree/parts/branch.ts +0 -55
  90. package/s/tree/parts/chronobranch.ts +0 -86
  91. package/s/tree/parts/persistence.ts +0 -31
  92. package/s/tree/parts/trunk.ts +0 -70
  93. package/s/tree/parts/types.ts +0 -70
  94. package/s/tree/parts/utils/immute.ts +0 -43
  95. package/s/tree/parts/utils/process-options.ts +0 -7
  96. package/s/tree/parts/utils/setup.ts +0 -40
  97. package/s/tree/tree.test.ts +0 -366
  98. package/x/signals/core/derived.d.ts +0 -10
  99. package/x/signals/core/derived.js +0 -52
  100. package/x/signals/core/derived.js.map +0 -1
  101. package/x/signals/core/effect.d.ts +0 -5
  102. package/x/signals/core/effect.js +0 -17
  103. package/x/signals/core/effect.js.map +0 -1
  104. package/x/signals/core/lazy.d.ts +0 -11
  105. package/x/signals/core/lazy.js +0 -60
  106. package/x/signals/core/lazy.js.map +0 -1
  107. package/x/signals/core/parts/reactive.d.ts +0 -5
  108. package/x/signals/core/parts/reactive.js +0 -9
  109. package/x/signals/core/parts/reactive.js.map +0 -1
  110. package/x/signals/core/parts/readable.d.ts +0 -6
  111. package/x/signals/core/parts/readable.js +0 -15
  112. package/x/signals/core/parts/readable.js.map +0 -1
  113. package/x/signals/core/signal.d.ts +0 -13
  114. package/x/signals/core/signal.js +0 -77
  115. package/x/signals/core/signal.js.map +0 -1
  116. package/x/signals/porcelain.d.ts +0 -8
  117. package/x/signals/porcelain.js +0 -15
  118. package/x/signals/porcelain.js.map +0 -1
  119. package/x/signals/tests/derived.test.js.map +0 -1
  120. package/x/signals/tests/effect.test.js +0 -72
  121. package/x/signals/tests/effect.test.js.map +0 -1
  122. package/x/signals/tests/lazy.test.js.map +0 -1
  123. package/x/signals/tests/signal.test.js.map +0 -1
  124. package/x/tree/index.d.ts +0 -5
  125. package/x/tree/index.js +0 -6
  126. package/x/tree/index.js.map +0 -1
  127. package/x/tree/parts/branch.d.ts +0 -14
  128. package/x/tree/parts/branch.js +0 -42
  129. package/x/tree/parts/branch.js.map +0 -1
  130. package/x/tree/parts/chronobranch.d.ts +0 -25
  131. package/x/tree/parts/chronobranch.js +0 -75
  132. package/x/tree/parts/chronobranch.js.map +0 -1
  133. package/x/tree/parts/persistence.d.ts +0 -2
  134. package/x/tree/parts/persistence.js +0 -23
  135. package/x/tree/parts/persistence.js.map +0 -1
  136. package/x/tree/parts/trunk.d.ts +0 -19
  137. package/x/tree/parts/trunk.js +0 -57
  138. package/x/tree/parts/trunk.js.map +0 -1
  139. package/x/tree/parts/types.d.ts +0 -28
  140. package/x/tree/parts/types.js +0 -2
  141. package/x/tree/parts/types.js.map +0 -1
  142. package/x/tree/parts/utils/immute.d.ts +0 -11
  143. package/x/tree/parts/utils/immute.js +0 -33
  144. package/x/tree/parts/utils/immute.js.map +0 -1
  145. package/x/tree/parts/utils/process-options.d.ts +0 -2
  146. package/x/tree/parts/utils/process-options.js +0 -4
  147. package/x/tree/parts/utils/process-options.js.map +0 -1
  148. package/x/tree/parts/utils/setup.d.ts +0 -8
  149. package/x/tree/parts/utils/setup.js +0 -24
  150. package/x/tree/parts/utils/setup.js.map +0 -1
  151. package/x/tree/tree.test.d.ts +0 -40
  152. package/x/tree/tree.test.js +0 -325
  153. package/x/tree/tree.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../s/signals/core/signal.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { SignalOptions } from "./types.js";
2
- export declare function lazy<V>(formula: () => V, options?: Partial<SignalOptions>): import("./types.js").LazyFn<V>;
3
- export declare function derived<V>(formula: () => V, options?: Partial<SignalOptions>): import("./types.js").DerivedFn<V>;
4
- export declare function signal<V>(value: V, options?: Partial<SignalOptions>): import("./types.js").SignalFn<V>;
5
- export declare namespace signal {
6
- var lazy: typeof import("./porcelain.js").lazy;
7
- var derived: typeof import("./porcelain.js").derived;
8
- }
@@ -1,15 +0,0 @@
1
- import { Lazy } from "./core/lazy.js";
2
- import { Signal } from "./core/signal.js";
3
- import { Derived } from "./core/derived.js";
4
- export function lazy(formula, options) {
5
- return new Lazy(formula, options).fn();
6
- }
7
- export function derived(formula, options) {
8
- return new Derived(formula, options).fn();
9
- }
10
- export function signal(value, options) {
11
- return new Signal(value, options).fn();
12
- }
13
- signal.lazy = lazy;
14
- signal.derived = derived;
15
- //# sourceMappingURL=porcelain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"porcelain.js","sourceRoot":"","sources":["../../s/signals/porcelain.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAA;AAEzC,MAAM,UAAU,IAAI,CAClB,OAAgB,EAChB,OAAgC;IAEjC,OAAO,IAAI,IAAI,CAAI,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,OAAgB,EAChB,OAAgC;IAEjC,OAAO,IAAI,OAAO,CAAI,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,KAAQ,EACR,OAAgC;IAEjC,OAAO,IAAI,MAAM,CAAI,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAA;AAC1C,CAAC;AAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;AAClB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"derived.test.js","sourceRoot":"","sources":["../../../s/signals/tests/derived.test.ts"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- import { Science, test, expect } from "@e280/science";
2
- import { signal } from "../porcelain.js";
3
- import { effect } from "../core/effect.js";
4
- export default Science.suite({
5
- "tracks signal changes": test(async () => {
6
- const count = signal(1);
7
- let doubled = 0;
8
- effect(() => doubled = count.value * 2);
9
- expect(doubled).is(2);
10
- await count.set(3);
11
- expect(doubled).is(6);
12
- }),
13
- "is only called when signal actually changes": test(async () => {
14
- const count = signal(1);
15
- let runs = 0;
16
- effect(() => {
17
- count.get();
18
- runs++;
19
- });
20
- expect(runs).is(1);
21
- await count.set(999);
22
- expect(runs).is(2);
23
- await count.set(999);
24
- expect(runs).is(2);
25
- }),
26
- "debounced": test(async () => {
27
- const count = signal(1);
28
- let runs = 0;
29
- effect(() => {
30
- count.get();
31
- runs++;
32
- });
33
- expect(runs).is(1);
34
- count.value++;
35
- count.value++;
36
- await count.set(count.get() + 1);
37
- expect(runs).is(2);
38
- }),
39
- "can be disposed": test(async () => {
40
- const count = signal(1);
41
- let doubled = 0;
42
- const dispose = effect(() => doubled = count.value * 2);
43
- expect(doubled).is(2);
44
- await count.set(3);
45
- expect(doubled).is(6);
46
- dispose();
47
- await count.set(4);
48
- expect(doubled).is(6); // old value
49
- }),
50
- "signal set promise waits for effects": test(async () => {
51
- const count = signal(1);
52
- let doubled = 0;
53
- effect(() => doubled = count.value * 2);
54
- expect(doubled).is(2);
55
- await count.set(3);
56
- expect(doubled).is(6);
57
- }),
58
- "only runs on change": test(async () => {
59
- const sig = signal("a");
60
- let runs = 0;
61
- effect(() => {
62
- sig.value;
63
- runs++;
64
- });
65
- expect(runs).is(1);
66
- await sig.set("a");
67
- expect(runs).is(1);
68
- await sig.set("b");
69
- expect(runs).is(2);
70
- }),
71
- });
72
- //# sourceMappingURL=effect.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effect.test.js","sourceRoot":"","sources":["../../../s/signals/tests/effect.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy.test.js","sourceRoot":"","sources":["../../../s/signals/tests/lazy.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"signal.test.js","sourceRoot":"","sources":["../../../s/signals/tests/signal.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAA;AAEtC,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEzB,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEzB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC;IAEF,qCAAqC,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC;IAEF,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;QACf,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC;IAEF,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;QACnB,qBAAqB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YAC3B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,CAAC;QAEF,yBAAyB,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;YAC3B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,CAAC;QAEF,0BAA0B,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,KAAK,CAAC,EAAE,CAAC,KAAK,IAAG,EAAE;gBAClB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACnB,IAAI,EAAE,CAAA;YACP,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,KAAK,IAAG,EAAE;gBAChB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC,CAAC;KACF,CAAC;IAEF,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC;QAC/B,aAAa,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAErB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;YAClB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC,CAAC;QAEF,4BAA4B,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAEzB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC;QAEF,SAAS,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAEvB,KAAK,CAAC,CAAC,CAAC,CAAA;YACR,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAEzB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAEzB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;YACf,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC;QAEF,0BAA0B,EAAE,IAAI,CAAC,KAAK,IAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAErB,IAAI,QAAQ,GAAG,KAAK,EAAE,CAAA;YACtB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAE,QAAQ,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;YAE7B,KAAK,CAAC,CAAC,CAAC,CAAA;YACR,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAEtB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAChB,KAAK,CAAC,CAAC,CAAC,CAAA;YACR,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC,CAAC;KACF,CAAC;CACF,CAAC,CAAA"}
package/x/tree/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * from "./parts/branch.js";
2
- export * from "./parts/chronobranch.js";
3
- export * from "./parts/persistence.js";
4
- export * from "./parts/trunk.js";
5
- export * from "./parts/types.js";
package/x/tree/index.js DELETED
@@ -1,6 +0,0 @@
1
- export * from "./parts/branch.js";
2
- export * from "./parts/chronobranch.js";
3
- export * from "./parts/persistence.js";
4
- export * from "./parts/trunk.js";
5
- export * from "./parts/types.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/tree/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
@@ -1,14 +0,0 @@
1
- import { Immutable } from "../../prism/types.js";
2
- import { Branchstate, Mutator, TreeOptions, Selector, Tree } from "./types.js";
3
- /** @deprecated tree stuff has been replaced by prism/lens stuff */
4
- export declare class Branch<S extends Branchstate, ParentState extends Branchstate = any> implements Tree<S> {
5
- #private;
6
- private parent;
7
- private selector;
8
- private options;
9
- constructor(parent: Tree<ParentState>, selector: Selector<S, ParentState>, options: TreeOptions);
10
- get state(): Immutable<S>;
11
- get on(): import("@e280/stz").Sub<[Immutable<S>]>;
12
- mutate(mutator: Mutator<S>): Promise<Immutable<S>>;
13
- branch<Sub extends Branchstate>(selector: Selector<Sub, S>): Branch<Sub, S>;
14
- }
@@ -1,42 +0,0 @@
1
- import { deep } from "@e280/stz";
2
- import { signal } from "../../signals/porcelain.js";
3
- /** @deprecated tree stuff has been replaced by prism/lens stuff */
4
- export class Branch {
5
- parent;
6
- selector;
7
- options;
8
- #previous;
9
- #$data;
10
- constructor(parent, selector, options) {
11
- this.parent = parent;
12
- this.selector = selector;
13
- this.options = options;
14
- this.#$data = signal(this.#pull());
15
- this.#previous = this.state;
16
- this.parent.on(() => {
17
- const oldState = this.#previous;
18
- const newState = this.#pull();
19
- if (!deep.equal(newState, oldState)) {
20
- this.#previous = newState;
21
- this.#$data.set(newState, true);
22
- }
23
- });
24
- }
25
- #pull() {
26
- return this.selector(this.parent.state);
27
- }
28
- get state() {
29
- return this.#$data.get();
30
- }
31
- get on() {
32
- return this.#$data.on;
33
- }
34
- async mutate(mutator) {
35
- await this.parent.mutate(parentState => mutator(this.selector(parentState)));
36
- return this.state;
37
- }
38
- branch(selector) {
39
- return new Branch(this, selector, this.options);
40
- }
41
- }
42
- //# sourceMappingURL=branch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../s/tree/parts/branch.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAG9B,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAA;AAGjD,mEAAmE;AACnE,MAAM,OAAO,MAAM;IAKR;IACA;IACA;IANV,SAAS,CAAc;IACvB,MAAM,CAAwB;IAE9B,YACU,MAAyB,EACzB,QAAkC,EAClC,OAAoB;QAFpB,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAA0B;QAClC,YAAO,GAAP,OAAO,CAAa;QAG7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAA;QAE3B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;gBACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAChC,CAAC;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,KAAK;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAoB,CAAiB,CAAA;IACvE,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;IAED,IAAI,EAAE;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAmB;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAClD,CAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,MAAM,CAA0B,QAA0B;QACzD,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;CACD"}
@@ -1,25 +0,0 @@
1
- import { Chronicle, Immutable } from "../../prism/index.js";
2
- import { Branch } from "./branch.js";
3
- import { Branchstate, Mutator, TreeOptions, Selector, Tree } from "./types.js";
4
- /** @deprecated tree stuff has been replaced by prism/lens stuff */
5
- export declare class Chronobranch<S extends Branchstate, ParentState extends Branchstate = any> implements Tree<S> {
6
- #private;
7
- limit: number;
8
- parent: Tree<ParentState>;
9
- selector: Selector<Chronicle<S>, ParentState>;
10
- options: TreeOptions;
11
- constructor(limit: number, parent: Tree<ParentState>, selector: Selector<Chronicle<S>, ParentState>, options: TreeOptions);
12
- get state(): Immutable<S>;
13
- get undoable(): number;
14
- get redoable(): number;
15
- on(fn: (state: Immutable<S>) => void): () => void;
16
- /** progress forwards in history */
17
- mutate(mutator: Mutator<S>): Promise<Immutable<S>>;
18
- /** step backwards into the past, by n steps */
19
- undo(n?: number): Promise<void>;
20
- /** step forwards into the future, by n steps */
21
- redo(n?: number): Promise<void>;
22
- /** wipe past and future snapshots */
23
- wipe(): Promise<void>;
24
- branch<Sub extends Branchstate>(selector: Selector<Sub, S>): Branch<Sub, S>;
25
- }
@@ -1,75 +0,0 @@
1
- import { Branch } from "./branch.js";
2
- /** @deprecated tree stuff has been replaced by prism/lens stuff */
3
- export class Chronobranch {
4
- limit;
5
- parent;
6
- selector;
7
- options;
8
- #branch;
9
- constructor(limit, parent, selector, options) {
10
- this.limit = limit;
11
- this.parent = parent;
12
- this.selector = selector;
13
- this.options = options;
14
- this.#branch = parent.branch(selector);
15
- }
16
- get state() {
17
- return this.#branch.state.present;
18
- }
19
- get undoable() {
20
- return this.#branch.state.past.length;
21
- }
22
- get redoable() {
23
- return this.#branch.state.future.length;
24
- }
25
- on(fn) {
26
- return this.#branch.on(chronicle => fn(chronicle.present));
27
- }
28
- /** progress forwards in history */
29
- async mutate(mutator) {
30
- const limit = Math.max(0, this.limit);
31
- const snapshot = this.options.clone(this.#branch.state.present);
32
- await this.#branch.mutate(chronicle => {
33
- mutator(chronicle.present);
34
- chronicle.past.push(snapshot);
35
- chronicle.past = chronicle.past.slice(-limit);
36
- chronicle.future = [];
37
- });
38
- return this.state;
39
- }
40
- /** step backwards into the past, by n steps */
41
- async undo(n = 1) {
42
- await this.#branch.mutate(chronicle => {
43
- const snapshots = chronicle.past.slice(-n);
44
- if (snapshots.length >= n) {
45
- const oldPresent = chronicle.present;
46
- chronicle.present = snapshots.shift();
47
- chronicle.past = chronicle.past.slice(0, -n);
48
- chronicle.future.unshift(oldPresent, ...snapshots);
49
- }
50
- });
51
- }
52
- /** step forwards into the future, by n steps */
53
- async redo(n = 1) {
54
- await this.#branch.mutate(chronicle => {
55
- const snapshots = chronicle.future.slice(0, n);
56
- if (snapshots.length >= n) {
57
- const oldPresent = chronicle.present;
58
- chronicle.present = snapshots.shift();
59
- chronicle.past.push(oldPresent, ...snapshots);
60
- chronicle.future = chronicle.future.slice(n);
61
- }
62
- });
63
- }
64
- /** wipe past and future snapshots */
65
- async wipe() {
66
- await this.#branch.mutate(chronicle => {
67
- chronicle.past = [];
68
- chronicle.future = [];
69
- });
70
- }
71
- branch(selector) {
72
- return new Branch(this, selector, this.options);
73
- }
74
- }
75
- //# sourceMappingURL=chronobranch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chronobranch.js","sourceRoot":"","sources":["../../../s/tree/parts/chronobranch.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { Persistence } from "./types.js";
2
- export declare const localPersistence: <X>(key: string, storage?: Storage) => Persistence<X>;
@@ -1,23 +0,0 @@
1
- export const localPersistence = (key, storage = window.localStorage) => ({
2
- store: {
3
- async get() {
4
- const json = storage.getItem(key);
5
- return json
6
- ? JSON.parse(json)
7
- : undefined;
8
- },
9
- async set(state) {
10
- const json = JSON.stringify(state);
11
- storage.setItem(key, json);
12
- },
13
- },
14
- onChange: (fn) => {
15
- const listener = (event) => {
16
- if (event.storageArea === storage && event.key === key)
17
- fn();
18
- };
19
- window.addEventListener("storage", listener);
20
- return () => window.removeEventListener("storage", listener);
21
- },
22
- });
23
- //# sourceMappingURL=persistence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../s/tree/parts/persistence.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAW,EACX,UAAmB,MAAM,CAAC,YAAY,EACrB,EAAE,CAAC,CAAC;IAEtB,KAAK,EAAE;QACN,KAAK,CAAC,GAAG;YACR,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACjC,OAAO,IAAI;gBACV,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClB,CAAC,CAAC,SAAS,CAAA;QACb,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,KAAK;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAClC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;KACD;IAED,QAAQ,EAAE,CAAC,EAAc,EAAE,EAAE;QAC5B,MAAM,QAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;gBACrD,EAAE,EAAE,CAAA;QACN,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC5C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC7D,CAAC;CACD,CAAC,CAAA"}
@@ -1,19 +0,0 @@
1
- import { Branch } from "./branch.js";
2
- import { trunkSetup } from "./utils/setup.js";
3
- import { Chronobranch } from "./chronobranch.js";
4
- import { Branchstate, Mutator, TreeOptions, Selector, Tree, Trunkstate } from "./types.js";
5
- import { Chronicle } from "../../prism/index.js";
6
- /** @deprecated tree stuff has been replaced by prism/lens stuff */
7
- export declare class Trunk<S extends Trunkstate> implements Tree<S> {
8
- #private;
9
- static setup: typeof trunkSetup;
10
- static chronicle: <S_1 extends Branchstate>(state: S_1) => Chronicle<S_1>;
11
- options: TreeOptions;
12
- constructor(state: S, options?: Partial<TreeOptions>);
13
- get state(): import("../../prism/types.js").Immutable<S>;
14
- get on(): import("@e280/stz").Sub<[import("../../prism/types.js").Immutable<S>]>;
15
- mutate(mutator: Mutator<S>): Promise<import("../../prism/types.js").Immutable<S>>;
16
- overwrite(state: S): Promise<void>;
17
- branch<Sub extends Branchstate>(selector: Selector<Sub, S>): Branch<Sub, S>;
18
- chronobranch<Sub extends Branchstate>(limit: number, selector: Selector<Chronicle<Sub>, S>): Chronobranch<Sub, S>;
19
- }
@@ -1,57 +0,0 @@
1
- import { deep } from "@e280/stz";
2
- import { Branch } from "./branch.js";
3
- import { Immute } from "./utils/immute.js";
4
- import { trunkSetup } from "./utils/setup.js";
5
- import { Chronobranch } from "./chronobranch.js";
6
- import { processOptions } from "./utils/process-options.js";
7
- /** @deprecated tree stuff has been replaced by prism/lens stuff */
8
- export class Trunk {
9
- static setup = trunkSetup;
10
- static chronicle = (state) => ({
11
- present: state,
12
- past: [],
13
- future: [],
14
- });
15
- options;
16
- #mutationLock = 0;
17
- #immute;
18
- constructor(state, options = {}) {
19
- this.options = processOptions(options);
20
- this.#immute = new Immute(state, this.options);
21
- }
22
- get state() {
23
- return this.#immute.immutable;
24
- }
25
- get on() {
26
- return this.#immute.on;
27
- }
28
- async mutate(mutator) {
29
- const oldState = this.#immute.get();
30
- if (this.#mutationLock > 0)
31
- throw new Error("nested mutations are forbidden");
32
- let promise = Promise.resolve();
33
- try {
34
- this.#mutationLock++;
35
- const newState = this.options.clone(oldState);
36
- mutator(newState);
37
- const isChanged = !deep.equal(newState, oldState);
38
- if (isChanged)
39
- promise = this.overwrite(newState);
40
- }
41
- finally {
42
- this.#mutationLock--;
43
- }
44
- await promise;
45
- return this.state;
46
- }
47
- async overwrite(state) {
48
- await this.#immute.set(state);
49
- }
50
- branch(selector) {
51
- return new Branch(this, selector, this.options);
52
- }
53
- chronobranch(limit, selector) {
54
- return new Chronobranch(limit, this, selector, this.options);
55
- }
56
- }
57
- //# sourceMappingURL=trunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trunk.js","sourceRoot":"","sources":["../../../s/tree/parts/trunk.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,mBAAmB,CAAA;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAA;AAIzD,mEAAmE;AACnE,MAAM,OAAO,KAAK;IACjB,MAAM,CAAC,KAAK,GAAG,UAAU,CAAA;IACzB,MAAM,CAAC,SAAS,GAAG,CAAwB,KAAQ,EAAgB,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;KACV,CAAC,CAAA;IAEF,OAAO,CAAa;IACpB,aAAa,GAAG,CAAC,CAAA;IACjB,OAAO,CAAW;IAElB,YAAY,KAAQ,EAAE,UAAgC,EAAE;QACvD,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;IAC9B,CAAC;IAED,IAAI,EAAE;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAmB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACnC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAClD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAC/B,IAAI,CAAC;YACJ,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC7C,OAAO,CAAC,QAAQ,CAAC,CAAA;YACjB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACjD,IAAI,SAAS;gBACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC;gBACO,CAAC;YAAC,IAAI,CAAC,aAAa,EAAE,CAAA;QAAC,CAAC;QAChC,MAAM,OAAO,CAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAQ;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAA0B,QAA0B;QACzD,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,YAAY,CACV,KAAa,EACb,QAAqC;QAEtC,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7D,CAAC"}
@@ -1,28 +0,0 @@
1
- import { EzStore, Versioned } from "../../prism/index.js";
2
- import { Immutable } from "../../prism/types.js";
3
- import { Branch } from "./branch.js";
4
- export type TreeOptions = {
5
- clone: <X>(x: X) => X;
6
- };
7
- /** @deprecated renamed to `TreeOptions` */
8
- export type Options = TreeOptions;
9
- export type Selector<Sub, S> = (state: S) => Sub;
10
- export type Mutator<S> = (state: S) => void;
11
- export type Trunkstate = {};
12
- export type Branchstate = {} | null | undefined;
13
- export type Tree<S extends Branchstate> = {
14
- get state(): Immutable<S>;
15
- on(fn: (state: Immutable<S>) => void): () => void;
16
- mutate(mutator: Mutator<S>): Promise<Immutable<S>>;
17
- branch<Sub extends Branchstate>(selector: Selector<Sub, S>): Branch<Sub, S>;
18
- };
19
- export type SetupOptions<S extends Trunkstate> = {
20
- version: number;
21
- initialState: S;
22
- saveDebounceTime?: number;
23
- persistence?: Persistence<Versioned<S>>;
24
- };
25
- export type Persistence<X> = {
26
- store: EzStore<X>;
27
- onChange: (fn: () => void) => (() => void);
28
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../s/tree/parts/types.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import { TreeOptions } from "../types.js";
2
- import { Immutable } from "../../../prism/types.js";
3
- export declare class Immute<S> {
4
- #private;
5
- private options;
6
- constructor(mutable: S, options: TreeOptions);
7
- on: import("@e280/stz").Sub<[Immutable<S>]>;
8
- get(): S;
9
- set(mutable: S): Promise<void>;
10
- get immutable(): Immutable<S>;
11
- }
@@ -1,33 +0,0 @@
1
- import { deep, sub } from "@e280/stz";
2
- import { tracker } from "../../../tracker/tracker.js";
3
- export class Immute {
4
- options;
5
- #mutable;
6
- #immutable;
7
- constructor(mutable, options) {
8
- this.options = options;
9
- this.#mutable = mutable;
10
- this.#immutable = this.#petrify(mutable);
11
- }
12
- #petrify(x) {
13
- return deep.freeze(this.options.clone(x));
14
- }
15
- on = sub();
16
- get() {
17
- tracker.notifyRead(this);
18
- return this.#mutable;
19
- }
20
- async set(mutable) {
21
- this.#mutable = mutable;
22
- this.#immutable = deep.freeze(this.options.clone(this.get()));
23
- await Promise.all([
24
- this.on.publish(this.#immutable),
25
- tracker.notifyWrite(this),
26
- ]);
27
- }
28
- get immutable() {
29
- tracker.notifyRead(this);
30
- return this.#immutable;
31
- }
32
- }
33
- //# sourceMappingURL=immute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"immute.js","sourceRoot":"","sources":["../../../../s/tree/parts/utils/immute.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAC,OAAO,EAAC,MAAM,6BAA6B,CAAA;AAGnD,MAAM,OAAO,MAAM;IAIc;IAHhC,QAAQ,CAAG;IACX,UAAU,CAAc;IAExB,YAAY,OAAU,EAAU,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ,CAAI,CAAI;QACf,OAAO,IAAI,CAAC,MAAM,CACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACL,CAAA;IAClB,CAAC;IAED,EAAE,GAAG,GAAG,EAAkB,CAAA;IAE1B,GAAG;QACF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAU;QACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAiB,CAAA;QAC7E,MAAM,OAAO,CAAC,GAAG,CAAC;YACjB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;SACzB,CAAC,CAAA;IACH,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAA;IACvB,CAAC;CACD"}
@@ -1,2 +0,0 @@
1
- import { TreeOptions } from "../types.js";
2
- export declare const processOptions: (options: Partial<TreeOptions>) => TreeOptions;
@@ -1,4 +0,0 @@
1
- export const processOptions = (options) => ({
2
- clone: options.clone ?? ((x) => structuredClone(x)),
3
- });
4
- //# sourceMappingURL=process-options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-options.js","sourceRoot":"","sources":["../../../../s/tree/parts/utils/process-options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAA6B,EAAe,EAAE,CAAC,CAAC;IAC9E,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAI,CAAI,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CACzD,CAAC,CAAA"}
@@ -1,8 +0,0 @@
1
- import { Trunk } from "../trunk.js";
2
- import { SetupOptions, Trunkstate } from "../types.js";
3
- export declare function trunkSetup<S extends Trunkstate>(options: SetupOptions<S>): Promise<{
4
- trunk: Trunk<S>;
5
- load: () => Promise<void>;
6
- save: import("@e280/stz").DebounceReturn<() => Promise<void>>;
7
- dispose: () => void;
8
- }>;
@@ -1,24 +0,0 @@
1
- import { debounce } from "@e280/stz";
2
- import { Trunk } from "../trunk.js";
3
- import { localPersistence } from "../persistence.js";
4
- export async function trunkSetup(options) {
5
- const { version, initialState, saveDebounceTime = 500, persistence = localPersistence("strataTree"), } = options;
6
- const trunk = new Trunk(initialState);
7
- async function load() {
8
- const pickle = await persistence.store.get();
9
- if (pickle && pickle.version === version)
10
- await trunk.overwrite(pickle.state);
11
- }
12
- const save = debounce(saveDebounceTime, async () => persistence.store.set({
13
- version,
14
- state: trunk.state,
15
- }));
16
- // persistence: initial load from store
17
- await load();
18
- // persistence: save to store
19
- trunk.on(save);
20
- // cross-tab sync
21
- const dispose = persistence.onChange(load);
22
- return { trunk, load, save, dispose };
23
- }
24
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../s/tree/parts/utils/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAA;AAElC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAA;AAGlD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAuB,OAAwB;IAC9E,MAAM,EACL,OAAO,EACP,YAAY,EACZ,gBAAgB,GAAG,GAAG,EACtB,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAC5C,GAAG,OAAO,CAAA;IAEX,MAAM,KAAK,GAAG,IAAI,KAAK,CAAI,YAAY,CAAC,CAAA;IAExC,KAAK,UAAU,IAAI;QAClB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5C,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;YACvC,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,EAAE,KAAK,IAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;QACxE,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,KAAY;KACzB,CAAC,CAAC,CAAA;IAEH,uCAAuC;IACvC,MAAM,IAAI,EAAE,CAAA;IAEZ,6BAA6B;IAC7B,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAEd,iBAAiB;IACjB,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE1C,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC,CAAA;AACpC,CAAC"}